diff --git a/.gitignore b/.gitignore index 966815b4..35c80e62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,432 @@ .vs -obj -bin +[Oo]bj/ +[Bb]in/ AutoEvent.csproj.user packages Music.tar Music.tar.gz Schematics.tar -Schematics.tar.gz \ No newline at end of file +Schematics.tar.gz +VersionInfo.cs +AutoEvent/VersionInfo.cs + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +# Common IntelliJ Platform excludes + +# User specific +**/.idea/**/workspace.xml +**/.idea/**/tasks.xml +**/.idea/shelf/* +**/.idea/dictionaries +**/.idea/httpRequests/ + +# Sensitive or high-churn files +**/.idea/**/dataSources/ +**/.idea/**/dataSources.ids +**/.idea/**/dataSources.xml +**/.idea/**/dataSources.local.xml +**/.idea/**/sqlDataSources.xml +**/.idea/**/dynamic.xml + +# Rider +# Rider auto-generates .iml files, and contentModel.xml +**/.idea/**/*.iml +**/.idea/**/contentModel.xml +**/.idea/**/modules.xml + +[Pp]ackages/ + +Thumbs.db +Desktop.ini +.DS_Store \ No newline at end of file diff --git a/AutoEvent/API/ArtificialHealth.cs b/AutoEvent/API/ArtificialHealth.cs index dde14df8..514a2de7 100644 --- a/AutoEvent/API/ArtificialHealth.cs +++ b/AutoEvent/API/ArtificialHealth.cs @@ -22,7 +22,7 @@ public class ArtificialHealth public ArtificialHealth(){} public ArtificialHealth(float initialHealth, float maxHealth = 100f, float regenerationAmount = 1f, float absorptionPercent = 100, bool permanent = true, float duration = 10f, bool clearOtherInstances = true) - { + { InitialAmount = initialHealth; MaxAmount = maxHealth; RegenerationAmount = regenerationAmount; diff --git a/AutoEvent/API/BitwiseExtensions.cs b/AutoEvent/API/BitwiseExtensions.cs index 1f3368ec..f3c6c6ed 100644 --- a/AutoEvent/API/BitwiseExtensions.cs +++ b/AutoEvent/API/BitwiseExtensions.cs @@ -15,7 +15,7 @@ namespace AutoEvent.API; public static class BitwiseExtensions -{ +{ /*public static T AppendSeparateEnumValue(this T value, Enum append) where T : Enum { Enum[] valuesToAppend = (Enum[])Enum.GetValues(append.GetType()); diff --git a/AutoEvent/API/Components/DestructiblePrimitiveComponent.cs b/AutoEvent/API/Components/DestructiblePrimitiveComponent.cs new file mode 100644 index 00000000..d6a74c4c --- /dev/null +++ b/AutoEvent/API/Components/DestructiblePrimitiveComponent.cs @@ -0,0 +1,65 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: DestructiblePrimitiveComponent.cs +// Author: Redforce04#4091 +// Revision Date: 10/17/2023 6:46 PM +// Created Date: 10/17/2023 6:46 PM +// ----------------------------------------- + +using System; +using AdminToys; +using Mirror; +using PlayerStatsSystem; +using UnityEngine; + +namespace AutoEvent.API.Components; + +public class DestructiblePrimitiveComponent : UnityEngine.MonoBehaviour, IDestructible +{ + public bool Damage(float damage, DamageHandlerBase handler, Vector3 exactHitPos) + { + var ev = new DamagingPrimitiveArgs(damage, handler, exactHitPos); + DamagingPrimitive?.Invoke(ev); + if (!ev.IsAllowed) + { + return false; + } + + Health -= ev.Damage; + if (Health <= 0) + { + + var prim = gameObject.GetComponent(); + NetworkServer.UnSpawn(base.gameObject); + Destroy(gameObject); + } + + return true; + } + + public uint NetworkId { get; } + public Vector3 CenterOfMass { get; } + public float Health { get; private set; } + public event Action DamagingPrimitive; + +} + +public class DamagingPrimitiveArgs +{ + public DamagingPrimitiveArgs(float damage, DamageHandlerBase handler, Vector3 exactHitPos, bool isAllowed = true) + { + Damage = damage; + Handler = handler; + ExactHitPosition = exactHitPos; + IsAllowed = isAllowed; + } + public float Damage { get; set; } + public DamageHandlerBase Handler { get; init; } + public Vector3 ExactHitPosition { get; set; } + public bool IsAllowed { get; set; } + +} \ No newline at end of file diff --git a/AutoEvent/API/Enums/Effects.cs b/AutoEvent/API/Enums/Effects.cs index 739f8dc0..0415bbb8 100644 --- a/AutoEvent/API/Enums/Effects.cs +++ b/AutoEvent/API/Enums/Effects.cs @@ -157,4 +157,23 @@ public enum StatusEffect /// Teleports the player to the pocket dimension and drains health until the player escapes or is killed. /// PocketCorroding, + + /// + /// The effect permit player to go trough door like Scp-106. + /// + Ghostly, + + /// + /// Effect given to player when being strangled by SCP-3114. + /// + Strangled, + OrangeCandy, + Spicy, + SugarCrave, + SugarHigh, + SugarRush, + TraumatizedByEvil, + Metal, + Prismatic, + SlowMetabolism, } \ No newline at end of file diff --git a/AutoEvent/API/Enums/LoadoutFlags.cs b/AutoEvent/API/Enums/LoadoutFlags.cs index 187775c0..0237e5a7 100644 --- a/AutoEvent/API/Enums/LoadoutFlags.cs +++ b/AutoEvent/API/Enums/LoadoutFlags.cs @@ -25,80 +25,80 @@ public enum LoadoutFlags /// No flags are specified. Loadouts will be applied normally. /// None = 0, - + /// /// Players will not have a role set. /// - IgnoreRole = 1, - + IgnoreRole = 1 << 0, // 1 + /// /// Players will not have items added. /// - IgnoreItems = 2, - + IgnoreItems = 1 << 1, // 2 + /// /// Players will not have their default role items cleared before adding items. /// - DontClearDefaultItems = 4, + DontClearDefaultItems = 1 << 2, // 4 /// /// Players won't have effects applied to them. /// - IgnoreEffects = 8, - + IgnoreEffects = 1 << 3, // 8 + /// /// Players won't have their health set. /// - IgnoreHealth = 16, - + IgnoreHealth = 1 << 4, // 16 + /// /// Player's won't have their Artificial Health set. /// - IgnoreAHP = 32, - + IgnoreAHP = 1 << 5, // 32 + /// /// Player's won't have their sizes changed. /// - IgnoreSize = 64, - + IgnoreSize = 1 << 6, // 64 + /// /// Player's won't have infinite ammo applied from loadouts. /// - IgnoreInfiniteAmmo = 128, - + IgnoreInfiniteAmmo = 1 << 7, // 128 + /// /// Players will have infinite ammo applied. Overrides IgnoreInfiniteAmmo. /// - ForceInfiniteAmmo = 256, - + ForceInfiniteAmmo = 1 << 8, // 256 + /// /// Players will note have Godmode set. /// - IgnoreGodMode = 512, - + IgnoreGodMode = 1 << 9, // 512 + /// /// Players will not recieve weapons. /// - IgnoreWeapons = 1024, - + IgnoreWeapons = 1 << 10, // 1024 + /// /// Stamina will not be added. /// - IgnoreStamina = 2048, - + IgnoreStamina = 1 << 11, // 2048, + /// /// The player will have an endless amount of ammo. /// - ForceEndlessClip = 4096, - + ForceEndlessClip = 1 << 12, // 4096, + /// /// The player will stay in the default spawn point. /// - UseDefaultSpawnPoint = 8192, + UseDefaultSpawnPoint = 1 << 13, //8192, /// /// Only give players items. /// - ItemsOnly = 16382, + ItemsOnly = (IgnoreStamina | IgnoreGodMode | IgnoreInfiniteAmmo | IgnoreSize | IgnoreAHP | IgnoreHealth | IgnoreStamina | IgnoreEffects | IgnoreRole), // None + ForceX // 16384 } diff --git a/AutoEvent/API/Extensions.cs b/AutoEvent/API/Extensions.cs index 60fe52a7..c7b9d9b1 100644 --- a/AutoEvent/API/Extensions.cs +++ b/AutoEvent/API/Extensions.cs @@ -20,6 +20,7 @@ using AutoEvent.Events.EventArgs; using AutoEvent.Games.Battle; using AutoEvent.Games.Line; +using AutoEvent.Patches; using CustomPlayerEffects; using Exiled.API.Features.Items; using Footprinting; @@ -30,6 +31,7 @@ using InventorySystem.Items.Keycards; using InventorySystem.Items.Usables.Scp244.Hypothermia; using JetBrains.Annotations; +using PlayerRoles.Ragdolls; using PluginAPI.Core.Items; using Debug = AutoEvent.Commands.Debug.Debug; using Item = PluginAPI.Core.Items.Item; @@ -505,8 +507,8 @@ public static ReferenceHub AddDummy() var fakeConnection = new FakeConnection(0); var hubPlayer = newPlayer.GetComponent(); NetworkServer.AddPlayerForConnection(fakeConnection, newPlayer); - hubPlayer.characterClassManager.InstanceMode = ClientInstanceMode.Unverified; - + hubPlayer.authManager.InstanceMode = CentralAuth.ClientInstanceMode.Unverified; + // CharacterClassManager.instance try { hubPlayer.nicknameSync.SetNick("MiniGames"); @@ -596,6 +598,7 @@ public static void GrenadeSpawn(float fuseTime, Vector3 pos, float scale) NetworkServer.Spawn(grenade.gameObject); grenade.ServerActivate(); + } } } diff --git a/AutoEvent/API/RockEffectGrenade.cs b/AutoEvent/API/RockEffectGrenade.cs new file mode 100644 index 00000000..c7018326 --- /dev/null +++ b/AutoEvent/API/RockEffectGrenade.cs @@ -0,0 +1,97 @@ +/*// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: RockEffectGrenade.cs +// Author: Redforce04#4091 +// Revision Date: 10/29/2023 7:13 PM +// Created Date: 10/29/2023 7:13 PM +// ----------------------------------------- + +using System.Diagnostics; +using InventorySystem.Items.ThrowableProjectiles; +using Mirror; +using UnityEngine; + +namespace AutoEvent.API; + +public class RockEffectGrenade : EffectGrenade +{ + private static readonly CachedLayerMask HitboxLayer = new CachedLayerMask("Hitbox"); + + private static readonly Collider[] Detections = new Collider[8]; + + private const float MinSelfDamageDelay = 0.1f; + + private const float DetectorThickness = 0.07f; + + private readonly Stopwatch _selfDamageStopwatch = Stopwatch.StartNew(); + + [SerializeField] private Transform _centerTransform; + + private Vector3 _prevPosition; + + override void Awake() + { + base.Awake(); + _prevPosition = _centerTransform.position; + } + + override void FixedUpdate() + { + FixedUpdate(); ; + if (NetworkServer.active) + { + DetectPlayers(); + } + } + + public override void ProcessCollision(Collision collision) + { + if (NetworkServer.active) + { + DestroyProjectile(); + } + } + + protected virtual void OnCollision(ReferenceHub hub) + { + if (NetworkServer.active) + { + DestroyProjectile(); + } + } + + protected void DestroyProjectile() + { + if (NetworkServer.active) + { + ServerFuseEnd(); + } + } + + private void DetectPlayers() + { + Vector3 prevPosition = _prevPosition; + _prevPosition = _centerTransform.position; + int num = Physics.OverlapCapsuleNonAlloc(prevPosition, _prevPosition, 0.07f, Detections, HitboxLayer); + for (int i = 0; i < num; i++) + { + if (Detections[i].TryGetComponent(out var component)) + { + ReferenceHub targetHub = component.TargetHub; + if (!(targetHub == PreviousOwner.Hub) || + !(_selfDamageStopwatch.Elapsed.TotalSeconds < 0.10000000149011612)) + { + OnCollision(targetHub); + } + } + } + } + + private void MirrorProcessed() + { + } +}*/ \ No newline at end of file diff --git a/AutoEvent/ActiveFeatures.cs b/AutoEvent/ActiveFeatures.cs new file mode 100644 index 00000000..3234f746 --- /dev/null +++ b/AutoEvent/ActiveFeatures.cs @@ -0,0 +1,31 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: ActiveFeatures.cs +// Author: Redforce04#4091 +// Revision Date: 10/24/2023 10:20 PM +// Created Date: 10/24/2023 10:20 PM +// ----------------------------------------- + +using System; + +namespace AutoEvent; + +[Flags] +public enum ActiveFeatures +{ + None = 0, + Minigames20 = 1, + Lobby = 2, + Vote = 4, + Powerups = 8, + SchematicApi = 16, + BuildInfo = 32, + MinigameSpleef = 64, + InventoryMenuApi, + MinigamesGhostBusters, + All = ~0, +} \ No newline at end of file diff --git a/AutoEvent/AutoEvent.csproj b/AutoEvent/AutoEvent.csproj index b0f2600b..6f463442 100644 --- a/AutoEvent/AutoEvent.csproj +++ b/AutoEvent/AutoEvent.csproj @@ -14,8 +14,9 @@ ..\bin\Release\Exiled TRACE;EXILED - true true + true + true x64 v4.8 512 @@ -35,12 +36,15 @@ default + + true + all runtime; compile; build; native; contentfiles; analyzers; buildtransitive - + all runtime; compile; build; native; contentfiles; analyzers; buildtransitive @@ -52,11 +56,14 @@ - - - + + + + + + - + @@ -73,6 +80,9 @@ + + .gitignore + @@ -80,32 +90,37 @@ + + + + + + + - - - - + + diff --git a/AutoEvent/AutoEvent.sln b/AutoEvent/AutoEvent.sln index ac05d008..4c08b72b 100644 --- a/AutoEvent/AutoEvent.sln +++ b/AutoEvent/AutoEvent.sln @@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerupApi", "PowerupApi\Po EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReplaceTextWithVariables", "ReplaceTextWithVariables\ReplaceTextWithVariables.csproj", "{2D16B95A-C579-4998-9E28-E26B077DC48B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InventoryMenu", "InventoryMenu\InventoryMenu.csproj", "{1F7DA672-31F6-45A7-B57E-3CC1A0D8DB2E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Release NWApi|Any CPU = Release NWApi|Any CPU @@ -21,18 +23,22 @@ Global {3C3FC008-22E1-4B28-BA50-A241B30CC216}.Release NWApi|Any CPU.Build.0 = Release NWApi|Any CPU {3C3FC008-22E1-4B28-BA50-A241B30CC216}.Release Exiled|Any CPU.ActiveCfg = Release EXILED|Any CPU {3C3FC008-22E1-4B28-BA50-A241B30CC216}.Release Exiled|Any CPU.Build.0 = Release EXILED|Any CPU - {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release NWApi|Any CPU.ActiveCfg = Debug|Any CPU - {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release NWApi|Any CPU.Build.0 = Debug|Any CPU - {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release Exiled|Any CPU.ActiveCfg = Debug|Any CPU - {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release Exiled|Any CPU.Build.0 = Debug|Any CPU - {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release NWApi|Any CPU.ActiveCfg = Debug|Any CPU - {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release NWApi|Any CPU.Build.0 = Debug|Any CPU - {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release Exiled|Any CPU.ActiveCfg = Debug|Any CPU - {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release Exiled|Any CPU.Build.0 = Debug|Any CPU - {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release NWApi|Any CPU.ActiveCfg = Debug|Any CPU - {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release NWApi|Any CPU.Build.0 = Debug|Any CPU - {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release Exiled|Any CPU.ActiveCfg = Debug|Any CPU - {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release Exiled|Any CPU.Build.0 = Debug|Any CPU + {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release Exiled|Any CPU.ActiveCfg = Release|Any CPU + {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release Exiled|Any CPU.Build.0 = Release|Any CPU + {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release NWApi|Any CPU.ActiveCfg = Release|Any CPU + {580DFED2-B2D7-4B89-B245-D60246BCFB79}.Release NWApi|Any CPU.Build.0 = Release|Any CPU + {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release Exiled|Any CPU.ActiveCfg = Release|Any CPU + {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release Exiled|Any CPU.Build.0 = Release|Any CPU + {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release NWApi|Any CPU.ActiveCfg = Release|Any CPU + {1B07FE64-A112-499D-8A55-67EE912B1CB7}.Release NWApi|Any CPU.Build.0 = Release|Any CPU + {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release Exiled|Any CPU.ActiveCfg = Release|Any CPU + {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release Exiled|Any CPU.Build.0 = Release|Any CPU + {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release NWApi|Any CPU.ActiveCfg = Release|Any CPU + {2D16B95A-C579-4998-9E28-E26B077DC48B}.Release NWApi|Any CPU.Build.0 = Release|Any CPU + {1F7DA672-31F6-45A7-B57E-3CC1A0D8DB2E}.Release NWApi|Any CPU.ActiveCfg = Debug|Any CPU + {1F7DA672-31F6-45A7-B57E-3CC1A0D8DB2E}.Release NWApi|Any CPU.Build.0 = Debug|Any CPU + {1F7DA672-31F6-45A7-B57E-3CC1A0D8DB2E}.Release Exiled|Any CPU.ActiveCfg = Debug|Any CPU + {1F7DA672-31F6-45A7-B57E-3CC1A0D8DB2E}.Release Exiled|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AutoEvent/BlankVersionInfo.txt b/AutoEvent/BlankVersionInfo.txt index 65efdd6e..f34c7b57 100644 --- a/AutoEvent/BlankVersionInfo.txt +++ b/AutoEvent/BlankVersionInfo.txt @@ -36,6 +36,7 @@ public class VersionInfo public const string CommitHash = "{CI_COMMIT_SHORT_SHA}"; public const string CommitBranch = "{CI_COMMIT_BRANCH}"; public const string CommitVersion = "{CI_COMMIT_VERSION_TAG}"; + public const ActiveFeatures ActiveFeatures = global::AutoEvent.ActiveFeatures.All; public const string BuildUser = "{BUILD_USER}"; public static DateTime BuildTime { get; } = DateTime.Parse("{BUILD_DATE_TIME}"); private const string BuildDependencies = "{BUILD_DEPENDENCIES}"; @@ -74,6 +75,7 @@ public class VersionInfo new ReleaseInfo("9.1.0-beta", new Version(9,1,7), "9.1.7 Beta Release", "Adds Lobby and voting System", new DateTime(2023, 9, 28)), new ReleaseInfo("9.1.8-beta", new Version(9,1,8), "9.1.8 Beta Release", "Fixes Bugs", new DateTime(2023, 9, 29)), new ReleaseInfo("9.1.9-beta", new Version(9,1,9), "9.1.9 Beta Release", "More Bugs that are fixed. Minor Api Changes", new DateTime(2023, 10, 11)), - new ReleaseInfo("9.2.0", new Version(9,1,9), "9.2.0 Release - Reworked Backend", "Reworked backend for events. Added configs, events, reworked translations, reworked gameplay mechanics and much more. Official Release.", new DateTime(2023, 10, 22, 0, 31,0)), + new ReleaseInfo("9.2.0", new Version(9,2,0), "9.2.0 Release - Reworked Backend", "Reworked backend for events. Added configs, events, reworked translations, reworked gameplay mechanics and much more. Official Release.", new DateTime(2023, 10, 22, 0, 31,0)), + new ReleaseInfo("9.2.1", new Version(9,2,1), "9.2.1 Release - Halloween Update", "Adds new build system, new events, and updates for the halloween update.", new DateTime(2023, 10, 28, 0, 0,0)), }); } \ No newline at end of file diff --git a/AutoEvent/Commands/BuildInfo.cs b/AutoEvent/Commands/BuildInfo.cs new file mode 100644 index 00000000..2607559f --- /dev/null +++ b/AutoEvent/Commands/BuildInfo.cs @@ -0,0 +1,160 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: BuildInfo.cs +// Author: Redforce04#4091 +// Revision Date: 10/24/2023 10:42 PM +// Created Date: 10/24/2023 10:42 PM +// ----------------------------------------- + +using System; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using CommandSystem; + +namespace AutoEvent.Commands; + +[CommandHandler(typeof(GameConsoleCommandHandler))] +[CommandHandler(typeof(RemoteAdminCommandHandler))] +[CommandHandler(typeof(ClientCommandHandler))] +public class BuildInfo : ICommand +{ + public bool Execute(ArraySegment arguments, ICommandSender sender, [UnscopedRef] out string response) + { + PermissionSystem.CheckPermission(sender, "ev.buildinfo.basic", out bool isConsole); + bool showBuildInfo = false; + bool showDependencies = false; + bool showFeatures = false; + bool showReleaseInfo = false; + if (arguments.Count >= 1) + { + for (int i = 0; i < arguments.Count; i++) + { + string arg = arguments.At(i).ToLower(); + bool subtract = arg.StartsWith("-"); + if (subtract) + arg = arg.Substring(1, arg.Length - 1); + switch (arg) + { + case "all" or "*": + // showDependencies = true; + showBuildInfo = true; + showReleaseInfo = true; + showFeatures = true; + break; + case "features" or "feats": + showFeatures = !subtract; + break; + case "dependencies" or "deps": + showDependencies = !subtract; + break; + case "buildinfo" or "build": + showBuildInfo = !subtract; + break; + case "releaseinfo" or "release": + showReleaseInfo = !subtract; + break; + } + } + } + + string colorAqua = isConsole ? "" : ""; + string colorOrange = isConsole ? "" : ""; + string colorYellow = isConsole ? "" : ""; + string colorpink = isConsole ? "" : ""; + string colorRed = isConsole ? "" : ""; + string colorGreen = isConsole ? "" : ""; + string colorBlue = isConsole ? "" : ""; + string colorLime = isConsole ? "" : ""; + string colorNickel = isConsole ? "" : ""; + string colorWhite = isConsole ? "" : ""; + string activeFeatures = ""; + if (showFeatures) + { + + activeFeatures = "Active Features:\n"; + foreach (Enum feature in Enum.GetValues(typeof(ActiveFeatures))) + { + if (feature is ActiveFeatures.None or ActiveFeatures.All) + continue; + + if (VersionInfo.ActiveFeatures.HasFlag(feature)) + { + activeFeatures += $" - {colorAqua}{feature}{colorWhite}\n"; + } + } + + activeFeatures += "\n"; + } + + var CurrentRelease = global::AutoEvent.VersionInfo.Releases.OrderByDescending(x => x.SemanticVersion).First(); + string releaseInfo = ""; + if (showReleaseInfo) + { + releaseInfo = + $"{CurrentRelease.Name} ({CurrentRelease.ReleaseDate.Month}/{CurrentRelease.ReleaseDate.Day}/{CurrentRelease.ReleaseDate.Year})\n" + + $"Changelog:\n" + + $"{CurrentRelease.ChangeLog}\n" + + $"\n"; + } + + string dependencyInfo = ""; + if (showDependencies) + { + dependencyInfo = "\nBuild Dependencies: \n"; + foreach (var x in VersionInfo.Assemblies) + { + dependencyInfo += $" - {x.Name} {(x.Version != "" ? $" (v{x.Version})" : "")} \n" + + $" - [Hash: {x.Hash}] \n"; + } + + dependencyInfo += "\n"; + } + string buildInfo = + $"{colorNickel}Build Info:\n" + + $" - Build Branch - {colorYellow}{VersionInfo.CommitBranch}{colorWhite} (Commit {colorpink}{VersionInfo.CommitHash}{colorNickel})\n" + + $" - Build Tag - {VersionInfo.CommitVersion}{colorNickel}\n" + + $" - Built by - {VersionInfo.BuildUser}\n" + + $" - Build Date - {VersionInfo.BuildTime.Month}/{VersionInfo.BuildTime.Day}/{VersionInfo.BuildTime.Year} [{VersionInfo.BuildTime.Hour:00}:{VersionInfo.BuildTime.Minute:00}.{VersionInfo.BuildTime.Second:00}]\n"; + string versionString = + $"\nAuto Event Version - {colorAqua}{(CurrentRelease.Version)}{colorWhite}-{(Loader.IsExiledPlugin ? "Exiled" : "NWApi")}{(AutoEvent.BetaRelease ? $"{colorRed} [Beta]{colorWhite}" : "")}\n{colorWhite}" + + $"SL Version - {(DebugLogger.SLVersion)}\n" + + $"\n" + + $"{activeFeatures}" + + $"{releaseInfo}" + + $"{(showBuildInfo ? buildInfo : "")}" + + $"{dependencyInfo}"; + /* + * Auto Event Version - v9.2.0-NWApi [beta] + * SL Version 13.2.2-beta + * + * Active Features: + * - Minigames20 + * - Lobby + * - Vote + * - Powerups + * - SchematicApi + * - BuildInfo + * + * Release 9.7.3-beta (9/13/23) + * Changelog: + * 12345 cool things happened + * + * Build Info: + * - Build Branch - Main (Commit 0b38ec3) + * - Build Tag - 9.3.0 + * - Built By - Redforce04 + * - Build Date - 07/06/23 + + */ + response = versionString; + return true; + } + + public string Command => "ev"+ nameof(BuildInfo); + public string[] Aliases => new[] { "evinfo", "evbuild" }; + public string Description => $"Gets the info for the current build of AutoEvent and other important info."; +} diff --git a/AutoEvent/Commands/Config/Config.cs b/AutoEvent/Commands/Config/Config.cs index 6261a23b..c0ae8caa 100644 --- a/AutoEvent/Commands/Config/Config.cs +++ b/AutoEvent/Commands/Config/Config.cs @@ -65,7 +65,7 @@ protected override bool ExecuteParent(ArraySegment arguments, ICommandSe public override string Command => nameof(Config); public override string[] Aliases => Array.Empty(); - public override string Description => "Allows modifying configs before and during events.."; + public override string Description => "Allows modifying configs before and during events"; } /* diff --git a/AutoEvent/Commands/Debug/Debug.cs b/AutoEvent/Commands/Debug/Debug.cs index adddebd8..4bb80e88 100644 --- a/AutoEvent/Commands/Debug/Debug.cs +++ b/AutoEvent/Commands/Debug/Debug.cs @@ -39,6 +39,7 @@ public override void LoadGeneratedCommands() this.RegisterCommand(new SetRole()); this.RegisterCommand(new RNG()); this.RegisterCommand(new PowerupCommand()); + this.RegisterCommand(new MenuCommand()); } protected override bool ExecuteParent(ArraySegment arguments, ICommandSender sender, [UnscopedRef] out string response) @@ -73,5 +74,5 @@ protected override bool ExecuteParent(ArraySegment arguments, ICommandSe public override string Command => nameof(global::AutoEvent.Commands.Debug); public override string[] Aliases => Array.Empty(); - public override string Description => "Runs various debug functions."; + public override string Description => "Runs various debug functions"; } \ No newline at end of file diff --git a/AutoEvent/Commands/Debug/MenuCommand.cs b/AutoEvent/Commands/Debug/MenuCommand.cs new file mode 100644 index 00000000..4a61e46d --- /dev/null +++ b/AutoEvent/Commands/Debug/MenuCommand.cs @@ -0,0 +1,132 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Menu.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 6:33 PM +// Created Date: 10/27/2023 6:33 PM +// ----------------------------------------- + +using System; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using AutoEvent.Interfaces; +using CommandSystem; +using InventoryMenu.API.Features; +using InventoryMenu.API; +using InventoryMenu; +using InventoryMenu.API.EventArgs; +using InventorySystem.Items.Firearms; +using InventorySystem.Items.Firearms.Attachments; +using MEC; +using PluginAPI.Core; +using Utils.NonAllocLINQ; + +namespace AutoEvent.Commands.Debug; + +public class MenuCommand : ICommand, IPermission +{ + public string Permission { get; set; } = "ev.debug"; + public string Command => "Menu"; + public bool Execute(ArraySegment arguments, ICommandSender sender, [UnscopedRef] out string response) + { + if (!sender.CheckPermission(Permission, out bool isConsole)) + { + response = "You don't have permission to use this command."; + return false; + } + + if (arguments.Count < 1) + { + response = "You must specify a player"; + return false; + } + var player = Player.GetPlayers().FirstOrDefault(ply => ply.Nickname.ToLower().Contains(arguments.At(0).ToLower())); + if (player is null) + { + response = $"Could not find player \"{arguments.At(0)}\""; + return false; + } + + if (arguments.Count >= 2 && arguments.At(1).ToLower() is "demo") + goto demo; + bool hide = arguments.Count >= 2 && arguments.At(1).ToLower() is "true" or "1" or "hide"; + bool canPickupItems = arguments.Count >= 3 && arguments.At(2).ToLower() is "true" or "1" or "pickup"; + if (hide) + { + player.HideMenu(); + response = $"Hid menu for player {player.Nickname}"; + return true; + } + + Menu menu = new Menu("Test menu.", canPickupItems); + menu.AddItem(new MenuItem(ItemType.Coin, "test coin", 0, OnRecieved)); + menu.AddItem(new MenuItem(ItemType.KeycardScientist, "test keycard", 1, OnRecieved)); + menu.AddItem(new MenuItem(ItemType.SCP018, "test ball", 2,OnRecieved)); + menu.AddItem(new MenuItem(ItemType.GrenadeHE, "test grenade", 3, OnRecieved)); + menu.AddItem(new MenuItem(ItemType.SCP330, "test candy", 4, OnRecieved)); + player.ShowMenu(menu); + + response = "Menu "; + return true; + demo: + Menu demo = new Menu("Test Menu.", false); + demo.AddItem(new MenuItem(ItemType.GunE11SR, "The AK Loadout.", 0, OnRecievedLoadout)); + demo.AddItem(new MenuItem(ItemType.GunLogicer, "The Logicer Loadout.", 1, OnRecievedLoadout)); + demo.AddItem(new MenuItem(ItemType.GunShotgun, "The Shotgun Loadout.", 2, OnRecievedLoadout)); + player.ShowMenu(demo); + player.SendBroadcast(demoBroadcast, 1200); + response = "Gave player demo menu selection."; + return true; + } + + private static string demoBroadcast = "Select a loadout in your inventory to spawn with."; + private static void OnRecievedLoadout(MenuItemClickedArgs ev) + { + if (!ev.IsLeftClick) + { + ushort bcDelay = 5; + ev.Player.ClearBroadcasts(); + ev.Player.SendBroadcast($"Loadout Option: {ev.MenuItemClicked.Description}", bcDelay); + Timing.CallDelayed(bcDelay, () => { ev.Player.SendBroadcast(demoBroadcast, 1200 );}); + return; + } + + switch (ev.MenuItemClicked.Item) + { + case ItemType.GunE11SR: + ev.Player.AddItem(ItemType.GunE11SR); + ev.Player.AddItem(ItemType.ArmorCombat); + ev.Player.AddItem(ItemType.Painkillers); + ev.Player.AddItem(ItemType.SCP207); + ev.Player.AddItem(ItemType.Medkit); + //weapon.ApplyAttachmentsCode((uint)AttachmentName.Flashlight); + break; + case ItemType.GunLogicer: + ev.Player.AddItem(ItemType.GunLogicer); + ev.Player.AddItem(ItemType.ArmorHeavy); + ev.Player.AddItem(ItemType.Medkit); + ev.Player.AddItem(ItemType.Painkillers); + break; + case ItemType.GunShotgun: + ev.Player.AddItem(ItemType.GunShotgun); + ev.Player.AddItem(ItemType.GunRevolver); + ev.Player.AddItem(ItemType.ArmorCombat); + ev.Player.AddItem(ItemType.GrenadeHE); + ev.Player.AddItem(ItemType.GrenadeHE); + ev.Player.AddItem(ItemType.Medkit); + break; + } + ev.Player.HideMenu(); + } + private static void OnRecieved(MenuItemClickedArgs ev) + { + DebugLogger.LogDebug($"{ev.MenuItemClicked.Item} [{(ev.IsLeftClick ? "Select" : "Drop")}]"); + } + + public string[] Aliases => Array.Empty(); + public string Description => "Provides a test menu to a player."; +} \ No newline at end of file diff --git a/AutoEvent/Commands/List.cs b/AutoEvent/Commands/List.cs index 1f741671..59b8e933 100644 --- a/AutoEvent/Commands/List.cs +++ b/AutoEvent/Commands/List.cs @@ -18,7 +18,7 @@ public List() // Log.Debug("Skipping Registering List Command"); } public string Command => nameof(List); - public string Description => "Shows a list of all the events that can be started."; + public string Description => "Shows a list of all the events that can be started"; public string[] Aliases => new string[] { }; public string Permission { get; set; } = "ev.list"; public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) @@ -28,6 +28,7 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s response = "You do not have permission to use this command!"; return false; } + StringBuilder builder = new StringBuilder(); if (!IsConsoleCommandSender) { @@ -38,6 +39,9 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s builder.AppendLine("\"List of events:"); } + string colorWhite = IsConsoleCommandSender ? "" : ""; + string colorReset = IsConsoleCommandSender ? "" : ""; + // ReSharper disable once SuspiciousTypeConversion.Global Dictionary> events = new Dictionary>() { @@ -47,9 +51,9 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s //{ "cedmod", new List() }, //{ "riptide", new List() }, }; - events["Internal Events"] = Event.Events.Where(ev => ev is IInternalEvent).OrderBy(x => x.Name).ToList(); - events["External Events"] = Event.Events.Where(ev => ev is not IInternalEvent && ev is not IExiledEvent).OrderBy(x => x.Name).ToList(); - events["Exiled Events"] = Event.Events.Where(ev => ev is IExiledEvent).OrderBy(x => x.Name).ToList(); + events["Internal Events"] = Event.Events.Where(ev => ev is IInternalEvent && ev is not IHiddenCommand).OrderBy(x => x.Name).ToList(); + events["External Events"] = Event.Events.Where(ev => ev is not IInternalEvent && ev is not IExiledEvent && ev is not IHiddenCommand).OrderBy(x => x.Name).ToList(); + events["Exiled Events"] = Event.Events.Where(ev => ev is IExiledEvent && ev is not IHiddenCommand).OrderBy(x => x.Name).ToList(); //events["cedmod"] = Event.Events.Where(ev => ev is IInternalEvent).OrderBy(x => x.Name).ToList(); // events["riptide"] = Event.Events.Where(ev => ev is IInternalEvent).OrderBy(x => x.Name).ToList(); foreach (KeyValuePair> eventlist in events) @@ -57,7 +61,6 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s string color = "white"; switch (eventlist.Key) { - case "Internal Events": color = "red"; builder.AppendLine($"{(!IsConsoleCommandSender ? "" : "")}[{(!IsConsoleCommandSender ? $"" : "")}==AutoEvent Events=={(!IsConsoleCommandSender ? "" : "")}]"); @@ -75,14 +78,21 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s builder.AppendLine($"{(!IsConsoleCommandSender ? "" : "")}[{(!IsConsoleCommandSender ? $"" : "")}==Exiled Events=={(!IsConsoleCommandSender ? "" : "")}]"); break; } - + foreach (Event ev in eventlist.Value) { - - + string tags = ""; + if (ev is ITag tagList) + { + foreach (var item in tagList.Tags) + { + tags += $" {colorWhite}[{(IsConsoleCommandSender ? $"" : "")}{item}{colorWhite}]{colorReset}"; + } + } + if (ev is IHidden) continue; if (!IsConsoleCommandSender) builder.AppendLine( - $"{ev.Name} [{ev.CommandName}]: {ev.Description}"); + $"{ev.Name} [{ev.CommandName}]{tags}: {ev.Description}"); else builder.AppendLine($"{ev.Name} [{ev.CommandName}]: {ev.Description}"); } @@ -103,6 +113,5 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s response = builder.ToString(); return true; } - } } diff --git a/AutoEvent/Commands/Lobby.cs b/AutoEvent/Commands/Lobby.cs new file mode 100644 index 00000000..b5b76597 --- /dev/null +++ b/AutoEvent/Commands/Lobby.cs @@ -0,0 +1,66 @@ +using AutoEvent.Interfaces; +using CommandSystem; +using System; +using System.Linq; +using AutoEvent.API; +using MEC; +using PluginAPI.Core; +using Utils.NonAllocLINQ; +using PlayerRoles; +#if EXILED +using Exiled.Permissions.Extensions; +#endif + +namespace AutoEvent.Commands +{ + internal class Lobby// : ICommand, IPermission + { + public string Command => nameof(Lobby); + public string Description => "Starting a lobby in which the winner chooses a mini-game"; + public string[] Aliases => new string[] { }; + public string Permission { get; set; } = "ev.lobby"; + + public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) + { + if (!sender.CheckPermission(((IPermission)this).Permission, out bool IsConsoleCommandSender)) + { + response = "You do not have permission to use this command!"; + return false; + } + if (AutoEvent.ActiveEvent != null) + { + response = $"The mini-game {AutoEvent.ActiveEvent.Name} is already running!"; + return false; + } + + Event lobby = Event.GetEvent("Lobby"); + if (lobby == null) + { + response = $"The lobby is not found."; + return false; + } + + Round.IsLocked = true; + + if (!Round.IsRoundStarted) + { + Round.Start(); + + Timing.CallDelayed(2f, () => { + + lobby.StartEvent(); + AutoEvent.ActiveEvent = lobby; + }); + } + else + { + lobby.StartEvent(); + AutoEvent.ActiveEvent = lobby; + } + + response = $"The lobby event has started!"; + return true; + } + + } +} diff --git a/AutoEvent/Commands/MainCommand.cs b/AutoEvent/Commands/MainCommand.cs index 439bfc0d..a0b2e1bc 100644 --- a/AutoEvent/Commands/MainCommand.cs +++ b/AutoEvent/Commands/MainCommand.cs @@ -20,7 +20,11 @@ public override void LoadGeneratedCommands() RegisterCommand(new List()); RegisterCommand(new Run()); RegisterCommand(new Stop()); + RegisterCommand(new BuildInfo()); + //RegisterCommand(new Lobby()); + //RegisterCommand(new Vote()); RegisterCommand(new Volume()); + RegisterCommand(new NoRestart()); RegisterCommand(new Reload.Reload()); RegisterCommand(new Debug.Debug()); RegisterCommand(new Config.Config()); diff --git a/AutoEvent/Commands/NoRestart.cs b/AutoEvent/Commands/NoRestart.cs new file mode 100644 index 00000000..6d593a30 --- /dev/null +++ b/AutoEvent/Commands/NoRestart.cs @@ -0,0 +1,72 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: NoRestart.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 12:53 PM +// Created Date: 10/28/2023 12:53 PM +// ----------------------------------------- + +using System; +using System.Diagnostics.CodeAnalysis; +using AutoEvent.Interfaces; +using CommandSystem; +using Mirror; + +namespace AutoEvent.Commands; + +[CommandHandler(typeof(RemoteAdminCommandHandler))] +[CommandHandler(typeof(GameConsoleCommandHandler))] +public class NoRestart : ICommand, IPermission +{ + public bool Execute(ArraySegment arguments, ICommandSender sender, [UnscopedRef] out string response) + { + if (!sender.CheckPermission(Permission, out bool isConsole)) + { + response = "You do not have permission to run this command!"; + return false; + } + + if (!AutoEvent.Singleton.Config.RestartAfterRoundFinish) + { + response = + "Auto-Restart is not enabled on this server. To use this command, enable it in the AutoEvent Config."; + return false; + } + + string boldstart = isConsole ? "" : ""; + string boldend = isConsole ? "" : ""; + + bool enabled = DebugLogger.NoRestartEnabled; + if (arguments.Count >= 1) + { + if(arguments.At(0).ToLower() is "enable" or "enabled" or "true" or "1") + goto enable; + if(arguments.At(0).ToLower() is "disable" or "disabled" or "false" or "0") + goto disable; + } + + if (enabled) + goto disable; + + goto enable; + + enable: + DebugLogger.NoRestartEnabled = true; + response = + $"No-Restart has been enabled. The server will {boldstart}not{boldend} restart after the next event."; + return true; + disable: + DebugLogger.NoRestartEnabled = false; + response = $"No-Restart has been disabled. The server {boldstart}will{boldend} restart after the next event."; + return true; + } + + public string Command => nameof(NoRestart); + public string[] Aliases => Array.Empty(); + public string Description => "Disables auto-restarting the server after events are done."; + public string Permission { get; set; } = "ev.norestart"; +} \ No newline at end of file diff --git a/AutoEvent/Commands/Reload/Reload.cs b/AutoEvent/Commands/Reload/Reload.cs index 319e699c..ab19dd10 100644 --- a/AutoEvent/Commands/Reload/Reload.cs +++ b/AutoEvent/Commands/Reload/Reload.cs @@ -56,5 +56,5 @@ protected override bool ExecuteParent(ArraySegment arguments, ICommandSe public override string Command => nameof(Reload); public override string[] Aliases => Array.Empty(); - public override string Description => "Reloads different aspects of the plugin and events."; + public override string Description => "Reloads different aspects of the plugin and events"; } \ No newline at end of file diff --git a/AutoEvent/Commands/Run.cs b/AutoEvent/Commands/Run.cs index dde72d30..c055fd33 100644 --- a/AutoEvent/Commands/Run.cs +++ b/AutoEvent/Commands/Run.cs @@ -15,9 +15,9 @@ namespace AutoEvent.Commands internal class Run : ICommand, IUsageProvider, IPermission { public string Command => nameof(Run); - public string Description => "Run the event, takes on 1 argument - the command name of the event."; + public string Description => "Run the event, takes on 1 argument - the command name of the event"; public string[] Aliases => new []{ "start", "play", "begin" }; - public string[] Usage => new string[] { "[Event Name]" }; + public string[] Usage => new string[] { "Event Name" }; public string Permission { get; set; } = "ev.run"; public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) @@ -40,11 +40,12 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s } Event ev = Event.GetEvent(arguments.At(0)); - if (ev == null) + if (ev == null || ev is IHidden) { response = $"The mini-game {arguments.At(0)} is not found."; return false; } + string conf = ""; EventConfig? config = null; if (arguments.Count >= 2) diff --git a/AutoEvent/Commands/Volume.cs b/AutoEvent/Commands/Volume.cs index 0409979d..18d30591 100644 --- a/AutoEvent/Commands/Volume.cs +++ b/AutoEvent/Commands/Volume.cs @@ -23,7 +23,7 @@ namespace AutoEvent.Commands; public class Volume : ICommand, IUsageProvider, IPermission { public string Command => nameof(Volume); - public string Description => "Set the global music volume, takes on 1 argument - the volume from 0% - 200%."; + public string Description => "Set the global music volume, takes on 1 argument - the volume from 0%-200%"; public string[] Aliases => new string[] { }; public string[] Usage => new string[] { "Volume %" }; public string Permission { get; set; } = "ev.volume"; diff --git a/AutoEvent/Commands/Vote.cs b/AutoEvent/Commands/Vote.cs new file mode 100644 index 00000000..1189a7c7 --- /dev/null +++ b/AutoEvent/Commands/Vote.cs @@ -0,0 +1,88 @@ +using AutoEvent.Interfaces; +using CommandSystem; +using System; +using System.Linq; +using AutoEvent.API; +using MEC; +using PluginAPI.Core; +using PlayerRoles; +#if EXILED +using Exiled.Permissions.Extensions; +#endif + +namespace AutoEvent.Commands +{ + internal class Vote// : ICommand, IUsageProvider, IPermission + { + public string Command => nameof(Vote); + public string Description => "Starts voting for mini-game, 1 argument - the command name of the event"; + public string[] Aliases => new string[] { }; + public string[] Usage => new string[] { "Event Name" }; + public string Permission { get; set; } = "ev.vote"; + + public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) + { + if (!sender.CheckPermission(((IPermission)this).Permission, out bool IsConsoleCommandSender)) + { + response = "You do not have permission to use this command!"; + return false; + } + if (AutoEvent.ActiveEvent != null) + { + response = $"The mini-game {AutoEvent.ActiveEvent.Name} is already running!"; + return false; + } + + if (arguments.Count < 1) + { + response = "Only 1 argument is needed - the command name of the event!"; + return false; + } + + Event ev = Event.GetEvent(arguments.At(0)); + if (ev == null || ev is IHidden) + { + response = $"The mini-game {arguments.At(0)} is not found."; + return false; + } + + Event vote = Event.GetEvent("Vote"); + if (vote == null) + { + response = $"The vote is not found."; + return false; + } + + IVote comp = vote as IVote; + if (comp == null) + { + response = $"The IVote is not found."; + return false; + } + + comp.NewEvent = ev; + Round.IsLocked = true; + + if (!Round.IsRoundStarted) + { + Round.Start(); + + Timing.CallDelayed(2f, () => { + + Extensions.TeleportEnd(); + vote.StartEvent(); + AutoEvent.ActiveEvent = vote; + }); + } + else + { + vote.StartEvent(); + AutoEvent.ActiveEvent = vote; + } + + response = $"The vote {ev.Name} has started!"; + return true; + } + + } +} diff --git a/AutoEvent/Config.cs b/AutoEvent/Config.cs index 4f40d784..ae88b4c7 100644 --- a/AutoEvent/Config.cs +++ b/AutoEvent/Config.cs @@ -70,7 +70,13 @@ public Config() [Description("The players will be set once an event is done. **DO NOT USE A ROLE THAT IS ALSO IN IgnoredRoles**")] public RoleTypeId LobbyRole { get; set; } = RoleTypeId.ClassD; - + + [Description("If set to true, the server will do a restart 10 seconds after an event is done. The `ev norestart` will disable this.")] + public bool RestartAfterRoundFinish { get; set; } = false; + + [Description("The message that will be displayed when the server restarts.")] + public string ServerRestartMessage { get; set; } = "The server is restarting!"; + [Description("Where the configs directory is located. By default it is located in the AutoEvent folder.")] public string EventConfigsDirectoryPath { get; set; } diff --git a/AutoEvent/DebugLogger.cs b/AutoEvent/DebugLogger.cs index 0e91fcbb..e4ce6f1a 100644 --- a/AutoEvent/DebugLogger.cs +++ b/AutoEvent/DebugLogger.cs @@ -26,13 +26,15 @@ namespace AutoEvent; public class DebugLogger { - static DebugLogger() + static DebugLogger() { Assemblies = new List(); } public static DebugLogger Singleton; internal static List Assemblies { get; set; } - internal static string SLVersion { get; set; } + internal static string SLVersion => GameCore.Version.VersionString; + public static bool NoRestartEnabled { get; set; } = false; + public const string Version = "9.2.2"; public DebugLogger(bool writeDirectly) { Singleton = this; @@ -58,7 +60,6 @@ public DebugLogger(bool writeDirectly) } File.Create(_filePath).Close(); - Timing.CallDelayed(5f, () => { _getPlugins(); }); } } catch (Exception e) @@ -67,37 +68,7 @@ public DebugLogger(bool writeDirectly) DebugLogger.LogDebug($"{e}"); } } - - private void _getPlugins() - { - - string text = ""; - - text += $"Plugin Api Info: \n"; - SLVersion = $"SCP SL Version: v{GameCore.Version.Major}.{GameCore.Version.Minor}.{GameCore.Version.Revision}, (Backwards Compatible: {GameCore.Version.BackwardCompatibility}, Backward Revision: {GameCore.Version.BackwardRevision})"; - text += $" {SLVersion}"; - text += $" Version: ({PluginApiVersion.Version}, {PluginApiVersion.VersionStatic}, {PluginApiVersion.VersionString})\n"; - text += $" VersionString: \n"; - text += $"NWApi Plugins Present: \n"; - text += _getNWApiPlugins(); - /*Plugins Present: - * MapEditorReborn.dll - * Assembly Hash: 142wesdvsdfsg - * Assembly Plugins: - * - MapEditorReborn by Micheal (v1.0.0) - */ - - - - text += "Exiled Plugins Present:\n"; - if (!Loader.isExiledPresent()) - text += $" Exiled Not Installed.\n"; - else - text += _getExiledPlugins(); - - File.AppendAllText(_filePath, text); - } - + private static string _getNWApiPlugins() { string text = ""; @@ -320,10 +291,10 @@ public static void WriteOutput() public enum LogLevel { - Info, - Debug, - Warn, - Error, + Debug = 0, + Warn = 1, + Error = 2, + Info = 3, } diff --git a/AutoEvent/Events/EventArgs/ShotEventArgs.cs b/AutoEvent/Events/EventArgs/ShotEventArgs.cs new file mode 100644 index 00000000..32bbdbf5 --- /dev/null +++ b/AutoEvent/Events/EventArgs/ShotEventArgs.cs @@ -0,0 +1,86 @@ +// ----------------------------------------------------------------------- +// +// Copyright (c) Exiled Team. All rights reserved. +// Licensed under the CC BY-SA 3.0 license. +// +// ----------------------------------------------------------------------- + +using PluginAPI.Core; +using UnityEngine; + +namespace AutoEvent.Events.EventArgs +{ + /// + /// Contains all information after a player has fired a weapon. + /// + public class ShotEventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// + /// + /// + /// The hit. + /// + /// + /// + /// + /// + /// + public ShotEventArgs(Player shooter, RaycastHit hit, IDestructible destructible, float damage) + { + Player = shooter; + Damage = damage; + Distance = hit.distance; + Position = hit.point; + RaycastHit = hit; + + if (destructible is HitboxIdentity identity) + { + Hitbox = identity; + Target = Player.Get(Hitbox.TargetHub); + } + } + + /// + /// Gets the target of the shot. Can be !. + /// + public Player Target { get; } + + /// + /// Gets the hitbox type of the shot. Can be !. + /// + public HitboxIdentity Hitbox { get; } + + /// + /// Gets the shot distance. + /// + public float Distance { get; } + + /// + /// Gets the shot position. + /// + public Vector3 Position { get; } + + /// + /// Gets the raycast result. + /// + public RaycastHit RaycastHit { get; } + + /// + /// Gets or sets the inflicted damage. + /// + public float Damage { get; set; } + + /// + /// Gets or sets a value indicating whether or not the shot can hurt the target. + /// + public bool CanHurt { get; set; } = true; + + /// + /// Gets the player who shot. + /// + public Player Player { get; } + } +} \ No newline at end of file diff --git a/AutoEvent/Events/Handlers/Players.cs b/AutoEvent/Events/Handlers/Players.cs index 27e3f6f9..fd1e8e46 100644 --- a/AutoEvent/Events/Handlers/Players.cs +++ b/AutoEvent/Events/Handlers/Players.cs @@ -15,6 +15,7 @@ internal class Players public static event Action PlayerNoclip; public static event Action SwingingJailbird; public static event Action ChargingJailbird; + public static event Action Shot; public static void OnDropAmmo(DropAmmoArgs ev) => DropAmmo?.Invoke(ev); public static void OnDropItem(DropItemArgs ev) => DropItem?.Invoke(ev); public static void OnPlaceTantrum(PlaceTantrumArgs ev) => PlaceTantrum?.Invoke(ev); @@ -25,5 +26,6 @@ internal class Players public static void OnPlayerNoclip(PlayerNoclipArgs ev) => PlayerNoclip?.Invoke(ev); public static void OnSwingingJailbird(SwingingJailbirdEventArgs ev) => SwingingJailbird?.Invoke(ev); public static void OnChargingJailbird(ChargingJailbirdEventArgs ev) => ChargingJailbird?.Invoke(ev); + public static void OnShot(ShotEventArgs ev) => Shot?.Invoke(ev); } } diff --git a/AutoEvent/FodyWeavers.xml b/AutoEvent/FodyWeavers.xml index 447bbee0..e0f5c8fe 100644 --- a/AutoEvent/FodyWeavers.xml +++ b/AutoEvent/FodyWeavers.xml @@ -9,6 +9,7 @@ NVorbis PowerupApi SchematicApi + InventoryMenu diff --git a/AutoEvent/FriendlyFireSystem.cs b/AutoEvent/FriendlyFireSystem.cs index ffda4f93..6ad4898d 100644 --- a/AutoEvent/FriendlyFireSystem.cs +++ b/AutoEvent/FriendlyFireSystem.cs @@ -38,7 +38,7 @@ private static void initializeFFSettings() } else DebugLogger.LogDebug("CedMod has not been detected."); - } + } public static bool FriendlyFireDetectorIsDisabled { get diff --git a/AutoEvent/Games/Deathmatch/EventHandler.cs b/AutoEvent/Games/Deathmatch/EventHandler.cs index 2e3738d6..a74816c9 100644 --- a/AutoEvent/Games/Deathmatch/EventHandler.cs +++ b/AutoEvent/Games/Deathmatch/EventHandler.cs @@ -104,9 +104,12 @@ public void OnPlayerDying(PlayerDyingArgs ev) ev.Target.RemoveItems(itemType); } var item = ev.Target.AddItem(_plugin.Config.AvailableWeapons.RandomItem()); - Timing.CallDelayed(0.1f, () => + Timing.CallDelayed(.1f, () => { - ev.Target.CurrentItem = item; // ev.Target.Items.ElementAt(0); + if (item != null) + { + ev.Target.CurrentItem = item; + } }); } diff --git a/AutoEvent/Games/Deathmatch/Plugin.cs b/AutoEvent/Games/Deathmatch/Plugin.cs index 1918f8fa..b5217939 100644 --- a/AutoEvent/Games/Deathmatch/Plugin.cs +++ b/AutoEvent/Games/Deathmatch/Plugin.cs @@ -28,13 +28,14 @@ public class Plugin : Event, IEventMap, IEventSound, IInternalEvent public MapInfo MapInfo { get; set; } = new MapInfo() {MapName = "Shipment", Position = new Vector3(93f, 1020f, -43f), }; public SoundInfo SoundInfo { get; set; } = new SoundInfo() - { SoundName = "ClassicMusic.ogg", Volume = 3, Loop = true }; + { SoundName = "Ultrakill.ogg", Volume = 10, Loop = true }; protected override float PostRoundDelay { get; set; } = 10f; private EventHandler EventHandler { get; set; } private DeathmatchTranslate Translation { get; set; } = AutoEvent.Singleton.Translation.DeathmatchTranslate; public int MtfKills { get; set; } public int ChaosKills { get; set; } private int _needKills; + private bool isFriendlyFire { get; set; } protected override void RegisterEvents() { @@ -49,6 +50,8 @@ protected override void RegisterEvents() Players.DropAmmo += EventHandler.OnDropAmmo; Players.PlayerDying += EventHandler.OnPlayerDying; Players.HandCuff += EventHandler.OnHandCuff; + + isFriendlyFire = Server.FriendlyFire; } protected override void UnregisterEvents() { @@ -63,10 +66,13 @@ protected override void UnregisterEvents() Players.HandCuff -= EventHandler.OnHandCuff; EventHandler = null; + Server.FriendlyFire = isFriendlyFire; } protected override void OnStart() { + Server.FriendlyFire = false; + float scale = 1; switch (Player.GetPlayers().Count()) { @@ -85,7 +91,7 @@ protected override void OnStart() var count = 0; foreach (Player player in Player.GetPlayers()) { - if (count % 2 == 0) + if (UnityEngine.Random.Range(0,2) == 1) { player.GiveLoadout(Config.NTFLoadouts, LoadoutFlags.ForceInfiniteAmmo | LoadoutFlags.IgnoreGodMode | LoadoutFlags.IgnoreWeapons); player.Position = RandomClass.GetRandomPosition(MapInfo.Map); @@ -98,9 +104,7 @@ protected override void OnStart() count++; } } - - protected override IEnumerator BroadcastStartCountdown() { for (int time = 10; time > 0; time--) @@ -117,9 +121,12 @@ protected override void CountdownFinished() var item = player.AddItem(Config.AvailableWeapons.RandomItem()); player.AddItem(ItemType.ArmorCombat); - Timing.CallDelayed(0.1f, () => + Timing.CallDelayed(.1f, () => { - player.CurrentItem = item; + if (item != null) + { + player.CurrentItem = item; + } }); } } diff --git a/AutoEvent/Games/FallDown/Configs/FallDownConfigPresets.cs b/AutoEvent/Games/FallDown/Configs/FallDownConfigPresets.cs index cb7bbb68..ab77844a 100644 --- a/AutoEvent/Games/FallDown/Configs/FallDownConfigPresets.cs +++ b/AutoEvent/Games/FallDown/Configs/FallDownConfigPresets.cs @@ -14,7 +14,7 @@ namespace AutoEvent.Games.Infection; public static class FallDownConfigPresets { - public static FallDownConfig PlatformWarning() => new FallDownConfig() + public static FallDownConfig PlatformWarning => new FallDownConfig() { PlatformsHaveColorWarning = true }; diff --git a/AutoEvent/Games/FallDown/Plugin.cs b/AutoEvent/Games/FallDown/Plugin.cs index 668dde8c..e4933447 100644 --- a/AutoEvent/Games/FallDown/Plugin.cs +++ b/AutoEvent/Games/FallDown/Plugin.cs @@ -23,7 +23,7 @@ public class Plugin : Event, IEventSound, IEventMap, IInternalEvent public override string CommandName { get; set; } = AutoEvent.Singleton.Translation.FallTranslate.FallCommandName; public override Version Version { get; set; } = new Version(1, 0, 0); [EventConfig] public FallDownConfig Config { get; set; } = null; - [EventConfig] public FallDownConfig Warning => FallDownConfigPresets.PlatformWarning(); + [EventConfigPreset] public FallDownConfig Warning => FallDownConfigPresets.PlatformWarning; public MapInfo MapInfo { get; set; } = new MapInfo() {MapName = "FallDown", Position = new Vector3(10f, 1020f, -43.68f) }; public SoundInfo SoundInfo { get; set; } = new SoundInfo() diff --git a/AutoEvent/Games/GhostBusters/Configs/GhostBustersConfig.cs b/AutoEvent/Games/GhostBusters/Configs/GhostBustersConfig.cs new file mode 100644 index 00000000..a7efd3c7 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Configs/GhostBustersConfig.cs @@ -0,0 +1,130 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: GhostBustersConfig.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 2:05 AM +// Created Date: 10/28/2023 2:05 AM +// ----------------------------------------- + +using System.Collections.Generic; +using System.ComponentModel; +using AutoEvent.API; +using AutoEvent.API.Enums; +using AutoEvent.Games.GhostBusters.Features; +using AutoEvent.Interfaces; +using PlayerRoles; + +namespace AutoEvent.Games.GhostBusters.Configs; + +public class GhostBustersConfig : EventConfig +{ + [Description("How much time the hunters have to kill the ghosts until ghosts can kill them.")] + public int TimeUntilMidnightInSeconds { get; set; } = 260; + + [Description("How much time the ghosts have to kill the hunters, after midnight hits.")] + public int MidnightDurationInSeconds { get; set; } = 120; + + public float MicroRechargePercentPerSecond { get; set; } = 10; + public float MicroRechargeDelayOffset { get; set; } = 5; + + public Dictionary Abilities { get; set; } = new() + { + { GhostBusterClassType.GhostBall, new GhostAbility(1, 0, 20) }, + { GhostBusterClassType.GhostExplosive, new GhostAbility(2, 0, 20) }, + { GhostBusterClassType.GhostFlash, new GhostAbility(2, 5, 20) }, + { GhostBusterClassType.GhostLockdown, new GhostAbility(2, 5, 20) }, + { GhostBusterClassType.GhostInvisibility, new GhostAbility(2, 5, 20) }, + { GhostBusterClassType.GhostSpeed, new GhostAbility(2, 5, 20, 20) }, + }; + public RoleCount HunterCount { get; set; } = new RoleCount(2, 4, 30); + + [Description("Recommended to use Metal or Ghostly effects, as they are the most fitting. Ghostly can be too hard to see.")] + public List GhostLoadouts { get; set; } = new List() + { + new Loadout() + { + Roles = new Dictionary() + { + { RoleTypeId.Scientist, 100 } + }, + Effects = new List() + { + new Effect() + { + EffectType = StatusEffect.Metal + }, + }, + } + }; + public Loadout SniperLoadout { get; set; } = new Loadout() + { + Roles = new Dictionary() + { + { RoleTypeId.ChaosRifleman, 100 } + }, + Items = new List() + { + ItemType.ParticleDisruptor, + ItemType.Radio, + ItemType.KeycardO5 + }, + Health = 2000, + }; + public Loadout TankLoadout { get; set; } = new Loadout() + { + Roles = new Dictionary() + { + { RoleTypeId.ChaosMarauder, 100 } + }, + Items = new List() + { + ItemType.MicroHID, + ItemType.Radio, + ItemType.KeycardO5 + }, + Health = 2000, + }; + public Loadout MeleeLoadout { get; set; } = new Loadout() + { + Roles = new Dictionary() + { + { RoleTypeId.ChaosRifleman, 100 } + }, + Items = new List() + { + ItemType.Jailbird, + ItemType.Radio, + ItemType.KeycardO5 + }, + Effects = new List() + { + new Effect() + { + EffectType = StatusEffect.MovementBoost, + Intensity = 20, + } + }, + Health = 2000, + }; + +} + +public struct GhostAbility +{ + public GhostAbility(int allowedUses, float duration, float cooldown, byte intensity = 0) + { + AllowedUses = allowedUses; + Duration = duration; + Cooldown = cooldown; + Intensity = intensity; + } + //public float InitialCooldown { get; set; } + public float Cooldown { get; set; } + public int AllowedUses { get; set; } + public float Duration { get; set; } + public byte Intensity { get; set; } +} \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/Configs/Translation.cs b/AutoEvent/Games/GhostBusters/Configs/Translation.cs new file mode 100644 index 00000000..56b06397 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Configs/Translation.cs @@ -0,0 +1,36 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Translation.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 1:52 AM +// Created Date: 10/28/2023 1:52 AM +// ----------------------------------------- + +using Exiled.API.Interfaces; + +namespace AutoEvent.Games.GhostBusters.Configs; + + +#if EXILED +public class GhostBustersTranslate : ITranslation +#else + public class GhostBustersTranslate +#endif +{ + public string GhostBustersCommandName { get; set; } = "ghosts"; // Soccer in america - football everywhere else 🦅🦅🦅🇺🇸🇺🇸🇺🇸 <- (USA Flag doesnt render in rider...) + public string GhostBustersName { get; set; } = "Ghost Busters [Halloween]"; // Soccer in america - football everywhere else 🦅🦅🦅🇺🇸🇺🇸🇺🇸 <- (USA Flag doesnt render in rider...) + public string GhostBustersDescription { get; set; } = "Ghostbusters vs ghosts. The clock is ticking, will the ghost-busters be able to kill all ghosts before midnight hits?"; + public string GhostBustersStartGhostMessage { get; set; } = "You're a Ghost!\nRun and Hide from the Ghost Busters! They will try and take you out!\nSelect a role via your inventory menu. \nYou will be given a powerup that can be accessed in you inventory menu."; + public string GhostBustersStartHunterMessage { get; set; } = "You're a Ghost-Buster!\nFind all the ghosts before it is too late!\nYou can select a role in your inventory menu. "; + public string GhostBustersRunning { get; set; } = "Time Until Midnight: {time}\nGhosts Alive: {ghosts}, Ghost-Busters Alive: {hunters}"; + public string GhostBustersMidnightGhostMessage { get; set; } = "Midnight Has Hit\nFind and kill the Ghost Busters!\n{time}"; + public string GhostBustersMidnightHunterMessage { get; set; } = "Midnight Has Hit\nRun and hide for your life! The ghosts are after you!\n{time}"; + public string GhostBustersGhostsWin { get; set; } = "Ghost Win\nThe ghosts have killed all hunters."; + + public string GhostBustersHuntersWin { get; set; } = "Ghost-Buster Win\nThe Ghost-Busters have managed to exterminate all of the ghosts."; + public string GhostBustersTie { get; set; } = "Ghost-Buster Win\nThe Ghost-Busters have managed to survive the night."; + } \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/EventHandler.cs b/AutoEvent/Games/GhostBusters/EventHandler.cs new file mode 100644 index 00000000..18ece036 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/EventHandler.cs @@ -0,0 +1,173 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: EventHandlers.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 1:51 AM +// Created Date: 10/28/2023 1:51 AM +// ----------------------------------------- + +using AutoEvent.API.Enums; +using AutoEvent.Events.EventArgs; +using AutoEvent.Games.GhostBusters.Features; +using CustomPlayerEffects; +using InventorySystem.Items.Firearms; +using InventorySystem.Items.ThrowableProjectiles; +using PlayerStatsSystem; +using PluginAPI.Core.Attributes; +using PluginAPI.Enums; +using PluginAPI.Events; + +namespace AutoEvent.Games.GhostBusters; + +public class EventHandler +{ + private Plugin _plugin { get; set; } + public EventHandler(Plugin plugin) + { + _plugin = plugin; + } + + [PluginEvent(ServerEventType.PlayerLeft)] + public void OnPlayerLeft(PlayerLeftEvent ev) + { + if (_plugin.Hunters.Contains(ev.Player)) + { + _plugin.Hunters.Remove(ev.Player); + } + } + + [PluginEvent(ServerEventType.PlayerReceiveEffect)] + public bool OnReceiveEffect(PlayerReceiveEffectEvent ev) + { + if (ev.Effect is Flashed) + { + ev.Duration = _plugin.Config.Abilities[GhostBusterClassType.GhostFlash].Duration; + ev.Intensity = _plugin.Config.Abilities[GhostBusterClassType.GhostFlash].Intensity; + } + return true; + } + + [PluginEvent(ServerEventType.PlayerThrowProjectile)] + public bool OnThrowableItem(PlayerThrowProjectileEvent ev) + { + return true; + } + + [PluginEvent(ServerEventType.PlayerShotWeapon)] + public void OnShotWeapon(PlayerShotWeaponEvent ev) + { + ev.Firearm._status = new FirearmStatus(byte.MaxValue, + FirearmStatusFlags.Chambered | FirearmStatusFlags.MagazineInserted | FirearmStatusFlags.Cocked, + ev.Firearm._status.Attachments); + } + + [PluginEvent(ServerEventType.PlayerDeath)] + public void OnPlayerDeath(PlayerDeathEvent ev) + { + if (_plugin.Hunters.Contains(ev.Player)) + { + _plugin.Hunters.Remove(ev.Player); + } + } + + [PluginEvent(ServerEventType.PlayerDamage)] + public bool OnPlayerDamage(PlayerDamageEvent ev) + { + if (ev.Target == ev.Player) + { + return false; + } + bool targetIsGhost = _plugin.IsGhost(ev.Target); + bool attackerIsGhost = _plugin.IsGhost(ev.Player); + if (ev.DamageHandler is ExplosionDamageHandler explosion) + { + if (targetIsGhost && attackerIsGhost) + return false; + + if (!targetIsGhost && !attackerIsGhost) + return false; + + if (!targetIsGhost && attackerIsGhost) + { + explosion.Damage = _plugin.Damages[ItemType.GrenadeHE]; + return true; + } + + return true; + } + + if (ev.DamageHandler is DisruptorDamageHandler disruptor) + { + if (targetIsGhost && attackerIsGhost) + return false; + + if (!targetIsGhost && !attackerIsGhost) + return false; + + if (targetIsGhost && !attackerIsGhost) + { + disruptor.Damage = _plugin.Damages[ItemType.ParticleDisruptor]; + return true; + } + + return true; + } + + if (ev.DamageHandler is Scp018DamageHandler ball) + { + if (targetIsGhost && attackerIsGhost) + return false; + + if (!targetIsGhost && !attackerIsGhost) + return true; + + if (targetIsGhost && !attackerIsGhost) + { + //ball.Damage = _plugin.Damages[ItemType.ParticleDisruptor]; + return true; + } + + return false; + } + if (ev.DamageHandler is MicroHidDamageHandler micro) + { + if (targetIsGhost && attackerIsGhost) + return false; + + if (!targetIsGhost && !attackerIsGhost) + return false; + + micro.Damage = _plugin.Damages[ItemType.MicroHID]; + if (targetIsGhost) + { + ev.Target.GiveEffect(StatusEffect.SinkHole, 1, 1, false); + } + return true; + } + + if (ev.DamageHandler is JailbirdDamageHandler jailbird) + { + if (targetIsGhost && attackerIsGhost) + return false; + + if (!targetIsGhost && !attackerIsGhost) + return false; + + jailbird.Damage = _plugin.Damages[ItemType.Jailbird]; + return true; + } + + + return true; + } + public void OnTeamRespawn(TeamRespawnArgs ev) => ev.IsAllowed = false; + public void OnSpawnRagdoll(SpawnRagdollArgs ev) => ev.IsAllowed = false; + public void OnPlaceBullet(PlaceBulletArgs ev) => ev.IsAllowed = false; + public void OnPlaceBlood(PlaceBloodArgs ev) => ev.IsAllowed = false; + public void OnDropItem(DropItemArgs ev) => ev.IsAllowed = false; + public void OnDropAmmo(DropAmmoArgs ev) => ev.IsAllowed = false; +} \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/Features/Ability.cs b/AutoEvent/Games/GhostBusters/Features/Ability.cs new file mode 100644 index 00000000..39d0714e --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Features/Ability.cs @@ -0,0 +1,74 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Ability.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 4:15 PM +// Created Date: 10/28/2023 4:15 PM +// ----------------------------------------- + +using System; +using System.Collections.Generic; +using InventorySystem; +using InventorySystem.Items; +using PluginAPI.Core; + +namespace AutoEvent.Games.GhostBusters.Features; + +public class Ability +{ + public static Dictionary Damages = new Dictionary() + { + { ItemType.GrenadeHE, 800 }, + }; + public Ability(ItemType item, GhostBusterClassType classType, string description = "", float cooldown = 20, float initialCooldown = -2, short allowedUses = -1, float useDuration = 10f, Action? onAbilityUsed = null) + { + Description = description; + Cooldown = cooldown; + ClassType = classType; + AllowedUses = allowedUses; + ItemType = item; + UseDuration = useDuration; + + if (initialCooldown == -2) + InitialCooldown = cooldown; + else + InitialCooldown = initialCooldown; + + if (onAbilityUsed != null) + { + AbilityUsed += onAbilityUsed; + } + + var itemInfo = createNewItem(ItemType); + Serial = itemInfo.Key; + ItemBase = itemInfo.Value; + } + public string Description { get; set; } + public ItemType ItemType { get; set; } + public ItemBase ItemBase { get; set; } + public ushort Serial { get; set; } + public short AllowedUses { get; set; } + public GhostBusterClassType ClassType { get; set; } + public float Cooldown { get; set; } + public float InitialCooldown { get; set; } + public float UseDuration { get; set; } + public event Action AbilityUsed; + public void OnAbilityUsed(Player ply, Ability ability) => AbilityUsed?.Invoke(ply, ability); + + private static KeyValuePair createNewItem(ItemType item) + { + ushort serial = ItemSerialGenerator.GenerateNext(); + if(InventoryItemLoader.AvailableItems.TryGetValue(item, out var value) && value is not null) + { + value.ItemSerial = serial; + KeyValuePair kvp = new(serial, value); + return kvp; + } + + return new KeyValuePair(); + } +} diff --git a/AutoEvent/Games/GhostBusters/Features/AbilityImplementations.cs b/AutoEvent/Games/GhostBusters/Features/AbilityImplementations.cs new file mode 100644 index 00000000..45352a47 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Features/AbilityImplementations.cs @@ -0,0 +1,189 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: AbilityImplementations.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 4:39 PM +// Created Date: 10/28/2023 4:39 PM +// ----------------------------------------- + +using System.Collections.Generic; +using AutoEvent.API; +using AutoEvent.API.Enums; +using CustomPlayerEffects; +using Footprinting; +using InventoryMenu.API; +using InventorySystem.Items; +using InventorySystem.Items.Pickups; +using InventorySystem.Items.ThrowableProjectiles; +using MEC; +using Mirror; +using PluginAPI.Core; +using UnityEngine; + +namespace AutoEvent.Games.GhostBusters.Features; + +public class AbilityImplementations +{ + private static GhostBusters.Plugin _plugin => (AutoEvent.ActiveEvent as GhostBusters.Plugin)!; + + public static bool CanPlayerUseAbility(Player ply, out GhostBusterClass? plyClass, bool applyUsage = true) + { + plyClass = null; + if (!_plugin!.Classes.ContainsKey(ply)) + { + ply.ReceiveHint("Cannot Use Ability \nYou are not spawned or an issue has occured.",7f); + return false; + } + + plyClass = _plugin.Classes[ply]; + if (!plyClass.IsAbilityReady(out string reason)) + { + DebugLogger.LogDebug($"Player {ply.Nickname} cannot use ability. Reason: {reason}"); + ply.ReceiveHint($"Cannot Use Ability\n{reason}", 7f); + return false; + } + + if (!applyUsage) + return true; + + plyClass.AbilityCooldown = plyClass.Ability!.Cooldown; + plyClass.AbilityUses++; + return true; + } + public static void UseInvisibilityAbility(Player ply, Ability ability) + { + if (!CanPlayerUseAbility(ply, out _)) + return; + + ply.GiveEffect(StatusEffect.Invisible, 1, 10f, false); + } + public static void UseTrapEffect(Player ply) + { + if (!CanPlayerUseAbility(ply, out _, false)) + return; + + + var plyClass = _plugin.Classes[ply]; + plyClass.AbilityCooldown = plyClass.Ability!.Cooldown; + plyClass.AbilityUses++; + } + public static void UseSpeedEffect(Player ply, Ability ability) + { + if (!CanPlayerUseAbility(ply, out var plyClass)) + return; + + ply.GiveEffect(StatusEffect.MovementBoost,20, plyClass!.Ability!.UseDuration, false); + ply.ApplyFakeEffect(1); + + Timing.CallDelayed(plyClass.Ability!.UseDuration, () => + { + ply.ApplyFakeEffect(0); + }); + } + + public static void UseFlashEffect(Player ply, Ability ability) + { + if (!CanPlayerUseAbility(ply, out var plyClass)) + return; + + //todo make flashbangs invisible to teammates. + _triggerFlashGrenade(ply); + } + + private static void _triggerFlashGrenade(Player ply) + { + var identifier = new ItemIdentifier(ItemType.GrenadeFlash, ItemSerialGenerator.GenerateNext()); + var item = ReferenceHub.HostHub.inventory.CreateItemInstance(identifier, false) as ThrowableItem; + + TimeGrenade grenade = (TimeGrenade)Object.Instantiate(item.Projectile, ply.Position, Quaternion.identity); + grenade._fuseTime = 0.1f; + grenade.NetworkInfo = new PickupSyncInfo(item.ItemTypeId, item.Weight, item.ItemSerial); + grenade.transform.localScale = new Vector3(1, 1, 1); + + NetworkServer.Spawn(grenade.gameObject); + grenade.ServerActivate(); + } + + public static void UseExplosionEffect(Player ply, Ability ability) + { + if (!CanPlayerUseAbility(ply, out var plyClass)) + return; + + _triggerGrenade(ply); + } + private static void _triggerGrenade(Player ply) + { + var identifier = new ItemIdentifier(ItemType.GrenadeHE, ItemSerialGenerator.GenerateNext()); + var item = ReferenceHub.HostHub.inventory.CreateItemInstance(identifier, false) as ThrowableItem; + item.ExplodeOnCollision(); + + TimeGrenade grenade = (TimeGrenade)Object.Instantiate(item.Projectile, ply.Position, Quaternion.identity); + grenade._fuseTime = 3f; + + grenade.PreviousOwner = new Footprint(ply.ReferenceHub); + grenade.NetworkInfo = new PickupSyncInfo(item.ItemTypeId, item.Weight, item.ItemSerial); + grenade.transform.localScale = new Vector3(1, 1, 1); + + NetworkServer.Spawn(grenade.gameObject); + grenade.ServerActivate(); + } + + public static void UseBallEffect(Player ply, Ability ability) + { + if (!CanPlayerUseAbility(ply, out var plyClass)) + return; + _triggerBall(ply); + + } + private static void _triggerBall(Player ply) + { + var itemBase = ply.AddItem(ItemType.SCP018); + ply.HideMenu(); + ply.RefreshInventory(); + Timing.CallDelayed(0.1f, () => + { + ply.CurrentItem = itemBase; + var projectileSettings = ((ThrowableItem)itemBase); + double startVelocity = (double) projectileSettings.FullThrowSettings.StartVelocity; + double upwardsFactor = (double) projectileSettings.FullThrowSettings.UpwardsFactor; + Vector3 startTorque = projectileSettings.FullThrowSettings.StartTorque; + Vector3 limitedVelocity = ThrowableNetworkHandler.GetLimitedVelocity(ply.Velocity); + projectileSettings.ServerThrow((float)startVelocity * 3, (float)upwardsFactor, startTorque * 3, limitedVelocity); + Timing.CallDelayed(1f, () => ply.ShowMenu(_plugin.GhostPowerupMenu)); + + }); + } + + public static void UseLockdownEffect(Player ply, Ability ability) + { + if (!CanPlayerUseAbility(ply, out var plyClass)) + return; + + _trigger2176(ply); + } + + private static void _trigger2176(Player ply) + { + var itemBase = ply.AddItem(ItemType.SCP2176); + ply.HideMenu(); + ply.RefreshInventory(); + Timing.CallDelayed(0.1f, () => + { + ply.CurrentItem = itemBase; + var projectileSettings = ((ThrowableItem)itemBase); + double startVelocity = (double) projectileSettings.FullThrowSettings.StartVelocity; + double upwardsFactor = (double) projectileSettings.FullThrowSettings.UpwardsFactor; + Vector3 startTorque = projectileSettings.FullThrowSettings.StartTorque; + Vector3 limitedVelocity = ThrowableNetworkHandler.GetLimitedVelocity(ply.Velocity); + projectileSettings.ServerThrow((float)startVelocity * 3, (float)upwardsFactor, startTorque * 3, limitedVelocity); + projectileSettings.gameObject.TryGetComponent(out var comp); + Timing.CallDelayed(1f, () => ply.ShowMenu(_plugin.GhostPowerupMenu)); + + }); + } + +} \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/Features/GhostBusterClass.cs b/AutoEvent/Games/GhostBusters/Features/GhostBusterClass.cs new file mode 100644 index 00000000..2e9577f9 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Features/GhostBusterClass.cs @@ -0,0 +1,79 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: GhostBusterClass.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 4:12 PM +// Created Date: 10/28/2023 4:11 PM +// ----------------------------------------- + +using System.Linq; +using AutoEvent.Games.GhostBusters.Configs; +using PluginAPI.Core; + +namespace AutoEvent.Games.GhostBusters.Features; + +public class GhostBusterClass +{ + public GhostBusterClass(Player ply, GhostBusterClassType type) + { + Player = ply; + ClassType = type; + AbilityCooldown = 0; + } + public Player Player { get; set; } + public GhostBusterClassType ClassType { get; set; } + public float AbilityCooldown { get; set; } + public Ability Ability => (AutoEvent.ActiveEvent as GhostBusters.Plugin)!.Abilities.First(x => x.ClassType == ClassType); + public float AbilityUses { get; set; } + + public bool IsAbilityReady(out string reason) + { + reason = "Ability is ready"; + if (Player.IsBypassEnabled) + { + reason = "Bypass Mode Enabled"; + } + if (Ability is null) + { + reason = "No class selected"; + return false; + } + if (AbilityUses >= Ability.AllowedUses && Ability.AllowedUses != -1) + { + reason = $"You have no more uses remaining \n[{AbilityUses} / {Ability.AllowedUses}]"; + return false; + } + + if (AbilityCooldown == -1) + { + reason = "You ability has been disabled"; + return false; + } + + if (AbilityCooldown > 0) + { + reason = $"Your ability is on cooldown \n{AbilityCooldown} seconds remaining"; + return false; + } + + return true; + } +} +public enum GhostBusterClassType +{ + HunterUnchosen, + GhostUnchosen, + HunterTank, + HunterMelee, + HunterSniper, + GhostInvisibility, + GhostSpeed, + GhostExplosive, + GhostFlash, + GhostBall, + GhostLockdown, +} \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/Features/Loadouts.cs b/AutoEvent/Games/GhostBusters/Features/Loadouts.cs new file mode 100644 index 00000000..46dd13f0 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Features/Loadouts.cs @@ -0,0 +1,124 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Loadouts.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 7:31 PM +// Created Date: 10/28/2023 7:31 PM +// ----------------------------------------- + +using System.Collections.Generic; +using System.Linq; +using AutoEvent.API; +using CustomPlayerEffects; +using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventorySystem.Items; +using MEC; + +namespace AutoEvent.Games.GhostBusters.Features; + +public class Loadouts +{ + private Plugin _plugin; + public Loadouts(Plugin plugin) + { + _plugin = plugin; + } + internal void HuntersSelectLoadout(MenuItemClickedArgs ev) + { + GhostBusterClassType type = ev.MenuItemClicked.Item switch + { + ItemType.MicroHID => GhostBusterClassType.HunterTank, + ItemType.ParticleDisruptor => GhostBusterClassType.HunterSniper, + ItemType.Jailbird => GhostBusterClassType.HunterMelee, + _ => GhostBusterClassType.HunterUnchosen + }; + + if (!_plugin.Classes.ContainsKey(ev.Player)) + _plugin.Classes.Add(ev.Player, new GhostBusterClass(ev.Player, type)); + else + _plugin.Classes[ev.Player].ClassType = type; + + switch (type) + { + case GhostBusterClassType.HunterTank: + ev.Player.GiveLoadout(_plugin.Config.TankLoadout); + break; + case GhostBusterClassType.HunterSniper: + ev.Player.GiveLoadout(_plugin.Config.SniperLoadout); + break; + case GhostBusterClassType.HunterMelee: + ev.Player.GiveLoadout(_plugin.Config.MeleeLoadout); + if(ev.Player.EffectsManager.GetEffect()?.Intensity > 0) + ev.Player.ApplyFakeEffect(1); + break; + } + ev.Player.HideMenu(); + + Timing.CallDelayed(0.1f, () => + { + ev.Player.CurrentItem = ev.Player.Items.First(x => x.ItemTypeId.IsWeapon()); + }); + } + internal void GhostUseAbility(MenuItemClickedArgs ev) + { + if (!_plugin.Classes.ContainsKey(ev.Player)) + { + DebugLogger.LogDebug("Doesnt contain player"); + return; + } + + if (!ev.IsLeftClick) + { + int uses = _plugin.Classes[ev.Player].Ability!.AllowedUses; + string cooldown = (_plugin.Classes[ev.Player].AbilityCooldown < -1 ? "No more uses." : $"Ability Cooldown: {_plugin.Classes[ev.Player].AbilityCooldown}"); + + ev.Player.ReceiveHint($"{_plugin.Classes[ev.Player].Ability!.Description}\n{cooldown}\n" + + $"Ability Uses [{_plugin.Classes[ev.Player].AbilityUses} / {(uses == -1 ? "Unlimited" : uses.ToString())}]"); + return; + } + + if (!_plugin.Classes[ev.Player].IsAbilityReady(out string reason)) + { + ev.Player.ReceiveHint($"Cannot use ability - {reason}.", 5f); + return; + } + _plugin.Classes[ev.Player].Ability!.OnAbilityUsed(ev.Player, _plugin.Classes[ev.Player].Ability!); + } + internal void GhostSelectLoadout(MenuItemClickedArgs ev) + { + GhostBusterClassType type = ev.MenuItemClicked.Item switch + + { + ItemType.SCP268 => GhostBusterClassType.GhostInvisibility, + ItemType.SCP207 => GhostBusterClassType.GhostSpeed, + ItemType.GrenadeHE => GhostBusterClassType.GhostExplosive, + ItemType.GrenadeFlash => GhostBusterClassType.GhostFlash, + ItemType.SCP018 => GhostBusterClassType.GhostBall, + ItemType.SCP2176 => GhostBusterClassType.GhostLockdown, + _ => GhostBusterClassType.GhostUnchosen + }; + + if (!_plugin.Classes.ContainsKey(ev.Player)) + _plugin.Classes.Add(ev.Player, new GhostBusterClass(ev.Player, type)); + else + _plugin.Classes[ev.Player].ClassType = type; + + ev.Player.HideMenu(); + ev.Player.ShowMenu(_plugin.GhostPowerupMenu); + } + public void ProcessGetMenuArgs(GetMenuItemsForPlayerArgs ev) + { + if (!_plugin.Classes.ContainsKey(ev.Player)) + return; + var ability = _plugin.Abilities.First(x => x.ClassType == _plugin.Classes[ev.Player].ClassType); + var item = ev.Menu.ItemBases.First(x => x.Key == ability.Serial); + + ev.Items = new Dictionary() { { item.Key, item.Value } }; + + } +} \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/Features/TPUtils.cs b/AutoEvent/Games/GhostBusters/Features/TPUtils.cs new file mode 100644 index 00000000..38e09490 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Features/TPUtils.cs @@ -0,0 +1,46 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: TPUtils.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 5:32 PM +// Created Date: 10/28/2023 5:32 PM +// ----------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using CommandSystem.Commands.RemoteAdmin; +using Interactables.Interobjects; +using Interactables.Interobjects.DoorUtils; +using MapGeneration; +using PlayerRoles.FirstPersonControl; +using PluginAPI.Core; +using UnityEngine; + +namespace AutoEvent.Games.GhostBusters.Features; + +public class TPUtils +{ + public static Vector3 GetRoomInHeavy(Player ply) + { + var room = Map.GetRandomRoom(FacilityZone.HeavyContainment); + RoomIdentifier roomIdentifier = RoomIdUtils.RoomAtPositionRaycasts(room.ApiRoom.Position); + + DoorVariant[] whitelistedDoorsForZone = PlayerRoles.PlayableScps.Scp106.Scp106PocketExitFinder.GetWhitelistedDoorsForZone(roomIdentifier.Zone); + if (whitelistedDoorsForZone.Length != 0) + { + DoorVariant randomDoor = PlayerRoles.PlayableScps.Scp106.Scp106PocketExitFinder.GetRandomDoor(whitelistedDoorsForZone); + float range = ((roomIdentifier.Zone == FacilityZone.Surface) ? 45f : 11f); + if (ply.RoleBase is not IFpcRole fpc) + goto NearestDoor; + return PlayerRoles.PlayableScps.Scp106.Scp106PocketExitFinder.GetSafePositionForDoor(randomDoor, range, fpc.FpcModule.CharController); + } + NearestDoor: + return DoorVariant.AllDoors.OrderBy(x => Vector3.Distance(ply.Position, x.transform.position)).FirstOrDefault()?.transform.position ?? ply.Position; + } + +} \ No newline at end of file diff --git a/AutoEvent/Games/GhostBusters/Plugin.cs b/AutoEvent/Games/GhostBusters/Plugin.cs new file mode 100644 index 00000000..161510c5 --- /dev/null +++ b/AutoEvent/Games/GhostBusters/Plugin.cs @@ -0,0 +1,397 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Plugin.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 1:50 AM +// Created Date: 10/28/2023 1:50 AM +// ----------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using AutoEvent.Events.Handlers; +using AutoEvent.Games.GhostBusters.Configs; +using AutoEvent.Games.GhostBusters.Features; +using AutoEvent.Games.Infection; +using AutoEvent.Interfaces; +using CustomPlayerEffects; +using HarmonyLib; +using Interactables.Interobjects; +using Interactables.Interobjects.DoorUtils; +using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventoryMenu.API.Features; +using InventorySystem; +using InventorySystem.Items; +using InventorySystem.Items.Firearms; +using InventorySystem.Items.MicroHID; +using MapGeneration; +using MEC; +using PlayerRoles; +using PluginAPI.Core; +using PluginAPI.Core.Doors; +using PluginAPI.Events; +using Powerups.Extensions; +using UnityEngine; +using Event = AutoEvent.Interfaces.Event; + +namespace AutoEvent.Games.GhostBusters; + +public class Plugin : Event, IInternalEvent, IEventSound + { + public override string Name { get; set; } = AutoEvent.Singleton.Translation.GhostBustersTranslate.GhostBustersName; + public override string Description { get; set; } = AutoEvent.Singleton.Translation.GhostBustersTranslate.GhostBustersDescription; + public override string Author { get; set; } = "Redforce04 and Riptide"; + public override string CommandName { get; set; } = AutoEvent.Singleton.Translation.GhostBustersTranslate.GhostBustersCommandName; + public override Version Version { get; set; } = new Version(1, 0, 0); + [EventConfig] public GhostBustersConfig Config { get; set; } + public SoundInfo SoundInfo { get; set; } = new SoundInfo() + { SoundName = "Ghostbusters.ogg", Volume = 5, Loop = true }; + protected override float PostRoundDelay { get; set; } = 10f; + protected override float FrameDelayInSeconds { get; set; } = 1f; + private EventHandler EventHandler { get; set; } + private GhostBustersTranslate Translation { get; set; } = AutoEvent.Singleton.Translation.GhostBustersTranslate; + private TimeSpan _remainingTime; + public Dictionary Classes; + public Loadouts Loadouts { get; set; } + public List Abilities { get; set; } + internal Menu HunterRoleMenu { get; set; } + internal Menu GhostRoleMenu { get; set; } + internal Menu GhostPowerupMenu { get; set; } + public List Hunters { get; set; } + public Dictionary HIDCache { get; set; } + + public Dictionary Damages = new Dictionary() + { + { ItemType.GrenadeHE, 600 }, + { ItemType.MicroHID, 3 }, + // { ItemType.SCP018, 600 }, + { ItemType.ParticleDisruptor, 75 }, + { ItemType.Jailbird, 50 }, + }; + public Stage CurrentStage { get; set; } + public enum Stage { Prep, PreMidnight, Midnight } + protected override void RegisterEvents() + { + this.Hunters = new List(); + Loadouts = new Loadouts(this); + this.Classes = new Dictionary(); + EventHandler = new EventHandler(this); + EventManager.RegisterEvents(EventHandler); + Servers.TeamRespawn += EventHandler.OnTeamRespawn; + Servers.SpawnRagdoll += EventHandler.OnSpawnRagdoll; + Servers.PlaceBullet += EventHandler.OnPlaceBullet; + Servers.PlaceBlood += EventHandler.OnPlaceBlood; + Players.DropItem += EventHandler.OnDropItem; + Players.DropAmmo += EventHandler.OnDropAmmo; + } + + protected override void UnregisterEvents() + { + EventManager.UnregisterEvents(EventHandler); + Servers.TeamRespawn -= EventHandler.OnTeamRespawn; + Servers.SpawnRagdoll -= EventHandler.OnSpawnRagdoll; + Servers.PlaceBullet -= EventHandler.OnPlaceBullet; + Servers.PlaceBlood -= EventHandler.OnPlaceBlood; + Players.DropItem -= EventHandler.OnDropItem; + Players.DropAmmo -= EventHandler.OnDropAmmo; + Loadouts = null; + EventHandler = null; + } + protected override void OnStart() + { + HIDCache = new Dictionary(); + Timing.CallDelayed(3f, () => + { + List ids = RoomIdentifier.AllRoomIdentifiers.Where(x => x.ApiRoom.Identifier.Name is RoomName.HczCheckpointA or RoomName.HczCheckpointB).ToList(); + var doors = BreakableDoor.AllDoors.Where(x => x.Rooms.Any(room => ids.Contains(room))); + DebugLogger.LogDebug($"Doors: {doors.Count()}"); + foreach (var x in PryableDoor.AllDoors.Where(X => X.Rooms.Any(rm => rm.Name == RoomName.HczCheckpointToEntranceZone && X is PryableDoor))) + { + if (x is not PryableDoor gate) + { + continue; + } + gate.IsScp106Passable = false; + + if(gate is IScp106PassableDoor door) + door.IsScp106Passable = false; + + /*if (gate is BreakableDoor breakableDoor) + { + breakableDoor.IsScp106Passable = false; + breakableDoor.IgnoredDamageSources = DoorDamageType.Grenade | DoorDamageType.Scp096 | + DoorDamageType.Weapon | DoorDamageType.ServerCommand; + }*/ + + gate.ServerChangeLock(DoorLockReason.AdminCommand, true); + } + }); + CurrentStage = Stage.Prep; + Abilities = new List() { }; + var a = Config.Abilities[GhostBusterClassType.GhostInvisibility]; + Abilities.Add(new Ability(ItemType.SCP268, GhostBusterClassType.GhostInvisibility, "Invisibility - You can go invisible for a few seconds.", a.Cooldown, -2, (short) a.AllowedUses, a.Duration, Features.AbilityImplementations.UseInvisibilityAbility)); + a = Config.Abilities[GhostBusterClassType.GhostSpeed]; + Abilities.Add(new Ability(ItemType.SCP207, GhostBusterClassType.GhostSpeed, "Speed Rush - You can trigger a speed rush to get away.", a.Cooldown, -2, (short)a.AllowedUses, a.Duration, Features.AbilityImplementations.UseSpeedEffect)); + a = Config.Abilities[GhostBusterClassType.GhostExplosive]; + Abilities.Add(new Ability(ItemType.GrenadeHE, GhostBusterClassType.GhostExplosive, "Explosive - You have a trap that can be placed.", a.Cooldown, -2,(short) a.AllowedUses, a.Duration, Features.AbilityImplementations.UseExplosionEffect)); + a = Config.Abilities[GhostBusterClassType.GhostFlash]; + Abilities.Add(new Ability(ItemType.GrenadeFlash, GhostBusterClassType.GhostFlash, "Flash - You can flash the hunters for a brief period of time.", a.Cooldown, -2,(short) a.AllowedUses, a.Duration, Features.AbilityImplementations.UseFlashEffect)); + a = Config.Abilities[GhostBusterClassType.GhostBall]; + Abilities.Add(new Ability(ItemType.SCP018, GhostBusterClassType.GhostBall, "Ball - You have a ball that you can throw at hunters to do damage.", a.Cooldown, -2,(short) a.AllowedUses, a.Duration, Features.AbilityImplementations.UseBallEffect)); + a = Config.Abilities[GhostBusterClassType.GhostLockdown]; + Abilities.Add(new Ability(ItemType.SCP2176, GhostBusterClassType.GhostLockdown, "Lockdown - You can lock a room for a few moments to get away.", a.Cooldown, -2,(short) a.AllowedUses, a.Duration, Features.AbilityImplementations.UseLockdownEffect)); + + Classes = new Dictionary(); + Extensions.JailbirdIsInvincible = true; + HunterRoleMenu = new Menu("Available Roles. Right click to view more details, left click to select the role.", false); + HunterRoleMenu.AddItem(new MenuItem(ItemType.MicroHID, "Tank Loadout", 0, Loadouts.HuntersSelectLoadout)); + HunterRoleMenu.AddItem(new MenuItem(ItemType.ParticleDisruptor, "Sniper Loadout", 1, Loadouts.HuntersSelectLoadout)); + HunterRoleMenu.AddItem(new MenuItem(ItemType.Jailbird, "Melee Loadout", 2, Loadouts.HuntersSelectLoadout)); + GhostRoleMenu = new Menu("Available Roles. Right click to view more details, left click to select the role.", true); + for (int i = 0; i < Abilities.Count; i++) + { + var ability = Abilities[i]; + GhostRoleMenu.AddItem(new MenuItem(ability.ItemType, ability.Description, (byte)i, Loadouts.GhostSelectLoadout, null, ability.ItemBase)); + } + + GhostPowerupMenu = new Menu("Powerup Menu", true, Loadouts.ProcessGetMenuArgs); + for (int i = 0; i < Abilities.Count; i++) + { + var ability = Abilities[i]; + GhostPowerupMenu.AddItem(new MenuItem(ability.ItemType, ability.Description, (byte)i, Loadouts.GhostUseAbility, null, ability.ItemBase)); + } + + _remainingTime = new TimeSpan(0,0,Config.TimeUntilMidnightInSeconds); + Hunters = Config.HunterCount.GetPlayers(true); + + foreach(Player ply in Player.GetPlayers()) + { + if (Hunters.Contains(ply)) + SetHunter(ply); + else + SetGhost(ply); + } + + } + + private void SetHunter(Player ply) + { + Classes.Add(ply, new GhostBusterClass(ply, GhostBusterClassType.HunterUnchosen)); + ply.ClearBroadcasts(); + ply.SendBroadcast(Translation.GhostBustersStartHunterMessage, 15); + ply.SetRole(RoleTypeId.Scp049, RoleChangeReason.Respawn, RoleSpawnFlags.UseSpawnpoint); + Timing.CallDelayed(0.25f, () => + { + ply.SetRole(RoleTypeId.ChaosConscript, RoleChangeReason.Respawn, RoleSpawnFlags.None); + }); + ply.ShowMenu(HunterRoleMenu); + } + + private void SetGhost(Player ply) + { + Classes.Add(ply, new GhostBusterClass(ply, GhostBusterClassType.GhostUnchosen)); + ply.ClearBroadcasts(); + ply.SendBroadcast(Translation.GhostBustersStartGhostMessage, 15); + ply.SetRole(RoleTypeId.ClassD, RoleChangeReason.Respawn, RoleSpawnFlags.UseSpawnpoint); + ply.SetRole(RoleTypeId.Scientist, RoleChangeReason.Respawn, RoleSpawnFlags.None); + ply.GiveLoadout(Config.GhostLoadouts); + ply.ShowMenu(GhostRoleMenu); + } + + protected override IEnumerator BroadcastStartCountdown() + { + for (float _time = 15; _time > 0; _time--) + { + //Extensions.Broadcast(Translation.Replace("{time}", $"{_time}"), 1); + + yield return Timing.WaitForSeconds(1f); + EventTime += TimeSpan.FromSeconds(1f); + } + + + } + + protected override void CountdownFinished() + { + _remainingTime = TimeSpan.FromSeconds(Config.TimeUntilMidnightInSeconds); + CurrentStage = Stage.PreMidnight; + } + + protected override bool IsRoundDone() + { + int ghosts = Player.GetPlayers().Count(x => this.IsGhost(x)); + int hunters = Player.GetPlayers().Count(x => this.IsHunter(x)); + return !(hunters >= 1 && ghosts >= 1 && this.EventTime.TotalSeconds < Config.TimeUntilMidnightInSeconds + Config.MidnightDurationInSeconds); + } + + private void StartMidnight() + { + foreach (Player ply in Player.GetPlayers()) + { + ply.HideMenu(); + if (ply.IsAlive && this.IsHunter(ply)) + { + ply.Health = 200; + continue; + } + if (!ply.IsAlive) + { + ply.SetRole(RoleTypeId.Scp0492, RoleChangeReason.Respawn, RoleSpawnFlags.UseSpawnpoint); + ply.Position = Features.TPUtils.GetRoomInHeavy(ply); + } + else + { + RoleTypeId role = (UnityEngine.Random.Range(0, 6)) switch + { + 0 => RoleTypeId.Scp049, + 1 => RoleTypeId.Scp173, + 2 => RoleTypeId.Scp106, + 3 => RoleTypeId.Scp096, + 4 => RoleTypeId.Scp939, + _ => RoleTypeId.Scp0492 + }; + ply.SetRole(role, RoleChangeReason.Escaped, RoleSpawnFlags.AssignInventory); + } + ply.Health = 2000; + } + } + + + protected override void ProcessFrame() + { + if (_remainingTime.TotalSeconds <= 0) + { + if (CurrentStage == Stage.PreMidnight) + { + CurrentStage = Stage.Midnight; + _remainingTime = TimeSpan.FromSeconds(Config.MidnightDurationInSeconds); + StartMidnight(); + } + else + { + DebugLogger.LogDebug($"Game should be over. {EventTime.TotalSeconds}, {Config.MidnightDurationInSeconds} + {Config.TimeUntilMidnightInSeconds}"); + return; + } + } + + var time = $"{_remainingTime.Minutes:00}:{_remainingTime.Seconds:00}"; + int ghosts = Player.GetPlayers().Count(ply => this.IsGhost(ply)); + int hunters = Player.GetPlayers().Count(ply => this.IsHunter(ply)); + + foreach (Player player in Player.GetPlayers()) + { + List itemIds = player.ReferenceHub.inventory.UserInventory.Items.Keys.ToList(); + for (int i = 0; i < player.Items.Count; i++) + { + var item = player.ReferenceHub.inventory.UserInventory.Items[itemIds[i]]; + if (item is not InventorySystem.Items.MicroHID.MicroHIDItem microHidItem) + continue; + if (microHidItem.EnergyToByte == byte.MaxValue) + continue; + + if(!HIDCache.ContainsKey(microHidItem.ItemSerial)) + HIDCache.Add(microHidItem.ItemSerial, 0); + + if (HIDCache[microHidItem.ItemSerial] >= Config.MicroRechargeDelayOffset) + { + microHidItem.RemainingEnergy += Config.MicroRechargePercentPerSecond * .01f; + } + if (microHidItem.State is not HidState.Idle) + HIDCache[microHidItem.ItemSerial] = 0f; + else + HIDCache[microHidItem.ItemSerial] += this.FrameDelayInSeconds; + // DebugLogger.LogDebug($"Micro {microHidItem.ItemSerial}, Delay: [{HIDCache[microHidItem.ItemSerial]}], Energy: {microHidItem.RemainingEnergy} [{microHidItem.EnergyToByte}]"); + // player.ReferenceHub.inventory.UserInventory.Items[itemIds[i]] = microHidItem; + } + if (Classes.ContainsKey(player) && Classes[player].AbilityCooldown > 0) + { + Classes[player].AbilityCooldown = Mathf.Clamp(Classes[player].AbilityCooldown - FrameDelayInSeconds, 0, 10000); + } + if (CurrentStage == Stage.Midnight) + { + + if (this.IsGhost(player)) + { + player.SendBroadcast(Translation.GhostBustersMidnightGhostMessage.Replace("{time}", time), (ushort) FrameDelayInSeconds); + } + else + { + player.SendBroadcast(Translation.GhostBustersMidnightHunterMessage.Replace("{time}", time), (ushort) FrameDelayInSeconds); + } + } + else + { + player.SendBroadcast( + Translation.GhostBustersRunning.Replace("{time}", time).Replace("{ghosts}", ghosts.ToString()) + .Replace("{hunters}", hunters.ToString()), (ushort)FrameDelayInSeconds); + } + } + + //var a = PluginAPI.Core.Map.Rooms.First(x => x.Name == RoomName.HczCheckpointA); + //var b = PluginAPI.Core.Map.Rooms.First(x => x.Name == RoomName.HczCheckpointB); + //a.ApiRoom + //var nameTag = a.gameObject.GetComponentInChildren().TargetDoor.ServerChangeLock() ? name.GetName : null; + + _remainingTime -= TimeSpan.FromSeconds(FrameDelayInSeconds); + } + + protected override void OnFinished() + { + int hunters = Player.GetPlayers().Count(x => IsHunter(x)); + int ghosts = Player.GetPlayers().Count(x => IsGhost(x)); + if (hunters > 0) + { + if(ghosts > 0) + Map.Broadcast(10, Translation.GhostBustersTie); + else + Map.Broadcast(10, Translation.GhostBustersHuntersWin); + } + else + { + Map.Broadcast(10, Translation.GhostBustersGhostsWin); + } + } + + protected override void OnCleanup() + { + foreach (var x in PryableDoor.AllDoors.Where(X => X.Rooms.Any(rm => rm.Name == RoomName.HczCheckpointToEntranceZone && X is PryableDoor))) + { + if (x is not PryableDoor gate) + { + continue; + } + + + gate.IsScp106Passable = true; + + if(gate is IScp106PassableDoor door) + door.IsScp106Passable = true; + + /*if (gate is BreakableDoor breakableDoor) + { + breakableDoor.IsScp106Passable = true; + breakableDoor.IgnoredDamageSources = DoorDamageType.None; + }*/ + gate.ServerChangeLock(DoorLockReason.AdminCommand, false); + } + base.OnCleanup(); + foreach (Player ply in Player.GetPlayers()) + { + ply.HideMenu(); + } + } + + public bool IsGhost(Player ply) + { + return ply.IsAlive && !IsHunter(ply); + } + public bool IsHunter(Player ply) + { + return this.Hunters.Contains(ply); + } + } \ No newline at end of file diff --git a/AutoEvent/Games/Glass/Features/PlatformSelector.cs b/AutoEvent/Games/Glass/Features/PlatformSelector.cs index 931d7049..6ca7e46a 100644 --- a/AutoEvent/Games/Glass/Features/PlatformSelector.cs +++ b/AutoEvent/Games/Glass/Features/PlatformSelector.cs @@ -16,6 +16,7 @@ using AutoEvent.Games.Infection; using HarmonyLib; using UnityEngine; +using Random = UnityEngine.Random; namespace AutoEvent.Games.Glass.Features; @@ -60,9 +61,9 @@ private void _selectPlatformSideCount() switch (_seedMethod) { case SeedMethod.UnityRandom: - Random.InitState(seedInt); - leftSidePriority = Random.Range(0, 2) == 1; - percent = Random.Range((int)MinimumSideOffset, (int)MaximumSideOffset); + UnityEngine.Random.InitState(seedInt); + leftSidePriority = UnityEngine.Random.Range(0, 2) == 1; + percent = UnityEngine.Random.Range((int)MinimumSideOffset, (int)MaximumSideOffset); break; case SeedMethod.SystemRandom: var random = new System.Random(seedInt); diff --git a/AutoEvent/Games/GunGame/EventHandler.cs b/AutoEvent/Games/GunGame/EventHandler.cs index 24f8575b..ec3775d6 100644 --- a/AutoEvent/Games/GunGame/EventHandler.cs +++ b/AutoEvent/Games/GunGame/EventHandler.cs @@ -134,7 +134,7 @@ public void GetWeaponForPlayer(Player player) } DebugLogger.LogDebug($"Getting player {player.Nickname} weapon."); - player.EffectsManager.EnableEffect(2f); + player.EffectsManager.EnableEffect(.5f); player.ClearInventory(); var item = player.AddItem(gun); if (item is Firearm firearm) @@ -144,7 +144,13 @@ public void GetWeaponForPlayer(Player player) var stats = new FirearmStatus(ammo, status.Flags, status.Attachments); firearm.Status = stats; } - Timing.CallDelayed(.1f, () => player.CurrentItem = item); + Timing.CallDelayed(.1f, () => + { + if (item != null) + { + player.CurrentItem = item; + } + }); } private void SetMaxAmmo(Player pl) diff --git a/AutoEvent/Games/GunGame/Plugin.cs b/AutoEvent/Games/GunGame/Plugin.cs index 2848419b..01de1af4 100644 --- a/AutoEvent/Games/GunGame/Plugin.cs +++ b/AutoEvent/Games/GunGame/Plugin.cs @@ -31,7 +31,7 @@ public class Plugin : Event, IEventSound, IEventMap, IInternalEvent public MapInfo MapInfo { get; set; } = new MapInfo() {MapName = "Shipment", Position = new Vector3(93f, 1020f, -43f), }; public SoundInfo SoundInfo { get; set; } = new SoundInfo() - { SoundName = "ClassicMusic.ogg", Volume = 3, Loop = true }; + { SoundName = "Ultrakill.ogg", Volume = 10, Loop = true }; protected override float PostRoundDelay { get; set; } = 10f; private EventHandler EventHandler { get; set; } private GunGameTranslate Translation { get; set; } = AutoEvent.Singleton.Translation.GunGameTranslate; diff --git a/AutoEvent/Games/HideAndSeek/Configs/HideAndSeekConfig.cs b/AutoEvent/Games/HideAndSeek/Configs/HideAndSeekConfig.cs index 052c4494..eae62022 100644 --- a/AutoEvent/Games/HideAndSeek/Configs/HideAndSeekConfig.cs +++ b/AutoEvent/Games/HideAndSeek/Configs/HideAndSeekConfig.cs @@ -23,6 +23,8 @@ public class HideAndSeekConfig : EventConfig { [Description("The item that the tagged player should get. Do not do Scp018 or Grenades for now. - They will break the event. (working on it - redforce)")] public ItemType TaggerWeapon { get; set; } = ItemType.Jailbird; + [Description("Enables the marshmello effect instead.")] + public bool HalloweenMelee { get; set; } = true; [Description("Players who are not the tagger will have the breach scanner effect applied to them, when there are less than or equal to this many non-taggers alive.")] public int PlayersRequiredForBreachScannerEffect { get; set; } = 2; diff --git a/AutoEvent/Games/HideAndSeek/EventHandler.cs b/AutoEvent/Games/HideAndSeek/EventHandler.cs index 14dda2f3..0022eef0 100644 --- a/AutoEvent/Games/HideAndSeek/EventHandler.cs +++ b/AutoEvent/Games/HideAndSeek/EventHandler.cs @@ -10,6 +10,7 @@ using AutoEvent.API; using AutoEvent.API.Enums; using CustomPlayerEffects; +using InventorySystem.Items.MarshmallowMan; using PluginAPI.Core; using UnityEngine; @@ -37,8 +38,9 @@ public void OnPlayerDamage(PlayerDamageArgs ev) if (ev.Attacker != null) { ev.IsAllowed = false; - bool isAttackerTagger = ev.Attacker.Items.Any(r => r.ItemTypeId == _plugin.Config.TaggerWeapon); - bool isTargetTagger = ev.Target.Items.Any(r => r.ItemTypeId == _plugin.Config.TaggerWeapon); + + bool isAttackerTagger = ev.Attacker.Items.Any(r => r.ItemTypeId == _plugin.Config.TaggerWeapon) || ev.Attacker.EffectsManager.GetEffect(); + bool isTargetTagger = ev.Target.Items.Any(r => r.ItemTypeId == _plugin.Config.TaggerWeapon) || ev.Attacker.EffectsManager.GetEffect(); if (!isAttackerTagger || isTargetTagger) { ev.IsAllowed = false; @@ -94,6 +96,13 @@ public void OnPlayerDamage(PlayerDamageArgs ev) ev.Target.GiveLoadout(_plugin.Config.TaggerLoadouts, LoadoutFlags.IgnoreItems | LoadoutFlags.IgnoreWeapons | LoadoutFlags.IgnoreGodMode); ev.Target.ClearInventory(); + if (_plugin.Config.HalloweenMelee) + { + ev.Target.EffectsManager.EnableEffect(); + } + else + { + var weapon = ev.Target.AddItem(_plugin.Config.TaggerWeapon); if(weapon.ItemTypeId is ItemType.GrenadeHE) weapon.ExplodeOnCollision(true); @@ -106,6 +115,7 @@ public void OnPlayerDamage(PlayerDamageArgs ev) { ev.Target.CurrentItem = weapon; }); + } return; } diff --git a/AutoEvent/Games/HideAndSeek/Plugin.cs b/AutoEvent/Games/HideAndSeek/Plugin.cs index 886bc7cf..c906ba4c 100644 --- a/AutoEvent/Games/HideAndSeek/Plugin.cs +++ b/AutoEvent/Games/HideAndSeek/Plugin.cs @@ -13,6 +13,7 @@ using AutoEvent.Events.Handlers; using AutoEvent.Games.Infection; using AutoEvent.Interfaces; +using InventorySystem.Items.MarshmallowMan; using InventorySystem.Items.ThrowableProjectiles; using Event = AutoEvent.Interfaces.Event; using Player = PluginAPI.Core.Player; @@ -25,8 +26,11 @@ public class Plugin : Event, IEventSound, IEventMap, IInternalEvent public override string Description { get; set; } = AutoEvent.Singleton.Translation.HideTranslate.HideDescription; public override string Author { get; set; } = "KoT0XleB"; public override string CommandName { get; set; } = AutoEvent.Singleton.Translation.HideTranslate.HideCommandName; - public override Version Version { get; set; } = new Version(1, 0, 0); + public override Version Version { get; set; } = new Version(1, 0, 1); + protected override FriendlyFireSettings ForceEnableFriendlyFire { get; set; } = FriendlyFireSettings.Disable; + + protected override FriendlyFireSettings ForceEnableFriendlyFireAutoban { get; set; } = FriendlyFireSettings.Disable; [EventConfig] public HideAndSeekConfig Config { get; set; } public MapInfo MapInfo { get; set; } = new MapInfo() @@ -134,12 +138,17 @@ private void SelectPlayers() foreach(Player ply in Config.TaggerCount.GetPlayers(true, playersToChoose)) { ply.GiveLoadout(Config.TaggerLoadouts); - var item = ply.AddItem(Config.TaggerWeapon); + if(Config.HalloweenMelee) + ply.EffectsManager.EnableEffect(); + else + { + var item = ply.AddItem(Config.TaggerWeapon); if(item.ItemTypeId == ItemType.SCP018) item.MakeRock(new RockSettings(false, 1f, false, false, true)); if(item.ItemTypeId == ItemType.GrenadeHE) item.ExplodeOnCollision(true); Timing.CallDelayed(0.1f, () => { ply.CurrentItem = item; }); + } } if (Player.GetPlayers().Count(ply => ply.HasLoadout(Config.PlayerLoadouts)) <= Config.PlayersRequiredForBreachScannerEffect) diff --git a/AutoEvent/Games/Knives/Configs/KnivesConfig.cs b/AutoEvent/Games/Knives/Configs/KnivesConfig.cs index 64154d4e..34c340d5 100644 --- a/AutoEvent/Games/Knives/Configs/KnivesConfig.cs +++ b/AutoEvent/Games/Knives/Configs/KnivesConfig.cs @@ -20,6 +20,9 @@ namespace AutoEvent.Games.Infection; public class KnivesConfig : EventConfig { + [Description("Enables the halloween effect melee instead of jailbird.")] + public bool HalloweenMelee { get; set; } = true; + [Description("A list of loadouts that players on team 1 can get.")] public List Team1Loadouts { get; set; } = new List() { diff --git a/AutoEvent/Games/Knives/Plugin.cs b/AutoEvent/Games/Knives/Plugin.cs index 7d456fe8..f02e3a81 100644 --- a/AutoEvent/Games/Knives/Plugin.cs +++ b/AutoEvent/Games/Knives/Plugin.cs @@ -12,6 +12,7 @@ using AutoEvent.Games.Example; using AutoEvent.Games.Infection; using AutoEvent.Interfaces; +using InventorySystem.Items.MarshmallowMan; using Event = AutoEvent.Interfaces.Event; namespace AutoEvent.Games.Knives @@ -22,8 +23,12 @@ public class Plugin : Event, IEventSound, IEventMap, IInternalEvent public override string Description { get; set; } = AutoEvent.Singleton.Translation.KnivesTranslate.KnivesDescription; public override string Author { get; set; } = "KoT0XleB"; public override string CommandName { get; set; } = AutoEvent.Singleton.Translation.KnivesTranslate.KnivesCommandName; - public override Version Version { get; set; } = new Version(1, 0, 0); - [EventConfig] + public override Version Version { get; set; } = new Version(1, 0, 1); + protected override FriendlyFireSettings ForceEnableFriendlyFire { get; set; } = FriendlyFireSettings.Disable; + + protected override FriendlyFireSettings ForceEnableFriendlyFireAutoban { get; set; } = FriendlyFireSettings.Disable; + + [EventConfig] public KnivesConfig Config { get; set; } public MapInfo MapInfo { get; set; } = new MapInfo() {MapName = "35hp_2", Position = new Vector3(5f, 1030f, -45f), }; @@ -68,7 +73,7 @@ protected override void OnStart() var count = 0; foreach (Player player in Player.GetPlayers()) { - if (count % 2 == 0) + if (UnityEngine.Random.Range(0,2) == 1) { player.GiveLoadout(Config.Team1Loadouts, LoadoutFlags.IgnoreWeapons | LoadoutFlags.IgnoreGodMode); // Extensions.SetRole(player, RoleTypeId.NtfCaptain, RoleSpawnFlags.None); @@ -82,11 +87,15 @@ protected override void OnStart() } count++; - var item = player.AddItem(ItemType.Jailbird); - Timing.CallDelayed(0.1f, () => + if (Config.HalloweenMelee) + { + player.EffectsManager.EnableEffect(); + } + else { - player.CurrentItem = item; - }); + var item = player.AddItem(ItemType.Jailbird); + Timing.CallDelayed(0.1f, () => { player.CurrentItem = item; }); + } } } diff --git a/AutoEvent/Games/Lobby/Plugin.cs b/AutoEvent/Games/Lobby/Plugin.cs index 26fa06b5..310adb0b 100644 --- a/AutoEvent/Games/Lobby/Plugin.cs +++ b/AutoEvent/Games/Lobby/Plugin.cs @@ -4,12 +4,15 @@ using AutoEvent.Interfaces; using UnityEngine; using System.Linq; +using CommandSystem; using Event = AutoEvent.Interfaces.Event; using Player = PluginAPI.Core.Player; +using PluginAPI.Core; +using MEC; namespace AutoEvent.Games.Lobby { - public class Plugin : Event, IEventMap, IEventSound, IInternalEvent + public class Plugin : Event, IEventMap, IEventSound, IInternalEvent, IHiddenCommand { public override string Name { get; set; } = "Lobby"; public override string Description { get; set; } = "A lobby in which one quick player chooses a mini-game."; @@ -25,7 +28,9 @@ public class Plugin : Event, IEventMap, IEventSound, IInternalEvent Player _chooser { get; set; } List _spawnpoints { get; set; } List _teleports { get; set; } - List _platformes { get; set; } + Dictionary _platformes { get; set; } + public List _eventList { get; set; } + public Event NewEvent { get; set; } protected override void RegisterEvents() { @@ -65,7 +70,7 @@ protected void InitGameObjects() { case "Spawnpoint": _spawnpoints.Add(obj); break; case "Teleport": _teleports.Add(obj); break; - case "Platform": _platformes.Add(obj); break; + case "Platform": _platformes.Add(obj, obj.transform.parent.name); break; } } catch (Exception e) @@ -78,7 +83,7 @@ protected void InitGameObjects() protected override bool IsRoundDone() { - DebugLogger.LogDebug($"Lobby state is {_state}"); + DebugLogger.LogDebug($"Lobby state is {_state} and {(NewEvent is null ? "null" : NewEvent.Name)}"); if (_state == LobbyState.Waiting) return false; @@ -95,9 +100,8 @@ protected override bool IsRoundDone() protected override void ProcessFrame() { string message = "Get ready to run to the center and choose a mini game"; - string time = $"{(16 - EventTime.Seconds):00}"; - if (_state == LobbyState.Waiting && EventTime.TotalSeconds >= 15) + if (_state == LobbyState.Waiting && EventTime.TotalSeconds >= 5) { GameObject.Destroy(MapInfo.Map.AttachedBlocks.First(r => r.name == "Wall").gameObject); EventTime = new(); @@ -107,7 +111,7 @@ protected override void ProcessFrame() if (_state == LobbyState.Running) { message = "RUN"; - if (EventTime.TotalSeconds <= 15) + if (EventTime.TotalSeconds <= 10) { foreach (Player player in Player.GetPlayers()) { @@ -136,31 +140,36 @@ protected override void ProcessFrame() { foreach (var platform in _platformes) { - if (Vector3.Distance(platform.transform.position, _chooser.Position) < 2) + if (Vector3.Distance(platform.Key.transform.position, _chooser.Position) < 2) { - // ev run mg + NewEvent = Event.GetEvent(platform.Value); _state = LobbyState.Ending; } } } else { - // Random mg + NewEvent = Event.GetEvent(_platformes.ToList().RandomItem().Value); _state = LobbyState.Ending; } } Extensions.Broadcast($"Lobby\n" + $"{message}\n" + - $"players = {Player.GetPlayers().Count()} | {time} seconds left!", 1); + $"{Player.GetPlayers().Count()} players in the lobby", 1); } protected override void OnFinished() { DebugLogger.LogDebug($"Lobby is finished"); Extensions.Broadcast($"The lobby is finished.\n" + - $"The player {_chooser.Nickname} chose the %name% mini-game.\n" + + $"The player {_chooser.Nickname} chose the {NewEvent.Name} mini-game.\n" + $"Total {Player.GetPlayers().Count()} players in the lobby", 10); + + Timing.CallDelayed(10.1f, () => + { + Server.RunCommand($"ev run {NewEvent.CommandName}"); + }); } } } diff --git a/AutoEvent/Games/Spleef/Configs/SpleefConfig.cs b/AutoEvent/Games/Spleef/Configs/SpleefConfig.cs new file mode 100644 index 00000000..71221c72 --- /dev/null +++ b/AutoEvent/Games/Spleef/Configs/SpleefConfig.cs @@ -0,0 +1,56 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: SpleefConfig.cs +// Author: Redforce04#4091 +// Revision Date: 10/17/2023 6:20 PM +// Created Date: 10/17/2023 6:20 PM +// ----------------------------------------- + +using System.Collections.Generic; +using System.ComponentModel; +using AutoEvent.API; +using AutoEvent.Interfaces; +using PlayerRoles; + +namespace AutoEvent.Games.Spleef.Configs; + +public class SpleefConfig : EventConfig +{ + [Description("How long the round should last.")] + public int RoundDurationInSeconds { get; set; } = 300; + + [Description("Set to -1 to disable. Causes platforms to regenerate after a certain number of seconds.")] + public int RegeneratePlatformsAfterXSeconds { get; set; } = -1; + + [Description("How many platforms on the x and y axis. Total Platforms = PlatformAxisCount * PlatformAxisCount * LayerCount. Size is automatically determined.")] + public int PlatformAxisCount { get; set; } = 20; + [Description("How many \"levels\" of height should be in the map. ")] + public int LayerCount { get; set; } = 3; + + [Description("How long before platforms will fall after being stepped on. Set to -1 to disable this.")] + public float PlatformFallDelay { get; set; } = -1; + + [Description("The amount of health platforms have. Set to -1 to make them invincible.")] + public float PlatformHealth { get; set; } = 1; + + [Description("A list of loadouts for spleef.")] + public List PlayerLoadouts { get; set; } = new List() + { + new Loadout() + { + Roles = new Dictionary() + { + { RoleTypeId.ClassD, 100 }, + }, + Items = new List() + { + ItemType.GunCOM15, + }, + InfiniteAmmo = AmmoMode.InfiniteAmmo + } + }; +} \ No newline at end of file diff --git a/AutoEvent/Games/Spleef/Configs/SpleefTranslation.cs b/AutoEvent/Games/Spleef/Configs/SpleefTranslation.cs new file mode 100644 index 00000000..b6782dd3 --- /dev/null +++ b/AutoEvent/Games/Spleef/Configs/SpleefTranslation.cs @@ -0,0 +1,26 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: SpleefTranslation.cs +// Author: Redforce04#4091 +// Revision Date: 10/17/2023 6:20 PM +// Created Date: 10/17/2023 6:20 PM +// ----------------------------------------- + +namespace AutoEvent.Games.Spleef.Configs; + +public class SpleefTranslation +{ + public string SpleefCommandName { get; set; } = "spleef"; + public string SpleefName { get; set; } = "Spleef"; + public string SpleefDescription { get; set; } = "Shoot at or run over the platforms before you fall into the void! (Try shooting platforms under people)"; + public string SpleefStart { get; set; } = "Starts in: {time}"; + public string SpleefRunning { get; set; } = "Players Alive: {players}\nTime remaining: {remaining}"; + public string SpleefAllDied { get; set; } = "All players died\nMini-game ended"; + public string SpleefSeveralSurvivors { get; set; } = "Several people survived\nMini-game ended"; + public string SpleefWinner { get; set; } = "Winner: {winner}\nMini-game ended"; + public string SpleefDied { get; set; } = "Burned in Lava"; +} \ No newline at end of file diff --git a/AutoEvent/Games/Spleef/EventHandler.cs b/AutoEvent/Games/Spleef/EventHandler.cs new file mode 100644 index 00000000..44bbead1 --- /dev/null +++ b/AutoEvent/Games/Spleef/EventHandler.cs @@ -0,0 +1,73 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: EventHandler.cs +// Author: Redforce04#4091 +// Revision Date: 10/17/2023 6:20 PM +// Created Date: 10/17/2023 6:20 PM +// ----------------------------------------- + +using System; +using AutoEvent.API.Components; +using AutoEvent.Events.EventArgs; +using AutoEvent.Games.Spleef.Features; +using InventorySystem.Items.Armor; +using InventorySystem.Items.Firearms; +using InventorySystem.Items.Firearms.Modules; +using PlayerStatsSystem; +using PluginAPI.Core.Attributes; +using PluginAPI.Enums; +using PluginAPI.Events; +using UnityEngine; + +namespace AutoEvent.Games.Spleef; + +public class EventHandler +{ + private Plugin _plugin { get; set; } + public EventHandler(Plugin plugin) + { + _plugin = plugin; + } + public void OnShot(ShotEventArgs ev) + { + if (_plugin.Config.PlatformHealth < 0) + { + return; + } + + if (ev.Player.CurrentItem is not Firearm firearm) + { + return; + } + if (ev.Damage <= 0) + { + ev.Damage = BodyArmorUtils.ProcessDamage(0, firearm.BaseStats.DamageAtDistance(firearm, ev.Distance), Mathf.RoundToInt(firearm.ArmorPenetration * 100f)); + } + ev.RaycastHit.collider.transform.GetComponentsInParent().ForEach(x => + { + var damageHandler = new FirearmDamageHandler(ev.Player.CurrentItem as Firearm, ev.Damage, false); + bool result = x.Damage(ev.Damage, damageHandler, ev.RaycastHit.point); + }); + } + + [PluginEvent(ServerEventType.PlayerDamage)] + public bool OnDamage(PlayerDamageEvent ev) + { + if (ev.DamageHandler is FirearmDamageHandler) + { + return false; + } + return true; + } + + public void OnTeamRespawn(TeamRespawnArgs ev) => ev.IsAllowed = false; + public void OnSpawnRagdoll(SpawnRagdollArgs ev) => ev.IsAllowed = false; + public void OnPlaceBullet(PlaceBulletArgs ev) => ev.IsAllowed = false; + public void OnPlaceBlood(PlaceBloodArgs ev) => ev.IsAllowed = false; + public void OnDropItem(DropItemArgs ev) => ev.IsAllowed = false; + public void OnDropAmmo(DropAmmoArgs ev) => ev.IsAllowed = false; +} \ No newline at end of file diff --git a/AutoEvent/Games/Spleef/Features/FallPlatformComponent.cs b/AutoEvent/Games/Spleef/Features/FallPlatformComponent.cs new file mode 100644 index 00000000..68495980 --- /dev/null +++ b/AutoEvent/Games/Spleef/Features/FallPlatformComponent.cs @@ -0,0 +1,128 @@ +using System; +using AdminToys; +using AutoEvent.API.Components; +using MEC; +using Mirror; +using PlayerStatsSystem; +using PluginAPI.Core; +using UnityEngine; + +namespace AutoEvent.Games.Spleef.Features +{ + public class FallPlatformComponent : MonoBehaviour, IDestructible + { + private BoxCollider collider; + + public float RegenerationDelay { get; set; } = -1; + public float FallDelay { get; set; } = -1; + private float Scale { get; set; } + public void Init(float regenerationDelay = 0, float fallDelay = -1, float health = 1, float fallStartDelay = 15f, float scale = 1f) + { + Scale = scale; + RegenerationDelay = regenerationDelay; + FallDelay = fallDelay; + Health = health; + DefaultHealth = health; + Timing.CallDelayed(fallStartDelay, () => + { + collider.isTrigger = true; + }); + } + private void Start() + { + collider = gameObject.AddComponent(); + collider.isTrigger = false; + var val = gameObject.GetComponent().NetworkScale + new Vector3(0.2f, 4f, 0.2f);// * Scale; + collider.size = val; + + //DebugLogger.LogDebug($"Size: {val}"); + // new Vector3(1, 10, 1); + } + void OnTriggerEnter(Collider other) + { + if (Player.Get(other.gameObject) is Player) + { + + if (FallDelay < 0) + return; + if (isDestroyed) + return; + this.GetComponent().NetworkMaterialColor = Color.red; + //Destroy(gameObject); + Timing.CallDelayed(FallDelay, () => { DestroyThis(); }); + } + } + + private void DestroyThis() + { + isDestroyed = true; + this.GetComponent().NetworkMaterialColor = Color.red; + gameObject.transform.position += Vector3.down * 25; + Health = -1000; + NetworkServer.UnSpawn(this.gameObject); + NetworkServer.Spawn(this.gameObject); + if (RegenerationDelay > 0) + { + Timing.CallDelayed(RegenerationDelay, () => + { + RestoreThis(); + }); + } + } + + private void RestoreThis() + { + isDestroyed = false; + this.GetComponent().NetworkMaterialColor = Color.green; + gameObject.transform.position += Vector3.up * 25; + Health = DefaultHealth; + NetworkServer.UnSpawn(this.gameObject); + NetworkServer.Spawn(this.gameObject); + } + + public bool Damage(float damage, DamageHandlerBase handler, Vector3 exactHitPos) + { + if (isDestroyed) + { + return false; + } + Health -= damage; + if (Health <= 0) + { + DestroyThis(); + } + + return true; + } + + private bool isDestroyed = false; + public uint NetworkId { get; } + public Vector3 CenterOfMass { get; } + public float Health { get; private set; } + private float DefaultHealth { get; set; } + public event Action DamagingPrimitive; + + /* + public bool Damage(float damage, DamageHandlerBase handler, Vector3 exactHitPos) + { + var ev = new DamagingPrimitiveArgs(damage, handler, exactHitPos); + DamagingPrimitive?.Invoke(ev); + if (!ev.IsAllowed) + { + return false; + } + + Health -= ev.Damage; + if (Health <= 0) + { + + var prim = gameObject.GetComponent(); + NetworkServer.UnSpawn(base.gameObject); + Destroy(gameObject); + } + + return true; + } + */ + } +} diff --git a/AutoEvent/Games/Spleef/Features/RandomClass.cs b/AutoEvent/Games/Spleef/Features/RandomClass.cs new file mode 100644 index 00000000..d4eb35e1 --- /dev/null +++ b/AutoEvent/Games/Spleef/Features/RandomClass.cs @@ -0,0 +1,14 @@ +using System.Linq; +using MER.Lite.Objects; +using UnityEngine; + +namespace AutoEvent.Games.Spleef +{ + internal class RandomClass + { + public static Vector3 GetSpawnPosition(SchematicObject GameMap) + { + return GameMap.AttachedBlocks.Where(x => x.name == "Spawnpoint").FirstOrDefault().transform.position; + } + } +} diff --git a/AutoEvent/Games/Spleef/Features/SpleefPlatform.cs b/AutoEvent/Games/Spleef/Features/SpleefPlatform.cs new file mode 100644 index 00000000..089bcd8c --- /dev/null +++ b/AutoEvent/Games/Spleef/Features/SpleefPlatform.cs @@ -0,0 +1,37 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: SpleefPlatform.cs +// Author: Redforce04#4091 +// Revision Date: 10/17/2023 6:38 PM +// Created Date: 10/17/2023 6:38 PM +// ----------------------------------------- + +using UnityEngine; + +namespace AutoEvent.Games.Spleef; + +public class SpleefPlatform +{ + public SpleefPlatform(float sizeX, float sizeY, float sizeZ, float positionX, float positionY, float positionZ) + { + X = sizeX; + Y = sizeY; + Z = sizeZ; + PositionX = positionX; + PositionY = positionY; + PositionZ = positionZ; + } + + public GameObject GameObject { get; set; } + public ushort PlatformId { get; set; } + public float X { get; set; } + public float Y { get; set; } + public float Z { get; set; } + public float PositionX { get; set; } + public float PositionY { get; set; } + public float PositionZ { get; set; } +} \ No newline at end of file diff --git a/AutoEvent/Games/Spleef/Plugin.cs b/AutoEvent/Games/Spleef/Plugin.cs new file mode 100644 index 00000000..826374a0 --- /dev/null +++ b/AutoEvent/Games/Spleef/Plugin.cs @@ -0,0 +1,258 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Plugin.cs +// Author: Redforce04#4091 +// Revision Date: 10/17/2023 6:20 PM +// Created Date: 10/17/2023 6:20 PM +// ----------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using AdminToys; +using AutoEvent.API.Components; +using AutoEvent.API.Enums; +using AutoEvent.Events.Handlers; +using AutoEvent.Games.FallDown; +using AutoEvent.Games.Spleef.Configs; +using AutoEvent.Games.Spleef.Features; +using AutoEvent.Interfaces; +using CommandSystem.Commands.RemoteAdmin; +using InventorySystem.Items.Usables; +using MEC; +using Mirror; +using PluginAPI.Core; +using PluginAPI.Events; +using UnityEngine; +using Utils.NonAllocLINQ; +using Event = AutoEvent.Interfaces.Event; + +namespace AutoEvent.Games.Spleef; + +public class Plugin : Event, IEventMap, IEventSound +{ + public override string Name { get; set; } = AutoEvent.Singleton.Translation.SpleefTranslate.SpleefName; + public override string Description { get; set; } = AutoEvent.Singleton.Translation.SpleefTranslate.SpleefDescription; + public override string Author { get; set; } = "Redforce04"; + public override string CommandName { get; set; } = AutoEvent.Singleton.Translation.SpleefTranslate.SpleefCommandName; + public override Version Version { get; set; } = new Version(1, 0, 1); + public SpleefTranslation Translation { get; set; } = AutoEvent.Singleton.Translation.SpleefTranslate; + + [EventConfig] + public SpleefConfig Config { get; set; } + public EventHandler EventHandler { get; set; } + public MapInfo MapInfo { get; set; } = new MapInfo() + { MapName = "Puzzle", Position = new Vector3(76f, 1026.5f, -43.68f), }; + public SoundInfo SoundInfo { get; set; } = new SoundInfo() + { SoundName = "Puzzle.ogg", Volume = 15, Loop = true }; + + protected override FriendlyFireSettings ForceEnableFriendlyFireAutoban { get; set; } = FriendlyFireSettings.Disable; + protected override FriendlyFireSettings ForceEnableFriendlyFire { get; set; } = FriendlyFireSettings.Disable; + + /// + /// A local list of platforms that changes round to round. + /// + private List _listPlatforms; + + private List _colorIndicators; + private float _spawnHeight; + private TimeSpan _remaining; + + /// + /// All platforms in the map. + /// + private Dictionary _platforms; + private GameObject _lava; + + private bool isFriendlyFire { get; set; } + + protected override void RegisterEvents() + { + EventHandler = new EventHandler(this); + + Servers.TeamRespawn += EventHandler.OnTeamRespawn; + Servers.SpawnRagdoll += EventHandler.OnSpawnRagdoll; + Servers.PlaceBullet += EventHandler.OnPlaceBullet; + Servers.PlaceBlood += EventHandler.OnPlaceBlood; + Players.DropItem += EventHandler.OnDropItem; + Players.DropAmmo += EventHandler.OnDropAmmo; + Players.Shot += EventHandler.OnShot; + EventManager.RegisterEvents(EventHandler); + + isFriendlyFire = Server.FriendlyFire; + } + + protected override void UnregisterEvents() + { + EventManager.UnregisterEvents(EventHandler); + Servers.TeamRespawn -= EventHandler.OnTeamRespawn; + Servers.SpawnRagdoll -= EventHandler.OnSpawnRagdoll; + Servers.PlaceBullet -= EventHandler.OnPlaceBullet; + Servers.PlaceBlood -= EventHandler.OnPlaceBlood; + Players.DropItem -= EventHandler.OnDropItem; + Players.DropAmmo -= EventHandler.OnDropAmmo; + Players.Shot -= EventHandler.OnShot; + + EventHandler = null; + Server.FriendlyFire = isFriendlyFire; + } + + protected override void OnStart() + { + Server.FriendlyFire = false; + + _remaining = TimeSpan.FromSeconds(Config.RoundDurationInSeconds); + _platforms = new Dictionary(); + _lava = MapInfo.Map.AttachedBlocks.First(x => x.name == "Lava"); + _lava.AddComponent(); + _colorIndicators = MapInfo.Map.AttachedBlocks.Where(x => x.name == "Cube").ToList(); + GeneratePlatforms(Config.PlatformAxisCount); + foreach (Player player in Player.GetPlayers()) + { + player.Position = RandomClass.GetSpawnPosition(MapInfo.Map); + } + foreach (Player ply in Player.GetPlayers()) + { + ply.GiveLoadout(Config.PlayerLoadouts, LoadoutFlags.IgnoreWeapons); + ply.Position = MapInfo.Position + new Vector3(0,Config.LayerCount * 3f + 5,0); + } + } + private void GeneratePlatforms(int amountPerAxis = 5) + { + + float areaSizeX = 20f; + float areaSizeY = 20f; + float sizeX = areaSizeX / amountPerAxis; + float sizeY = areaSizeY / amountPerAxis; + float startPosX = -(areaSizeX/2f) + sizeX / 2f; + float startPosY = -(areaSizeY/2f) + sizeY / 2f; + float startPosZ = 6f; + float breakSize = .2f; + float sizeZ = 3f; + _spawnHeight = 6f; + List platforms = new List(); + for (int z = 0; z < Config.LayerCount; z++) + { + for (int x = 0; x < amountPerAxis; x++) + { + for (int y = 0; y < amountPerAxis; y++) + { + float posX = startPosX + (sizeX * x); + float posY = startPosY + (sizeY * y); + float posZ = startPosZ + (sizeZ * z); + var plat = new SpleefPlatform(sizeX - breakSize, sizeY - breakSize, .3f, posX, posY, posZ); + platforms.Add(plat); + if (posZ > _spawnHeight + 2) + { + _spawnHeight = posZ + 2; + } + } + } + } + + var primary = MapInfo.Map.AttachedBlocks.FirstOrDefault(x => x.name == "Platform"); + foreach(var plat in MapInfo.Map.AttachedBlocks.Where(x => x.name == "Platform")) + { + if (plat.GetInstanceID() != primary.GetInstanceID()) + GameObject.Destroy(plat); + } + + ushort id = 0; + foreach (SpleefPlatform platform in platforms) + { + + Vector3 position = MapInfo.Map.Position + new Vector3(platform.PositionX, platform.PositionZ ,platform.PositionY); + var newPlatform = GameObject.Instantiate(primary, position, Quaternion.identity); + _platforms.Add(id, newPlatform); + + try + { + var component = newPlatform.AddComponent(); + component.Init(Config.RegeneratePlatformsAfterXSeconds, Config.PlatformFallDelay, Config.PlatformHealth, 15); + // component.DamagingPrimitive += OnDamage; + } + catch (Exception e) + { + DebugLogger.LogDebug($"Exception \n{e}"); + } + + var prim = newPlatform.GetComponent() ?? newPlatform.AddComponent(); + prim.NetworkMaterialColor = Color.green; + + prim.Position = position; + prim.NetworkPosition = position; + prim.transform.position = position; + prim.transform.localPosition = position; + prim.Scale = new Vector3(platform.X , platform.Z, platform.Y); + prim.NetworkScale = new Vector3(platform.X , platform.Z, platform.Y); + prim.PrimitiveType = PrimitiveType.Cube; + prim.transform.localScale = new Vector3(platform.X, platform.Z, platform.Y); + NetworkServer.UnSpawn(newPlatform); + NetworkServer.Spawn(newPlatform); + id++; + } + GameObject.Destroy(primary); + } + + + protected override IEnumerator BroadcastStartCountdown() + { + for (int time = 15; time > 0; time--) + { + Extensions.Broadcast($"{Translation.SpleefDescription}\n{Translation.SpleefStart.Replace("{time}", $"{time}")}", 1); + yield return Timing.WaitForSeconds(1f); + } + } + + protected override void CountdownFinished() + { + foreach (Player ply in Player.GetPlayers()) + { + ply.GiveLoadout(Config.PlayerLoadouts, LoadoutFlags.ItemsOnly); + } + } + + protected override bool IsRoundDone() + { + return !(Player.GetPlayers().Count(ply => ply.IsAlive) > 1) && EventTime.TotalSeconds < Config.RoundDurationInSeconds; + } + protected override void ProcessFrame() + { + int count = Player.GetPlayers().Count(x => x.IsAlive); + foreach (Player ply in Player.GetPlayers()) + { + ply.SendBroadcast(Translation.SpleefRunning.Replace("{players}", count.ToString()).Replace("{remaining}", $"{_remaining.Minutes:00}:{_remaining.Seconds:00}"), (ushort)this.FrameDelayInSeconds); + } + _remaining -= TimeSpan.FromSeconds(FrameDelayInSeconds); + } + + protected override void OnFinished() + { + int count = Player.GetPlayers().Count(x => x.IsAlive); + if (count > 1) + { + Server.SendBroadcast(Translation.SpleefSeveralSurvivors, 10); + } + else if (count == 1) + { + Server.SendBroadcast(Translation.SpleefWinner.Replace("{winner}", Player.GetPlayers().First(x => x.IsAlive).Nickname), 10); + } + else + { + Server.SendBroadcast(Translation.SpleefAllDied, 10); + } + } + + protected override void OnCleanup() + { + foreach (var x in this._platforms) + { + GameObject.Destroy(x.Value); + } + base.OnCleanup(); + } +} \ No newline at end of file diff --git a/AutoEvent/Games/Trouble/Configs/Translation.cs b/AutoEvent/Games/Trouble/Configs/Translation.cs new file mode 100644 index 00000000..3427293e --- /dev/null +++ b/AutoEvent/Games/Trouble/Configs/Translation.cs @@ -0,0 +1,21 @@ +using System.ComponentModel; +using Exiled.API.Interfaces; + +namespace AutoEvent.Games.Trouble +{ +#if EXILED + public class TroubleTranslate : ITranslation +#else + public class TroubleTranslate +#endif + { + public string CommandName { get; set; } = "trouble"; + public string Name { get; set; } = "Trouble in Terrorist Town"; + public string Description { get; set; } = "An impostor appeared in terrorist town."; + public string BeforeStart { get; set; } = "{name}\nThere are {time} seconds left before the game starts."; + public string Cycle { get; set; } = "{name}\nHumans left: {count}\nElapsed Duration: {time}"; + public string ExtraTime { get; set; } = "Extra time: {extratime}\nThe Last person left!\nElapsed Duration: {time}"; + public string Win { get; set; } = "Traitor Win!\nElapsed Duration: {time}"; + public string Lose { get; set; } = "Humans Win!\nElapsed Duration: {time}"; + } +} \ No newline at end of file diff --git a/AutoEvent/Games/Trouble/EventHandler.cs b/AutoEvent/Games/Trouble/EventHandler.cs new file mode 100644 index 00000000..3ac698e0 --- /dev/null +++ b/AutoEvent/Games/Trouble/EventHandler.cs @@ -0,0 +1,48 @@ +using AutoEvent.Events.EventArgs; +using MEC; +using PlayerRoles; +using PlayerStatsSystem; +using PluginAPI.Core; +using PluginAPI.Core.Attributes; +using PluginAPI.Enums; +using PluginAPI.Events; +using System.Linq; + +namespace AutoEvent.Games.Trouble +{ + public class EventHandler + { + Plugin _plugin; + public EventHandler(Plugin plugin) + { + _plugin = plugin; + } + + public void OnPlayerDamage(PlayerDamageArgs ev) + { + if (ev.Attacker.Role == RoleTypeId.Scp3114) + { + ev.Amount = 30; + } + + } + + [PluginEvent(ServerEventType.PlayerJoined)] + public void OnJoin(PlayerJoinedEvent ev) + { + ev.Player.SetRole(RoleTypeId.Spectator); + } + + [PluginEvent(ServerEventType.PlayerDeath)] + public void OnDeath(PlayerDeathEvent ev) + { + } + + public void OnTeamRespawn(TeamRespawnArgs ev) => ev.IsAllowed = false; + public void OnSpawnRagdoll(SpawnRagdollArgs ev) => ev.IsAllowed = false; + public void OnPlaceBullet(PlaceBulletArgs ev) => ev.IsAllowed = false; + public void OnPlaceBlood(PlaceBloodArgs ev) => ev.IsAllowed = false; + public void OnDropItem(DropItemArgs ev) => ev.IsAllowed = false; + public void OnDropAmmo(DropAmmoArgs ev) => ev.IsAllowed = false; + } +} \ No newline at end of file diff --git a/AutoEvent/Games/Trouble/Extensions/RandomClass.cs b/AutoEvent/Games/Trouble/Extensions/RandomClass.cs new file mode 100644 index 00000000..d8c6bc6f --- /dev/null +++ b/AutoEvent/Games/Trouble/Extensions/RandomClass.cs @@ -0,0 +1,14 @@ +using MER.Lite.Objects; +using System.Linq; +using UnityEngine; + +namespace AutoEvent.Games.Trouble +{ + internal class RandomPosition + { + public static Vector3 GetSpawnPosition(SchematicObject GameMap) + { + return GameMap.AttachedBlocks.Where(x => x.name == "Spawnpoint").ToList().RandomItem().transform.position; + } + } +} diff --git a/AutoEvent/Games/Trouble/Plugin.cs b/AutoEvent/Games/Trouble/Plugin.cs new file mode 100644 index 00000000..23cbaf69 --- /dev/null +++ b/AutoEvent/Games/Trouble/Plugin.cs @@ -0,0 +1,134 @@ +using System; +using AutoEvent.Events.Handlers; +using PluginAPI.Events; +using System.Linq; +using AutoEvent.Interfaces; +using UnityEngine; +using Event = AutoEvent.Interfaces.Event; +using Player = PluginAPI.Core.Player; +using System; +using System.Collections.Generic; +using MEC; +using PlayerRoles; +using PlayerRoles.FirstPersonControl; +using PlayerRoles.PlayableScps.Scp3114; +using PlayerRoles.Ragdolls; + +namespace AutoEvent.Games.Trouble +{ + public class Plugin : Event, IEventSound, IEventMap, IInternalEvent, ITag + { + public List Tags { get; set; } = new List() + { + new Tag("Halloween", TagColor.purple) + }; + public override string Name { get; set; } = "Trouble in Terrorist Town"; + public override string Description { get; set; } = "An impostor appeared in terrorist town."; + public override string Author { get; set; } = "KoT0XleB"; + public override string CommandName { get; set; } = "trouble"; + public override Version Version { get; set; } = new Version(1, 0, 1); + public MapInfo MapInfo { get; set; } = new MapInfo() + { MapName = "AmongUs", Position = new Vector3(115.5f, 1030f, -43.5f), MapRotation = Quaternion.identity }; + public SoundInfo SoundInfo { get; set; } = new SoundInfo() + { SoundName = "Skeleton.ogg", Volume = 5, Loop = true }; + protected override float PostRoundDelay { get; set; } = 10f; + private EventHandler EventHandler { get; set; } + + protected override void RegisterEvents() + { + EventHandler = new EventHandler(this); + EventManager.RegisterEvents(EventHandler); + + Servers.TeamRespawn += EventHandler.OnTeamRespawn; + Servers.SpawnRagdoll += EventHandler.OnSpawnRagdoll; + Servers.PlaceBullet += EventHandler.OnPlaceBullet; + Servers.PlaceBlood += EventHandler.OnPlaceBlood; + Players.DropItem += EventHandler.OnDropItem; + Players.DropAmmo += EventHandler.OnDropAmmo; + Players.PlayerDamage += EventHandler.OnPlayerDamage; + } + + protected override void UnregisterEvents() + { + EventManager.UnregisterEvents(EventHandler); + + Servers.TeamRespawn -= EventHandler.OnTeamRespawn; + Servers.SpawnRagdoll -= EventHandler.OnSpawnRagdoll; + Servers.PlaceBullet -= EventHandler.OnPlaceBullet; + Servers.PlaceBlood -= EventHandler.OnPlaceBlood; + Players.DropItem -= EventHandler.OnDropItem; + Players.DropAmmo -= EventHandler.OnDropAmmo; + Players.PlayerDamage -= EventHandler.OnPlayerDamage; + EventHandler = null; + } + + protected override void OnStart() + { + foreach (Player player in Player.GetPlayers()) + { + //player.GiveLoadout(Config.PlayerLoadouts); + player.Position = RandomPosition.GetSpawnPosition(MapInfo.Map); + } + } + + protected override IEnumerator BroadcastStartCountdown() + { + for (float time = 15; time > 0; time--) + { + Extensions.Broadcast($"The trailer will appear in {time} seconds.", 1); + yield return Timing.WaitForSeconds(1f); + } + } + + protected override void CountdownFinished() + { + for (int i = 0; i < (Player.GetPlayers().Count / 10) + 1; i++) + { + Player traitor = Player.GetPlayers().RandomItem(); + Extensions.SetRole(traitor, PlayerRoles.RoleTypeId.Scp3114, PlayerRoles.RoleSpawnFlags.AssignInventory); + if (traitor.RoleBase is not Scp3114Role scpRole || + !scpRole.SubroutineModule.TryGetSubroutine(out var disguise) || + disguise is null) + continue; + /*disguise._identity.CurIdentity = new Scp3114Identity.StolenIdentity() + { + + }*/ + } + // Player traitor = Player.GetPlayers().RandomItem(); + // Extensions.SetRole(traitor, PlayerRoles.RoleTypeId.Scp3114, PlayerRoles.RoleSpawnFlags.AssignInventory); + } + + protected override bool IsRoundDone() + { + if (Player.GetPlayers().Count(r => r.IsHuman) >= Player.GetPlayers().Count(r => r.IsSCP) + && EventTime.TotalMinutes < 3) return false; + else return true; + } + + protected override void ProcessFrame() + { + Extensions.Broadcast($"{Name}\n" + + $"{Player.GetPlayers().Count(r => r.IsSCP)} traitors | " + + $"{Player.GetPlayers().Count(r => r.IsHuman)} guys", 1); + } + + protected override void OnFinished() + { + var time = $"{EventTime.Minutes:00}:{EventTime.Seconds:00}"; + if (Player.GetPlayers().Count(r => r.IsHuman) > Player.GetPlayers().Count(r => r.IsSCP)) + { + Extensions.Broadcast($"Humans Win!\n" + + $"Elapsed Duration: {time}", 10); + } + else if (Player.GetPlayers().Count(r => r.IsHuman) < Player.GetPlayers().Count(r => r.IsSCP)) + { + Extensions.Broadcast($"Traitors Win!\nElapsed Duration: {time}", 10); + } + else + { + Extensions.Broadcast($"Draw!\nElapsed Duration: {time}", 10); + } + } + } +} \ No newline at end of file diff --git a/AutoEvent/Games/Versus/Configs/VersusConfig.cs b/AutoEvent/Games/Versus/Configs/VersusConfig.cs index 7906a865..ccf5ec13 100644 --- a/AutoEvent/Games/Versus/Configs/VersusConfig.cs +++ b/AutoEvent/Games/Versus/Configs/VersusConfig.cs @@ -25,7 +25,10 @@ public class VersusConfig : EventConfig [Description("How long to wait before forcefully selecting a random player. Set to -1 to disable.")] public int AutoSelectDelayInSeconds { get; set; } = 10; - + + [Description("Enables the halloween effect melee instead of jailbird.")] + public bool HalloweenMelee { get; set; } = true; + [Description("Loadouts for team 1.")] public List Team1Loadouts { get; set; } = new List() { diff --git a/AutoEvent/Games/Versus/Plugin.cs b/AutoEvent/Games/Versus/Plugin.cs index db72aa73..1afb9861 100644 --- a/AutoEvent/Games/Versus/Plugin.cs +++ b/AutoEvent/Games/Versus/Plugin.cs @@ -12,6 +12,7 @@ using AutoEvent.Games.Infection; using AutoEvent.Interfaces; using Hints; +using InventorySystem.Items.MarshmallowMan; using Event = AutoEvent.Interfaces.Event; namespace AutoEvent.Games.Versus @@ -22,14 +23,17 @@ public class Plugin : Event, IEventSound, IEventMap, IInternalEvent public override string Description { get; set; } = AutoEvent.Singleton.Translation.VersusTranslate.VersusDescription; public override string Author { get; set; } = "KoT0XleB"; public override string CommandName { get; set; } = AutoEvent.Singleton.Translation.VersusTranslate.VersusCommandName; - public override Version Version { get; set; } = new Version(1, 0, 0); + public override Version Version { get; set; } = new Version(1, 0, 1); + protected override FriendlyFireSettings ForceEnableFriendlyFire { get; set; } = FriendlyFireSettings.Disable; + + protected override FriendlyFireSettings ForceEnableFriendlyFireAutoban { get; set; } = FriendlyFireSettings.Disable; [EventConfig] + public VersusConfig Config { get; set; } public MapInfo MapInfo { get; set; } = new MapInfo() {MapName = "35Hp", Position = new Vector3(6f, 1015f, -5f), }; public SoundInfo SoundInfo { get; set; } = new SoundInfo() { SoundName = "Knife.ogg", Volume = 10, Loop = true }; - protected override FriendlyFireSettings ForceEnableFriendlyFire { get; set; } = FriendlyFireSettings.Disable; private EventHandler EventHandler { get; set; } private VersusTranslate Translation { get; set; } = AutoEvent.Singleton.Translation.VersusTranslate; public Player Scientist { get; set; } @@ -85,7 +89,7 @@ protected override void OnStart() var count = 0; foreach (Player player in Player.GetPlayers()) { - if (count % 2 == 0) + if (UnityEngine.Random.Range(0,2) == 1) { player.GiveLoadout(Config.Team1Loadouts); //Extensions.SetRole(player, RoleTypeId.Scientist, RoleSpawnFlags.None); @@ -99,11 +103,15 @@ protected override void OnStart() } count++; - var item = player.AddItem(ItemType.Jailbird); - Timing.CallDelayed(0.2f, () => + if (Config.HalloweenMelee) { - player.CurrentItem = item; - }); + player.EffectsManager.EnableEffect(); + } + else + { + var item = player.AddItem(ItemType.Jailbird); + Timing.CallDelayed(0.2f, () => { player.CurrentItem = item; }); + } } } diff --git a/AutoEvent/Games/Vote/Plugin.cs b/AutoEvent/Games/Vote/Plugin.cs index c09706c5..4592f6a0 100644 --- a/AutoEvent/Games/Vote/Plugin.cs +++ b/AutoEvent/Games/Vote/Plugin.cs @@ -5,12 +5,15 @@ using System.Linq; using AutoEvent.Interfaces; using AutoEvent.Events.Handlers; +using MEC; +using PluginAPI.Core; +using CommandSystem; using Event = AutoEvent.Interfaces.Event; using Player = PluginAPI.Core.Player; namespace AutoEvent.Games.Vote { - public class Plugin : Event, IEventSound, IInternalEvent + public class Plugin : Event, IEventSound, IInternalEvent, IHiddenCommand { public override string Name { get; set; } = "Vote"; public override string Description { get; set; } = "Start voting for the mini-game."; @@ -22,6 +25,8 @@ public class Plugin : Event, IEventSound, IInternalEvent private EventHandler EventHandler { get; set; } public Dictionary _voteList { get; set; } private int _voteTime = 30; + public static string EventName { get; set; } + public Event NewEvent { get; set; } protected override void RegisterEvents() { @@ -58,8 +63,8 @@ protected override void ProcessFrame() var count = Player.GetPlayers().Count(r => r.Role == RoleTypeId.ClassD); var time = $"{(_voteTime - EventTime.Seconds):00}"; - Extensions.Broadcast($"Vote: Press [Alt] Pros or twice Cons\n" + - $"{_voteList.Count(r => r.Value == true)} of {_voteList.Count} players for Mini-Game %Name%\n" + + Extensions.Broadcast($"Vote: Press [Alt] Pros or [Alt]x2 Cons\n" + + $"{_voteList.Count(r => r.Value == true)} of {_voteList.Count} players for {NewEvent.Name}\n" + $"{time} seconds left!", 1); } @@ -68,14 +73,17 @@ protected override void OnFinished() string results; if (_voteList.Count(r => r.Value == true) > _voteList.Count(r => r.Value == false)) { - results = "Mini-Game %Name% will start soon."; - // timing -> ev run name - // idea: do I need to make an auto discord message about voting? About launching a mini-game? + results = $"{NewEvent.Name} will start soon."; + + // There is no way to change PostRoundDelay time to 5 second + Timing.CallDelayed(10.1f, () => + { + Server.RunCommand($"ev run {NewEvent.CommandName}"); + }); } else { - results = "Mini-Game %Name% will not start."; - // nothing + results = $"{NewEvent.Name} will not start."; } Extensions.Broadcast($"Vote: End of voting\n" + diff --git a/AutoEvent/Interfaces/IHidden.cs b/AutoEvent/Interfaces/IHidden.cs new file mode 100644 index 00000000..7d17d5dd --- /dev/null +++ b/AutoEvent/Interfaces/IHidden.cs @@ -0,0 +1,9 @@ +namespace AutoEvent.Interfaces; + +/// +/// Makes an event hidden on the event list. +/// +internal interface IHidden +{ + +} \ No newline at end of file diff --git a/AutoEvent/Interfaces/ITag.cs b/AutoEvent/Interfaces/ITag.cs new file mode 100644 index 00000000..cccef1bb --- /dev/null +++ b/AutoEvent/Interfaces/ITag.cs @@ -0,0 +1,20 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: ITag.cs +// Author: Redforce04#4091 +// Revision Date: 10/29/2023 11:00 PM +// Created Date: 10/29/2023 11:00 PM +// ----------------------------------------- + +using System.Collections.Generic; + +namespace AutoEvent.Interfaces; + +public interface ITag +{ + public List Tags { get; set; } +} \ No newline at end of file diff --git a/AutoEvent/Interfaces/IVote.cs b/AutoEvent/Interfaces/IVote.cs new file mode 100644 index 00000000..02d3406a --- /dev/null +++ b/AutoEvent/Interfaces/IVote.cs @@ -0,0 +1,6 @@ +namespace AutoEvent.Interfaces; + +internal interface IVote +{ + Event NewEvent { get; set; } +} \ No newline at end of file diff --git a/AutoEvent/Interfaces/Tag.cs b/AutoEvent/Interfaces/Tag.cs new file mode 100644 index 00000000..fc32fde8 --- /dev/null +++ b/AutoEvent/Interfaces/Tag.cs @@ -0,0 +1,31 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: AutoEvent +// FileName: Tag.cs +// Author: Redforce04#4091 +// Revision Date: 10/29/2023 11:00 PM +// Created Date: 10/29/2023 11:00 PM +// ----------------------------------------- + +namespace AutoEvent.Interfaces; + +public struct Tag +{ + public Tag(string name, TagColor color) + { + Name = name; + Color = color; + } + public string Name { get; set; } + public TagColor Color { get; set; } +} + +public enum TagColor +{ + purple, + green, + aqua +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/EventArgs/GetMenuItemsForPlayerArgs.cs b/AutoEvent/InventoryMenu/API/EventArgs/GetMenuItemsForPlayerArgs.cs new file mode 100644 index 00000000..af66aa8e --- /dev/null +++ b/AutoEvent/InventoryMenu/API/EventArgs/GetMenuItemsForPlayerArgs.cs @@ -0,0 +1,33 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: GetMenuItemsForPlayerArgs.cs +// Author: Redforce04#4091 +// Revision Date: 10/28/2023 3:16 PM +// Created Date: 10/28/2023 3:16 PM +// ----------------------------------------- + +using InventoryMenu.API.Features; +using InventorySystem.Items; +using PluginAPI.Core; + +namespace InventoryMenu.API.EventArgs; + +public class GetMenuItemsForPlayerArgs +{ + public GetMenuItemsForPlayerArgs(Player ply, Menu menu, Dictionary? items = null) + { + Player = ply; + Menu = menu; + if (items is null || items.IsEmpty()) + { + Items = Menu._itemBases; + } + } + public Player Player { get; private set; } + public Menu Menu { get; private set; } + public Dictionary Items { get; set; } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/EventArgs/MenuItemClickedArgs.cs b/AutoEvent/InventoryMenu/API/EventArgs/MenuItemClickedArgs.cs new file mode 100644 index 00000000..6f061221 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/EventArgs/MenuItemClickedArgs.cs @@ -0,0 +1,36 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: MenuItemClickedArgs.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 2:12 PM +// Created Date: 10/27/2023 2:12 PM +// ----------------------------------------- + +using InventoryMenu.API.Features; +using PluginAPI.Core; + +namespace InventoryMenu.API.EventArgs; + +public class MenuItemClickedArgs +{ + public MenuItemClickedArgs(Player player, MenuItem menuItemClicked, bool isLeftClick, bool isAllowed = true) + { + if (menuItemClicked is null) + { + Log.Warn("Menu item clicked was null. This is an error!"); + return; + } + Player = player; + MenuItemClicked = menuItemClicked; + IsLeftClick = isLeftClick; + IsAllowed = isAllowed; + } + public Player Player { get; private set; } + public MenuItem MenuItemClicked { get; private set; } + public bool IsLeftClick { get; set; } + public bool IsAllowed { get; set; } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Extensions.cs b/AutoEvent/InventoryMenu/API/Extensions.cs new file mode 100644 index 00000000..99d33d24 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Extensions.cs @@ -0,0 +1,36 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: Extensions.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 3:17 PM +// Created Date: 10/27/2023 3:17 PM +// ----------------------------------------- + +using InventoryMenu.API.Features; +using PluginAPI.Core; + +namespace InventoryMenu.API; + +public static class Extensions +{ + public static void ShowMenu(this Player ply, Menu menu) => menu.ShowToPlayer(ply); + public static void HideMenu(this Player ply) + { + var instance = MenuManager.Menus.FirstOrDefault(x => x.CanPlayerSee(ply)); + + if (instance is null) + return; + + instance.HideForPlayer(ply); + } + + public static void RefreshInventory(this Player ply) + { + ply.ReferenceHub.inventory.SendItemsNextFrame = true; + } + +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Features/Broadcast.cs b/AutoEvent/InventoryMenu/API/Features/Broadcast.cs new file mode 100644 index 00000000..5a446007 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Features/Broadcast.cs @@ -0,0 +1,280 @@ +/* + * Taken from Riptide Events. Thanks Riptide! + */ +using System.Diagnostics; +using MEC; +using PluginAPI.Core; + +namespace InventoryMenu.API.Features +{ + public enum BroadcastPriority { Lowest, VeryLow, Low, Medium, High, VeryHigh, Highest }; + + public sealed class BroadcastOverride + { + static BroadcastOverride() + { + } + + class BroadcastInfo + { + class Line + { + public int size = 44; + public BroadcastPriority priority = BroadcastPriority.Lowest; + public float duration = -1.0f; + public string msg = ""; + } + + List lines = new List(); + Stopwatch stop_watch = new Stopwatch(); + bool dirty = false; + CoroutineHandle handle = new CoroutineHandle(); + + public BroadcastInfo() + { + stop_watch.Start(); + } + + public void SetEvenLineSizes(int line_count) + { + UpdateDuration(); + + List sizes = new List { 178, 89, 59, 44, 35, 29, 25, 22, 19, 17, 16, 14, 12, 11 }; + int dif = line_count - lines.Count; + for (int i = 0; i < dif; i++) + lines.Add(new Line()); + + if (lines.Count > line_count) + lines.RemoveRange(line_count, lines.Count - line_count); + + foreach (Line line in lines) + line.size = sizes[line_count - 1]; + + dirty = true; + } + + public void SetCustomLineSizes(IEnumerable sizes) + { + UpdateDuration(); + + int dif = sizes.Count() - lines.Count; + for (int i = 0; i < dif; i++) + lines.Add(new Line()); + + if (lines.Count > sizes.Count()) + lines.RemoveRange(sizes.Count(), lines.Count - sizes.Count()); + + for (int i = 0; i < sizes.Count(); i++) + lines[i].size = sizes.ElementAt(i); + + dirty = true; + } + + public void BroadcastLine(int line, float duration, BroadcastPriority priority, string msg) + { + if (line >= 1 && line <= lines.Count) + { + if (lines[line - 1].duration <= 0.0f || lines[line - 1].priority <= priority) + { + UpdateDuration(); + lines[line - 1].priority = priority; + lines[line - 1].duration = duration; + lines[line - 1].msg = msg; + dirty = true; + } + } + } + + public void ClearLines(BroadcastPriority priority) + { + UpdateDuration(); + + foreach (Line line in lines) + if (line.priority <= priority) + line.duration = -1.0f; + + dirty = true; + } + + public void ClearLine(int line, BroadcastPriority priority) + { + if (line >= 1 && line <= lines.Count) + { + if (lines[line - 1].priority <= priority) + { + UpdateDuration(); + lines[line - 1].duration = -1.0f; + dirty = true; + } + } + } + + public void UpdateDuration() + { + float delta = (float)stop_watch.Elapsed.TotalSeconds; + stop_watch.Restart(); + + foreach (Line line in lines) + line.duration -= delta; + } + + public float Update(Player player, float delta) + { + UpdateDuration(); + + string msg = ""; + foreach (Line line in lines) + { + if (line.duration > 0.0f) + msg += "" + line.msg + "\n"; + //else + // msg += " \n"; + } + + player.SendBroadcast(msg, 300, Broadcast.BroadcastFlags.Truncated, true); + + float min = 300.0f; + bool any_active = false; + foreach (Line line in lines) + { + if (line.duration > 0.0f) + { + min = Math.Min(min, line.duration); + any_active = true; + } + } + if (any_active) + return min; + else + return -1.0f; + } + + public void UpdateIfDirty(Player player) + { + if (dirty) + { + dirty = false; + if (handle.IsValid) + Timing.KillCoroutines(handle); + stop_watch.Restart(); + handle = Timing.RunCoroutine(_Update(player)); + } + } + + + public IEnumerator _Update(Player player) + { + float delta = 1.0f; + while (delta > 0.0f) + { + delta = Update(player, (float)stop_watch.Elapsed.TotalSeconds); + yield return Timing.WaitForSeconds(delta); + } + yield break; + } + } + + static Dictionary broadcast_info = new Dictionary(); + + public static void SetEvenLineSizes(Player player, int line_count) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info[player.PlayerId].SetEvenLineSizes(line_count); + } + + public static void SetCustomLineSizes(Player player, IEnumerable sizes) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info[player.PlayerId].SetCustomLineSizes(sizes); + } + + public static void RegisterPlayer(Player player) + { + if (!broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info.Add(player.PlayerId, new BroadcastInfo()); + } + + public static void UnregisterPlayer(Player player) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info.Remove(player.PlayerId); + } + + public static void Reset() + { + broadcast_info.Clear(); + } + + public static void BroadcastLine(Player player, int line, float duration, BroadcastPriority priority, string msg) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info[player.PlayerId].BroadcastLine(line, duration, priority, msg); + } + + public static void BroadcastLine(int line, float duration, BroadcastPriority priority, string msg) + { + foreach (Player player in Player.GetPlayers()) + if (player.Role != PlayerRoles.RoleTypeId.None) + BroadcastLine(player, line, duration, priority, msg); + } + + public static void BroadcastLines(Player player, int line, float duration, BroadcastPriority priority, List msgs) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + { + foreach (string msg in msgs) + { + broadcast_info[player.PlayerId].BroadcastLine(line, duration, priority, msg); + line++; + } + } + } + + public static void BroadcastLines(int line, float duration, BroadcastPriority priority, List msgs) + { + foreach (Player player in Player.GetPlayers()) + if (player.Role != PlayerRoles.RoleTypeId.None) + BroadcastLines(player, line, duration, priority, msgs); + } + + public static void ClearLines(Player player, BroadcastPriority priority) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info[player.PlayerId].ClearLines(priority); + } + + public static void ClearLines(BroadcastPriority priority) + { + foreach (Player player in Player.GetPlayers()) + if (player.Role != PlayerRoles.RoleTypeId.None) + ClearLines(player, priority); + } + + public static void ClearLine(Player player, int line, BroadcastPriority priority) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info[player.PlayerId].ClearLine(line, priority); + } + + public static void ClearLine(int line, BroadcastPriority priority) + { + foreach (Player player in Player.GetPlayers()) + if (player.Role != PlayerRoles.RoleTypeId.None) + ClearLine(player, line, priority); + } + + public static void UpdateIfDirty(Player player) + { + if (broadcast_info.ContainsKey(player.PlayerId)) + broadcast_info[player.PlayerId].UpdateIfDirty(player); + } + + public static void UpdateAllDirty() + { + foreach (Player player in Player.GetPlayers()) + if (player.Role != PlayerRoles.RoleTypeId.None) + UpdateIfDirty(player); + } + + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Features/Menu.cs b/AutoEvent/InventoryMenu/API/Features/Menu.cs new file mode 100644 index 00000000..44dcb9e3 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Features/Menu.cs @@ -0,0 +1,205 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: Menu.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 2:17 PM +// Created Date: 10/27/2023 2:17 PM +// ----------------------------------------- + +using System.Collections.ObjectModel; +using HarmonyLib; + using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventorySystem; +using InventorySystem.Items; +using InventorySystem.Items.Pickups; +using PluginAPI.Core; +using PluginAPI.Core.Items; + +namespace InventoryMenu.API.Features; + +public sealed class Menu +{ + private static int Index { get; set; } = 0; + public static Menu? GetMenu(int id) + { + return MenuManager.Menus.FirstOrDefault(x => x.Id == id); + } + public Menu(string description, bool canPickupItems = false, Action? onGetMenuItems = null, Dictionary? items = null) + { + this.Id = Index; + Index++; + this.CanPlayersPickupItems = canPickupItems; + this.Description = description; + this._activePlayers = new List(); + this._items = items ?? new Dictionary(); + if (onGetMenuItems is not null) + { + GetMenuItems += onGetMenuItems; + } + MenuManager.RegisterMenu(this); + } + /// + /// The of the menu. Unique for every menu. + /// + public int Id { get; private set; } + + /// + /// A description of the menu. + /// + public string Description { get; set; } + + /// + /// Gets or Sets whether a can pickup an item. + /// + /// True if the player can pickup an item. False if a player cannot pickup items. + public bool CanPlayersPickupItems { get; set; } = false; + + public event Action GetMenuItems; + public void OnGetMenuItems(GetMenuItemsForPlayerArgs ev) => GetMenuItems?.Invoke(ev); + + /// + /// An internal dictionary of menu items corresponding to their position. + /// + internal Dictionary _items { get; set; } + + /// + /// A read-only dictionary of menu items and their corresponding positions. + /// + public ReadOnlyDictionary Items => new(_items); + + /// + /// Adds a to the menu. + /// + /// The to add. + /// True if the item can be added, False if the item cannot be added. + public bool AddItem(MenuItem item) + { + if (_items.Count >= 8) + return false; + + byte position = (item.CachedPosition == 255) ? (byte)0 : item.CachedPosition; + + // Something already exists there. + if (_items.ContainsKey(position)) + { + for (byte i = 0; i < 8; i++) + { + if (_items.ContainsKey(i)) + continue; + position = i; + break; + } + } + + _items.Add(position, item); + + item.CachedPosition = 255; + if (item.Serial != 0) + { + //Log.Debug($"[Menu {this.Id}] Reusing Serial for Item {item.Id} ({item.Item}, {item.Serial})"); + this._itemBases.Add(item.Serial, item.ItemBase); + return true; + } + ushort serial = ItemSerialGenerator.GenerateNext(); + if(InventoryItemLoader.AvailableItems.TryGetValue(item.Item, out var value) && value is not null) + { + //Log.Debug($"[Menu {this.Id}] Generating Serial for Item {item.Id} ({item.Item}, {item.Serial})"); + item.Serial = serial; + + this._itemBases.Add(serial, value); + return true; + } + // ItemBase itemBase = ply.ReferenceHub.inventory.CreateItemInstance(new ItemIdentifier(item.Info.ItemId, serial), ply.ReferenceHub.inventory.isLocalPlayer); + return true; + } + + public bool RemoveItem(MenuItem item) + { + if (!_items.ContainsValue(item)) + { + return false; + // dont try to remove it + } + + if (_itemBases.ContainsKey(item.Serial)) + _itemBases.Remove(item.Serial); + byte key = _items.FirstOrDefault(x => x.Value == item).Key; + _items.Remove(key); + item.AssignParentMenu(null); + return true; + } + + public bool ChangeItemIndex(byte oldPosition, byte newPosition) + { + // Old position doesnt exist. + if (!_items.ContainsKey(oldPosition)) + return false; + + // Not moving anything. + if (oldPosition == newPosition) + return true; + + // Something already exists there. + if (_items.ContainsKey(newPosition)) + return false; + + // Add the new index. + _items.Add(newPosition, _items[oldPosition]); + // Remove the old index. + _items.Remove(oldPosition); + return true; + } + + private List _activePlayers { get; set; } + + /// + /// The instances of players viewing this menu. + /// + public IReadOnlyList PlayerInventoryCaches => _activePlayers.AsReadOnly(); + + /// + /// Checks if a player is being shown the menu. + /// + /// The name of the player. + /// + public bool CanPlayerSee(Player ply) + { + return _activePlayers.Contains(ply); + } + + /// + /// Shows a menu to a player. + /// + /// The to show the menu to. + public void ShowToPlayer(Player ply) + { + if (_activePlayers.Contains(ply)) + return; + ply.HideMenu(); + _activePlayers.Add(ply); + + ply.ReferenceHub.inventory.SendItemsNextFrame = true; + } + + /// + /// Hides the menu for a player. + /// + /// The to hide the menu from. + public void HideForPlayer(Player ply) + { + if (!_activePlayers.Contains(ply)) + return; + + _activePlayers.Remove(ply); + ply.ReferenceHub.inventory.SendItemsNextFrame = true; + + } + + public Dictionary _itemBases { get; set; } = new Dictionary(); + public ReadOnlyDictionary ItemBases => new(_itemBases); +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Features/MenuInfo.cs b/AutoEvent/InventoryMenu/API/Features/MenuInfo.cs new file mode 100644 index 00000000..39678d31 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Features/MenuInfo.cs @@ -0,0 +1,34 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: MenuInfo.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 3:18 PM +// Created Date: 10/27/2023 3:18 PM +// ----------------------------------------- + +namespace InventoryMenu.API.Features; + +/// +/// Contains info about a menu. +/// +public struct MenuInfo +{ + /// + /// The amount of items a menu has. + /// + public int TotalItems; + + /// + /// The amount of lines a menu takes. + /// + public int BroadcastLines; + public MenuInfo(int totalItems, int broadcastLines) + { + this.TotalItems = totalItems; + this.BroadcastLines = broadcastLines; + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Features/MenuItem.cs b/AutoEvent/InventoryMenu/API/Features/MenuItem.cs new file mode 100644 index 00000000..9b429201 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Features/MenuItem.cs @@ -0,0 +1,148 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: MenuItem.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 2:09 PM +// Created Date: 10/27/2023 2:09 PM +// ----------------------------------------- + +using InventoryMenu.API.EventArgs; +using InventorySystem.Items; +using PluginAPI.Core; + +namespace InventoryMenu.API.Features; + +public sealed class MenuItem +{ + /// + /// Used to track items. + /// + private static int Index { get; set; } = 0; + + public MenuItem(ItemType item, string description, byte position = 255, Action? onClicked = null, Menu? parent = null, ItemBase? itemBase = null) + { + CachedPosition = position; + + Id = Index; + Index++; + + this.Item = item; + Serial = 0; + if (itemBase is not null) + { + ItemBase = itemBase; + Serial = itemBase.ItemSerial; + } + this.Description = description; + if (onClicked is not null) + { + Clicked += onClicked; + } + + if (parent is not null) + { + ParentMenu = parent; + } + } + + public int Id { get; private set; } + + /// + /// The item type of the selection. + /// + public ItemType Item { get; private set; } + + internal ItemBase? ItemBase { get; set; } + + /// + /// The serial of the item. + /// + public ushort Serial { get; internal set; } + + /// + /// The description shown to players for the item. + /// + public string Description { get; set; } + + /// + /// The position the item should be in. (Between 0 and 7) + /// + public byte ItemPosition { + get + { + if (ParentMenu == null) + return CachedPosition == 255 ? (byte) 0 : CachedPosition; + return ParentMenu.Items.First(x => x.Value == this).Key; + } + set => this.ChangePosition(value); + } + + internal byte CachedPosition { get; set; } = 255; + + /// + /// Triggered when a player selects this menu item. + /// + public event Action Clicked; + + /// + /// Invokes + /// + /// The parameters to invoke. + internal void OnClicked(MenuItemClickedArgs ev) => Clicked?.Invoke(ev); + + /// + /// The parent for this . Can be false if a parent hasn't been defined. + /// + public Menu? ParentMenu { get; private set; } + + /// + /// Changes the position that this item will appear in, in the inventory. + /// + /// The new position. + /// True if the item can change positions. False if another item is already using the position. + public bool ChangePosition(byte newPosition) + { + if (ParentMenu is null) + { + CachedPosition = ItemPosition; + return false; + } + + return ParentMenu.ChangeItemIndex(ItemPosition, newPosition); + } + + + /// + /// Assigns this item to a parent menu. + /// + /// + /// + internal void AssignParentMenu(Menu? menu) + { + if (menu == null) + { + if (ParentMenu is not null && ParentMenu.Items.Any(x => x.Value == this)) + { + int parentId = ParentMenu.Id; + ParentMenu = null; + Menu.GetMenu(parentId)?.RemoveItem(this); + } + return; + } + if (menu.Items.Any(x => x.Value == this)) + { + return; + } + if (menu.Items.Count > 7) + { + throw new ArgumentException("The parent menu has too many items."); + } + ParentMenu = menu; + ParentMenu.AddItem(this); + } + +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Features/PlayerInventoryCache.cs b/AutoEvent/InventoryMenu/API/Features/PlayerInventoryCache.cs new file mode 100644 index 00000000..8e0d6f11 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Features/PlayerInventoryCache.cs @@ -0,0 +1,102 @@ +/*// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: PlayerInventory.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 3:37 PM +// Created Date: 10/27/2023 3:37 PM +// ----------------------------------------- + +using HarmonyLib; +using InventorySystem.Items; +using PluginAPI.Core; +using PluginAPI.Core.Items; + +namespace InventoryMenu.API.Features; + +public class PlayerInventoryCache +{ + public PlayerInventoryCache(Player player) + { + Player = player; + InventoryIsCleared = false; + Items = new Dictionary(); + } + + /// + /// The player. + /// + public Player Player { get; private set; } + public bool InventoryIsCleared { get; private set; } + + /// + /// The players inventory. + /// + public Dictionary Items { get; private set; } + + /// + /// Stores and clears the inventory of the player. + /// + public void StoreAndClearInventory() + { + if (Player is null) + { + return; + } + + if (Player.ReferenceHub.inventory.UserInventory.Items is null) + { + return; + } + + InventoryIsCleared = true; + // Store Values. + Items = Player.ReferenceHub.inventory.UserInventory.Items; + try + { + Dictionary itemIds = new Dictionary(); + foreach (var item in Player.ReferenceHub.inventory.UserInventory.Items) + { + itemIds.Add(itemIds.Count, item.Key); + } + + for (int i = 0; i < Player.ReferenceHub.inventory.UserInventory.Items.Count; i++) + { + if (!itemIds.ContainsKey(i)) + { + continue; + } + + var item = Player.ReferenceHub.inventory.UserInventory.Items.Remove(itemIds[i]); + } + } + catch (Exception e) + { + Log.Warn($"Could not clear the users inventory. Exception: \n{e}"); + } + } + + /// + /// Restores the player's old inventory. + /// + public void RestoreInventory() + { + /*Player.ReferenceHub.inventory.UserInventory.Items = Items; + Items.Clear(); + InventoryIsCleared = false; + *//* + } + + + /// + /// Method Not Recommended. + /// + public void ForceClearedInventory(bool inventoryIsCleared) + { + InventoryIsCleared = inventoryIsCleared; + } +} +*/ \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/Log.cs b/AutoEvent/InventoryMenu/API/Log.cs new file mode 100644 index 00000000..b64a56d9 --- /dev/null +++ b/AutoEvent/InventoryMenu/API/Log.cs @@ -0,0 +1,75 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: Log.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 4:01 PM +// Created Date: 10/27/2023 4:01 PM +// ----------------------------------------- + +namespace InventoryMenu.API; + +public class Log +{ + /// + /// Invoked on logging. Hook this to receive logs from the api. + /// + public static event Action OnLog; + + /// + /// Used to log information. + /// + /// The message to send. + /// The of the log. + internal static void Message(string message, LogLevel logLevel) + { + OnLog?.Invoke(message, logLevel); + return; + switch (logLevel) + { + case LogLevel.Debug: + PluginAPI.Core.Log.Debug(message, "Inventory Menus"); + break; + case LogLevel.Info: + PluginAPI.Core.Log.Info(message, "Inventory Menus"); + break; + case LogLevel.Warn: + PluginAPI.Core.Log.Warning(message, "Inventory Menus"); + break; + case LogLevel.Error: + PluginAPI.Core.Log.Error(message, "Inventory Menus"); + break; + } + } + + internal static void Debug(string message) => Message(message, LogLevel.Debug); + internal static void Warn (string message) => Message(message, LogLevel.Warn); + internal static void Error(string message) => Message(message, LogLevel.Error); + internal static void Info (string message) => Message(message, LogLevel.Info); + + public enum LogLevel + { + /// + /// Debugging information. Users typically don't need to see this. + /// + Debug = 0, + + /// + /// Non-Critical Errors. + /// + Warn = 1, + + /// + /// Critical Errors. + /// + Error = 2, + + /// + /// General API Information. + /// + Info = 3 + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/API/MenuManager.cs b/AutoEvent/InventoryMenu/API/MenuManager.cs new file mode 100644 index 00000000..262be38e --- /dev/null +++ b/AutoEvent/InventoryMenu/API/MenuManager.cs @@ -0,0 +1,80 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: MenuManager.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 3:08 PM +// Created Date: 10/27/2023 3:08 PM +// ----------------------------------------- + +using HarmonyLib; +using InventoryMenu.API.Features; +using PluginAPI.Core.Attributes; + +namespace InventoryMenu.API; + +public sealed class MenuManager +{ + static MenuManager() + { + _menus = new List(); + } + + /// The main instance of Harmony. + internal static Harmony Harmony { get; set; } + + /// + /// Where all registered menus are stored. + /// + public static IReadOnlyList Menus => _menus.AsReadOnly(); + + /// + /// The modifiable collection holding the instances of menus. + /// + private static List _menus { get; set; } + + /// + /// The public singleton instance of the menu manager. + /// + public static MenuManager Singleton { get; private set; } + + /// + /// Initializes the . This is required for the menu system to work. + /// + [PluginEntryPoint("Inventory Menus", "v1.0.1", "Provides Inventory Menus", "Redforce04")] + public static void Init() => new MenuManager(); + + /// + /// Registers a menu. + /// + /// The menu to register. + internal static void RegisterMenu(Menu menu) + { + if(!_menus.Contains(menu)) + _menus.Add(menu); + } + + /// + /// Initializes the menu manager. + /// + public MenuManager() + { + // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + if (Singleton is not null) + return; + + Singleton = this; + CosturaUtility.Initialize(); + InventoryMenu.Internal.Handlers.Init(); + Harmony = new Harmony("me.redforce04.inventorymenus"); + Harmony.PatchAll(); + Log.Debug("Inventory Manager Initialized."); + } + + + + +} diff --git a/AutoEvent/InventoryMenu/FodyWeavers.xml b/AutoEvent/InventoryMenu/FodyWeavers.xml new file mode 100644 index 00000000..0b56460e --- /dev/null +++ b/AutoEvent/InventoryMenu/FodyWeavers.xml @@ -0,0 +1,11 @@ + + + + Newtonsoft.Json + 0Harmony + System.ComponentModel.DataAnnotations + YamlDotNet + + + + \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/Internal/Handlers.cs b/AutoEvent/InventoryMenu/Internal/Handlers.cs new file mode 100644 index 00000000..424034c4 --- /dev/null +++ b/AutoEvent/InventoryMenu/Internal/Handlers.cs @@ -0,0 +1,43 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: Handlers.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 4:22 PM +// Created Date: 10/27/2023 4:22 PM +// ----------------------------------------- + +using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventoryMenu.API.Features; +using PluginAPI.Core; +using PluginAPI.Core.Attributes; +using PluginAPI.Enums; +using PluginAPI.Events; + +namespace InventoryMenu.Internal; + +internal class Handlers +{ + internal static Handlers Singleton { get; private set; } + internal static void Init() => new Handlers(); + internal Handlers() + { + // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + if (Singleton is not null) + return; + + Singleton = this; + EventManager.RegisterEvents(this); + } + + [PluginEvent(ServerEventType.PlayerSearchPickup)] + internal bool OnPickupItem(PlayerSearchPickupEvent ev) + { + var menu = MenuManager.Menus.FirstOrDefault(x => x.CanPlayerSee(ev.Player)); + return menu?.CanPlayersPickupItems ?? true; + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/Internal/Patches/DropItemPatch.cs b/AutoEvent/InventoryMenu/Internal/Patches/DropItemPatch.cs new file mode 100644 index 00000000..228efa5c --- /dev/null +++ b/AutoEvent/InventoryMenu/Internal/Patches/DropItemPatch.cs @@ -0,0 +1,55 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: DropItemPatch.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 11:19 PM +// Created Date: 10/27/2023 11:19 PM +// ----------------------------------------- + +using HarmonyLib; +using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventorySystem; +using PluginAPI.Core; +using Log = InventoryMenu.API.Log; + +namespace InventoryMenu.Internal.Patches; + +[HarmonyPatch(typeof(Inventory), nameof(Inventory.UserCode_CmdDropItem__UInt16__Boolean))] + +internal class DropItemPatch +{ + internal static bool Prefix(Inventory __instance, ushort itemSerial, bool tryThrow) + { + if (tryThrow) + return true; + Player ply = Player.Get(__instance._hub); + var instance = MenuManager.Menus.FirstOrDefault(x => x.CanPlayerSee(ply)); + if (instance is null) + { + return true; + } + + var item = instance.Items.FirstOrDefault(x => x.Value.Serial == itemSerial).Value; + if (item is null) + { + Log.Debug($"Item is null. Items Avail: {instance.Items.Values.Select(x => x.Serial.ToString()).Aggregate((x, y) => x += $" {y}")}"); + return false; + } + + try + { + item.OnClicked(new MenuItemClickedArgs(ply, item, false)); + } + catch (Exception e) + { + Log.Warn($"Caught an error while processing menu click."); + Log.Debug($"MenuClick (Right) Error: \n{e}"); + } + return false; + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/Internal/Patches/InventorySystemPatch.cs b/AutoEvent/InventoryMenu/Internal/Patches/InventorySystemPatch.cs new file mode 100644 index 00000000..2f445df3 --- /dev/null +++ b/AutoEvent/InventoryMenu/Internal/Patches/InventorySystemPatch.cs @@ -0,0 +1,66 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: InventorySystemPatch.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 5:21 PM +// Created Date: 10/27/2023 5:21 PM +// ----------------------------------------- + +using System.Diagnostics; +using System.Text; +using HarmonyLib; +using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventoryMenu.API.Features; +using InventorySystem.Items; +using NorthwoodLib.Pools; +using PluginAPI.Core; +using Log = InventoryMenu.API.Log; + +namespace InventoryMenu.Internal.Patches; + +[HarmonyPatch(typeof(InventorySystem.Inventory), nameof(InventorySystem.Inventory.ServerSendItems))] +internal static class InventorySystemPatch +{ + internal static bool Prefix(InventorySystem.Inventory __instance) + { + if (__instance.isLocalPlayer) + { + return false; + } + + HashSet hashSet = HashSetPool.Shared.Rent(); + Player ply = Player.Get(__instance._hub); + var instance = MenuManager.Menus.FirstOrDefault(x => x.CanPlayerSee(ply)); + GetMenuItemsForPlayerArgs? args = null; + + if (instance is not null) + { + try + { + args = new GetMenuItemsForPlayerArgs(ply, instance); + instance.OnGetMenuItems(args); + } + catch (Exception e) + { + Log.Debug($"An error has occured while getting menu items.\n {e}"); + } + } + var items = (args is not null ? args.Items : __instance.UserInventory.Items); + // Log.Debug($"[{instance is null}], Menus: {MenuManager.Menus.Count}, Total Caches: {MenuManager.Menus.Sum(x => x.PlayerInventoryCaches.Count())}"); + + // Log.Debug($"Item Count: {items.Count}, Inv Count: {__instance.UserInventory.Items.Count} Menu null: {instance is null}, "); + foreach (KeyValuePair item in items.OrderByDescending(x => x.Key)) + { + hashSet.Add(new ItemIdentifier(item.Value.ItemTypeId, item.Key)); + } + + __instance.TargetRefreshItems(hashSet.ToArray()); + HashSetPool.Shared.Return(hashSet); + return false; + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/Internal/Patches/SelectItemPatch.cs b/AutoEvent/InventoryMenu/Internal/Patches/SelectItemPatch.cs new file mode 100644 index 00000000..6bdbcd26 --- /dev/null +++ b/AutoEvent/InventoryMenu/Internal/Patches/SelectItemPatch.cs @@ -0,0 +1,52 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: InventoryMenu +// FileName: SelectItemPatch.cs +// Author: Redforce04#4091 +// Revision Date: 10/27/2023 11:08 PM +// Created Date: 10/27/2023 11:08 PM +// ----------------------------------------- + +using HarmonyLib; +using InventoryMenu.API; +using InventoryMenu.API.EventArgs; +using InventorySystem; +using PluginAPI.Core; +using Log = InventoryMenu.API.Log; + +namespace InventoryMenu.Internal.Patches; + +[HarmonyPatch(typeof(Inventory), nameof(Inventory.UserCode_CmdSelectItem__UInt16))] +internal static class SelectItemPatch +{ + internal static bool Prefix(Inventory __instance, ushort itemSerial) + { + Player ply = Player.Get(__instance._hub); + var instance = MenuManager.Menus.FirstOrDefault(x => x.CanPlayerSee(ply)); + if (instance is null) + { + return true; + } + + var item = instance.Items.FirstOrDefault(x => x.Value.Serial == itemSerial).Value; + if (item is null) + { + Log.Debug($"Item is null. Items Avail: {instance.Items.Values.Select(x => x.Serial.ToString()).Aggregate((x, y) => x += $" {y}")}"); + return false; + } + + try + { + item.OnClicked(new MenuItemClickedArgs(ply, item, true)); + } + catch (Exception e) + { + Log.Warn($"Caught an error while processing menu click."); + Log.Debug($"MenuClick (Left) Error: \n{e}"); + } + return false; + } +} \ No newline at end of file diff --git a/AutoEvent/InventoryMenu/InventoryMenu.csproj b/AutoEvent/InventoryMenu/InventoryMenu.csproj new file mode 100644 index 00000000..a85ef1c0 --- /dev/null +++ b/AutoEvent/InventoryMenu/InventoryMenu.csproj @@ -0,0 +1,56 @@ + + + + latest + InventoryMenu + InventoryMenu + Copyright RisottoMan and Redforce04 © 2023 + bin\$(Configuration)\ + Release + AnyCPU + false + net48 + enable + enable + true + + + + + + all + runtime; compile; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; compile; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AutoEvent/Loader.cs b/AutoEvent/Loader.cs index 8dbec764..71d57f99 100644 --- a/AutoEvent/Loader.cs +++ b/AutoEvent/Loader.cs @@ -15,9 +15,9 @@ public class Loader /// Overrides the Exiled check for the version of the plugin that is exiled exclusive. /// #if EXILED - private const bool IsExiledPlugin = true; + public const bool IsExiledPlugin = true; #else - private const bool IsExiledPlugin = false; + public const bool IsExiledPlugin = false; #endif /// /// If enabled, a debug log is output everytime a plugin is loaded. Not necessary for players. diff --git a/AutoEvent/Patches/ShotPatch.cs b/AutoEvent/Patches/ShotPatch.cs new file mode 100644 index 00000000..ae104451 --- /dev/null +++ b/AutoEvent/Patches/ShotPatch.cs @@ -0,0 +1,204 @@ +#if !EXILED +// ----------------------------------------------------------------------- +// +// Copyright (c) Exiled Team. All rights reserved. +// Licensed under the CC BY-SA 3.0 license. +// +// ----------------------------------------------------------------------- + +using System.Collections.Generic; +using System.Reflection.Emit; +using AutoEvent.Events.EventArgs; +using AutoEvent.Events; +using HarmonyLib; +using InventorySystem.Items.Firearms; +using InventorySystem.Items.Firearms.Modules; +using NorthwoodLib.Pools; +using PluginAPI.Core; +using UnityEngine; +using AutoEvent.Events.Handlers; + +namespace AutoEvent.Patches +{ +#pragma warning disable SA1402 // File may only contain a single type + + using static HarmonyLib.AccessTools; + + + [HarmonyPatch(typeof(SingleBulletHitreg), nameof(SingleBulletHitreg.ServerProcessRaycastHit))] + internal static class Shot + { + /// + /// I DON'T CARE. + /// + /// Fuck Player. + /// Fuck Hit. + /// FuckDestructible. + /// FuckDamage. + /// FuckReturn. + internal static bool ProcessShot(ReferenceHub player, RaycastHit hit, IDestructible destructible, ref float damage) + { + ShotEventArgs shotEvent = new(Player.Get(player), hit, destructible, damage); + + global::AutoEvent.Events.Handlers.Players.OnShot(shotEvent); + + if (shotEvent.CanHurt) + damage = shotEvent.Damage; + + return shotEvent.CanHurt; + } + + private static IEnumerable Transpiler(IEnumerable instructions, ILGenerator generator) + { + List newInstructions = ListPool.Shared.Rent(instructions); + + Label returnLabel = generator.DefineLabel(); + Label jump = generator.DefineLabel(); + + LocalBuilder ev = generator.DeclareLocal(typeof(ShotEventArgs)); + + int offset = 2; + int index = newInstructions.FindLastIndex( + instruction => instruction.Calls(Method(typeof(FirearmBaseStats), nameof(FirearmBaseStats.DamageAtDistance)))) + offset; + + newInstructions.InsertRange( + index, + new CodeInstruction[] + { + // this.Hub + new(OpCodes.Ldarg_0), + new(OpCodes.Callvirt, PropertyGetter(typeof(StandardHitregBase), nameof(StandardHitregBase.Hub))), + + // hit + new(OpCodes.Ldarg_2), + + // destructible + new(OpCodes.Ldloc_0), + + // damage + new(OpCodes.Ldloca_S, 1), + + new(OpCodes.Call, Method(typeof(Shot), nameof(ProcessShot), new[] { typeof(ReferenceHub), typeof(RaycastHit), typeof(IDestructible), typeof(float).MakeByRefType(), })), + + // if (!ev.CanHurt) + // return; + new(OpCodes.Brfalse_S, returnLabel), + }); + + offset = -3; + index = newInstructions.FindLastIndex( + instruction => instruction.Calls(Method(typeof(StandardHitregBase), nameof(StandardHitregBase.PlaceBulletholeDecal)))) + offset; + + // replace the original goto label + newInstructions.FindAll(instruction => instruction.opcode == OpCodes.Brfalse).ForEach(instruction => instruction.operand = jump); + + newInstructions.InsertRange( + index, + new CodeInstruction[] + { + new CodeInstruction(OpCodes.Nop).WithLabels(jump), + + // this.Hub + new(OpCodes.Ldarg_0), + new(OpCodes.Callvirt, PropertyGetter(typeof(StandardHitregBase), nameof(StandardHitregBase.Hub))), + + // hit + new(OpCodes.Ldarg_2), + + // destructible + new(OpCodes.Ldnull), + + // damage + new(OpCodes.Ldc_R4, 0f), + new(OpCodes.Stloc_S, 1), + new(OpCodes.Ldloca_S, 1), + + // Shot.ProcessShot + new(OpCodes.Call, Method(typeof(Shot), nameof(ProcessShot), new[] { typeof(ReferenceHub), typeof(RaycastHit), typeof(IDestructible), typeof(float).MakeByRefType(), })), + new(OpCodes.Pop), + }); + + newInstructions[newInstructions.Count - 1].WithLabels(returnLabel); + + for (int z = 0; z < newInstructions.Count; z++) + yield return newInstructions[z]; + + ListPool.Shared.Return(newInstructions); + } + } + + [HarmonyPatch(typeof(BuckshotHitreg), nameof(BuckshotHitreg.ShootPellet))] + internal static class Shot2 + { + private static IEnumerable Transpiller(IEnumerable instructions, ILGenerator generator) + { + List newInstructions = ListPool.Shared.Rent(instructions); + + Label returnLabel = generator.DefineLabel(); + + int offset = -3; + int index = newInstructions.FindIndex(instruction => instruction.Calls(Method(typeof(StandardHitregBase), nameof(StandardHitregBase.PlaceBulletholeDecal)))) + offset; + + newInstructions.InsertRange( + index, + new CodeInstruction[] + { + // this.Hub + new CodeInstruction(OpCodes.Ldarg_0), + new(OpCodes.Callvirt, PropertyGetter(typeof(BuckshotHitreg), nameof(BuckshotHitreg.Hub))), + + // hit + new(OpCodes.Ldloc_2), + + // destructible + new(OpCodes.Ldloc_3), + + // damage + new(OpCodes.Ldc_R4, 0f), + new(OpCodes.Stloc_S, 4), + new(OpCodes.Ldloca_S, 4), + + new(OpCodes.Call, Method(typeof(Shot), nameof(Shot.ProcessShot), new[] { typeof(ReferenceHub), typeof(RaycastHit), typeof(IDestructible), typeof(float).MakeByRefType(), })), + + // if (!ev.CanHurt) + // return; + new(OpCodes.Brfalse_S, returnLabel), + }); + + offset = 0; + index = newInstructions.FindLastIndex(instruction => instruction.opcode == OpCodes.Ldsfld) + offset; + + newInstructions.InsertRange( + index, + new[] + { + // this.Hub + new CodeInstruction(OpCodes.Ldarg_0), + new(OpCodes.Callvirt, PropertyGetter(typeof(BuckshotHitreg), nameof(BuckshotHitreg.Hub))), + + // hit + new(OpCodes.Ldloc_2), + + // destructible + new(OpCodes.Ldloc_3), + + // damage + new(OpCodes.Ldloca_S, 4), + + new(OpCodes.Call, Method(typeof(Shot), nameof(Shot.ProcessShot), new[] { typeof(ReferenceHub), typeof(RaycastHit), typeof(IDestructible), typeof(float).MakeByRefType(), })), + + // if (!ev.CanHurt) + // return; + new(OpCodes.Brfalse_S, returnLabel), + }); + + newInstructions[newInstructions.Count - 1].WithLabels(returnLabel); + + for (int z = 0; z < newInstructions.Count; z++) + yield return newInstructions[z]; + + ListPool.Shared.Return(newInstructions); + } + } +} +#endif \ No newline at end of file diff --git a/AutoEvent/Plugin.cs b/AutoEvent/Plugin.cs index 63192b17..87e09603 100644 --- a/AutoEvent/Plugin.cs +++ b/AutoEvent/Plugin.cs @@ -1,6 +1,7 @@ using System; using System.IO; using AutoEvent.Commands; +using AutoEvent.Events.EventArgs; using AutoEvent.Interfaces; using HarmonyLib; using PluginAPI.Core.Attributes; @@ -14,7 +15,9 @@ using Powerups; using Event = AutoEvent.Interfaces.Event; using Log = PluginAPI.Core.Log; +using Map = PluginAPI.Core.Map; using Paths = PluginAPI.Helpers.Paths; +using Player = PluginAPI.Core.Player; using Server = PluginAPI.Core.Server; #if EXILED using Exiled.API.Features; @@ -25,7 +28,7 @@ namespace AutoEvent #if EXILED public class AutoEvent : Plugin { - public override System.Version Version => new System.Version(9, 2, 0); + public override System.Version Version => System.Version.Parse(DebugLogger.Version); public override string Name => "AutoEvent"; public override string Author => "Created by KoT0XleB, extended by swd and sky, Co-Maintained by Redforce04"; public static bool IsPlayedGames; @@ -55,7 +58,7 @@ public class AutoEvent public override void OnEnabled() #else [PluginPriority(LoadPriority.Low)] - [PluginEntryPoint("AutoEvent", "9.2.0", "An event manager plugin that allows you to run mini-games.", + [PluginEntryPoint("AutoEvent", DebugLogger.Version, "An event manager plugin that allows you to run mini-games.", "KoT0XleB and Redforce04")] void OnEnabled() #endif @@ -88,6 +91,22 @@ private void _startup() Singleton = this; MER.Lite.API.Initialize(AutoEvent.Singleton.Config.SchematicsDirectoryPath, Config.Debug); Powerups.API.Initialize(); + SCPSLAudioApi.Startup.SetupDependencies(); + InventoryMenu.API.MenuManager.Init(); + InventoryMenu.API.Log.OnLog += (msg, level) => + { + DebugLogger.LogDebug($"[InventorySystem] {msg}", (LogLevel)level, + level != InventoryMenu.API.Log.LogLevel.Debug); + }; + #if EXILED + Exiled.Events.Handlers.Player.Shot += (Exiled.Events.EventArgs.Player.ShotEventArgs ev) => + { + var args = new ShotEventArgs(Player.Get(ev.Player.ReferenceHub), ev.RaycastHit, ev.Hitbox, ev.Damage); + global::AutoEvent.Events.Handlers.Players.OnShot(args); + ev.Damage = args.Damage; + ev.CanHurt = args.CanHurt; + }; + #endif if (Config.IgnoredRoles.Contains(Config.LobbyRole)) { @@ -196,5 +215,35 @@ public override void OnDisabled() HarmonyPatch.UnpatchAll(); Singleton = null; } + + public void OnEventFinished() + { + if (Config.RestartAfterRoundFinish && !DebugLogger.NoRestartEnabled) + { + foreach (Player ply in Player.GetPlayers()) + { + if (ply.CheckPermission("ev.norestart", out bool isConsole)) + { + ply.ClearBroadcasts(); + ply.SendBroadcast($"The server is going to restart in 10 seconds. Use the `Ev NoRestart` command to prevent this.", 10); + } + } + Timing.CallDelayed(7f, () => + { + if (Config.RestartAfterRoundFinish && !DebugLogger.NoRestartEnabled) + { + Map.ClearBroadcasts(); + Map.Broadcast(5, Config.ServerRestartMessage); + } + }); + Timing.CallDelayed(10f, () => + { + if (Config.RestartAfterRoundFinish && !DebugLogger.NoRestartEnabled) + { + Server.Restart(); + } + }); + } + } } } diff --git a/AutoEvent/PowerupApi/API.cs b/AutoEvent/PowerupApi/API.cs index 5c88f577..8c0baac0 100644 --- a/AutoEvent/PowerupApi/API.cs +++ b/AutoEvent/PowerupApi/API.cs @@ -1,4 +1,5 @@ -using Powerups; +using Mirror; +using Powerups; namespace Powerups { @@ -18,6 +19,7 @@ public static void Initialize(bool debug = false) CosturaUtility.Initialize(); var powerupManager = new PowerupManager(); Debug = debug; + } private static bool _initialized = false; diff --git a/AutoEvent/PowerupApi/Components/PushComponent.cs b/AutoEvent/PowerupApi/Components/PushComponent.cs new file mode 100644 index 00000000..e59b6790 --- /dev/null +++ b/AutoEvent/PowerupApi/Components/PushComponent.cs @@ -0,0 +1,69 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: PushComponent.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 2:25 PM +// Created Date: 10/31/2023 2:25 PM +// ----------------------------------------- + +using System; +using System.Collections.Generic; +using Exiled.API.Extensions; +using Exiled.API.Features; +using InventorySystem.Items.SwitchableLightSources.Flashlight; +using InventorySystem.Items.SwitchableLightSources.Lantern; +using MEC; +using UnityEngine; + +namespace Powerups.Components; + +public class PushComponent : MonoBehaviour +{ + public float PushForce; + public float PushDistance; + public void Init(float force, float distance = 2f) + { + PushForce = force; + PushDistance = distance; + Player ply; + } + + private void FixedUpdate() + { + //Physics.Raycast(gameObject.transform.forward, out var hitInfo, PushDistance); + + //gameObject + + } + + private IEnumerator PushPlayer(Exiled.API.Features.Player Instigator, Exiled.API.Features.Player Victim) + {/* + Vector3 pushed = Instigator.CameraTransform.forward * PushForce; + Vector3 endPos = Victim.Position + new Vector3(pushed.x, 0, pushed.z); + int layerAsLayerMask = 0; + for (int x = 1; x < 8; x++) + layerAsLayerMask |= (1 << x); + for (int i = 1; i < Plugin.Instance.Config.Iterations; i++) + { + + float movementAmount = Plugin.Instance.Config.PushForce / Plugin.Instance.Config.Iterations; + + + Vector3 newPos = Vector3.MoveTowards(Victim.Position, endPos, movementAmount); + + if (Physics.Linecast(Victim.Position, newPos, layerAsLayerMask)) + yield break; + + Victim.Position = newPos; + + + yield return Timing.WaitForOneFrame; + }*/ + yield break; + } + +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/AmmoPowerup.cs b/AutoEvent/PowerupApi/Default/AmmoPowerup.cs index 006b0e21..89e7375e 100644 --- a/AutoEvent/PowerupApi/Default/AmmoPowerup.cs +++ b/AutoEvent/PowerupApi/Default/AmmoPowerup.cs @@ -38,10 +38,10 @@ public AmmoPowerup(Dictionary ammoToGive) } public override string Name { get; protected set; } = "Ammo"; public override string Description { get; protected set; } = "Gives a player ammo."; - protected override string SchematicName { get; set; } = "5.56"; - protected override Vector3 SchematicScale { get; set; } = new Vector3(20, 20, 20); - protected override Vector3 ColliderScale { get; set; } = new Vector3(0.1f, 0.1f, 0.1f); - public override float PowerupDuration { get; protected set; } = 0; + protected override string SchematicName { get; set; } = "Ammo"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1, 1, 1); + protected override Vector3 ColliderScale { get; set; } = new Vector3(1f, 1f, 1f); + public override float PowerupDuration { get; protected set; } = -1; public Dictionary AmmoToGive { get; set; } protected override void OnApplyPowerup(Player ply) diff --git a/AutoEvent/PowerupApi/Default/EverythingPowerup.cs b/AutoEvent/PowerupApi/Default/EverythingPowerup.cs new file mode 100644 index 00000000..96c0c13d --- /dev/null +++ b/AutoEvent/PowerupApi/Default/EverythingPowerup.cs @@ -0,0 +1,36 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: EverythingPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 2:00 PM +// Created Date: 10/31/2023 2:00 PM +// ----------------------------------------- + +using PluginAPI.Core; +using UnityEngine; + +namespace Powerups.Default; + +public class EverythingPowerup : Powerup +{ + public override string Name { get; protected set; } = "Everything"; + public override string Description { get; protected set; } = "Who knows what powers this unleashes?"; + protected override string SchematicName { get; set; } = "Strength"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = -1; + + protected override void OnApplyPowerup(Player ply) + { + + } + + protected override void OnRemovePowerup(Player ply) + { + + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/GoldenGunPowerup.cs b/AutoEvent/PowerupApi/Default/GoldenGunPowerup.cs new file mode 100644 index 00000000..6c6e6817 --- /dev/null +++ b/AutoEvent/PowerupApi/Default/GoldenGunPowerup.cs @@ -0,0 +1,86 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: GoldenGunPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:59 PM +// Created Date: 10/31/2023 1:59 PM +// ----------------------------------------- + +using System.Collections.Generic; +using System.Linq; +using PlayerStatsSystem; +using PluginAPI.Core; +using PluginAPI.Core.Attributes; +using PluginAPI.Enums; +using PluginAPI.Events; +using UnityEngine; + +namespace Powerups.Default; + +public class GoldenGunPowerup : Powerup +{ + public GoldenGunPowerup(ItemType itemType, IDamageHandler? handler = null) + { + WeaponType = itemType; + } + + protected internal override void OnRegistering() + { + EventManager.RegisterEvents(this); + } + + protected internal override void OnUnregistering() + { + EventManager.UnregisterEvents(this); + } + + private IDamageHandler DamageHandler { get; set; } + private ItemType WeaponType { get; set; } + public override string Name { get; protected set; } = "Golden Gun"; + public override string Description { get; protected set; } = "Gives you a golden gun that one-shots other players."; + protected override string SchematicName { get; set; } = "GoldenGun"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = -1; + private List _trackedItems { get; set; } = new List(); + + [PluginEvent(ServerEventType.PlayerDamage)] + private void OnPlayerDamage(PlayerDamageEvent ev) + { + if (ev.DamageHandler is not FirearmDamageHandler handler) + return; + + if (!_trackedItems.Contains(ev.Player.CurrentItem.ItemSerial)) + return; + + DamageHandler.ProcessDamage(ev); + this.RemovePowerup(ev.Player); + } + protected override void OnApplyPowerup(Player ply) + { + var item = ply.AddItem(WeaponType); + _trackedItems.Add(item.ItemSerial); + } + + protected override void OnRemovePowerup(Player ply) + { + var item = ply.Items.FirstOrDefault(x => _trackedItems.Contains(x.ItemSerial)); + ply.RemoveItem(item); + } + + private class OneShotKill : IDamageHandler + { + public void ProcessDamage(PlayerDamageEvent ev) + { + ev.Target.Kill("The golden gun strikes again!"); + } + } + public interface IDamageHandler + { + public void ProcessDamage(PlayerDamageEvent ev); + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/GrowPowerup.cs b/AutoEvent/PowerupApi/Default/GrowPowerup.cs new file mode 100644 index 00000000..ce51ce9a --- /dev/null +++ b/AutoEvent/PowerupApi/Default/GrowPowerup.cs @@ -0,0 +1,60 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: ResizeBigPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:59 PM +// Created Date: 10/31/2023 1:59 PM +// ----------------------------------------- + +using System.Collections.Generic; +using System.Collections.ObjectModel; +using PluginAPI.Core; +using Powerups.Extensions; +using UnityEngine; + +namespace Powerups.Default; + +public class GrowPowerup : Powerup +{ + public GrowPowerup(float scaleMultiplier, float powerupDuration) + { + ResizeAmount = new Vector3(scaleMultiplier,scaleMultiplier,scaleMultiplier); + PowerupDuration = powerupDuration; + } + public GrowPowerup(Vector3 scaleMultiplier, float powerupDuration) + { + ResizeAmount = scaleMultiplier; + PowerupDuration = powerupDuration; + } + public override string Name { get; protected set; } = "Grow"; + public override string Description { get; protected set; } = "Makes you grow."; + protected override string SchematicName { get; set; } = "ResizeBig"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = 10; + private Dictionary _playerScales { get; set; } = new Dictionary(); + public ReadOnlyDictionary PlayerScales => new(_playerScales); + public Vector3 ResizeAmount { get; } + protected override void OnApplyPowerup(Player ply) + { + Vector3 curScale = ply.GameObject.transform.localScale; + if (!_playerScales.ContainsKey(ply)) + { + _playerScales.Add(ply, curScale); + } + ply.SetPlayerScale(new Vector3(curScale.x * ResizeAmount.x, curScale.y * ResizeAmount.y, curScale.z * ResizeAmount.z)); + } + + protected override void OnRemovePowerup(Player ply) + { + if (_playerScales.ContainsKey(ply)) + { + ply.SetPlayerScale(_playerScales[ply]); + _playerScales.Remove(ply); + } + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/HealthPowerup.cs b/AutoEvent/PowerupApi/Default/HealthPowerup.cs new file mode 100644 index 00000000..79eb9604 --- /dev/null +++ b/AutoEvent/PowerupApi/Default/HealthPowerup.cs @@ -0,0 +1,213 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: HealthPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:58 PM +// Created Date: 10/31/2023 1:58 PM +// ----------------------------------------- + +using System.Collections.Generic; +using MEC; +using PluginAPI.Core; +using UnityEngine; + +namespace Powerups.Default; + +public class HealthPowerup : Powerup +{ + protected HealthPowerup(){ } + public HealthPowerup(HealOptions healthRegenerationMethod, float powerupDuration) + { + HealMethod = healthRegenerationMethod; + PowerupDuration = powerupDuration; + } + + protected internal override void OnRegistering() + { + if (HealMethod is ICoroutine) + { + CoroutineHandle = Timing.RunCoroutine(HealCoroutine(), "Heal Powerup Coroutine"); + } + } + + protected internal override void OnUnregistering() + { + if (CoroutineHandle.IsRunning) + { + Timing.KillCoroutines(CoroutineHandle); + } + } + + internal CoroutineHandle CoroutineHandle; + + public override string Name { get; protected set; } = "Heal"; + public override string Description { get; protected set; } = "Heals you."; + protected override string SchematicName { get; set; } = "Health"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = 10; + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public virtual HealOptions HealMethod { get; protected set; } = null!; + + private IEnumerator HealCoroutine() + { + yield return Timing.WaitForSeconds(1f); + if (HealMethod is not ICoroutine coroutine) + yield break; + while (true) + { + coroutine.ProcessHealUpdate(); + yield return Timing.WaitForSeconds(1f); + } + } + + protected override void OnApplyPowerup(Player ply) + { + HealMethod.AddPlayer(ply); + } + + protected override void OnRemovePowerup(Player ply) + { + HealMethod.RemovePlayer(ply); + } +} + +public interface ICoroutine +{ + public void ProcessHealUpdate(); +} +public abstract class HealOptions +{ + public abstract void AddPlayer(Player ply); + + public virtual void RemovePlayer(Player ply) + { + + } +} + +internal class HealSettings : HealOptions +{ + public HealSettings(float healAmount = 0f, bool healFully = false) + { + HealAmount = healAmount; + HealFully = healFully; + } + public bool HealFully { get; set; } = false; + public float HealAmount { get; set; } = 0f; + + public override void AddPlayer(Player ply) + { + ply.Health = HealFully ? ply.MaxHealth : Mathf.Clamp(ply.Health + HealAmount, 0, ply.MaxHealth); + } +} +public class RegenerateHealthSettings : HealOptions, ICoroutine +{ + public RegenerateHealthSettings(float healthPerSecond, float regenerationMax, bool regenerateMultipleTimes = true, RegenerationAmountMode regenerationReferencePlayerHealth = RegenerationAmountMode.PlayerRelativeHealth) + { + HealthPerSecond = healthPerSecond; + RegenerationMaxAmount = regenerationMax; + RegenerateMultipleTimes = regenerateMultipleTimes; + RegenerationMaxAmountMode = regenerationReferencePlayerHealth; + } + private Dictionary _initialPlayerHealth = new Dictionary(); + public void ProcessHealUpdate() + { + List values = new List(); + foreach(var ply in _initialPlayerHealth.Keys) + values.Add(ply); + for (var i = 0; i < _initialPlayerHealth.Count; i++) + { + var playerInfo = _initialPlayerHealth[values[i]]; + playerInfo.SecondAppliedFor += 1f; + if (playerInfo.HitHealthLimit) + { + continue; + } + + float healthToGive = Mathf.Clamp(HealthToGivePlayer(playerInfo.Player, playerInfo.SecondAppliedFor), (-1 *playerInfo.Player.MaxHealth), playerInfo.Player.MaxHealth); + playerInfo.Player.Health += healthToGive; + playerInfo.HealthGiven += healthToGive; + if (RegenerateMultipleTimes) + goto update; + + if (RegenerationMaxAmountMode == RegenerationAmountMode.GivenHealth) + { + if(playerInfo.HealthGiven >= RegenerationMaxAmount) + playerInfo.HitHealthLimit = true; + goto update; + } + + if ((RegenerationMaxAmountMode == RegenerationAmountMode.PlayerTotalHealth ? playerInfo.Player.Health : playerInfo.Player.Health - playerInfo.InitialHealth) >= RegenerationMaxAmount) + playerInfo.HitHealthLimit = true; + + update: + _initialPlayerHealth[values[i]] = playerInfo; + } + } + + public override void AddPlayer(Player ply) + { + if(!_initialPlayerHealth.ContainsKey(ply)) + this._initialPlayerHealth.Add(ply, new PlayerInfo(ply)); + } + + public override void RemovePlayer(Player ply) + { + if (_initialPlayerHealth.ContainsKey(ply)) + this._initialPlayerHealth.Remove(ply); + } + + /// + /// Gets the health to give the player. Can be overriden for custom implementation. + /// + public virtual float HealthToGivePlayer(Player ply, float durationAppliedForInSeconds) + { + return HealthPerSecond; + } + + /// + /// The health to give to a player per second. Default Implementation. + /// + private float HealthPerSecond { get; set; } + + /// + /// How much health the regeneration will give from the start health. + /// + public float RegenerationMaxAmount { get; set; } + + /// + /// Should the player continue to regenerate. + /// + public bool RegenerateMultipleTimes { get; set; } + + /// + /// How the maximum health is calculated. + /// + public RegenerationAmountMode RegenerationMaxAmountMode { get; set; } + + public enum RegenerationAmountMode + { + PlayerTotalHealth, + PlayerRelativeHealth, + GivenHealth, + } + private class PlayerInfo + { + protected internal PlayerInfo(Player ply) + { + Player = ply; + InitialHealth = ply.Health; + HealthGiven = 0; + HitHealthLimit = false; + } + protected internal Player Player { get; set; } + protected internal float InitialHealth { get; set; } + protected internal float HealthGiven { get; set; } + protected internal bool HitHealthLimit { get; set; } + protected internal float SecondAppliedFor { get; set; } + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/PushPowerup.cs b/AutoEvent/PowerupApi/Default/PushPowerup.cs new file mode 100644 index 00000000..11e04b1e --- /dev/null +++ b/AutoEvent/PowerupApi/Default/PushPowerup.cs @@ -0,0 +1,48 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: PushPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:59 PM +// Created Date: 10/31/2023 1:59 PM +// ----------------------------------------- + +using PluginAPI.Core; +using Powerups.Components; +using UnityEngine; + +namespace Powerups.Default; + +public class PushPowerup : Powerup +{ + public PushPowerup(float force, float distance, float powerupDuration) + { + Force = force; + Distance = distance; + PowerupDuration = powerupDuration; + } + public override string Name { get; protected set; } = "Push"; + public override string Description { get; protected set; } = "Pushes people out of the way."; + + protected override string SchematicName { get; set; } = "Push"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = 10; + public float Force; + public float Distance; + protected override void OnApplyPowerup(Player ply) + { + ply.GameObject.AddComponent().Init(Force, Distance); + } + + protected override void OnRemovePowerup(Player ply) + { + if (ply.GameObject.TryGetComponent(out var component)) + { + GameObject.Destroy(component); + } + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/ShieldPowerup.cs b/AutoEvent/PowerupApi/Default/ShieldPowerup.cs new file mode 100644 index 00000000..436f70ae --- /dev/null +++ b/AutoEvent/PowerupApi/Default/ShieldPowerup.cs @@ -0,0 +1,52 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: ShieldPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:59 PM +// Created Date: 10/31/2023 1:59 PM +// ----------------------------------------- + +using CustomPlayerEffects; +using InventorySystem.Items.MarshmallowMan; +using PluginAPI.Core; +using UnityEngine; + +namespace Powerups.Default; + +public class ShieldPowerup : Powerup +{ + public ShieldPowerup(float damageReductionAmount, float powerupDuration) + { + DamageReductionAmount = damageReductionAmount; + PowerupDuration = powerupDuration; + } + public override string Name { get; protected set; } = "Protection"; + public override string Description { get; protected set; } = "Shields the player from damage."; + protected override string SchematicName { get; set; } = "Shield"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public float DamageReductionAmount { get; protected set; } + public override float PowerupDuration { get; protected set; } = 10; + protected override void OnApplyPowerup(Player ply) + { + DamageReduction fx; + if (!ply.EffectsManager.TryGetEffect(out fx) || fx is null) + { + fx = ply.EffectsManager.EnableEffect()!; + } + + fx.Intensity = (byte)(2 * DamageReductionAmount); + } + + protected override void OnRemovePowerup(Player ply) + { + if (ply.EffectsManager.TryGetEffect(out var reduction)) + { + reduction.DisableEffect(); + } + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/ShrinkPowerup.cs b/AutoEvent/PowerupApi/Default/ShrinkPowerup.cs new file mode 100644 index 00000000..bd1272d0 --- /dev/null +++ b/AutoEvent/PowerupApi/Default/ShrinkPowerup.cs @@ -0,0 +1,60 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: ResizeSmallPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:59 PM +// Created Date: 10/31/2023 1:59 PM +// ----------------------------------------- + +using System.Collections.Generic; +using System.Collections.ObjectModel; +using PluginAPI.Core; +using Powerups.Extensions; +using UnityEngine; + +namespace Powerups.Default; + +public class ShrinkPowerup : Powerup +{ + public ShrinkPowerup(float scaleMultiplier, float powerupDuration) + { + ResizeAmount = new Vector3(scaleMultiplier,scaleMultiplier,scaleMultiplier); + PowerupDuration = powerupDuration; + } + public ShrinkPowerup(Vector3 scaleMultiplier, float powerupDuration) + { + ResizeAmount = scaleMultiplier; + PowerupDuration = powerupDuration; + } + public override string Name { get; protected set; } = "Shrink"; + public override string Description { get; protected set; } = "Shrinks you down."; + protected override string SchematicName { get; set; } = "ResizeSmall"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = 10; + private Dictionary _playerScales { get; set; } = new Dictionary(); + public ReadOnlyDictionary PlayerScales => new(_playerScales); + public Vector3 ResizeAmount { get; } + protected override void OnApplyPowerup(Player ply) + { + Vector3 curScale = ply.GameObject.transform.localScale; + if (!_playerScales.ContainsKey(ply)) + { + _playerScales.Add(ply, curScale); + } + ply.SetPlayerScale(new Vector3(curScale.x * ResizeAmount.x, curScale.y * ResizeAmount.y, curScale.z * ResizeAmount.z)); + } + + protected override void OnRemovePowerup(Player ply) + { + if (_playerScales.ContainsKey(ply)) + { + ply.SetPlayerScale(_playerScales[ply]); + _playerScales.Remove(ply); + } + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/SpeedPowerup.cs b/AutoEvent/PowerupApi/Default/SpeedPowerup.cs index 5f09fd7a..2bc28718 100644 --- a/AutoEvent/PowerupApi/Default/SpeedPowerup.cs +++ b/AutoEvent/PowerupApi/Default/SpeedPowerup.cs @@ -22,9 +22,9 @@ public sealed class SpeedPowerup : Powerup { public override string Name { get; protected set; } = "Speed"; public override string Description { get; protected set; } = "Gives a player a temporary speed boost"; - protected override string SchematicName { get; set; } = "Bepis"; - protected override Vector3 SchematicScale { get; set; } = new Vector3(3, 3, 3); - protected override Vector3 ColliderScale { get; set; } = new Vector3(0.3f, 0.3f, 0.3f); + protected override string SchematicName { get; set; } = "Speed"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1, 1, 1); + protected override Vector3 ColliderScale { get; set; } = new Vector3(1f, 1f, 1f); public SpeedPowerup() { diff --git a/AutoEvent/PowerupApi/Default/StaminaPowerup.cs b/AutoEvent/PowerupApi/Default/StaminaPowerup.cs new file mode 100644 index 00000000..4a3bdfc0 --- /dev/null +++ b/AutoEvent/PowerupApi/Default/StaminaPowerup.cs @@ -0,0 +1,38 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: StaminaPowerup.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:59 PM +// Created Date: 10/31/2023 1:59 PM +// ----------------------------------------- + +using CustomPlayerEffects; +using PluginAPI.Core; +using Powerups.Extensions; +using UnityEngine; + +namespace Powerups.Default; + +public class StaminaPowerup : Powerup +{ + public override string Name { get; protected set; } = "Stamina"; + public override string Description { get; protected set; } = "Gives you infinite stamina."; + protected override string SchematicName { get; set; } = "Stamina"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + protected override void OnApplyPowerup(Player ply) + { + ply.EffectsManager.EnableEffect(); + ply.ApplyFakeEffect(0); + } + + protected override void OnRemovePowerup(Player ply) + { + ply.EffectsManager.DisableEffect(); + ply.ApplyFakeEffect(0); + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Default/StrengthPowerup.cs b/AutoEvent/PowerupApi/Default/StrengthPowerup.cs new file mode 100644 index 00000000..098bbe84 --- /dev/null +++ b/AutoEvent/PowerupApi/Default/StrengthPowerup.cs @@ -0,0 +1,62 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: Strength.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 1:58 PM +// Created Date: 10/31/2023 1:58 PM +// ----------------------------------------- + +using System.Collections.Generic; +using PlayerStatsSystem; +using PluginAPI.Core; +using PluginAPI.Core.Attributes; +using PluginAPI.Enums; +using PluginAPI.Events; +using UnityEngine; + +namespace Powerups.Default; + +public class StrengthPowerup : Powerup +{ + public StrengthPowerup(float grenadeDamageBoost, float firearmDamageBoost, float meleeDamageBoost, float powerupDuration) + { + _grenadeDamageBoost = grenadeDamageBoost; + _firearmDamageBoost = firearmDamageBoost; + _meleeDamageBoost = meleeDamageBoost; + PowerupDuration = powerupDuration; + } + public override string Name { get; protected set; } = "Strength"; + public override string Description { get; protected set; } = "Makes your weapons and projectiles do more damage."; + protected override string SchematicName { get; set; } = "Strength"; + protected override Vector3 SchematicScale { get; set; } = new Vector3(1,1,1); + protected override Vector3 ColliderScale { get; set; }= new Vector3(1,1,1); + public override float PowerupDuration { get; protected set; } = 10; + private float _grenadeDamageBoost; + private float _firearmDamageBoost; + private float _meleeDamageBoost; + + [PluginEvent(ServerEventType.PlayerDamage)] + private void OnPlayerDamage(PlayerDamageEvent ev) + { + if(ev.Player is null || !this.PlayerHasEffect(ev.Player)) + return; + if (ev.DamageHandler is FirearmDamageHandler firearmDamageHandler ) + { + firearmDamageHandler.Damage *= _firearmDamageBoost; + } + + if (ev.DamageHandler is ExplosionDamageHandler explosionDamageHandler) + { + explosionDamageHandler.Damage *= _grenadeDamageBoost; + } + + if (ev.DamageHandler is JailbirdDamageHandler jailbirdDamageHandler) + { + jailbirdDamageHandler.Damage *= _meleeDamageBoost; + } + } +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Extensions/PlayerExtensions.cs b/AutoEvent/PowerupApi/Extensions/PlayerExtensions.cs new file mode 100644 index 00000000..bd2f21ad --- /dev/null +++ b/AutoEvent/PowerupApi/Extensions/PlayerExtensions.cs @@ -0,0 +1,52 @@ +// +// Copyright (c) Redforce04. All rights reserved. +// +// ----------------------------------------- +// Solution: AutoEvent +// Project: PowerupApi +// FileName: PlayerExtensions.cs +// Author: Redforce04#4091 +// Revision Date: 10/31/2023 2:09 PM +// Created Date: 10/31/2023 2:09 PM +// ----------------------------------------- + +using System; +using System.Reflection; +using Discord; +using Mirror; +using PluginAPI.Core; +using UnityEngine; + +namespace Powerups.Extensions; + +public static class PlayerExtensions +{ + static PlayerExtensions() + { + } + private static MethodInfo sendSpawnMessage; + + public static MethodInfo SendSpawnMessage => sendSpawnMessage ?? (sendSpawnMessage = + typeof(NetworkServer).GetMethod("SendSpawnMessage", BindingFlags.Static | BindingFlags.NonPublic)); + public static void SetPlayerScale(this Player target, Vector3 scale) + { + if (target.GameObject.transform.localScale == scale) return; + + try + { + NetworkIdentity identity = target.ReferenceHub.networkIdentity; + target.GameObject.transform.localScale = scale; + foreach (Player player in Player.GetPlayers()) + { + SendSpawnMessage?.Invoke(null, new object[2] { identity, player.Connection }); + } + } + catch (Exception ex) + { + Log.Warning($"Scale error has occured."); + Log.Debug($"Exception: \n{ex}"); + + } + } + +} \ No newline at end of file diff --git a/AutoEvent/PowerupApi/Powerup.cs b/AutoEvent/PowerupApi/Powerup.cs index 9250e063..713f36c0 100644 --- a/AutoEvent/PowerupApi/Powerup.cs +++ b/AutoEvent/PowerupApi/Powerup.cs @@ -27,12 +27,14 @@ public abstract class Powerup /// /// Initializes a new . /// - public Powerup() + public Powerup(bool autoRegister = true) { ActivePlayers = new Dictionary(); Schematics = new List(); + if (autoRegister) + PowerupManager.RegisterPowerup(this); } - + /// /// The name of the . If another is found by the same name, it will become "name-1" /// @@ -43,15 +45,27 @@ public Powerup() /// public abstract string Description { get; protected set; } + /// + /// The id of the powerup. + /// + public int Id { get; private set; } = 0; + + internal void SetId(int id) + { + if (Id != 0) + return; + Id = id; + } + /// /// How long the should last. Set to -1 to disable the duration system (Non-Reversible Powerups). /// public virtual float PowerupDuration { get; protected set; } = -1; - + /// /// The name of the schematic to spawn for the . /// - protected virtual string SchematicName { get; set; } + protected virtual string SchematicName { get; set; } = ""; /// /// The scale of the . This makes the bigger or smaller when spawned. @@ -72,6 +86,23 @@ public Powerup() /// A list of Players that have this effect active. This can be disabled by setting the to a negative amount. /// public Dictionary ActivePlayers { get; internal set; } + + /// + /// Called when the powerup is registered. + /// + protected internal virtual void OnRegistering() + { + + } + + + /// + /// Called when the powerup is being unregistered. + /// + protected internal virtual void OnUnregistering() + { + + } /// /// Called when a player collides with the object. diff --git a/AutoEvent/PowerupApi/PowerupApi.csproj b/AutoEvent/PowerupApi/PowerupApi.csproj index 6a82433d..0ccdf702 100644 --- a/AutoEvent/PowerupApi/PowerupApi.csproj +++ b/AutoEvent/PowerupApi/PowerupApi.csproj @@ -23,12 +23,15 @@ default + + true + all runtime; compile; build; native; contentfiles; analyzers; buildtransitive - + all runtime; compile; build; native; contentfiles; analyzers; buildtransitive @@ -40,11 +43,11 @@ - - - + + + - + diff --git a/AutoEvent/PowerupApi/PowerupManager.cs b/AutoEvent/PowerupApi/PowerupManager.cs index bf27ae99..d5935123 100644 --- a/AutoEvent/PowerupApi/PowerupManager.cs +++ b/AutoEvent/PowerupApi/PowerupManager.cs @@ -78,7 +78,41 @@ private IEnumerator ProcessPowerups() /// /// A list of all registered powerups. /// - public static List RegisteredPowerups { get; set; } + public static List RegisteredPowerups { get; set; } = new List(); + + public static void RegisterPowerup(Powerup powerup) + { + if (RegisteredPowerups.Contains(powerup)) + { + Log.Debug($"A powerup cannot be registered twice. You can have multiple instances, but can only register each instance once."); + return; + } + + powerup.SetId(RegisteredPowerups.Count); + RegisteredPowerups.Add(powerup); + try + { + powerup.OnRegistering(); + } + catch (Exception e) + { + Log.Debug($"Error while registering powerup. Exception: \n {e}"); + } + } + + public static void UnregisterPowerup(Powerup powerup) + { + if(RegisteredPowerups.Contains(powerup)) + RegisteredPowerups.Remove(powerup); + try + { + powerup.OnUnregistering(); + } + catch (Exception e) + { + Log.Debug($"Error while un-registering powerup. Exception: \n {e}"); + } + } /// /// Gets a by its type. diff --git a/AutoEvent/ReplaceTextWithVariables/Program.cs b/AutoEvent/ReplaceTextWithVariables/Program.cs index 92262c5b..b761647e 100644 --- a/AutoEvent/ReplaceTextWithVariables/Program.cs +++ b/AutoEvent/ReplaceTextWithVariables/Program.cs @@ -135,11 +135,11 @@ public static void Main(string[] args) dp.Plugins.AddRange(plugins); } buildDependencies.Add(dp); - Console.WriteLine($"Loaded Assembly {dp.Name}"); + //Console.WriteLine($"Loaded Assembly {dp.Name}"); } catch (Exception e) { - Console.Error.WriteLine($"Could not load assembly for file \"{file}\". Exception: \"{e.Message}\"."); + // Console.Error.WriteLine($"Could not load assembly for file \"{file}\". Exception: \"{e.Message}\"."); try { var info = dnlib.DotNet.AssemblyDef.Load(file); @@ -161,7 +161,7 @@ public static void Main(string[] args) } } buildDependencies.Add(assemblyInfo); - Console.Error.WriteLine($"Could not load full assembly for {assemblyInfo.Name}. Loading Mini-Info instead."); + // Console.Error.WriteLine($"Could not load full assembly for {assemblyInfo.Name}. Loading Mini-Info instead."); } catch { } } @@ -220,7 +220,8 @@ public static void Main(string[] args) //Console.WriteLine($"Replacing {varsToReplace.Count + replacementTerms.Count} variables"); File.WriteAllText(fileLoc, text); - Console.Write(text); + //Console.Write(text); + Console.WriteLine("Replaced Text."); } private static bool TryProcessNextArguments(this string[] arguments, int currentTerm, int amountToSearch, out List nextArguments) diff --git a/AutoEvent/ReplaceTextWithVariables/ReplaceTextWithVariables.csproj b/AutoEvent/ReplaceTextWithVariables/ReplaceTextWithVariables.csproj index b8883da8..04ab5f1e 100644 --- a/AutoEvent/ReplaceTextWithVariables/ReplaceTextWithVariables.csproj +++ b/AutoEvent/ReplaceTextWithVariables/ReplaceTextWithVariables.csproj @@ -7,13 +7,22 @@ enable + + true + true + + + + true + + all runtime; build; native; contentfiles; analyzers; buildtransitive; compile - + diff --git a/AutoEvent/SchematicApi/SchematicApi.csproj b/AutoEvent/SchematicApi/SchematicApi.csproj index 169a7974..42f2c7e3 100644 --- a/AutoEvent/SchematicApi/SchematicApi.csproj +++ b/AutoEvent/SchematicApi/SchematicApi.csproj @@ -23,12 +23,15 @@ default + + true + all runtime; compile; build; native; contentfiles; analyzers; buildtransitive - + all runtime; compile; build; native; contentfiles; analyzers; buildtransitive @@ -40,11 +43,11 @@ - - - + + + - + diff --git a/AutoEvent/Translation.cs b/AutoEvent/Translation.cs index 3266848d..eb0e8af4 100644 --- a/AutoEvent/Translation.cs +++ b/AutoEvent/Translation.cs @@ -2,9 +2,12 @@ using System.ComponentModel; using AutoEvent.Games.Battle; using AutoEvent.Games.Boss; +using AutoEvent.Games.GhostBusters.Configs; +using AutoEvent.Games.Spleef.Configs; +using AutoEvent.Games.Trouble; #if EXILED using Exiled.API.Interfaces; -#endif +#endif namespace AutoEvent { // Yes, it looks terrible. I just have very little time to create a large plugin. @@ -49,6 +52,9 @@ public class Translation [Description("Puzzle Game Mode")] public PuzzleTranslate PuzzleTranslate { get; set; } = new PuzzleTranslate(); + [Description("Spleef Game Mode")] + public SpleefTranslation SpleefTranslate { get; set; } = new SpleefTranslation(); + [Description("Zombie Survival Game Mode (Zombie 2)")] public SurvivalTranslate SurvivalTranslate { get; set; } = new SurvivalTranslate(); @@ -75,5 +81,8 @@ public class Translation [Description("Boss Battle Game Mode")] public BossTranslate BossTranslate { get; set; } = new BossTranslate(); + + [Description("Ghost Busters Game Mode")] + public GhostBustersTranslate GhostBustersTranslate { get; set; } = new GhostBustersTranslate(); } } diff --git a/AutoEvent/VersionInfo.cs b/AutoEvent/VersionInfo.cs deleted file mode 100644 index 50da29c7..00000000 --- a/AutoEvent/VersionInfo.cs +++ /dev/null @@ -1,79 +0,0 @@ -// -// Copyright (c) Redforce04. All rights reserved. -// -// ----------------------------------------- -// Solution: AutoEvent -// Project: AutoEvent -// FileName: VersionInfo.cs -// Author: Redforce04#4091 -// Revision Date: 08/02/2023 6:41 PM -// Created Date: 08/02/2023 6:41 PM -// ----------------------------------------- -/* - This file is apart of the building system. During building the following will happen: - - This file overwrites the ArgumentParser.cs - - The 3 variables notably identified by the "${}" will be replaced. - - This happens with another program called "ReplaceTextWithVariables" (found in project dir) - - This helps the program identify git tracking info for the auto-updater. - - Project is built - - Project is published for every architecture - - All builds are move to a /bin/Releases/export folder by default. - -*/ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using Newtonsoft.Json; - -namespace AutoEvent; - -public class VersionInfo -{ - static VersionInfo() - { - Assemblies = JsonConvert.DeserializeObject>(BuildDependencies)?.AsReadOnly() ?? new List().AsReadOnly(); - } - public const string CommitHash = "6797f6ad"; - public const string CommitBranch = "BuildSystemRevamp"; - public const string CommitVersion = "9.2.0"; - public const string BuildUser = "Redforce04"; - public static DateTime BuildTime { get; } = DateTime.Parse("2023-10-23T03:11:04"); - private const string BuildDependencies = "[{\"Exiled\":false,\"Dependency\":false,\"Name\":\"0Harmony, Version=2.2.2.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"0020ee40-255b-4dc7-a0eb-8b2a76225b38\",\"Version\":\"2.2.2.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"25874ba6-e694-4f0b-98e7-ec383925979d\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"e055863a-833d-488b-b818-80c6fa4c7570\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"AutoEvent, Version=9.2.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"a4239d09-b0e7-4437-9b4e-3c0cc2bc7221\",\"Version\":\"9.2.0+4e427ad4a0a70c7dd4030c8b5ad7181f2d81b62c\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"AutoEvent, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"dcb5b488-2cbc-4889-84bd-f75d16ecda19\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"CedModV3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"cf428e86-e7eb-4a19-9241-33b3fcfe5d9b\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"CommandSystem.Core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"28f169d0-a689-4b72-9aae-5e262655734f\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Costura, Version=5.7.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"ddfff09d-1be6-4dde-a90e-e1945bde31f8\",\"Version\":\"5.7.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.API, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"8ee86594-5295-4d00-a11c-ad5b1ebad2c2\",\"Version\":\"8.2.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.CreditTags, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"30f1494e-ff4b-4927-8ba7-687ff93f5aa2\",\"Version\":\"8.2.1\",\"Plugins\":[{\"ExiledPlugin\":true,\"Name\":\"Exiled.CreditTags\",\"Version\":\"8.2.1.0\",\"Authors\":\"Babyboucher20 & iRebbok & Exiled Team\",\"Descriptions\":\"\"}]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.CustomItems, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"f57ad116-cf67-47c2-8e22-fa62465d5e11\",\"Version\":\"8.2.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.CustomRoles, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"0a8eee56-0590-4ee3-87e6-4ffe471b6cef\",\"Version\":\"8.2.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.Events, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"ef594de7-72aa-48b4-b716-4584d41ec68c\",\"Version\":\"8.2.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.Loader, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"0ba6e980-bd7f-45a0-b1c0-162a52ac2f36\",\"Version\":\"8.2.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.Permissions, Version=8.2.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"83d18530-ab5e-4db3-acbf-07f049d5861c\",\"Version\":\"8.2.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Exiled.Updater, Version=3.1.2.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"f50f7e83-cc2b-46d5-90ea-4d4edcb4a37b\",\"Version\":\"8.2.1\",\"Plugins\":[{\"ExiledPlugin\":true,\"Name\":\"Exiled.Updater\",\"Version\":\"3.1.2.0\",\"Authors\":\"Exiled.Updater\",\"Descriptions\":\"\"}]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Mirror, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"47c27e41-19bf-47e9-ad01-75254bda2ce9\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed\",\"Hash\":\"f7499511-9334-484f-b6db-6825be2eac0d\",\"Version\":\"13.0.1+ae9fe44e1323e91bcbd185ca1a14099fba7c021f\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"NorthwoodLib, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"db71f823-8b49-4a15-b742-4d947eca4aa4\",\"Version\":\"1.3.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"NVorbis, Version=0.10.5.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"5135992b-1107-4932-a198-da6424d2e1d7\",\"Version\":\"0.10.5\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"NWAPIPermissionSystem, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"1647374f-8e99-4f63-b2d3-fcad0d86fda2\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"PluginAPI, Version=13.1.1.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"33b3199e-7d51-4de6-b4c2-e1f0699f32fd\",\"Version\":\"13.1.1\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"Pooling, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"c0c7c304-da1e-4e87-b839-9a67ee1e32c3\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"PowerupApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"cc30f17d-12d6-46ea-a877-72731f37e9d8\",\"Version\":\"1.0.0+6797f6ad8c14b30a43793269d928d91724e363cf\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"SchematicApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"c89061b8-c3d0-4dc5-a6b9-991c4a4ad555\",\"Version\":\"1.0.0+6797f6ad8c14b30a43793269d928d91724e363cf\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"SCPSLAudioApi, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"d3945b9e-977d-4d49-852b-c216956ed5c9\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51\",\"Hash\":\"36e84b0d-9d74-4086-a062-54e1963f24d5\",\"Version\":\"4.6.25519.03 built by: dlab-DDVSOWINAGE013. Commit Hash: 8321c729934c0f8be754953439b88e6e1c120c24\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"Hash\":\"1d643505-0625-4026-bc24-ac874f3d97fe\",\"Version\":\"4.6.57.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51\",\"Hash\":\"dcbbb4d8-bb29-40af-bf41-5255b5da34df\",\"Version\":\"4.6.24705.01. Commit Hash: 4d1af962ca0fede10beb01d197367c2f90e92c97\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51\",\"Hash\":\"a5006ea2-ea34-4a8e-8c71-a2eb982aadc0\",\"Version\":\"4.6.27617.02 @BuiltBy: dlab14-DDVSOWINAGE071 @Branch: release/2.1-MSRC @SrcCode: https://github.com/dotnet/corefx/tree/c6cf790234e063b855fcdb50f3fb1b3cfac73275\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\",\"Hash\":\"142bdee2-c07c-4735-87f2-a5980e1caf64\",\"Version\":\"4.6.25519.03 built by: dlab-DDVSOWINAGE013. Commit Hash: 8321c729934c0f8be754953439b88e6e1c120c24\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\",\"Hash\":\"bd600ba8-23b5-4d45-ba63-f24457fa3be3\",\"Version\":\"4.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51\",\"Hash\":\"850d20a0-023a-4ee8-854a-c380d9a66b35\",\"Version\":\"4.6.26515.06 @BuiltBy: dlab-DDVSOWINAGE059 @Branch: release/2.1 @SrcCode: https://github.com/dotnet/corefx/tree/30ab651fcb4354552bd4891619a0bdd81e0ebdbf\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.AccessibilityModule\",\"Hash\":\"8d08d4c1-9c35-45db-9dc5-4c71e9d3b7e3\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.AIModule\",\"Hash\":\"84e51771-8f82-4be6-a977-044810e7b104\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.AndroidJNIModule\",\"Hash\":\"9b311ea6-1697-49b0-ad03-37c19c646fb9\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.AnimationModule\",\"Hash\":\"bc860ce7-5869-486a-9e89-e072136f92bb\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.AssetBundleModule\",\"Hash\":\"8b827f20-51ce-43ee-8fff-e3d598c5c0ed\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.AudioModule\",\"Hash\":\"466fe5a5-7c0d-464d-b36c-63cefdca4f88\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.ClothModule\",\"Hash\":\"f1f17cbb-52ab-470b-be8a-5b6b7bfab34b\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.ClusterInputModule\",\"Hash\":\"13b77e73-a660-42bc-bfa0-90ef8d7712ee\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.ClusterRendererModule\",\"Hash\":\"d1a3404a-e4a0-4ece-b6cf-adca62a3459c\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.CoreModule\",\"Hash\":\"3dde0412-5117-4133-b8f0-3e5cc95ec0fe\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.CrashReportingModule\",\"Hash\":\"acc0027a-6675-4c08-b7d2-0d3680473bb6\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.DirectorModule\",\"Hash\":\"31859373-9d51-4fad-9be2-e309ef21dcff\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"Hash\":\"8fd25b06-24f1-492e-a2fe-2e3de747872c\",\"Version\":\"\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.DSPGraphModule\",\"Hash\":\"699eaf99-280b-4999-8c01-b39b09d4de0d\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.GameCenterModule\",\"Hash\":\"5a89f08e-8cd0-4973-b42e-5ad133fcd5dd\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.GridModule\",\"Hash\":\"744019b0-4a5c-485e-a499-6dad3c45437a\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.ImageConversionModule\",\"Hash\":\"105658f8-efb7-4836-b49c-450fc2f4c8c1\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.InputModule\",\"Hash\":\"c5e269f5-f249-41d0-96c3-31af6671ed53\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.JSONSerializeModule\",\"Hash\":\"c2885b2e-20b2-4394-9f58-0e12625e5f47\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.LocalizationModule\",\"Hash\":\"7a4fc56e-2386-49cd-a921-f8db99711902\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.ParticleSystemModule\",\"Hash\":\"c55fca2f-b840-4d42-a088-e3d89d9c0b29\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.PerformanceReportingModule\",\"Hash\":\"65703d77-edb6-4d62-815a-3d6c6d7bc074\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.Physics2DModule\",\"Hash\":\"19863d76-740b-4ae8-98a0-40589d59fabb\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.PhysicsModule\",\"Hash\":\"369dd955-1a9d-43b7-9dae-a1fa269dec81\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.ScreenCaptureModule\",\"Hash\":\"18c94b96-a56d-495a-9a05-8b118a0c2ccc\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.SpriteMaskModule\",\"Hash\":\"72d5fd22-597c-458e-a32e-8a32b2078336\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.SpriteShapeModule\",\"Hash\":\"52b59994-f4c7-4504-a81a-8becba894f89\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.StreamingModule\",\"Hash\":\"7e768345-85c2-4258-a137-a88c8ccdc126\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.SubsystemsModule\",\"Hash\":\"d30c6fa1-2349-41c8-9a09-3b244b047db3\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.TerrainModule\",\"Hash\":\"71c67192-9dea-47e9-96ef-93ac822bb26e\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.TerrainPhysicsModule\",\"Hash\":\"166d347e-e993-4a37-9bad-c7335631f366\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.TextCoreFontEngineModule\",\"Hash\":\"a602e4fd-df04-43b3-b8c7-d53ce958414a\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.TextCoreTextEngineModule\",\"Hash\":\"a73ad286-fb42-462c-ba66-46c1474e6d4b\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.TilemapModule\",\"Hash\":\"2cb22602-cc97-4c8a-ac7d-c5eea922a098\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.TLSModule\",\"Hash\":\"ffbe1983-c1ce-481a-a686-d7923d37f301\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UIElementsModule\",\"Hash\":\"75a9376e-27a6-42d9-a61c-8d874cf3e1cf\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UIElementsNativeModule\",\"Hash\":\"1fdb93b8-3e45-4ca2-8bbf-723909f272d6\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UNETModule\",\"Hash\":\"333c121c-6261-4bcd-9ac4-576ecb29861d\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityAnalyticsCommonModule\",\"Hash\":\"b150f885-6f38-4868-be2b-fcd0ede5aa0c\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityAnalyticsModule\",\"Hash\":\"9d035fce-dd57-48d2-ac3e-98e090c35d5b\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityConnectModule\",\"Hash\":\"254ce97a-2e5a-4efa-bd96-41188dd77ff3\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityCurlModule\",\"Hash\":\"03b29453-558f-484e-9648-e75deaa86712\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityWebRequestAssetBundleModule\",\"Hash\":\"9e3b502e-55c3-4e0b-b2e1-bf3acc2474e2\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityWebRequestAudioModule\",\"Hash\":\"2dd992e4-fb42-406c-a93d-39bc0489422f\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityWebRequestModule\",\"Hash\":\"7c04a35d-3920-4414-b76b-61dd8645a3ac\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityWebRequestTextureModule\",\"Hash\":\"c34e1cf9-2ddc-4846-94d9-57d0e4cb1dff\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.UnityWebRequestWWWModule\",\"Hash\":\"00953f29-4ea6-4436-8274-f456c14db7a0\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.VehiclesModule\",\"Hash\":\"64b482ca-5b57-4ddb-a5b1-75dcde2b4d49\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.VFXModule\",\"Hash\":\"02a5e97f-d12e-4055-bc47-d903c6859fee\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.VideoModule\",\"Hash\":\"9d442733-c3eb-486b-9b3b-907617e44a4f\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.VirtualTexturingModule\",\"Hash\":\"134865e8-1d8d-49cb-bd3e-6bd6be81c691\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.VRModule\",\"Hash\":\"5e0011f1-7199-4411-8d36-9f9a2f8f5414\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.WindModule\",\"Hash\":\"3e270de9-f260-441c-b6ce-f251784ccd4f\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"UnityEngine.XRModule\",\"Hash\":\"c72647bd-cfea-4d42-bfcc-703fc097b8d1\",\"Version\":\"0.0.0.0\",\"Plugins\":[]},{\"Exiled\":false,\"Dependency\":false,\"Name\":\"YamlDotNet, Version=13.0.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e\",\"Hash\":\"c5254c1b-171d-4fc0-9b1d-34868beb4f4a\",\"Version\":\"13.3.1\",\"Plugins\":[]}]"; - internal static IReadOnlyList Assemblies { get; private set; } - public static IReadOnlyList Releases = new ReadOnlyCollection(new List() - { new ReleaseInfo("1.0.0", new Version(1,0,0), "1.0.0 Release", "Not Tracked", new DateTime(2023,2,28)), - new ReleaseInfo("1.0.1", new Version(1,0,1), "1.0.1 Release", "Not Tracked", new DateTime(2023, 3, 1)), - new ReleaseInfo("1.0.2", new Version(1,0,2), "1.0.2 Release", "Not Tracked", new DateTime(2023, 3, 2)), - new ReleaseInfo("1.0.3", new Version(1,0,3), "1.0.3 Release", "Not Tracked", new DateTime(2023, 3, 2)), - new ReleaseInfo("1.0.4", new Version(1,0,4), "1.0.4 Release", "Not Tracked", new DateTime(2023, 3, 3)), - new ReleaseInfo("1.0.5", new Version(1,0,5), "1.0.5 Release", "Not Tracked", new DateTime(2023, 3,3)), - new ReleaseInfo("1.0.6", new Version(1,0,6), "1.0.6 Release", "Not Tracked", new DateTime(2023, 3, 12)), - new ReleaseInfo("1.0.7", new Version(1,0,7), "1.0.7 Release", "Not Tracked", new DateTime(2023, 3, 12)), - new ReleaseInfo("7.0.0", new Version(7,0,0), "7.0.0 Release", "Not Tracked", new DateTime(2023, 3, 23)), - new ReleaseInfo("7.1.0", new Version(7,1,0), "7.1.0 Release", "Not Tracked", new DateTime(2023, 5, 31)), - new ReleaseInfo("7.2.0", new Version(7,2,0), "7.2.0 Release", "Not Tracked", new DateTime(2023, 6, 10)), - new ReleaseInfo("8.0.0", new Version(8,0,0), "8.0.0 Release", "Not Tracked", new DateTime(2023, 7, 8)), - new ReleaseInfo("8.0.1", new Version(8,0,1), "8.0.1 Release", "Not Tracked", new DateTime(2023, 7, 10)), - new ReleaseInfo("8.0.2", new Version(8,0,2), "8.0.2 Release", "Not Tracked", new DateTime(2023, 7, 10)), - new ReleaseInfo("8.1.0", new Version(8,1,0), "8.1.0 Release", "Not Tracked", new DateTime(2023, 7, 24)), - new ReleaseInfo("8.2.0", new Version(8,2,0), "8.2.0 Release", "Not Tracked", new DateTime(2023, 7, 28)), - new ReleaseInfo("8.2.1", new Version(8,2,1), "8.2.1 Release", "Not Tracked", new DateTime(2023, 7, 30)), - new ReleaseInfo("8.2.2", new Version(8,2,2), "8.2.2 Release", "Not Tracked", new DateTime(2023, 8, 2)), - new ReleaseInfo("8.2.4", new Version(8,2,4), "8.2.4 Release", "Not Tracked", new DateTime(2023, 8, 4)), - new ReleaseInfo("8.2.5", new Version(8,2,5), "8.2.5 Release", "Not Tracked", new DateTime(2023, 8, 5)), - new ReleaseInfo("8.2.6", new Version(8,2,6), "8.2.6 Release", "Not Tracked", new DateTime(2023, 8, 9)), - new ReleaseInfo("8.2.7", new Version(8,2,7), "8.2.7 Release", "Not Tracked", new DateTime(2023, 8, 16)), - new ReleaseInfo("8.2.7-NWApi", new Version(8,2,7), "8.2.7-NWApi Release", "Not Tracked", new DateTime(2023, 8, 27)), - new ReleaseInfo("8.2.8", new Version(8,2,8), "8.2.8 Release", "Not Tracked", new DateTime(2023, 8, 28)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,0), "9.1.0 Beta Release", "Initial 9.1.0 Beta Release", new DateTime(2023, 9, 21)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,2), "9.1.2 Beta Release", "Config Hotfix", new DateTime(2023, 9, 23)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,3), "9.1.3 Beta Release", "Events Hotfix", new DateTime(2023, 9, 24)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,4), "9.1.4 Beta Release", "Another Event Hotfix. More Config Options. Partial Config Validation", new DateTime(2023, 9, 25)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,5), "9.1.5 Beta Release", "Fixes Lighting Bugs. Config Hotfixes.", new DateTime(2023, 9, 26)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,6), "9.1.6 Beta Release", "Fixes Exiled translation bugs. Also fixes some events.", new DateTime(2023, 9, 27)), - new ReleaseInfo("9.1.0-beta", new Version(9,1,7), "9.1.7 Beta Release", "Adds Lobby and voting System", new DateTime(2023, 9, 28)), - new ReleaseInfo("9.1.8-beta", new Version(9,1,8), "9.1.8 Beta Release", "Fixes Bugs", new DateTime(2023, 9, 29)), - new ReleaseInfo("9.1.9-beta", new Version(9,1,9), "9.1.9 Beta Release", "More Bugs that are fixed. Minor Api Changes", new DateTime(2023, 10, 11)), - new ReleaseInfo("9.2.0", new Version(9,1,9), "9.2.0 Release - Reworked Backend", "Reworked backend for events. Added configs, events, reworked translations, reworked gameplay mechanics and much more. Official Release.", new DateTime(2023, 10, 22, 0, 31,0)), - }); -} \ No newline at end of file diff --git a/Music/FireSale.ogg b/Music/FireSale.ogg index 7828681d..0e5e97d5 100644 Binary files a/Music/FireSale.ogg and b/Music/FireSale.ogg differ diff --git a/Music/Skeleton.ogg b/Music/Skeleton.ogg new file mode 100644 index 00000000..88d15f15 Binary files /dev/null and b/Music/Skeleton.ogg differ diff --git a/Music/Ultrakill.ogg b/Music/Ultrakill.ogg new file mode 100644 index 00000000..919aa5b4 Binary files /dev/null and b/Music/Ultrakill.ogg differ diff --git a/Photos/MiniGames Halloween(mini).png b/Photos/MiniGames Halloween(mini).png new file mode 100644 index 00000000..9ab66e4f Binary files /dev/null and b/Photos/MiniGames Halloween(mini).png differ diff --git a/README.md b/README.md index 35bafc93..f3390e9e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## RUS: Позволяет запускать автоматические Мини-Игры в игре. **Developers:** SchematicApi (MER.Lite) releases can be found [here](https://github.com/Redforce04/SchematicApi). Powerup Api releases can be found [here](https://github.com/Redforce04/PowerupApi). Development for both of these Api's occur on the dev branch of this repo. -![Logo](https://github.com/KoT0XleB/AutoEvent/blob/main/Photos/MiniGames(mini).png) +![Logo](https://github.com/KoT0XleB/AutoEvent/blob/main/Photos/MiniGames%20Halloween(mini).png) # Guides: [![](https://github.com/KoT0XleB/AutoEvent/blob/main/Photos/Message.png)](https://github.com/KoT0XleB/AutoEvent-Exiled/blob/main/Docs/MiniGames.md) diff --git a/Schematics/AmongUs/AmongUs.json b/Schematics/AmongUs/AmongUs.json new file mode 100644 index 00000000..b7635640 --- /dev/null +++ b/Schematics/AmongUs/AmongUs.json @@ -0,0 +1,21598 @@ +{ + "RootObjectId": -11392, + "Blocks": [ + { + "Name": "LightSource", + "ObjectId": -210764, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 26.0, + "z": 0.0 + }, + "BlockType": 2, + "Properties": { + "Color": "FFFFFFFF", + "Intensity": 50.0, + "Range": 50.0, + "Shadows": false + } + }, + { + "Name": "LightSource", + "ObjectId": -210812, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 26.0, + "z": -37.0 + }, + "BlockType": 2, + "Properties": { + "Color": "FFFFFFFF", + "Intensity": 50.0, + "Range": 50.0, + "Shadows": false + } + }, + { + "Name": "LightSource", + "ObjectId": -210828, + "ParentId": -11392, + "Position": { + "x": -30.0, + "y": 26.0, + "z": -20.0 + }, + "BlockType": 2, + "Properties": { + "Color": "FFFFFFFF", + "Intensity": 50.0, + "Range": 50.0, + "Shadows": false + } + }, + { + "Name": "LightSource", + "ObjectId": -210844, + "ParentId": -11392, + "Position": { + "x": 21.0, + "y": 26.0, + "z": -20.0 + }, + "BlockType": 2, + "Properties": { + "Color": "FFFFFFFF", + "Intensity": 50.0, + "Range": 50.0, + "Shadows": false + } + }, + { + "Name": "Spawnpoint", + "ObjectId": -210508, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 5.0, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.01, + "y": 0.01, + "z": 0.01 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -21644, + "ParentId": -11392, + "Position": { + "x": -19.75, + "y": 1.75, + "z": -0.25 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -21732, + "ParentId": -11392, + "Position": { + "x": -15.25, + "y": 1.75, + "z": -4.750001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -21820, + "ParentId": -11392, + "Position": { + "x": -9.0, + "y": 1.75, + "z": -9.0 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 7.778004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -21908, + "ParentId": -11392, + "Position": { + "x": 11.7500076, + "y": 1.75, + "z": 4.25 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -21984, + "ParentId": -11392, + "Position": { + "x": 11.7500076, + "y": 1.75, + "z": -4.25 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22072, + "ParentId": -11392, + "Position": { + "x": -16.0, + "y": 1.75, + "z": 2.25000048 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -22160, + "ParentId": -11392, + "Position": { + "x": -13.749999, + "y": 1.75, + "z": -2.250001 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -22248, + "ParentId": -11392, + "Position": { + "x": -11.7499981, + "y": 1.75, + "z": -4.250001 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22336, + "ParentId": -11392, + "Position": { + "x": 9.0, + "y": 1.75, + "z": 9.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 7.77800369, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22412, + "ParentId": -11392, + "Position": { + "x": 0.005504608, + "y": 0.0, + "z": 0.0 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 24.0108013, + "y": 24.0000134, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFE7D0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22500, + "ParentId": -11392, + "Position": { + "x": -9.0, + "y": 1.75, + "z": 9.0 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 7.778004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22588, + "ParentId": -11392, + "Position": { + "x": -11.75, + "y": 1.75, + "z": 4.250003 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22676, + "ParentId": -11392, + "Position": { + "x": -0.0131969452, + "y": 1.75, + "z": 11.800004 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.9734993, + "y": 2.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "00A7FFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -22752, + "ParentId": -11392, + "Position": { + "x": -4.249996, + "y": 1.75, + "z": -11.7500048 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22824, + "ParentId": -11392, + "Position": { + "x": 9.0, + "y": 1.75, + "z": -9.0 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 7.778007, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -22912, + "ParentId": -11392, + "Position": { + "x": -22.0379, + "y": 0.0, + "z": -2.58400059 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 20.076, + "y": 10.1680975, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -22996, + "ParentId": -11392, + "Position": { + "x": -25.75, + "y": 1.75, + "z": -2.75000048 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23080, + "ParentId": -11392, + "Position": { + "x": -25.75, + "y": 1.75, + "z": -7.250002 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23142, + "ParentId": -11392, + "Position": { + "x": -14.25, + "y": 1.75, + "z": -7.75000238 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23364, + "ParentId": -11392, + "Position": { + "x": -20.75, + "y": 1.75, + "z": -7.750002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23452, + "ParentId": -11392, + "Position": { + "x": -21.7499981, + "y": 1.75, + "z": -12.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.25, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23540, + "ParentId": -11392, + "Position": { + "x": -13.249999, + "y": 1.75, + "z": -10.7500019 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23628, + "ParentId": -11392, + "Position": { + "x": -11.7499971, + "y": 1.75, + "z": -15.250001 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 4.25, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23716, + "ParentId": -11392, + "Position": { + "x": -10.249999, + "y": 1.75, + "z": -18.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23804, + "ParentId": -11392, + "Position": { + "x": -14.875, + "y": 1.75, + "z": -20.2500019 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 9.250005, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23892, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 1.75, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -23980, + "ParentId": -11392, + "Position": { + "x": -41.0, + "y": 1.75, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24068, + "ParentId": -11392, + "Position": { + "x": -35.2500038, + "y": 1.75, + "z": 2.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24156, + "ParentId": -11392, + "Position": { + "x": -43.7500038, + "y": 1.75, + "z": -7.750002 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24232, + "ParentId": -11392, + "Position": { + "x": -34.0, + "y": 1.75, + "z": -12.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.50000167, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24320, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 1.75, + "z": -10.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24408, + "ParentId": -11392, + "Position": { + "x": -42.0, + "y": 1.75, + "z": -12.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.50000167, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24496, + "ParentId": -11392, + "Position": { + "x": -35.75, + "y": 1.75, + "z": -17.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24584, + "ParentId": -11392, + "Position": { + "x": -40.2500038, + "y": 1.75, + "z": -17.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24672, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 1.75, + "z": -21.2500057 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24760, + "ParentId": -11392, + "Position": { + "x": -34.2500038, + "y": 1.75, + "z": -21.2500057 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24848, + "ParentId": -11392, + "Position": { + "x": -35.75, + "y": 1.75, + "z": -29.75001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -24936, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 1.75, + "z": -25.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25024, + "ParentId": -11392, + "Position": { + "x": -40.2500038, + "y": 1.75, + "z": -29.75001 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25112, + "ParentId": -11392, + "Position": { + "x": -34.2500038, + "y": 1.75, + "z": -25.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25200, + "ParentId": -11392, + "Position": { + "x": -45.65331, + "y": 0.0, + "z": -23.5000038 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.69384527, + "y": 15.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "655978FF" + } + }, + { + "Name": "Quad", + "ObjectId": -25288, + "ParentId": -11392, + "Position": { + "x": -51.5000076, + "y": 0.0, + "z": -23.7583046 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 24.1569328, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "655978FF" + } + }, + { + "Name": "Quad", + "ObjectId": -25364, + "ParentId": -11392, + "Position": { + "x": -43.75, + "y": 1.75, + "z": -18.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25452, + "ParentId": -11392, + "Position": { + "x": -43.75, + "y": 1.75, + "z": -28.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25540, + "ParentId": -11392, + "Position": { + "x": -45.75, + "y": 1.75, + "z": -30.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25628, + "ParentId": -11392, + "Position": { + "x": -47.75, + "y": 1.75, + "z": -33.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25688, + "ParentId": -11392, + "Position": { + "x": -45.75, + "y": 1.75, + "z": -16.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25764, + "ParentId": -11392, + "Position": { + "x": -47.75, + "y": 1.75, + "z": -14.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25840, + "ParentId": -11392, + "Position": { + "x": -49.3750076, + "y": 1.75, + "z": -11.7500019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.25000024, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25916, + "ParentId": -11392, + "Position": { + "x": -53.1250076, + "y": 1.75, + "z": -13.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 6.10000134, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -25992, + "ParentId": -11392, + "Position": { + "x": -55.2500076, + "y": 1.75, + "z": -23.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 15.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26068, + "ParentId": -11392, + "Position": { + "x": -53.1250076, + "y": 1.75, + "z": -33.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 6.100003, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26144, + "ParentId": -11392, + "Position": { + "x": -49.3750076, + "y": 1.75, + "z": -35.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26220, + "ParentId": -11392, + "Position": { + "x": -41.0, + "y": 1.75, + "z": -47.0 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26296, + "ParentId": -11392, + "Position": { + "x": -43.75, + "y": 1.75, + "z": -39.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26384, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 1.75, + "z": -37.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26460, + "ParentId": -11392, + "Position": { + "x": -32.25, + "y": 1.75, + "z": -47.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26536, + "ParentId": -11392, + "Position": { + "x": -35.25, + "y": 1.75, + "z": -49.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26612, + "ParentId": -11392, + "Position": { + "x": -34.0, + "y": 1.75, + "z": -34.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26688, + "ParentId": -11392, + "Position": { + "x": -42.0, + "y": 1.75, + "z": -34.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -26776, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 1.75, + "z": -19.6250038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.25000143, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -26864, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 1.75, + "z": -28.50001 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -26952, + "ParentId": -11392, + "Position": { + "x": -31.1250019, + "y": 1.75, + "z": -16.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27040, + "ParentId": -11392, + "Position": { + "x": -25.8750019, + "y": 1.75, + "z": -16.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 3.50000048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27128, + "ParentId": -11392, + "Position": { + "x": -24.7499962, + "y": 1.75, + "z": -24.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 13.2500057, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27216, + "ParentId": -11392, + "Position": { + "x": -28.5000019, + "y": 1.75, + "z": -15.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "000000FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27304, + "ParentId": -11392, + "Position": { + "x": -28.5, + "y": 1.75, + "z": -31.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 7.500004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27392, + "ParentId": -11392, + "Position": { + "x": -27.0128021, + "y": 0.0, + "z": -42.00001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0255, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -27468, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 0.0, + "z": -47.00001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 19.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -27544, + "ParentId": -11392, + "Position": { + "x": -14.0, + "y": 0.0, + "z": -35.0701065 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 18.8598042, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "AAB482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27632, + "ParentId": -11392, + "Position": { + "x": -15.9438, + "y": 0.0, + "z": -14.0348034 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.1122007, + "y": 13.0698051, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "AABDC8FF" + } + }, + { + "Name": "Quad", + "ObjectId": -27720, + "ParentId": -11392, + "Position": { + "x": -27.0, + "y": 1.75, + "z": -39.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 9.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -27796, + "ParentId": -11392, + "Position": { + "x": -22.25, + "y": 1.75, + "z": -42.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -27872, + "ParentId": -11392, + "Position": { + "x": -21.0, + "y": 1.75, + "z": -44.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -27948, + "ParentId": -11392, + "Position": { + "x": -29.25, + "y": 1.75, + "z": -44.25001 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28024, + "ParentId": -11392, + "Position": { + "x": -26.7499962, + "y": 1.75, + "z": -46.75001 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28100, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 1.75, + "z": -49.25002 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 18.50001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28176, + "ParentId": -11392, + "Position": { + "x": -19.7499962, + "y": 1.75, + "z": -35.0 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 18.5000038, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28264, + "ParentId": -11392, + "Position": { + "x": -20.625, + "y": 1.75, + "z": -19.1250038 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28352, + "ParentId": -11392, + "Position": { + "x": -14.0, + "y": 1.75, + "z": -25.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.499999, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28474, + "ParentId": -11392, + "Position": { + "x": -8.249999, + "y": 1.75, + "z": -27.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28534, + "ParentId": -11392, + "Position": { + "x": -9.374999, + "y": 1.75, + "z": -30.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 3.190001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28736, + "ParentId": -11392, + "Position": { + "x": -10.499999, + "y": 1.75, + "z": -35.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28812, + "ParentId": -11392, + "Position": { + "x": -11.624999, + "y": 1.75, + "z": -39.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 3.190001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -28976, + "ParentId": -11392, + "Position": { + "x": -14.0, + "y": 1.75, + "z": -40.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 2.50000119, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29102, + "ParentId": -11392, + "Position": { + "x": -15.25, + "y": 1.75, + "z": -42.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29178, + "ParentId": -11392, + "Position": { + "x": -11.7499952, + "y": 1.75, + "z": -44.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29254, + "ParentId": -11392, + "Position": { + "x": -0.2499981, + "y": 0.0, + "z": -42.978508 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 15.5, + "y": 23.9579983, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "798087FF" + } + }, + { + "Name": "Quad", + "ObjectId": -29330, + "ParentId": -11392, + "Position": { + "x": -5.0, + "y": 1.75, + "z": -52.0000153 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 7.778004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -29406, + "ParentId": -11392, + "Position": { + "x": 2.500002, + "y": 1.75, + "z": -54.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 9.500005, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -29482, + "ParentId": -11392, + "Position": { + "x": -5.0, + "y": 1.75, + "z": -34.0 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 7.77800226, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -29558, + "ParentId": -11392, + "Position": { + "x": -7.74999428, + "y": 1.75, + "z": -40.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -29616, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.0, + "z": -15.5000038 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 7.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29678, + "ParentId": -11392, + "Position": { + "x": 2.500002, + "y": 0.0, + "z": -21.5000038 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29744, + "ParentId": -11392, + "Position": { + "x": 0.250005722, + "y": 1.75, + "z": -31.2500057 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -29804, + "ParentId": -11392, + "Position": { + "x": 5.0, + "y": 0.0, + "z": -27.5000076 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 7.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29880, + "ParentId": -11392, + "Position": { + "x": -2.249998, + "y": 1.75, + "z": -18.0 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 11.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -29972, + "ParentId": -11392, + "Position": { + "x": 0.2500038, + "y": 1.75, + "z": -23.7500057 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -30048, + "ParentId": -11392, + "Position": { + "x": 2.750002, + "y": 1.75, + "z": -27.25001 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -30108, + "ParentId": -11392, + "Position": { + "x": 2.25000381, + "y": 1.75, + "z": -15.7500057 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -30170, + "ParentId": -11392, + "Position": { + "x": 4.75000763, + "y": 1.75, + "z": -19.2500019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -30246, + "ParentId": -11392, + "Position": { + "x": 7.25000763, + "y": 1.75, + "z": -27.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -30304, + "ParentId": -11392, + "Position": { + "x": 7.25000763, + "y": 1.75, + "z": -33.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -30362, + "ParentId": -11392, + "Position": { + "x": 9.0, + "y": 0.0, + "z": -21.5000057 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -30702, + "ParentId": -11392, + "Position": { + "x": 18.4509048, + "y": 0.0, + "z": -24.9083061 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 15.9022, + "y": 11.8169985, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -30760, + "ParentId": -11392, + "Position": { + "x": 7.25000763, + "y": 1.75, + "z": -47.25001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 15.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -30836, + "ParentId": -11392, + "Position": { + "x": 17.0, + "y": 0.0, + "z": -37.5000076 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 19.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -30912, + "ParentId": -11392, + "Position": { + "x": 18.5743141, + "y": 0.0, + "z": -47.4702072 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 15.7295847, + "y": 15.0600042, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "718C95FF" + } + }, + { + "Name": "Quad", + "ObjectId": -30988, + "ParentId": -11392, + "Position": { + "x": 17.0, + "y": 1.75, + "z": -19.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 18.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31064, + "ParentId": -11392, + "Position": { + "x": 26.2500076, + "y": 1.75, + "z": -22.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31140, + "ParentId": -11392, + "Position": { + "x": 16.3750038, + "y": 1.75, + "z": -30.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 11.2500048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31200, + "ParentId": -11392, + "Position": { + "x": 10.7500076, + "y": 1.75, + "z": -27.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31276, + "ParentId": -11392, + "Position": { + "x": 9.250006, + "y": 1.75, + "z": -23.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31562, + "ParentId": -11392, + "Position": { + "x": 13.2500076, + "y": 1.75, + "z": -39.75001 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 11.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -31620, + "ParentId": -11392, + "Position": { + "x": 17.0, + "y": 1.75, + "z": -35.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 18.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -31680, + "ParentId": -11392, + "Position": { + "x": 24.1250038, + "y": 1.75, + "z": -28.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 6.10000324, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31738, + "ParentId": -11392, + "Position": { + "x": 24.7500038, + "y": 1.75, + "z": -43.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31798, + "ParentId": -11392, + "Position": { + "x": 26.2500076, + "y": 1.75, + "z": -46.87501 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31856, + "ParentId": -11392, + "Position": { + "x": 18.5000038, + "y": 1.75, + "z": -54.75002 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31914, + "ParentId": -11392, + "Position": { + "x": 10.7500038, + "y": 1.75, + "z": -46.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 7.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -31990, + "ParentId": -11392, + "Position": { + "x": 24.1250038, + "y": 1.75, + "z": -52.62502 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 6.10000324, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -32066, + "ParentId": -11392, + "Position": { + "x": 14.7500038, + "y": 1.75, + "z": -43.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -32142, + "ParentId": -11392, + "Position": { + "x": 18.7500038, + "y": 1.75, + "z": -41.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -32218, + "ParentId": -11392, + "Position": { + "x": 23.2500076, + "y": 1.75, + "z": -41.75001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -32294, + "ParentId": -11392, + "Position": { + "x": 24.7500038, + "y": 1.75, + "z": -39.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -32370, + "ParentId": -11392, + "Position": { + "x": 12.8750038, + "y": 1.75, + "z": -52.62502 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 6.100003, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -32774, + "ParentId": -11392, + "Position": { + "x": 16.0, + "y": 0.0, + "z": -2.41830063 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 9.836502, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -32866, + "ParentId": -11392, + "Position": { + "x": 23.2500038, + "y": 0.0, + "z": -5.0 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.5, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -32942, + "ParentId": -11392, + "Position": { + "x": 16.0, + "y": 1.75, + "z": 2.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33018, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33094, + "ParentId": -11392, + "Position": { + "x": 23.0, + "y": 1.75, + "z": -2.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.50000048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33170, + "ParentId": -11392, + "Position": { + "x": 13.7500076, + "y": 1.75, + "z": -2.25 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33246, + "ParentId": -11392, + "Position": { + "x": 15.2500038, + "y": 1.75, + "z": -4.75 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33334, + "ParentId": -11392, + "Position": { + "x": 20.7500076, + "y": 1.75, + "z": -7.25 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 11.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33422, + "ParentId": -11392, + "Position": { + "x": 30.0000153, + "y": 1.75, + "z": -10.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -33498, + "ParentId": -11392, + "Position": { + "x": 29.6250153, + "y": 1.75, + "z": 0.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.74999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -33574, + "ParentId": -11392, + "Position": { + "x": 26.7500076, + "y": 1.75, + "z": -1.00049973 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.50105119, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -33650, + "ParentId": -11392, + "Position": { + "x": 38.2500076, + "y": 1.75, + "z": -7.875 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.75, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -33726, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 0.250000119, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -33802, + "ParentId": -11392, + "Position": { + "x": 28.1250076, + "y": 1.75, + "z": -9.375 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -33878, + "ParentId": -11392, + "Position": { + "x": 26.7500076, + "y": 1.75, + "z": -7.625 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 0.7500004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -33954, + "ParentId": -11392, + "Position": { + "x": 36.6250153, + "y": 1.75, + "z": -10.75 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34030, + "ParentId": -11392, + "Position": { + "x": 28.1250038, + "y": 1.75, + "z": -33.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34106, + "ParentId": -11392, + "Position": { + "x": 26.7500038, + "y": 1.75, + "z": -34.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 0.7500004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34164, + "ParentId": -11392, + "Position": { + "x": 29.7500153, + "y": 1.75, + "z": -43.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34240, + "ParentId": -11392, + "Position": { + "x": 26.7500038, + "y": 1.75, + "z": -41.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34316, + "ParentId": -11392, + "Position": { + "x": 38.25001, + "y": 1.75, + "z": -34.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34392, + "ParentId": -11392, + "Position": { + "x": 36.6250153, + "y": 1.75, + "z": -31.7500114 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.25000024, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34468, + "ParentId": -11392, + "Position": { + "x": 30.0000153, + "y": 1.75, + "z": -31.7500114 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34544, + "ParentId": -11392, + "Position": { + "x": 35.2500076, + "y": 0.0, + "z": -13.5000076 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -34620, + "ParentId": -11392, + "Position": { + "x": 20.342, + "y": 0.0, + "z": -13.5000038 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 9.815402, + "y": 10.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "7D9389FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34708, + "ParentId": -11392, + "Position": { + "x": 27.5000076, + "y": 1.75, + "z": -15.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34784, + "ParentId": -11392, + "Position": { + "x": 20.2500076, + "y": 1.75, + "z": -18.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 9.500005, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34844, + "ParentId": -11392, + "Position": { + "x": 25.0, + "y": 1.75, + "z": -17.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34920, + "ParentId": -11392, + "Position": { + "x": 25.0, + "y": 1.75, + "z": -10.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -34996, + "ParentId": -11392, + "Position": { + "x": 23.0, + "y": 1.75, + "z": -8.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -35072, + "ParentId": -11392, + "Position": { + "x": 15.5000076, + "y": 1.75, + "z": -16.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -35148, + "ParentId": -11392, + "Position": { + "x": 27.5000076, + "y": 1.75, + "z": -11.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -35224, + "ParentId": -11392, + "Position": { + "x": 18.2500038, + "y": 1.75, + "z": -11.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -35312, + "ParentId": -11392, + "Position": { + "x": 33.23651, + "y": 0.0, + "z": -29.7154121 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 13.5254822, + "y": 27.4796429, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35388, + "ParentId": -11392, + "Position": { + "x": 46.989212, + "y": 0.0, + "z": -21.0933075 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 14.0142593, + "y": 12.1751156, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "718C95FF" + } + }, + { + "Name": "Quad", + "ObjectId": -35464, + "ParentId": -11392, + "Position": { + "x": 37.5000153, + "y": 1.75, + "z": -11.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35540, + "ParentId": -11392, + "Position": { + "x": 40.0000153, + "y": 1.75, + "z": -15.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.50000238, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35616, + "ParentId": -11392, + "Position": { + "x": 33.0000153, + "y": 1.75, + "z": -15.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35692, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 1.75, + "z": -18.5 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35750, + "ParentId": -11392, + "Position": { + "x": 33.0000153, + "y": 1.75, + "z": -21.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35808, + "ParentId": -11392, + "Position": { + "x": 30.5000153, + "y": 1.75, + "z": -26.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35884, + "ParentId": -11392, + "Position": { + "x": 40.0000153, + "y": 1.75, + "z": -24.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -35960, + "ParentId": -11392, + "Position": { + "x": 37.5000153, + "y": 1.75, + "z": -25.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -36036, + "ParentId": -11392, + "Position": { + "x": 35.0000153, + "y": 1.75, + "z": -28.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.49999952, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -36112, + "ParentId": -11392, + "Position": { + "x": 43.0000153, + "y": 2.2822, + "z": -23.25 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 4.56434965, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36188, + "ParentId": -11392, + "Position": { + "x": 43.0000153, + "y": 2.2636, + "z": -18.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 4.52724934, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36264, + "ParentId": -11392, + "Position": { + "x": 45.5000153, + "y": 2.2586, + "z": -17.0 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 4.51691341, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36340, + "ParentId": -11392, + "Position": { + "x": 47.5473175, + "y": 2.2823, + "z": -15.222 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500876, + "y": 4.56469965, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36416, + "ParentId": -11392, + "Position": { + "x": 45.5000153, + "y": 2.2652, + "z": -25.0 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 4.53051233, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36476, + "ParentId": -11392, + "Position": { + "x": 47.56671, + "y": 2.2964, + "z": -26.7800064 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 4.35518074, + "y": 4.5927, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36552, + "ParentId": -11392, + "Position": { + "x": 51.38501, + "y": 2.3351, + "z": -25.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 4.65000153, + "y": 4.67029953, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36610, + "ParentId": -11392, + "Position": { + "x": 51.3750076, + "y": 2.2689, + "z": -16.8660049 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 4.65000057, + "y": 4.537743, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -36670, + "ParentId": -11392, + "Position": { + "x": -9.0, + "y": 5.25, + "z": 9.0 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 7.77800226, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -36758, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 5.25, + "z": 11.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -36834, + "ParentId": -11392, + "Position": { + "x": 9.0, + "y": 5.25, + "z": 9.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 7.77800131, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -36910, + "ParentId": -11392, + "Position": { + "x": -11.749999, + "y": 5.25, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 12.5000067, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -36972, + "ParentId": -11392, + "Position": { + "x": -9.0, + "y": 5.25, + "z": -9.0 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 7.778004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37060, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 5.25, + "z": -11.7500019 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 12.5000067, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37148, + "ParentId": -11392, + "Position": { + "x": 9.0, + "y": 5.25, + "z": -9.0 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 7.77800226, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37236, + "ParentId": -11392, + "Position": { + "x": 11.7500076, + "y": 5.25, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 12.5000067, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "97C4CFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37324, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 7.0, + "z": 0.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 24.0, + "y": 24.0000134, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37412, + "ParentId": -11392, + "Position": { + "x": 16.0, + "y": 3.5, + "z": 0.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37488, + "ParentId": -11392, + "Position": { + "x": 17.5, + "y": 3.5, + "z": -5.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37564, + "ParentId": -11392, + "Position": { + "x": 23.25, + "y": 3.5, + "z": -5.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.5, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37640, + "ParentId": -11392, + "Position": { + "x": -16.0, + "y": 3.5, + "z": 0.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37728, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 3.5, + "z": -5.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37824, + "ParentId": -11392, + "Position": { + "x": -26.0, + "y": 3.5, + "z": -5.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -37912, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 3.5, + "z": -17.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 8.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38000, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 3.5, + "z": -23.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38088, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 3.5, + "z": -30.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 8.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38172, + "ParentId": -11392, + "Position": { + "x": -34.0, + "y": 3.5, + "z": -23.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38260, + "ParentId": -11392, + "Position": { + "x": -42.0, + "y": 3.5, + "z": -23.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38344, + "ParentId": -11392, + "Position": { + "x": -29.5, + "y": 3.5, + "z": -42.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38402, + "ParentId": -11392, + "Position": { + "x": -24.5, + "y": 3.5, + "z": -42.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38478, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 3.5, + "z": -47.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 19.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38554, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 3.5, + "z": -15.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 7.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38642, + "ParentId": -11392, + "Position": { + "x": 2.5, + "y": 3.5, + "z": -21.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38718, + "ParentId": -11392, + "Position": { + "x": 5.0, + "y": 3.5, + "z": -27.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 7.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38794, + "ParentId": -11392, + "Position": { + "x": 17.0, + "y": 3.5, + "z": -37.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 19.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38870, + "ParentId": -11392, + "Position": { + "x": 35.25, + "y": 3.5, + "z": -13.5 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -38946, + "ParentId": -11392, + "Position": { + "x": 37.75, + "y": 3.5, + "z": -21.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 10.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -39022, + "ParentId": -11392, + "Position": { + "x": 32.75, + "y": 3.5, + "z": -26.25 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 10.4999971, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -39080, + "ParentId": -11392, + "Position": { + "x": 29.7500153, + "y": 5.25, + "z": 0.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39140, + "ParentId": -11392, + "Position": { + "x": 26.7500076, + "y": 5.25, + "z": -3.625 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 8.750002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39216, + "ParentId": -11392, + "Position": { + "x": 38.2500076, + "y": 5.25, + "z": -7.75 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39292, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 5.25, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39368, + "ParentId": -11392, + "Position": { + "x": 28.1250076, + "y": 5.25, + "z": -9.375 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39444, + "ParentId": -11392, + "Position": { + "x": 33.8750153, + "y": 5.25, + "z": -10.75 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 8.750004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39520, + "ParentId": -11392, + "Position": { + "x": 27.7500076, + "y": 0.0, + "z": -13.5000038 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "7D9389FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39596, + "ParentId": -11392, + "Position": { + "x": 27.5000076, + "y": 5.25, + "z": -15.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39656, + "ParentId": -11392, + "Position": { + "x": 20.2500076, + "y": 5.25, + "z": -18.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 9.500005, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39732, + "ParentId": -11392, + "Position": { + "x": 25.0, + "y": 5.25, + "z": -17.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39826, + "ParentId": -11392, + "Position": { + "x": 25.0, + "y": 5.25, + "z": -10.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39902, + "ParentId": -11392, + "Position": { + "x": 23.0, + "y": 5.25, + "z": -8.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -39978, + "ParentId": -11392, + "Position": { + "x": 15.5000076, + "y": 5.25, + "z": -16.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40054, + "ParentId": -11392, + "Position": { + "x": 27.5000076, + "y": 5.25, + "z": -11.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40130, + "ParentId": -11392, + "Position": { + "x": 18.2500038, + "y": 5.25, + "z": -11.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40206, + "ParentId": -11392, + "Position": { + "x": 30.0000153, + "y": 5.25, + "z": -13.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40282, + "ParentId": -11392, + "Position": { + "x": 20.2500076, + "y": 7.0, + "z": -13.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 10.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -40358, + "ParentId": -11392, + "Position": { + "x": 27.7500076, + "y": 7.0, + "z": -13.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -40434, + "ParentId": -11392, + "Position": { + "x": 42.7500153, + "y": 4.5, + "z": -21.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -40510, + "ParentId": -11392, + "Position": { + "x": 28.1250038, + "y": 5.25, + "z": -33.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40586, + "ParentId": -11392, + "Position": { + "x": 29.7500153, + "y": 5.25, + "z": -43.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40662, + "ParentId": -11392, + "Position": { + "x": 26.7500038, + "y": 5.25, + "z": -38.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 8.750002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40738, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 5.25, + "z": -40.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40814, + "ParentId": -11392, + "Position": { + "x": 38.25001, + "y": 5.25, + "z": -34.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40890, + "ParentId": -11392, + "Position": { + "x": 33.8750153, + "y": 5.25, + "z": -31.7500114 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.75, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -40966, + "ParentId": -11392, + "Position": { + "x": 24.7500038, + "y": 5.25, + "z": -43.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -41042, + "ParentId": -11392, + "Position": { + "x": 26.2500076, + "y": 5.25, + "z": -46.87501 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -41328, + "ParentId": -11392, + "Position": { + "x": 18.5000038, + "y": 5.25, + "z": -54.75002 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -41526, + "ParentId": -11392, + "Position": { + "x": 10.7500038, + "y": 5.25, + "z": -46.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 7.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -41602, + "ParentId": -11392, + "Position": { + "x": 24.1250038, + "y": 5.25, + "z": -52.62502 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 6.10000324, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -41678, + "ParentId": -11392, + "Position": { + "x": 14.7500038, + "y": 5.25, + "z": -43.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -41754, + "ParentId": -11392, + "Position": { + "x": 18.7500038, + "y": 5.25, + "z": -41.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42074, + "ParentId": -11392, + "Position": { + "x": 23.2500076, + "y": 5.25, + "z": -41.75001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42150, + "ParentId": -11392, + "Position": { + "x": 12.8750038, + "y": 5.25, + "z": -52.62502 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 6.100003, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42226, + "ParentId": -11392, + "Position": { + "x": 21.0, + "y": 5.25, + "z": -40.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "B2CCC0FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42302, + "ParentId": -11392, + "Position": { + "x": 21.0, + "y": 7.0, + "z": -41.5000076 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -42378, + "ParentId": -11392, + "Position": { + "x": -5.0, + "y": 5.25, + "z": -52.0000153 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 7.778004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42542, + "ParentId": -11392, + "Position": { + "x": 2.500002, + "y": 5.25, + "z": -54.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 9.500005, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42618, + "ParentId": -11392, + "Position": { + "x": -5.0, + "y": 5.25, + "z": -34.0 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 7.77800226, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -42908, + "ParentId": -11392, + "Position": { + "x": -7.74999428, + "y": 5.25, + "z": -43.0000153 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 12.5000067, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -43072, + "ParentId": -11392, + "Position": { + "x": 2.500002, + "y": 5.25, + "z": -31.25001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 9.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -43148, + "ParentId": -11392, + "Position": { + "x": 7.25000763, + "y": 5.25, + "z": -43.00001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 23.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -43224, + "ParentId": -11392, + "Position": { + "x": -0.2499981, + "y": 7.0, + "z": -43.0000153 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 15.5, + "y": 24.0000134, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43300, + "ParentId": -11392, + "Position": { + "x": -19.7499962, + "y": 5.25, + "z": -35.0 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 18.5000038, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43376, + "ParentId": -11392, + "Position": { + "x": -14.0, + "y": 5.25, + "z": -25.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.499999, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43452, + "ParentId": -11392, + "Position": { + "x": -8.249999, + "y": 5.25, + "z": -27.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43528, + "ParentId": -11392, + "Position": { + "x": -9.374999, + "y": 5.25, + "z": -30.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 3.190001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43604, + "ParentId": -11392, + "Position": { + "x": -10.499999, + "y": 5.25, + "z": -35.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43680, + "ParentId": -11392, + "Position": { + "x": -11.624999, + "y": 5.25, + "z": -39.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 3.190001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43756, + "ParentId": -11392, + "Position": { + "x": -14.0, + "y": 5.25, + "z": -40.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 2.50000119, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43832, + "ParentId": -11392, + "Position": { + "x": -15.25, + "y": 5.25, + "z": -42.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43908, + "ParentId": -11392, + "Position": { + "x": -14.0, + "y": 7.0, + "z": -35.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 19.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -43984, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 5.25, + "z": -44.25001 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "CAC7AEFF" + } + }, + { + "Name": "Quad", + "ObjectId": -44060, + "ParentId": -11392, + "Position": { + "x": 17.0, + "y": 5.25, + "z": -19.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 18.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44136, + "ParentId": -11392, + "Position": { + "x": 26.2500076, + "y": 5.25, + "z": -22.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 7.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44212, + "ParentId": -11392, + "Position": { + "x": 16.3750038, + "y": 5.25, + "z": -30.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 11.2500048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44288, + "ParentId": -11392, + "Position": { + "x": 10.7500076, + "y": 5.25, + "z": -27.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 7.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44364, + "ParentId": -11392, + "Position": { + "x": 9.250006, + "y": 5.25, + "z": -23.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44440, + "ParentId": -11392, + "Position": { + "x": 24.1250038, + "y": 5.25, + "z": -28.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 6.10000324, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44516, + "ParentId": -11392, + "Position": { + "x": 7.75000763, + "y": 5.25, + "z": -21.5000057 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -44592, + "ParentId": -11392, + "Position": { + "x": 9.0, + "y": 7.0, + "z": -21.5000057 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -44668, + "ParentId": -11392, + "Position": { + "x": 18.5000076, + "y": 7.0, + "z": -25.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 16.0, + "y": 12.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -44744, + "ParentId": -11392, + "Position": { + "x": -41.0, + "y": 5.25, + "z": -47.0 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -44820, + "ParentId": -11392, + "Position": { + "x": -43.75, + "y": 5.25, + "z": -39.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -44878, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 5.25, + "z": -42.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 15.5000038, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -44954, + "ParentId": -11392, + "Position": { + "x": -35.25, + "y": 5.25, + "z": -49.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45030, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 5.25, + "z": -34.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.499999, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45106, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 7.0, + "z": -42.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 16.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45164, + "ParentId": -11392, + "Position": { + "x": -43.75, + "y": 5.25, + "z": -23.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 14.5000038, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45222, + "ParentId": -11392, + "Position": { + "x": -45.75, + "y": 5.25, + "z": -30.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45298, + "ParentId": -11392, + "Position": { + "x": -47.75, + "y": 5.25, + "z": -33.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45356, + "ParentId": -11392, + "Position": { + "x": -45.75, + "y": 5.25, + "z": -16.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45432, + "ParentId": -11392, + "Position": { + "x": -47.75, + "y": 5.25, + "z": -14.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45492, + "ParentId": -11392, + "Position": { + "x": -49.3750076, + "y": 5.25, + "z": -11.7500019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.25000024, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45568, + "ParentId": -11392, + "Position": { + "x": -53.1250076, + "y": 5.25, + "z": -13.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 6.10000134, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45644, + "ParentId": -11392, + "Position": { + "x": -55.2500076, + "y": 5.25, + "z": -23.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 15.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45702, + "ParentId": -11392, + "Position": { + "x": -53.1250076, + "y": 5.25, + "z": -33.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 6.100003, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45778, + "ParentId": -11392, + "Position": { + "x": -49.3750076, + "y": 5.25, + "z": -35.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.250002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45854, + "ParentId": -11392, + "Position": { + "x": -45.5000076, + "y": 7.0, + "z": -23.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.0, + "y": 15.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -45930, + "ParentId": -11392, + "Position": { + "x": -51.5000076, + "y": 7.0, + "z": -23.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 24.0000134, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46006, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 5.25, + "z": -24.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 13.2500057, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -46094, + "ParentId": -11392, + "Position": { + "x": -31.1250019, + "y": 5.25, + "z": -16.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -46182, + "ParentId": -11392, + "Position": { + "x": -25.8750019, + "y": 5.25, + "z": -16.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 3.50000048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -46270, + "ParentId": -11392, + "Position": { + "x": -24.7499962, + "y": 5.25, + "z": -24.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 13.2500057, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -46358, + "ParentId": -11392, + "Position": { + "x": -28.5000019, + "y": 5.25, + "z": -15.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46446, + "ParentId": -11392, + "Position": { + "x": -28.5, + "y": 5.25, + "z": -31.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 7.500004, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "939EA4FF" + } + }, + { + "Name": "Quad", + "ObjectId": -46522, + "ParentId": -11392, + "Position": { + "x": -28.5000019, + "y": 7.0, + "z": -23.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 16.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46610, + "ParentId": -11392, + "Position": { + "x": -41.0, + "y": 5.25, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46686, + "ParentId": -11392, + "Position": { + "x": -35.2500038, + "y": 5.25, + "z": 2.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46774, + "ParentId": -11392, + "Position": { + "x": -43.7500038, + "y": 5.25, + "z": -7.750002 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46850, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 5.25, + "z": -12.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 11.5000048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -46938, + "ParentId": -11392, + "Position": { + "x": -32.2500038, + "y": 5.25, + "z": -5.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 15.5000038, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47026, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 7.0, + "z": -5.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 16.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47114, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 5.25, + "z": -7.750002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.5, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47202, + "ParentId": -11392, + "Position": { + "x": -21.7499981, + "y": 5.25, + "z": -12.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.25, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47290, + "ParentId": -11392, + "Position": { + "x": -13.249999, + "y": 5.25, + "z": -10.7500019 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47396, + "ParentId": -11392, + "Position": { + "x": -11.7499971, + "y": 5.25, + "z": -15.250001 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 4.25, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47484, + "ParentId": -11392, + "Position": { + "x": -10.249999, + "y": 5.25, + "z": -18.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47560, + "ParentId": -11392, + "Position": { + "x": -14.875, + "y": 5.25, + "z": -20.2500019 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 9.250005, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47636, + "ParentId": -11392, + "Position": { + "x": -20.625, + "y": 5.25, + "z": -19.1250038 + }, + "Rotation": { + "x": 0.0, + "y": 225.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500002, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47724, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 7.0, + "z": -10.5000019 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 9.0, + "y": 6.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -47790, + "ParentId": -11392, + "Position": { + "x": -16.0, + "y": 7.0, + "z": -17.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.0, + "y": 7.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -53870, + "ParentId": -11392, + "Position": { + "x": -5.624996, + "y": 1.75, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.0, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Cube", + "ObjectId": -53936, + "ParentId": -11392, + "Position": { + "x": 5.62500763, + "y": 1.75, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.0, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Cube", + "ObjectId": -54002, + "ParentId": -11392, + "Position": { + "x": -3.24999619, + "y": 1.75, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.0, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Cube", + "ObjectId": -54068, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.6250001, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.499999, + "y": 0.249999985, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Cube", + "ObjectId": -54156, + "ParentId": -11392, + "Position": { + "x": 3.25, + "y": 1.75, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.0, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Cube", + "ObjectId": -65700, + "ParentId": -11392, + "Position": { + "x": 35.56224, + "y": 0.6250001, + "z": -1.93777466 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.5, + "y": 0.249999985, + "z": 0.175999984 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "ACAD94FF" + } + }, + { + "Name": "Cube", + "ObjectId": -55498, + "ParentId": -11392, + "Position": { + "x": -15.5, + "y": 1.5, + "z": -7.500002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -55564, + "ParentId": -11392, + "Position": { + "x": -19.5, + "y": 1.5, + "z": -7.500002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -55952, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 3.25, + "z": -7.500002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56024, + "ParentId": -11392, + "Position": { + "x": -12.0, + "y": 1.5, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56096, + "ParentId": -11392, + "Position": { + "x": -12.0, + "y": 1.5, + "z": 2.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56162, + "ParentId": -11392, + "Position": { + "x": -12.0, + "y": 3.25, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56440, + "ParentId": -11392, + "Position": { + "x": 12.0, + "y": 1.5, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56502, + "ParentId": -11392, + "Position": { + "x": 12.0, + "y": 1.5, + "z": 2.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56560, + "ParentId": -11392, + "Position": { + "x": 12.0, + "y": 3.25, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56626, + "ParentId": -11392, + "Position": { + "x": 2.0, + "y": 1.5, + "z": -12.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56688, + "ParentId": -11392, + "Position": { + "x": -2.0, + "y": 1.5, + "z": -12.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56750, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 3.25, + "z": -12.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56838, + "ParentId": -11392, + "Position": { + "x": 34.7500153, + "y": 1.5, + "z": -11.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56904, + "ParentId": -11392, + "Position": { + "x": 30.7500153, + "y": 1.5, + "z": -11.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -56970, + "ParentId": -11392, + "Position": { + "x": 32.7500153, + "y": 3.25, + "z": -11.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57036, + "ParentId": -11392, + "Position": { + "x": 26.5000076, + "y": 1.5, + "z": -7.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57098, + "ParentId": -11392, + "Position": { + "x": 26.5000076, + "y": 1.5, + "z": -3.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57160, + "ParentId": -11392, + "Position": { + "x": 26.5000076, + "y": 3.25, + "z": -5.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57222, + "ParentId": -11392, + "Position": { + "x": 30.2500076, + "y": 1.5, + "z": -15.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57284, + "ParentId": -11392, + "Position": { + "x": 30.2500076, + "y": 1.5, + "z": -11.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57372, + "ParentId": -11392, + "Position": { + "x": 30.2500076, + "y": 3.25, + "z": -13.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57438, + "ParentId": -11392, + "Position": { + "x": 40.2500076, + "y": 1.5, + "z": -23.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57500, + "ParentId": -11392, + "Position": { + "x": 40.2500076, + "y": 1.5, + "z": -19.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57566, + "ParentId": -11392, + "Position": { + "x": 40.2500076, + "y": 3.7678, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 1.53555, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57628, + "ParentId": -11392, + "Position": { + "x": 26.5000038, + "y": 1.5, + "z": -39.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57690, + "ParentId": -11392, + "Position": { + "x": 26.5000038, + "y": 1.5, + "z": -35.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57752, + "ParentId": -11392, + "Position": { + "x": 26.5000038, + "y": 3.25, + "z": -37.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57814, + "ParentId": -11392, + "Position": { + "x": 34.7500153, + "y": 1.5, + "z": -31.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57876, + "ParentId": -11392, + "Position": { + "x": 30.7500153, + "y": 1.5, + "z": -31.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -57938, + "ParentId": -11392, + "Position": { + "x": 32.7500153, + "y": 3.25, + "z": -31.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58000, + "ParentId": -11392, + "Position": { + "x": 23.0, + "y": 1.5, + "z": -40.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58084, + "ParentId": -11392, + "Position": { + "x": 19.0, + "y": 1.5, + "z": -40.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58172, + "ParentId": -11392, + "Position": { + "x": 21.0, + "y": 3.25, + "z": -40.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58234, + "ParentId": -11392, + "Position": { + "x": 7.500004, + "y": 1.5, + "z": -39.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58322, + "ParentId": -11392, + "Position": { + "x": 7.500004, + "y": 1.5, + "z": -35.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58410, + "ParentId": -11392, + "Position": { + "x": 7.500004, + "y": 3.25, + "z": -37.5000076 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58482, + "ParentId": -11392, + "Position": { + "x": 7.0, + "y": 1.5, + "z": -31.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58554, + "ParentId": -11392, + "Position": { + "x": 3.0, + "y": 1.5, + "z": -31.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58642, + "ParentId": -11392, + "Position": { + "x": 5.0, + "y": 3.25, + "z": -31.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -58726, + "ParentId": -11392, + "Position": { + "x": -8.0, + "y": 1.5, + "z": -49.00001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -58814, + "ParentId": -11392, + "Position": { + "x": -8.0, + "y": 1.5, + "z": -45.00001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -58902, + "ParentId": -11392, + "Position": { + "x": -8.0, + "y": 3.25, + "z": -47.00001 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -58990, + "ParentId": -11392, + "Position": { + "x": -15.5, + "y": 1.5, + "z": -44.50001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59078, + "ParentId": -11392, + "Position": { + "x": -19.5, + "y": 1.5, + "z": -44.50001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59162, + "ParentId": -11392, + "Position": { + "x": -17.5, + "y": 3.25, + "z": -44.50001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59250, + "ParentId": -11392, + "Position": { + "x": -36.0, + "y": 1.5, + "z": -34.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59606, + "ParentId": -11392, + "Position": { + "x": -40.0, + "y": 1.5, + "z": -34.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59666, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 3.25, + "z": -34.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59732, + "ParentId": -11392, + "Position": { + "x": -32.0, + "y": 1.5, + "z": -44.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59798, + "ParentId": -11392, + "Position": { + "x": -32.0, + "y": 1.5, + "z": -40.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59870, + "ParentId": -11392, + "Position": { + "x": -32.0, + "y": 3.25, + "z": -42.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59936, + "ParentId": -11392, + "Position": { + "x": -36.0, + "y": 1.5, + "z": -13.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -59994, + "ParentId": -11392, + "Position": { + "x": -40.0, + "y": 1.5, + "z": -13.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60052, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 3.25, + "z": -13.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60110, + "ParentId": -11392, + "Position": { + "x": -43.5000038, + "y": 1.5, + "z": -25.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60168, + "ParentId": -11392, + "Position": { + "x": -43.5000038, + "y": 1.5, + "z": -21.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60226, + "ParentId": -11392, + "Position": { + "x": -43.5000038, + "y": 3.25, + "z": -23.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60302, + "ParentId": -11392, + "Position": { + "x": -32.5000038, + "y": 1.5, + "z": -25.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60374, + "ParentId": -11392, + "Position": { + "x": -32.5000038, + "y": 1.5, + "z": -21.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60462, + "ParentId": -11392, + "Position": { + "x": -32.5000038, + "y": 3.25, + "z": -23.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60524, + "ParentId": -11392, + "Position": { + "x": -32.0, + "y": 1.5, + "z": -7.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60590, + "ParentId": -11392, + "Position": { + "x": -32.0, + "y": 1.5, + "z": -3.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60656, + "ParentId": -11392, + "Position": { + "x": -32.0, + "y": 3.25, + "z": -5.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939393FF" + } + }, + { + "Name": "Cube", + "ObjectId": -60722, + "ParentId": -11392, + "Position": { + "x": 7.50000763, + "y": 1.5, + "z": -23.5000057 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -60784, + "ParentId": -11392, + "Position": { + "x": 7.50000763, + "y": 1.5, + "z": -19.5000057 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 3.0, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -60850, + "ParentId": -11392, + "Position": { + "x": 7.50000763, + "y": 3.25, + "z": -21.5000057 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 0.5, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "73989AFF" + } + }, + { + "Name": "Quad", + "ObjectId": -60938, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 3.25, + "z": 11.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.500001, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "73989AFF" + } + }, + { + "Name": "Quad", + "ObjectId": -61258, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.250000119, + "z": 11.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 12.500001, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "73989AFF" + } + }, + { + "Name": "Quad", + "ObjectId": -61334, + "ParentId": -11392, + "Position": { + "x": 53.0310135, + "y": 2.3026, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 4.5435605, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -61764, + "ParentId": -11392, + "Position": { + "x": 49.6250153, + "y": 0.250000119, + "z": -26.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 0.250000119, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "647482FF" + } + }, + { + "Name": "Quad", + "ObjectId": -62028, + "ParentId": -11392, + "Position": { + "x": 53.0000153, + "y": 1.75, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 2.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "0018FFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -62116, + "ParentId": -11392, + "Position": { + "x": 51.3750153, + "y": 1.75, + "z": -16.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 4.65000057, + "y": 2.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "0018FFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -62204, + "ParentId": -11392, + "Position": { + "x": 51.3750153, + "y": 1.75, + "z": -25.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 4.65, + "y": 2.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "0018FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -62282, + "ParentId": -11392, + "Position": { + "x": 51.45501, + "y": 0.6250001, + "z": -16.8305435 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.249999985, + "z": 0.175999984 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62348, + "ParentId": -11392, + "Position": { + "x": 51.45501, + "y": 2.875, + "z": -16.8305435 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.249999985, + "z": 0.175999984 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62414, + "ParentId": -11392, + "Position": { + "x": 49.6250153, + "y": 1.75, + "z": -15.1250076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.49999976, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62476, + "ParentId": -11392, + "Position": { + "x": 53.1250153, + "y": 1.75, + "z": -18.625 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.49999976, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62564, + "ParentId": -11392, + "Position": { + "x": 53.1250153, + "y": 1.75, + "z": -23.375 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.49999976, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62652, + "ParentId": -11392, + "Position": { + "x": 53.1250153, + "y": 0.6250001, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 0.249999985, + "z": 0.25000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -62714, + "ParentId": -11392, + "Position": { + "x": 53.1250153, + "y": 2.875, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.500001, + "y": 0.249999985, + "z": 0.25000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62776, + "ParentId": -11392, + "Position": { + "x": 51.455, + "y": 0.6250001, + "z": -25.1694641 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.249999985, + "z": 0.176000059 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62842, + "ParentId": -11392, + "Position": { + "x": 51.455, + "y": 2.875, + "z": -25.1694641 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.249999985, + "z": 0.176000059 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Cube", + "ObjectId": -62904, + "ParentId": -11392, + "Position": { + "x": 49.6250153, + "y": 1.75, + "z": -26.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.49999976, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "020202FF" + } + }, + { + "Name": "Quad", + "ObjectId": -62992, + "ParentId": -11392, + "Position": { + "x": 47.5000153, + "y": 4.5, + "z": -21.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 12.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -63080, + "ParentId": -11392, + "Position": { + "x": 51.5000153, + "y": 4.5, + "z": -21.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.5, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -63168, + "ParentId": -11392, + "Position": { + "x": 50.2500076, + "y": 4.5, + "z": -18.0 + }, + "Rotation": { + "x": 270.0, + "y": 315.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500002, + "y": 4.65000153, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -63256, + "ParentId": -11392, + "Position": { + "x": 50.2500076, + "y": 4.5, + "z": -24.0 + }, + "Rotation": { + "x": 270.0, + "y": 45.0, + "z": 0.0 + }, + "Scale": { + "x": 3.500001, + "y": 4.65000153, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -63344, + "ParentId": -11392, + "Position": { + "x": -6.0, + "y": 1.75, + "z": 11.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.49999976, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "73989AFF" + } + }, + { + "Name": "Quad", + "ObjectId": -63420, + "ParentId": -11392, + "Position": { + "x": 6.0, + "y": 1.75, + "z": 11.7500029 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.49999976, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "73989AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -63478, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 2.875, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.499999, + "y": 0.249999985, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Cube", + "ObjectId": -63536, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 1.75, + "z": 11.8750038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.0, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "353535FF" + } + }, + { + "Name": "Quad", + "ObjectId": -67854, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 1.75, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 2.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Cube", + "ObjectId": -67920, + "ParentId": -11392, + "Position": { + "x": 35.56224, + "y": 2.875, + "z": -1.93777466 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.5, + "y": 0.249999985, + "z": 0.175999984 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -68008, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 3.25, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Cube", + "ObjectId": -68096, + "ParentId": -11392, + "Position": { + "x": 32.6250153, + "y": 1.75, + "z": 0.875 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.49999976, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -68184, + "ParentId": -11392, + "Position": { + "x": 32.6250153, + "y": 0.250000119, + "z": 0.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -68272, + "ParentId": -11392, + "Position": { + "x": 32.6250153, + "y": 3.25, + "z": 0.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Cube", + "ObjectId": -68338, + "ParentId": -11392, + "Position": { + "x": 38.3750153, + "y": 1.75, + "z": -4.875 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 2.49999976, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -68426, + "ParentId": -11392, + "Position": { + "x": 38.2500076, + "y": 0.250000119, + "z": -4.875 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25000006, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -68514, + "ParentId": -11392, + "Position": { + "x": 38.2500076, + "y": 3.25, + "z": -4.875 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25000006, + "y": 0.49999997, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Quad", + "ObjectId": -68626, + "ParentId": -11392, + "Position": { + "x": 32.4044151, + "y": 4.0, + "z": -5.0 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.8082132, + "y": 12.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -68714, + "ParentId": -11392, + "Position": { + "x": 29.5000153, + "y": 4.0, + "z": -37.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 12.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -68802, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 4.0, + "z": -34.5000038 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 6.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -68890, + "ParentId": -11392, + "Position": { + "x": 33.7500153, + "y": 4.0, + "z": -38.7500038 + }, + "Rotation": { + "x": 270.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 8.500004, + "y": 5.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -68978, + "ParentId": -11392, + "Position": { + "x": 16.2500114, + "y": 7.0, + "z": -49.00002 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.5, + "y": 12.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -69054, + "ParentId": -11392, + "Position": { + "x": 24.2500076, + "y": 7.0, + "z": -46.75001 + }, + "Rotation": { + "x": 270.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.5, + "y": 7.50000238, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -69112, + "ParentId": -11392, + "Position": { + "x": 22.8750038, + "y": 7.0, + "z": -51.37502 + }, + "Rotation": { + "x": 270.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 6.400005, + "y": 4.0, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -69246, + "ParentId": -11392, + "Position": { + "x": -28.5000019, + "y": 0.0, + "z": -23.3893051 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 15.7780037, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "597365FF" + } + }, + { + "Name": "Quad", + "ObjectId": -69334, + "ParentId": -11392, + "Position": { + "x": 4.24970627, + "y": 1.7531, + "z": -11.7500019 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 4.00070953, + "y": 3.49379969, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "905665FF" + } + }, + { + "Name": "Quad", + "ObjectId": -69660, + "ParentId": -11392, + "Position": { + "x": 29.7500153, + "y": -1.75, + "z": 0.75 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -69736, + "ParentId": -11392, + "Position": { + "x": 38.2500076, + "y": -1.75, + "z": -7.75 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad", + "ObjectId": -69812, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": -1.75, + "z": -2.0 + }, + "Rotation": { + "x": 0.0, + "y": 44.9999962, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -69870, + "ParentId": -11392, + "Position": { + "x": -6.62519646, + "y": 0.6020001, + "z": 7.091302 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.79455066, + "y": 2.98147345, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -69928, + "ParentId": -11392, + "Position": { + "x": -6.587597, + "y": 0.387000084, + "z": 5.28600073 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.13681865, + "y": 0.457641482, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -69986, + "ParentId": -11392, + "Position": { + "x": -6.52769661, + "y": 0.3900001, + "z": 9.02710152 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.201529, + "y": 0.41192317, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -70046, + "ParentId": -11392, + "Position": { + "x": -4.736496, + "y": 0.3900001, + "z": 7.028602 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.93355322, + "y": 0.424737066, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -70104, + "ParentId": -11392, + "Position": { + "x": -8.394198, + "y": 0.3900001, + "z": 7.108202 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.77451682, + "y": 0.429352731, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70180, + "ParentId": -11392, + "Position": { + "x": -6.36099625, + "y": -0.146999955, + "z": 7.49400234 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.2898, + "y": 0.7574967, + "z": 0.220874175 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70256, + "ParentId": -11392, + "Position": { + "x": -7.930398, + "y": -0.08399999, + "z": 9.002002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70332, + "ParentId": -11392, + "Position": { + "x": -4.673996, + "y": -0.08399999, + "z": 7.901002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70390, + "ParentId": -11392, + "Position": { + "x": -5.17439651, + "y": -0.08399999, + "z": 9.002002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70450, + "ParentId": -11392, + "Position": { + "x": -4.673997, + "y": -0.08399999, + "z": 6.0340023 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70508, + "ParentId": -11392, + "Position": { + "x": -5.628996, + "y": -0.08399999, + "z": 5.380001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70566, + "ParentId": -11392, + "Position": { + "x": -7.70399666, + "y": -0.08399999, + "z": 5.38000154 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70626, + "ParentId": -11392, + "Position": { + "x": -8.389998, + "y": -0.08399999, + "z": 7.901002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -70702, + "ParentId": -11392, + "Position": { + "x": -8.384998, + "y": -0.08399999, + "z": 6.0340023 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -70780, + "ParentId": -11392, + "Position": { + "x": 5.67881, + "y": 0.6020001, + "z": 7.091301 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.79455066, + "y": 2.98147345, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -70838, + "ParentId": -11392, + "Position": { + "x": 5.716408, + "y": 0.387000084, + "z": 5.286001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.13681865, + "y": 0.457641482, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -70896, + "ParentId": -11392, + "Position": { + "x": 5.77631, + "y": 0.3900001, + "z": 9.02710152 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.201529, + "y": 0.41192317, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -70956, + "ParentId": -11392, + "Position": { + "x": 7.5675087, + "y": 0.355999947, + "z": 7.0286026 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.93355322, + "y": 0.424737066, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -71014, + "ParentId": -11392, + "Position": { + "x": 3.9098053, + "y": 0.3900001, + "z": 7.108202 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.77451682, + "y": 0.429352731, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71074, + "ParentId": -11392, + "Position": { + "x": 5.94300842, + "y": -0.146999955, + "z": 7.49400139 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.2898, + "y": 0.7574967, + "z": 0.220874175 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71134, + "ParentId": -11392, + "Position": { + "x": 4.37360764, + "y": -0.08399999, + "z": 9.002002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71210, + "ParentId": -11392, + "Position": { + "x": 7.6300087, + "y": -0.08399999, + "z": 7.901001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71268, + "ParentId": -11392, + "Position": { + "x": 7.129608, + "y": -0.08399999, + "z": 9.002001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71326, + "ParentId": -11392, + "Position": { + "x": 7.6300087, + "y": -0.08399999, + "z": 6.0340023 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71384, + "ParentId": -11392, + "Position": { + "x": 6.675007, + "y": -0.08399999, + "z": 5.380001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71442, + "ParentId": -11392, + "Position": { + "x": 4.60001, + "y": -0.08399999, + "z": 5.380001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71518, + "ParentId": -11392, + "Position": { + "x": 3.91400528, + "y": -0.08399999, + "z": 7.901002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71594, + "ParentId": -11392, + "Position": { + "x": 3.91900253, + "y": -0.08399999, + "z": 6.0340023 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -71652, + "ParentId": -11392, + "Position": { + "x": 5.67881, + "y": 0.6020001, + "z": -6.44690132 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.79455066, + "y": 2.98147345, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -71710, + "ParentId": -11392, + "Position": { + "x": 5.716408, + "y": 0.387000084, + "z": -8.252205 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.13681865, + "y": 0.457641482, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -71768, + "ParentId": -11392, + "Position": { + "x": 5.776308, + "y": 0.3900001, + "z": -4.51110268 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.201529, + "y": 0.41192317, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -71826, + "ParentId": -11392, + "Position": { + "x": 7.5675087, + "y": 0.3900001, + "z": -6.50960159 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.93355322, + "y": 0.424737066, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -71884, + "ParentId": -11392, + "Position": { + "x": 3.9098053, + "y": 0.3900001, + "z": -6.430002 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.77451682, + "y": 0.429352731, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -71960, + "ParentId": -11392, + "Position": { + "x": 5.94300842, + "y": -0.146999955, + "z": -6.044201 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.2898, + "y": 0.7574967, + "z": 0.220874175 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72036, + "ParentId": -11392, + "Position": { + "x": 4.37360764, + "y": -0.08399999, + "z": -4.53620148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72112, + "ParentId": -11392, + "Position": { + "x": 7.630007, + "y": -0.08399999, + "z": -5.63720131 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72188, + "ParentId": -11392, + "Position": { + "x": 7.129608, + "y": -0.08399999, + "z": -4.53620148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72264, + "ParentId": -11392, + "Position": { + "x": 7.6300087, + "y": -0.08399999, + "z": -7.504202 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72340, + "ParentId": -11392, + "Position": { + "x": 6.675007, + "y": -0.08399999, + "z": -8.158201 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72416, + "ParentId": -11392, + "Position": { + "x": 4.60001, + "y": -0.08399999, + "z": -8.158201 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72492, + "ParentId": -11392, + "Position": { + "x": 3.91400528, + "y": -0.08399999, + "z": -5.63720131 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72550, + "ParentId": -11392, + "Position": { + "x": 3.91900253, + "y": -0.08399999, + "z": -7.504204 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -72608, + "ParentId": -11392, + "Position": { + "x": -6.801196, + "y": 0.6020001, + "z": -6.446903 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.79455066, + "y": 2.98147345, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -72668, + "ParentId": -11392, + "Position": { + "x": -6.76359558, + "y": 0.387000084, + "z": -8.252202 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.13681865, + "y": 0.457641482, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -72726, + "ParentId": -11392, + "Position": { + "x": -6.7036953, + "y": 0.3900001, + "z": -4.51110268 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.201529, + "y": 0.41192317, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -72784, + "ParentId": -11392, + "Position": { + "x": -4.91249752, + "y": 0.3900001, + "z": -6.50960159 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.93355322, + "y": 0.424737066, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -72842, + "ParentId": -11392, + "Position": { + "x": -8.570198, + "y": 0.3900001, + "z": -6.43000126 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.77451682, + "y": 0.429352731, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72918, + "ParentId": -11392, + "Position": { + "x": -6.536997, + "y": -0.146999955, + "z": -6.044201 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.2898, + "y": 0.7574967, + "z": 0.220874175 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -72994, + "ParentId": -11392, + "Position": { + "x": -8.106398, + "y": -0.08399999, + "z": -4.53620148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73070, + "ParentId": -11392, + "Position": { + "x": -4.84999847, + "y": -0.08399999, + "z": -5.63720131 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73146, + "ParentId": -11392, + "Position": { + "x": -5.350397, + "y": -0.08399999, + "z": -4.53620148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73222, + "ParentId": -11392, + "Position": { + "x": -4.84999752, + "y": -0.08399999, + "z": -7.504204 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73298, + "ParentId": -11392, + "Position": { + "x": -5.80499554, + "y": -0.08399999, + "z": -8.158203 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73374, + "ParentId": -11392, + "Position": { + "x": -7.87999725, + "y": -0.08399999, + "z": -8.158202 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73434, + "ParentId": -11392, + "Position": { + "x": -8.565998, + "y": -0.08399999, + "z": -5.63720036 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -73492, + "ParentId": -11392, + "Position": { + "x": -8.560999, + "y": -0.08399999, + "z": -7.504203 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1131843, + "y": 0.445961, + "z": 0.114421166 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -73568, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.6020001, + "z": 0.0 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.54598, + "y": 4.84516239, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -73626, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.387000084, + "z": -3.0 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.10275745, + "y": 0.7437081, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -73906, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.3900001, + "z": 3.125 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.20802355, + "y": 0.6694117, + "z": 0.06110002 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -73964, + "ParentId": -11392, + "Position": { + "x": 3.0, + "y": 0.3900001, + "z": 0.2317009 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.7672863, + "y": 0.6909325, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cube", + "ObjectId": -74022, + "ParentId": -11392, + "Position": { + "x": -3.0, + "y": 0.3900001, + "z": 0.0 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.508837, + "y": 0.698440969, + "z": 0.0611000136 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "2596BEFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74098, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": -0.146999836, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.471426368, + "y": 0.7574967, + "z": 0.358940333 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74174, + "ParentId": -11392, + "Position": { + "x": -2.28189659, + "y": -0.08399999, + "z": 3.084301 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74250, + "ParentId": -11392, + "Position": { + "x": 3.10160446, + "y": -0.08399999, + "z": 1.64940071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74326, + "ParentId": -11392, + "Position": { + "x": 2.20130348, + "y": -0.08399999, + "z": 3.084301 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74402, + "ParentId": -11392, + "Position": { + "x": 3.10160446, + "y": -0.08399999, + "z": -1.38459969 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74478, + "ParentId": -11392, + "Position": { + "x": 1.6842041, + "y": -0.08399999, + "z": -2.84730148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74554, + "ParentId": -11392, + "Position": { + "x": -1.69109535, + "y": -0.08399999, + "z": -2.84729958 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74630, + "ParentId": -11392, + "Position": { + "x": -2.99319649, + "y": -0.08399999, + "z": 1.28820038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -74706, + "ParentId": -11392, + "Position": { + "x": -2.9849968, + "y": -0.08399999, + "z": -1.7458 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.1841203, + "y": 0.445961, + "z": 0.185944647 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -74898, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.5899999, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.31110442, + "y": 0.244799986, + "z": 1.22678745 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -74956, + "ParentId": -11392, + "Position": { + "x": 0.0, + "y": 0.631000161, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.8559153, + "y": 0.263677746, + "z": 0.8546222 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FF0000FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75058, + "ParentId": -11392, + "Position": { + "x": 28.6400146, + "y": -0.0599999428, + "z": -1.49000168 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.34519982, + "y": 4.8560915, + "z": 1.4959 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75266, + "ParentId": -11392, + "Position": { + "x": 29.9400177, + "y": -0.0599999428, + "z": -9.68 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.78686136, + "y": 4.8560915, + "z": 0.809581041 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75326, + "ParentId": -11392, + "Position": { + "x": 28.5400162, + "y": -0.0599999428, + "z": -8.770004 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.173769, + "y": 4.8560915, + "z": 1.03101909 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75384, + "ParentId": -11392, + "Position": { + "x": 37.2060165, + "y": 2.47, + "z": -7.81980133 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308024, + "y": 1.20719075, + "z": 0.781929255 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75444, + "ParentId": -11392, + "Position": { + "x": 37.8050156, + "y": 2.5054, + "z": -9.192001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.918255746, + "y": 1.666865, + "z": 0.464741319 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75520, + "ParentId": -11392, + "Position": { + "x": 37.2060165, + "y": 0.43200016, + "z": -7.81980133 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308024, + "y": 1.20719075, + "z": 0.781929255 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75596, + "ParentId": -11392, + "Position": { + "x": 36.506012, + "y": 2.5054, + "z": -9.192001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.918255746, + "y": 1.666865, + "z": 0.464741319 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75654, + "ParentId": -11392, + "Position": { + "x": 37.8520126, + "y": 1.1597, + "z": -7.925003 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5052781, + "y": 0.9980748, + "z": 0.464741141 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75730, + "ParentId": -11392, + "Position": { + "x": 36.506012, + "y": 2.5054, + "z": -10.2610016 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.918255746, + "y": 1.666865, + "z": 0.464741319 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75790, + "ParentId": -11392, + "Position": { + "x": 37.8050156, + "y": 2.5054, + "z": -10.2170029 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.918255746, + "y": 1.666865, + "z": 0.464741319 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75848, + "ParentId": -11392, + "Position": { + "x": 39.37501, + "y": 2.47, + "z": -12.1310005 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308024, + "y": 3.42033815, + "z": 0.781929255 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -75908, + "ParentId": -11392, + "Position": { + "x": 35.1890144, + "y": 2.91799974, + "z": -24.6300049 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308024, + "y": 4.95367861, + "z": 0.745882332 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -75966, + "ParentId": -11392, + "Position": { + "x": 51.8750153, + "y": 0.375, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 0.249999985, + "z": 5.25000048 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -76024, + "ParentId": -11392, + "Position": { + "x": 48.5057144, + "y": -0.0607997179, + "z": -20.874 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.70108426, + "y": 0.186274052, + "z": 1.86372042 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -76112, + "ParentId": -11392, + "Position": { + "x": 48.52201, + "y": 0.060000062, + "z": -20.9050064 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.31561148, + "y": 0.186274052, + "z": 1.38260126 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -76170, + "ParentId": -11392, + "Position": { + "x": 31.4250145, + "y": 2.203, + "z": 0.168998718 + }, + "Rotation": { + "x": 354.821, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.905247748, + "y": 3.14594364, + "z": 0.0250999965 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "C0FF00FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -76240, + "ParentId": -11392, + "Position": { + "x": 35.62001, + "y": 0.709399939, + "z": -4.288002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.2082097, + "y": 0.77069217, + "z": 0.3522858 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Sphere", + "ObjectId": -76316, + "ParentId": -11392, + "Position": { + "x": 35.662014, + "y": 1.4691, + "z": -4.25099945 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.4103046, + "y": 0.440784752, + "z": 0.5429032 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 0, + "Color": "FF0000FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -76374, + "ParentId": -11392, + "Position": { + "x": 35.4174156, + "y": 1.9872, + "z": -4.139202 + }, + "Rotation": { + "x": 351.692963, + "y": 35.01548, + "z": 36.39775 + }, + "Scale": { + "x": 0.2161754, + "y": 0.526339054, + "z": 0.197363913 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -76432, + "ParentId": -11392, + "Position": { + "x": 48.28421, + "y": 0.694100142, + "z": -26.6245117 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.74265182, + "y": 1.52371454, + "z": 0.464328766 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "181818FF" + } + }, + { + "Name": "Cube", + "ObjectId": -76490, + "ParentId": -11392, + "Position": { + "x": 46.41011, + "y": 1.1599, + "z": -26.6245117 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.005515, + "y": 2.45540237, + "z": 0.464328766 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "181818FF" + } + }, + { + "Name": "Cube", + "ObjectId": -76708, + "ParentId": -11392, + "Position": { + "x": 47.5140152, + "y": 2.1346, + "z": -15.3600082 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.85850859, + "y": 1.84848332, + "z": 0.0394 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -76766, + "ParentId": -11392, + "Position": { + "x": 32.1560135, + "y": 0.8710001, + "z": -4.95899963 + }, + "Rotation": { + "x": 0.0, + "y": 47.93268, + "z": 0.0 + }, + "Scale": { + "x": 0.642498851, + "y": 1.51759207, + "z": 0.009736922 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -76824, + "ParentId": -11392, + "Position": { + "x": 32.4290161, + "y": 0.299000025, + "z": -4.70899963 + }, + "Rotation": { + "x": 0.0, + "y": 47.93268, + "z": 0.0 + }, + "Scale": { + "x": 0.6366416, + "y": 0.7110481, + "z": 0.741247058 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -76882, + "ParentId": -11392, + "Position": { + "x": 19.30642, + "y": 0.6550001, + "z": -51.6251373 + }, + "Rotation": { + "x": 0.0, + "y": 181.617172, + "z": 0.0 + }, + "Scale": { + "x": 0.6424987, + "y": 1.51759207, + "z": 0.00973692 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00A7FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -76944, + "ParentId": -11392, + "Position": { + "x": 19.2970047, + "y": 0.0830000639, + "z": -51.99402 + }, + "Rotation": { + "x": 0.0, + "y": 181.617172, + "z": 0.0 + }, + "Scale": { + "x": 0.636641562, + "y": 0.7110481, + "z": 0.7412469 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00A7FFFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -77032, + "ParentId": -11392, + "Position": { + "x": 23.6700058, + "y": 3.67099977, + "z": -9.855904 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.222328, + "y": 3.82090187, + "z": 2.13458586 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "99FCFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77090, + "ParentId": -11392, + "Position": { + "x": 22.167511, + "y": 1.0, + "z": -17.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.672845, + "y": 2.0, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "002EFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77150, + "ParentId": -11392, + "Position": { + "x": 33.9011154, + "y": 2.0117, + "z": -3.11899948 + }, + "Rotation": { + "x": 353.596649, + "y": 42.2950439, + "z": 89.4578247 + }, + "Scale": { + "x": 2.08405018, + "y": 3.79513359, + "z": 0.0251000058 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "56FF00FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -77208, + "ParentId": -11392, + "Position": { + "x": 20.6800079, + "y": 5.82999945, + "z": -17.510006 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 7.408137, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -77284, + "ParentId": -11392, + "Position": { + "x": 51.7500153, + "y": 0.125000119, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 0.249999985, + "z": 5.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77342, + "ParentId": -11392, + "Position": { + "x": 51.6276169, + "y": 0.811300039, + "z": -21.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 56.036377 + }, + "Scale": { + "x": 1.78283036, + "y": 0.138172835, + "z": 5.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77518, + "ParentId": -11392, + "Position": { + "x": 51.7130127, + "y": 1.027, + "z": -19.25 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 56.036377 + }, + "Scale": { + "x": 0.6392266, + "y": 0.138172835, + "z": 0.978764534 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00DCFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77594, + "ParentId": -11392, + "Position": { + "x": 51.7295151, + "y": 1.0514, + "z": -21.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 56.036377 + }, + "Scale": { + "x": 0.6981634, + "y": 0.138172835, + "z": 2.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00DCFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77654, + "ParentId": -11392, + "Position": { + "x": 51.881012, + "y": 1.277, + "z": -23.0201035 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 56.036377 + }, + "Scale": { + "x": 0.2683379, + "y": 0.138172835, + "z": 0.620104253 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00DCFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77730, + "ParentId": -11392, + "Position": { + "x": 51.6400146, + "y": 0.9190001, + "z": -23.0201035 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 56.036377 + }, + "Scale": { + "x": 0.2683379, + "y": 0.138172835, + "z": 0.620104253 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00DCFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77788, + "ParentId": -11392, + "Position": { + "x": 50.9964066, + "y": 0.0, + "z": -20.9452057 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.475706458, + "y": 1.1327858, + "z": 4.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00DCFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77864, + "ParentId": -11392, + "Position": { + "x": 46.1154175, + "y": 2.1836, + "z": -26.33741 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.965972364, + "y": 0.125771031, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77922, + "ParentId": -11392, + "Position": { + "x": 47.03192, + "y": 2.181, + "z": -26.33741 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.55790484, + "y": 0.1269776, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -77980, + "ParentId": -11392, + "Position": { + "x": 46.10791, + "y": 1.6233, + "z": -26.33741 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.9788902, + "y": 0.7755763, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78040, + "ParentId": -11392, + "Position": { + "x": 47.0187225, + "y": 1.6171, + "z": -26.33741 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.564652443, + "y": 0.7633077, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78098, + "ParentId": -11392, + "Position": { + "x": 46.4634247, + "y": 1.003, + "z": -26.33741 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.71946442, + "y": 0.179508969, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78156, + "ParentId": -11392, + "Position": { + "x": 46.4767151, + "y": 0.5681, + "z": -26.33741 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.69292355, + "y": 0.447638452, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78214, + "ParentId": -11392, + "Position": { + "x": 48.3750153, + "y": 0.8373, + "z": -26.38301 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.22213161, + "y": 0.9892588, + "z": 0.07912162 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "1CDAFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78408, + "ParentId": -11392, + "Position": { + "x": 21.508007, + "y": 0.895400047, + "z": -10.1350021 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.82158756, + "y": 2.88435912, + "z": 2.07000017 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "002EFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78468, + "ParentId": -11392, + "Position": { + "x": 19.283905, + "y": 1.303, + "z": -11.212204 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.87878716, + "y": 1.1898216, + "z": 0.084456 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -78526, + "ParentId": -11392, + "Position": { + "x": 23.6636086, + "y": 1.303, + "z": -11.2122 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.55149877, + "y": 1.1898216, + "z": 0.084456 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -78584, + "ParentId": -11392, + "Position": { + "x": 20.6915054, + "y": 1.1217, + "z": -11.212204 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.38151884, + "y": 0.8145753, + "z": 0.084456 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -78642, + "ParentId": -11392, + "Position": { + "x": 18.78151, + "y": 0.5000001, + "z": -17.2500038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.75441182, + "y": 1.0, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "002CFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -78702, + "ParentId": -11392, + "Position": { + "x": 20.69001, + "y": 1.803, + "z": -11.212204 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.378817, + "y": 0.189776555, + "z": 0.084456 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -78760, + "ParentId": -11392, + "Position": { + "x": 15.5350113, + "y": 1.782, + "z": -16.5045052 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0076, + "y": 0.961912632, + "z": 1.67708969 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -78876, + "ParentId": -11392, + "Position": { + "x": 29.2500114, + "y": -1.29409432, + "z": -41.0300064 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 7.05359936, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -78938, + "ParentId": -11392, + "Position": { + "x": 26.8000069, + "y": -1.29409432, + "z": -41.0300064 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 7.05359936, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Quad", + "ObjectId": -79022, + "ParentId": -11392, + "Position": { + "x": 35.5000153, + "y": 1.75, + "z": -40.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 135.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "ACAD94FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -79114, + "ParentId": -11392, + "Position": { + "x": 28.025013, + "y": 0.38, + "z": -41.0300064 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.22553754, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -79180, + "ParentId": -11392, + "Position": { + "x": 39.5100136, + "y": 2.47, + "z": -12.1310005 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308024, + "y": 1.20719075, + "z": 0.781929255 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -79256, + "ParentId": -11392, + "Position": { + "x": 35.1623154, + "y": 2.9, + "z": -23.2700043 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308024, + "y": 4.98042631, + "z": 0.781929255 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79322, + "ParentId": -11392, + "Position": { + "x": 17.6250076, + "y": 0.375, + "z": -26.3125076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 0.74999994, + "z": 3.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "3D5247FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79404, + "ParentId": -11392, + "Position": { + "x": 17.6250076, + "y": 0.75000006, + "z": -26.3125076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.0624999963, + "z": 3.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "42FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79470, + "ParentId": -11392, + "Position": { + "x": 23.6250076, + "y": 1.0, + "z": -16.2130089 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.49999988, + "z": 0.08445601 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79536, + "ParentId": -11392, + "Position": { + "x": 13.2187576, + "y": 1.65624952, + "z": -20.2499962 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0625, + "y": 3.5, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "4F4F4FFF" + } + }, + { + "Name": "Cube", + "ObjectId": -79598, + "ParentId": -11392, + "Position": { + "x": 17.2500076, + "y": 3.375, + "z": -20.2499962 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 0.0625000149, + "y": 8.0, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "4F4F4FFF" + } + }, + { + "Name": "Cube", + "ObjectId": -79670, + "ParentId": -11392, + "Position": { + "x": 17.2500076, + "y": -0.539999962, + "z": -20.2499962 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.0, + "y": 1.77850282, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "4F4F4FFF" + } + }, + { + "Name": "Cube", + "ObjectId": -79732, + "ParentId": -11392, + "Position": { + "x": 14.5000076, + "y": 1.78, + "z": -19.6460037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.48815238, + "y": 2.30776715, + "z": 0.0733 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "9FFF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79794, + "ParentId": -11392, + "Position": { + "x": 17.1250076, + "y": 1.78, + "z": -19.6460037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.48815238, + "y": 2.30776715, + "z": 0.0733 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "9FFF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79856, + "ParentId": -11392, + "Position": { + "x": 19.8750076, + "y": 1.81, + "z": -19.6460037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.48815238, + "y": 2.30776715, + "z": 0.0733 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "9FFF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79918, + "ParentId": -11392, + "Position": { + "x": 14.3060532, + "y": 0.6550001, + "z": -22.2256355 + }, + "Rotation": { + "x": 0.0, + "y": 12.7108545, + "z": 0.0 + }, + "Scale": { + "x": 0.642498851, + "y": 1.51759207, + "z": 0.009736922 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "7B4646FF" + } + }, + { + "Name": "Cube", + "ObjectId": -79984, + "ParentId": -11392, + "Position": { + "x": 14.3945084, + "y": 0.0830000639, + "z": -21.8674049 + }, + "Rotation": { + "x": 0.0, + "y": 12.7108545, + "z": 0.0 + }, + "Scale": { + "x": 0.636641741, + "y": 0.7110481, + "z": 0.74124676 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "7B4646FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80050, + "ParentId": -11392, + "Position": { + "x": 16.1183777, + "y": 0.6550001, + "z": -21.8954659 + }, + "Rotation": { + "x": 0.0, + "y": 98.1454, + "z": 0.0 + }, + "Scale": { + "x": 0.6424991, + "y": 1.51759207, + "z": 0.009736926 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "7B4646FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80138, + "ParentId": -11392, + "Position": { + "x": 16.4825287, + "y": 0.0830000639, + "z": -21.9551353 + }, + "Rotation": { + "x": 0.0, + "y": 98.1454, + "z": 0.0 + }, + "Scale": { + "x": 0.6366419, + "y": 0.7110481, + "z": 0.7412473 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "7B4646FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80204, + "ParentId": -11392, + "Position": { + "x": 19.3313828, + "y": 0.6550001, + "z": -22.4342346 + }, + "Rotation": { + "x": 0.0, + "y": 9.422496, + "z": 0.0 + }, + "Scale": { + "x": 0.642498732, + "y": 1.51759207, + "z": 0.009736919 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "7B4646FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80266, + "ParentId": -11392, + "Position": { + "x": 19.3991623, + "y": 0.0830000639, + "z": -22.0715065 + }, + "Rotation": { + "x": 0.0, + "y": 9.422496, + "z": 0.0 + }, + "Scale": { + "x": 0.636641443, + "y": 0.7110481, + "z": 0.7412468 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "7B4646FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80380, + "ParentId": -11392, + "Position": { + "x": 9.858408, + "y": 1.355, + "z": -19.5160065 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.57540333, + "y": 1.35411227, + "z": 0.00391872 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -80468, + "ParentId": -11392, + "Position": { + "x": 9.930008, + "y": 1.198, + "z": -19.2900028 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.09909578, + "y": 0.143457592, + "z": 0.110862568 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -80534, + "ParentId": -11392, + "Position": { + "x": 21.0405045, + "y": 6.02999973, + "z": -24.66151 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.6987831, + "y": 6.954638, + "z": 0.780098855 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -80606, + "ParentId": -11392, + "Position": { + "x": 19.6700058, + "y": 4.59, + "z": -26.1600075 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.6987833, + "y": 9.542699, + "z": 0.7800987 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -80668, + "ParentId": -11392, + "Position": { + "x": 22.9840088, + "y": 6.02999973, + "z": -24.66151 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.6987831, + "y": 6.954638, + "z": 0.780098855 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -80730, + "ParentId": -11392, + "Position": { + "x": 19.5700073, + "y": 4.58, + "z": -24.68201 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.50000024, + "y": 9.033935, + "z": 1.50000048 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80904, + "ParentId": -11392, + "Position": { + "x": 18.5000076, + "y": 0.36740005, + "z": -53.94821 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 10.646678, + "y": 0.812702, + "z": 1.8122344 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "715F36FF" + } + }, + { + "Name": "Cube", + "ObjectId": -80970, + "ParentId": -11392, + "Position": { + "x": 48.1250076, + "y": 0.6550001, + "z": -20.8820038 + }, + "Rotation": { + "x": 0.0, + "y": 88.6858139, + "z": 0.0 + }, + "Scale": { + "x": 0.642499149, + "y": 1.51759207, + "z": 0.009736926 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "0100FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -81046, + "ParentId": -11392, + "Position": { + "x": 48.49402, + "y": 0.0830000639, + "z": -20.8810043 + }, + "Rotation": { + "x": 0.0, + "y": 88.6858139, + "z": 0.0 + }, + "Scale": { + "x": 0.6366419, + "y": 0.7110481, + "z": 0.7412474 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "0100FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -81104, + "ParentId": -11392, + "Position": { + "x": 21.6582069, + "y": 1.168, + "z": -53.99702 + }, + "Rotation": { + "x": 0.0, + "y": 333.775116, + "z": 0.0 + }, + "Scale": { + "x": 0.818258643, + "y": 0.812702, + "z": 0.8937405 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81170, + "ParentId": -11392, + "Position": { + "x": 21.4635048, + "y": 1.2447, + "z": -53.6084175 + }, + "Rotation": { + "x": 0.0, + "y": 333.775116, + "z": 0.0 + }, + "Scale": { + "x": 0.707249463, + "y": 0.5698347, + "z": 0.03284832 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "96FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81232, + "ParentId": -11392, + "Position": { + "x": 16.4998131, + "y": 1.288, + "z": -53.85252 + }, + "Rotation": { + "x": 0.0, + "y": 23.7210331, + "z": 0.0 + }, + "Scale": { + "x": 2.21551633, + "y": 1.02833033, + "z": 0.8937408 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -81294, + "ParentId": -11392, + "Position": { + "x": 17.192009, + "y": 1.261, + "z": -53.7820129 + }, + "Rotation": { + "x": 90.0, + "y": 17.9999, + "z": 0.0 + }, + "Scale": { + "x": 0.7905223, + "y": 0.151800081, + "z": 0.780300438 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -81356, + "ParentId": -11392, + "Position": { + "x": 16.1710014, + "y": 1.269, + "z": -53.3220177 + }, + "Rotation": { + "x": 90.0, + "y": 17.9999, + "z": 0.0 + }, + "Scale": { + "x": 0.7905223, + "y": 0.151800081, + "z": 0.780300438 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81418, + "ParentId": -11392, + "Position": { + "x": 15.8006058, + "y": 0.36740005, + "z": -44.11601 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.800215, + "y": 0.812702, + "z": 1.72459531 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "715F36FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81484, + "ParentId": -11392, + "Position": { + "x": 17.4170074, + "y": 1.616, + "z": -43.3270073 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.39342916, + "y": 1.0, + "z": 0.0534999967 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81550, + "ParentId": -11392, + "Position": { + "x": 15.9438057, + "y": 2.0801, + "z": -44.10801 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.327623248, + "y": 4.26016, + "z": 1.72459483 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "715F36FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81616, + "ParentId": -11392, + "Position": { + "x": 14.342205, + "y": 4.14159966, + "z": -44.10901 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.761784, + "y": 0.235846132, + "z": 1.72459483 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "715F36FF" + } + }, + { + "Name": "Cube", + "ObjectId": -81704, + "ParentId": -11392, + "Position": { + "x": 14.31921, + "y": 1.721, + "z": -43.8090057 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.53632069, + "y": 2.234869, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -81792, + "ParentId": -11392, + "Position": { + "x": 13.624012, + "y": 1.978, + "z": -44.2370071 + }, + "Rotation": { + "x": 90.0, + "y": 3.69866824, + "z": 0.0 + }, + "Scale": { + "x": 1.0557878, + "y": 0.1518001, + "z": 1.0941273 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -81880, + "ParentId": -11392, + "Position": { + "x": 14.9310112, + "y": 1.978, + "z": -44.3220062 + }, + "Rotation": { + "x": 90.0, + "y": 3.69866824, + "z": 0.0 + }, + "Scale": { + "x": 1.0557878, + "y": 0.1518001, + "z": 1.0941273 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -82038, + "ParentId": -11392, + "Position": { + "x": 17.6857681, + "y": 5.639, + "z": -47.8781242 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 9.484502, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -82126, + "ParentId": -11392, + "Position": { + "x": 17.6857643, + "y": 5.639, + "z": -46.22001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 9.484502, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -82188, + "ParentId": -11392, + "Position": { + "x": 18.6250076, + "y": 4.39999962, + "z": -53.94821 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.0, + "y": 0.812702, + "z": 1.8122344 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "715F36FF" + } + }, + { + "Name": "Cube", + "ObjectId": -82254, + "ParentId": -11392, + "Position": { + "x": 16.7060051, + "y": 0.6550001, + "z": -50.99902 + }, + "Rotation": { + "x": 0.0, + "y": 206.49263, + "z": 0.0 + }, + "Scale": { + "x": 0.6424987, + "y": 1.51759207, + "z": 0.009736923 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00A7FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -82316, + "ParentId": -11392, + "Position": { + "x": 16.5422974, + "y": 0.0830000639, + "z": -51.32972 + }, + "Rotation": { + "x": 0.0, + "y": 206.49263, + "z": 0.0 + }, + "Scale": { + "x": 0.6366416, + "y": 0.7110481, + "z": 0.741247058 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00A7FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -82378, + "ParentId": -11392, + "Position": { + "x": 13.1597061, + "y": 3.97099972, + "z": -44.08801 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.87751317, + "y": 0.235846132, + "z": 0.3876297 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFF700FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -82680, + "ParentId": -11392, + "Position": { + "x": 46.2820129, + "y": 4.127, + "z": -21.0 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308, + "y": 5.75, + "z": 0.781929433 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -82824, + "ParentId": -11392, + "Position": { + "x": 47.5840149, + "y": 4.127, + "z": -21.0 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.01308, + "y": 5.75, + "z": 0.781929433 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -82900, + "ParentId": -11392, + "Position": { + "x": 17.6857643, + "y": 4.49, + "z": -47.22001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 9.484502, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -82966, + "ParentId": -11392, + "Position": { + "x": -13.0, + "y": -0.008999944, + "z": -17.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.43604517, + "y": 0.0883749947, + "z": 3.28403854 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -83032, + "ParentId": -11392, + "Position": { + "x": -13.0018988, + "y": 0.09300017, + "z": -17.4921036 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.86229658, + "y": 0.0883749947, + "z": 2.73367333 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "09FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -83098, + "ParentId": -11392, + "Position": { + "x": -15.9203, + "y": 0.325000167, + "z": -8.783001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83156, + "ParentId": -11392, + "Position": { + "x": -15.9203014, + "y": 0.325000167, + "z": -9.861002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83216, + "ParentId": -11392, + "Position": { + "x": -13.6482983, + "y": 0.325000167, + "z": -9.861002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83292, + "ParentId": -11392, + "Position": { + "x": -13.6632986, + "y": 0.325000167, + "z": -8.783002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83350, + "ParentId": -11392, + "Position": { + "x": -14.7999992, + "y": 0.7443, + "z": -9.330002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.34068465, + "y": 0.177489325, + "z": 1.39743507 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -83408, + "ParentId": -11392, + "Position": { + "x": -13.9401, + "y": 0.7867, + "z": -9.343201 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 90.0 + }, + "Scale": { + "x": 0.275693268, + "y": 0.559365034, + "z": 0.319443345 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83474, + "ParentId": -11392, + "Position": { + "x": -15.9203014, + "y": 0.325000167, + "z": -11.9820023 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83540, + "ParentId": -11392, + "Position": { + "x": -15.9203, + "y": 0.325000167, + "z": -13.0600033 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83602, + "ParentId": -11392, + "Position": { + "x": -13.6482983, + "y": 0.325000167, + "z": -13.0600052 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83674, + "ParentId": -11392, + "Position": { + "x": -13.6632986, + "y": 0.325000167, + "z": -11.9820023 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0672, + "y": 0.794369757, + "z": 0.303374738 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83740, + "ParentId": -11392, + "Position": { + "x": -14.7999992, + "y": 0.7443, + "z": -12.5290051 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.34068465, + "y": 0.165171161, + "z": 1.39743507 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -83806, + "ParentId": -11392, + "Position": { + "x": -13.9401, + "y": 0.7867, + "z": -12.5422058 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 90.0 + }, + "Scale": { + "x": 0.275693268, + "y": 0.559365034, + "z": 0.319443345 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83874, + "ParentId": -11392, + "Position": { + "x": -19.08, + "y": 0.325000167, + "z": -9.430002 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83932, + "ParentId": -11392, + "Position": { + "x": -19.0802174, + "y": 0.325000167, + "z": -8.352009 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -83990, + "ParentId": -11392, + "Position": { + "x": -21.35222, + "y": 0.325000167, + "z": -8.35246849 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84048, + "ParentId": -11392, + "Position": { + "x": -21.33701, + "y": 0.325000167, + "z": -9.430467 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84106, + "ParentId": -11392, + "Position": { + "x": -20.2004089, + "y": 0.7443, + "z": -8.883238 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 2.34068584, + "y": 0.132500887, + "z": 1.39743578 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -84164, + "ParentId": -11392, + "Position": { + "x": -21.0603218, + "y": 0.7867, + "z": -8.870206 + }, + "Rotation": { + "x": 0.0, + "y": 269.988281, + "z": 90.0 + }, + "Scale": { + "x": 0.275693268, + "y": 0.559365034, + "z": 0.319443315 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84222, + "ParentId": -11392, + "Position": { + "x": -19.08, + "y": 0.325000167, + "z": -12.8100052 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84280, + "ParentId": -11392, + "Position": { + "x": -19.0802174, + "y": 0.325000167, + "z": -11.73201 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84338, + "ParentId": -11392, + "Position": { + "x": -21.35222, + "y": 0.325000167, + "z": -11.7324686 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84396, + "ParentId": -11392, + "Position": { + "x": -21.33701, + "y": 0.325000167, + "z": -12.8104687 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 0.06720003, + "y": 0.794369757, + "z": 0.3033749 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84454, + "ParentId": -11392, + "Position": { + "x": -20.2004089, + "y": 0.7443, + "z": -12.2632408 + }, + "Rotation": { + "x": 0.0, + "y": 179.988266, + "z": 0.0 + }, + "Scale": { + "x": 2.34068584, + "y": 0.2358427, + "z": 1.39743578 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -84512, + "ParentId": -11392, + "Position": { + "x": -21.0603218, + "y": 0.821, + "z": -12.2502089 + }, + "Rotation": { + "x": 0.0, + "y": 269.988281, + "z": 90.0 + }, + "Scale": { + "x": 0.275693268, + "y": 0.559365034, + "z": 0.319443315 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -84572, + "ParentId": -11392, + "Position": { + "x": -10.3759985, + "y": 1.8066, + "z": -18.4313011 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.39968884, + "y": 1.10511613, + "z": 0.0185669065 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -84656, + "ParentId": -11392, + "Position": { + "x": -13.0, + "y": 1.68, + "z": -17.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": -2.98460865, + "y": -1.92829955, + "z": -2.84671474 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "80F55743" + } + }, + { + "Name": "Cylinder", + "ObjectId": -84848, + "ParentId": -11392, + "Position": { + "x": -17.4869, + "y": 0.975, + "z": -17.8482037 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.731805, + "y": 2.04073954, + "z": 0.0264000073 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -84998, + "ParentId": -11392, + "Position": { + "x": -54.58001, + "y": 0.4300002, + "z": -23.5400066 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.88746977, + "y": 9.642491, + "z": 2.686935 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -85086, + "ParentId": -11392, + "Position": { + "x": -54.58001, + "y": 1.6, + "z": -23.680006 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 3.46415353, + "y": 3.17464, + "z": 4.75075626 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -85174, + "ParentId": -11392, + "Position": { + "x": -54.58001, + "y": 0.5625, + "z": -23.680006 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.753766, + "y": 1.18659914, + "z": 6.51172924 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -85236, + "ParentId": -11392, + "Position": { + "x": -28.3964024, + "y": 0.0775001049, + "z": -16.779705 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 8.093627, + "y": 1.07061791, + "z": 2.26602054 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "715F36FF" + } + }, + { + "Name": "Cube", + "ObjectId": -85302, + "ParentId": -11392, + "Position": { + "x": -28.5007019, + "y": 3.1959, + "z": -16.0052032 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.93904924, + "y": 4.457234, + "z": 0.0024 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -85360, + "ParentId": -11392, + "Position": { + "x": -28.5007019, + "y": 3.1959, + "z": -16.010004 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.64467859, + "y": 3.46954036, + "z": 0.0024 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFF8FF" + } + }, + { + "Name": "Cube", + "ObjectId": -85418, + "ParentId": -11392, + "Position": { + "x": -26.0250015, + "y": 2.57, + "z": -16.8390045 + }, + "Rotation": { + "x": 0.0, + "y": 45.3540268, + "z": 0.0 + }, + "Scale": { + "x": 2.34414244, + "y": 1.31354964, + "z": 0.0024 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -85484, + "ParentId": -11392, + "Position": { + "x": -26.0250015, + "y": 2.57, + "z": -16.8438072 + }, + "Rotation": { + "x": 0.0, + "y": 45.3540268, + "z": 0.0 + }, + "Scale": { + "x": 2.10935736, + "y": 1.02247572, + "z": 0.0024 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFF8FF" + } + }, + { + "Name": "Capsule", + "ObjectId": -85546, + "ParentId": -11392, + "Position": { + "x": -52.3950043, + "y": 2.5, + "z": -23.5518055 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0474, + "y": 1.49999988, + "z": 1.49239111 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -85604, + "ParentId": -11392, + "Position": { + "x": -54.1760063, + "y": 2.5, + "z": -25.2200069 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0474, + "y": 1.49999988, + "z": 1.49239111 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -85662, + "ParentId": -11392, + "Position": { + "x": -54.1760025, + "y": 2.5, + "z": -22.1500034 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0474, + "y": 1.49999988, + "z": 1.49239111 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -85720, + "ParentId": -11392, + "Position": { + "x": -29.5593033, + "y": 0.908400059, + "z": -30.6500053 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.899979, + "y": 2.5472672, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "636363FF" + } + }, + { + "Name": "Cube", + "ObjectId": -85786, + "ParentId": -11392, + "Position": { + "x": -30.9260025, + "y": 1.537, + "z": -30.6500053 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.1665194, + "y": 3.8043437, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "636363FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -85874, + "ParentId": -11392, + "Position": { + "x": -28.8270035, + "y": 1.054, + "z": -30.109005 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.079604, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -85962, + "ParentId": -11392, + "Position": { + "x": -27.3950043, + "y": 1.054, + "z": -30.109005 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.079604, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -86024, + "ParentId": -11392, + "Position": { + "x": -30.510704, + "y": 2.6355, + "z": -30.01191 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.170799, + "y": 0.5279572, + "z": 0.0077 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFD7FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86198, + "ParentId": -11392, + "Position": { + "x": -30.5151024, + "y": 3.1507, + "z": -30.01191 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.17925835, + "y": 0.285139352, + "z": 0.0077 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFD7FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86282, + "ParentId": -11392, + "Position": { + "x": -30.5123024, + "y": 2.0686, + "z": -30.01191 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.173546, + "y": 0.3987276, + "z": 0.0077 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFD7FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86370, + "ParentId": -11392, + "Position": { + "x": -31.877903, + "y": 2.5817, + "z": -30.01191 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.38858822, + "y": 1.50922513, + "z": 0.0077 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFD7FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86432, + "ParentId": -11392, + "Position": { + "x": -30.7373047, + "y": 1.0216, + "z": -30.01191 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.6239512, + "y": 1.0904243, + "z": 0.0077 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FFD7FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86520, + "ParentId": -11392, + "Position": { + "x": -15.875, + "y": 2.07, + "z": -26.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 3.00258923, + "y": 2.97310281, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A7FFC6FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86696, + "ParentId": -11392, + "Position": { + "x": -12.874999, + "y": 0.207000136, + "z": -26.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 9.250001, + "y": 0.74999994, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "AABDC8FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86762, + "ParentId": -11392, + "Position": { + "x": -11.3171988, + "y": 2.0338, + "z": -26.0000114 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 5.74999952, + "y": 2.90145159, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A8A8A8FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86828, + "ParentId": -11392, + "Position": { + "x": -15.1425991, + "y": 3.2157, + "z": -26.0600071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 1.20451128, + "y": 0.411441356, + "z": 0.48786065 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A2FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86894, + "ParentId": -11392, + "Position": { + "x": -15.5, + "y": 1.6034, + "z": -26.0600071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 1.75000024, + "y": 1.40868425, + "z": 0.48786065 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A2FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -86956, + "ParentId": -11392, + "Position": { + "x": -16.569, + "y": 3.05289984, + "z": -26.0600071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 1.282964, + "y": 0.7637469, + "z": 0.48786065 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A2FF00FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -87018, + "ParentId": -11392, + "Position": { + "x": -15.4156914, + "y": 6.2489996, + "z": -37.357048 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 5.69488573, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -87080, + "ParentId": -11392, + "Position": { + "x": -15.4156914, + "y": 6.2489996, + "z": -35.38001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 5.69488573, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87168, + "ParentId": -11392, + "Position": { + "x": -15.1521988, + "y": 2.8078, + "z": -26.0600071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 1.1852318, + "y": 0.273049861, + "z": 0.48786065 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A2FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87256, + "ParentId": -11392, + "Position": { + "x": -13.4129992, + "y": 1.9898, + "z": -26.27301 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.9839, + "y": 2.27264786, + "z": 0.0307000019 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87344, + "ParentId": -11392, + "Position": { + "x": -10.7190981, + "y": 2.0135, + "z": -26.27301 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.02263927, + "y": 2.32019234, + "z": 0.0307000019 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87410, + "ParentId": -11392, + "Position": { + "x": 0.564703, + "y": 1.375, + "z": -43.7300034 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.3887, + "y": 3.00271, + "z": 3.6907 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "ADDB1CFF" + } + }, + { + "Name": "Cube", + "ObjectId": -87476, + "ParentId": -11392, + "Position": { + "x": -1.74999428, + "y": 0.6250001, + "z": -40.04001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.3887, + "y": 3.75904179, + "z": 3.6907 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "0A0404FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87542, + "ParentId": -11392, + "Position": { + "x": 2.27000237, + "y": 1.75, + "z": -39.7700043 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.388701, + "y": 3.75904179, + "z": 3.690701 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87608, + "ParentId": -11392, + "Position": { + "x": 3.37500572, + "y": 0.250000119, + "z": -44.97081 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.6991737, + "y": 0.712039, + "z": 0.8418344 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "009339FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87674, + "ParentId": -11392, + "Position": { + "x": -0.461996078, + "y": 1.375, + "z": -47.5747147 + }, + "Rotation": { + "x": 0.0, + "y": 348.2177, + "z": 0.0 + }, + "Scale": { + "x": 2.05322313, + "y": 4.71585464, + "z": 3.55914736 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "151AC3FF" + } + }, + { + "Name": "Cube", + "ObjectId": -87736, + "ParentId": -11392, + "Position": { + "x": 2.0, + "y": 1.5, + "z": -37.0200043 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.04834938, + "y": 1.79986322, + "z": 0.8418344 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00CBFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -87966, + "ParentId": -11392, + "Position": { + "x": 4.479004, + "y": 1.0632, + "z": -54.71702 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.242, + "y": 1.203847, + "z": 0.0173 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -88028, + "ParentId": -11392, + "Position": { + "x": -3.124998, + "y": 0.6250001, + "z": -43.6250153 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.04511571, + "y": 1.15813136, + "z": 3.15620971 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF3BFF" + } + }, + { + "Name": "Cube", + "ObjectId": -88116, + "ParentId": -11392, + "Position": { + "x": -18.6768, + "y": 1.2253, + "z": -33.515007 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7666409, + "y": 1.55021977, + "z": 0.0047 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -88182, + "ParentId": -11392, + "Position": { + "x": -15.7099991, + "y": 1.23, + "z": -33.515007 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 3.44618678, + "y": 1.51859534, + "z": 0.0047 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "000000FF" + } + }, + { + "Name": "Capsule", + "ObjectId": -88248, + "ParentId": -11392, + "Position": { + "x": -53.4330063, + "y": 0.940000057, + "z": -18.4050045 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0474, + "y": 1.99857759, + "z": 1.49239111 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -88306, + "ParentId": -11392, + "Position": { + "x": -53.4330063, + "y": 0.940000057, + "z": -28.94001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0474, + "y": 1.99857759, + "z": 1.49239111 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88382, + "ParentId": -11392, + "Position": { + "x": -49.3200073, + "y": 5.85999966, + "z": -23.5800056 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 12.6529312, + "z": 2.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88474, + "ParentId": -11392, + "Position": { + "x": -46.3200073, + "y": 5.82, + "z": -23.5800056 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 12.6529312, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88540, + "ParentId": -11392, + "Position": { + "x": -38.0800056, + "y": 3.174, + "z": -28.2050076 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.62121248, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88612, + "ParentId": -11392, + "Position": { + "x": -41.7000046, + "y": 1.1, + "z": -5.52700233 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.856174, + "y": 2.84530044, + "z": 4.80049038 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "00FFF8FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88670, + "ParentId": -11392, + "Position": { + "x": -42.6900024, + "y": 1.1, + "z": -5.52700233 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.330024, + "y": 2.84530044, + "z": 6.56083059 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88730, + "ParentId": -11392, + "Position": { + "x": -41.8900032, + "y": 1.1, + "z": -41.2400131 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 4.856174, + "y": 2.84530044, + "z": 4.80049038 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "00FFF8FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88788, + "ParentId": -11392, + "Position": { + "x": -42.9000053, + "y": 1.1, + "z": -41.2400131 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 6.330024, + "y": 2.84530044, + "z": 6.56083059 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -88850, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 1.3, + "z": -45.27601 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -88908, + "ParentId": -11392, + "Position": { + "x": -37.6500053, + "y": 1.3, + "z": -41.3118057 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 8.033356, + "y": 0.153376192, + "z": 0.112100028 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -88984, + "ParentId": -11392, + "Position": { + "x": -35.670002, + "y": 5.89999962, + "z": -42.1700058 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 8.7493515, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -89060, + "ParentId": -11392, + "Position": { + "x": -26.04, + "y": 3.11429977, + "z": -45.1251068 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 5.794694, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -89136, + "ParentId": -11392, + "Position": { + "x": -25.2200012, + "y": 3.1, + "z": -45.1046066 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 5.81481743, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -89212, + "ParentId": -11392, + "Position": { + "x": 0.5000057, + "y": 5.52, + "z": -52.9400177 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.1327002, + "y": 8.080622, + "z": 2.69372869 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -89284, + "ParentId": -11392, + "Position": { + "x": 0.5000019, + "y": 4.08, + "z": -53.9600143 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.899594367, + "y": 8.080622, + "z": 1.05410969 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -89356, + "ParentId": -11392, + "Position": { + "x": 0.5000057, + "y": 6.43999958, + "z": -51.4400177 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.899594367, + "y": 8.080622, + "z": 1.05410969 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -89414, + "ParentId": -11392, + "Position": { + "x": -31.0740013, + "y": 0.7019999, + "z": -19.0700035 + }, + "Rotation": { + "x": 0.0, + "y": 47.93268, + "z": 0.0 + }, + "Scale": { + "x": 0.642498851, + "y": 1.51759207, + "z": 0.009736922 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -89480, + "ParentId": -11392, + "Position": { + "x": -30.8010025, + "y": 0.130000114, + "z": -18.8200035 + }, + "Rotation": { + "x": 0.0, + "y": 47.93268, + "z": 0.0 + }, + "Scale": { + "x": 0.6366416, + "y": 0.7110481, + "z": 0.741247058 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -89552, + "ParentId": -11392, + "Position": { + "x": -26.2660027, + "y": 0.7019999, + "z": -19.1720047 + }, + "Rotation": { + "x": 0.24795638, + "y": 346.048279, + "z": 0.9979769 + }, + "Scale": { + "x": 0.642498732, + "y": 1.51759219, + "z": 0.009736923 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -89618, + "ParentId": -11392, + "Position": { + "x": -26.3600025, + "y": 0.130000114, + "z": -18.8200035 + }, + "Rotation": { + "x": 0.24795638, + "y": 346.048279, + "z": 0.9979769 + }, + "Scale": { + "x": 0.6366416, + "y": 0.7110482, + "z": 0.741247 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "466A9AFF" + } + }, + { + "Name": "Cube", + "ObjectId": -89684, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 1.3, + "z": -37.33001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -89742, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 0.6, + "z": -45.27601 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -89800, + "ParentId": -11392, + "Position": { + "x": -37.6500053, + "y": 0.6, + "z": -41.3118057 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 8.033356, + "y": 0.153376192, + "z": 0.112100028 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -89858, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 0.6, + "z": -37.33001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -89918, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 0.6, + "z": -9.72300148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -89976, + "ParentId": -11392, + "Position": { + "x": -37.65001, + "y": 0.6, + "z": -5.7587986 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 8.033356, + "y": 0.153376192, + "z": 0.112100028 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90088, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 0.6, + "z": -1.77700233 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90148, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 1.3, + "z": -9.72300148 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90206, + "ParentId": -11392, + "Position": { + "x": -37.65001, + "y": 1.3, + "z": -5.7587986 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 8.033356, + "y": 0.153376192, + "z": 0.112100028 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90318, + "ParentId": -11392, + "Position": { + "x": -41.1050034, + "y": 1.3, + "z": -1.77700233 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 7.012426, + "y": 0.15634203, + "z": 0.11209999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFE400FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90376, + "ParentId": -11392, + "Position": { + "x": 2.82, + "y": -1.25420713, + "z": -35.7600021 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.469704, + "y": 3.91692162, + "z": 3.6907 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFEC00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90442, + "ParentId": -11392, + "Position": { + "x": 4.0762043, + "y": 1.125, + "z": -36.6550064 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5176239, + "y": 1.27295113, + "z": 1.44936574 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FD00FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -90508, + "ParentId": -11392, + "Position": { + "x": 2.74270439, + "y": 1.0, + "z": -35.9008026 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.920952141, + "y": 0.7900931, + "z": 1.47973561 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "43FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -90574, + "ParentId": -11392, + "Position": { + "x": -1.99574852, + "y": 0.5000001, + "z": -36.80311 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 4.97540951, + "y": 2.938385, + "z": 2.783157 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00D19CFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90636, + "ParentId": -11392, + "Position": { + "x": 38.94923, + "y": -0.165513873, + "z": -4.63267136 + }, + "Rotation": { + "x": 36.8053474, + "y": 113.668182, + "z": 359.983643 + }, + "Scale": { + "x": 0.191876441, + "y": 0.166191429, + "z": 0.1577107 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90694, + "ParentId": -11392, + "Position": { + "x": 38.9540024, + "y": -0.0973525047, + "z": -4.64014435 + }, + "Rotation": { + "x": 53.1946831, + "y": 293.695618, + "z": 90.02182 + }, + "Scale": { + "x": 0.153946444, + "y": 0.07955636, + "z": 0.10510283 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90752, + "ParentId": -11392, + "Position": { + "x": 38.98816, + "y": -0.19732511, + "z": -4.649742 + }, + "Rotation": { + "x": 36.8053474, + "y": 113.668182, + "z": 359.983643 + }, + "Scale": { + "x": 0.165533692, + "y": 0.09979132, + "z": 0.116519831 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90810, + "ParentId": -11392, + "Position": { + "x": 38.88101, + "y": -0.299461842, + "z": -4.548237 + }, + "Rotation": { + "x": 36.8053474, + "y": 113.668182, + "z": 359.983643 + }, + "Scale": { + "x": 0.07079594, + "y": 0.0558747947, + "z": 0.09990001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90868, + "ParentId": -11392, + "Position": { + "x": 38.8479424, + "y": -0.291486263, + "z": -4.63859558 + }, + "Rotation": { + "x": 36.8053474, + "y": 113.668182, + "z": 359.983643 + }, + "Scale": { + "x": 0.07079594, + "y": 0.0558747947, + "z": 0.09990001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90926, + "ParentId": -11392, + "Position": { + "x": 19.564003, + "y": 5.397, + "z": -24.227005 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.191876411, + "y": 0.166191414, + "z": 0.1577107 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -90988, + "ParentId": -11392, + "Position": { + "x": 19.5689087, + "y": 5.456, + "z": -24.1969032 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.15394628, + "y": 0.07955631, + "z": 0.105102822 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -91050, + "ParentId": -11392, + "Position": { + "x": 19.564003, + "y": 5.397, + "z": -24.2849083 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.165533677, + "y": 0.0997913, + "z": 0.116519816 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -91112, + "ParentId": -11392, + "Position": { + "x": 19.5141068, + "y": 5.232, + "z": -24.2239037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.07079593, + "y": 0.0558747724, + "z": 0.0999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -91174, + "ParentId": -11392, + "Position": { + "x": 19.6101074, + "y": 5.242, + "z": -24.2239037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.07079593, + "y": 0.0558747724, + "z": 0.0999 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Sphere", + "ObjectId": -91262, + "ParentId": -11392, + "Position": { + "x": 27.5000038, + "y": -0.499999762, + "z": -34.8750076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.25, + "y": 7.0, + "z": 1.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 0, + "Color": "E7FF0064" + } + }, + { + "Name": "Sphere", + "ObjectId": -91350, + "ParentId": -11392, + "Position": { + "x": 28.6250153, + "y": -0.499999762, + "z": -33.6250038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.25, + "y": 7.0, + "z": 1.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 0, + "Color": "E7FF0064" + } + }, + { + "Name": "Sphere", + "ObjectId": -91438, + "ParentId": -11392, + "Position": { + "x": 29.8750153, + "y": -0.499999762, + "z": -32.5000038 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.25, + "y": 7.0, + "z": 1.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 0, + "Color": "E7FF0064" + } + }, + { + "Name": "Cube", + "ObjectId": -91504, + "ParentId": -11392, + "Position": { + "x": 15.7500076, + "y": 1.75, + "z": -20.2499962 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0625, + "y": 3.20387316, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "4F4F4FFF" + } + }, + { + "Name": "Cube", + "ObjectId": -91566, + "ParentId": -11392, + "Position": { + "x": 18.5000076, + "y": 1.75, + "z": -20.2499962 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0625, + "y": 3.20387316, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "4F4F4FFF" + } + }, + { + "Name": "Cube", + "ObjectId": -91628, + "ParentId": -11392, + "Position": { + "x": 21.2187576, + "y": 1.65625048, + "z": -20.2499962 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.0625, + "y": 3.5, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "4F4F4FFF" + } + }, + { + "Name": "Cube", + "ObjectId": -91690, + "ParentId": -11392, + "Position": { + "x": 2.0, + "y": 1.125, + "z": -47.574707 + }, + "Rotation": { + "x": 0.0, + "y": 359.003, + "z": 0.0 + }, + "Scale": { + "x": 2.05322266, + "y": 2.53977537, + "z": 3.55914664 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "9104FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -91752, + "ParentId": -11392, + "Position": { + "x": 3.875002, + "y": 1.125, + "z": -43.0000153 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.72898686, + "y": 2.16879368, + "z": 1.95095146 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "F86E16FF" + } + }, + { + "Name": "Cube", + "ObjectId": -91818, + "ParentId": -11392, + "Position": { + "x": -2.624998, + "y": 3.375, + "z": -39.3750076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.06566381, + "y": 1.79986322, + "z": 2.051382 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "F8C822FF" + } + }, + { + "Name": "Cube", + "ObjectId": -91880, + "ParentId": -11392, + "Position": { + "x": -3.25999641, + "y": 1.75, + "z": -43.3107758 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.348302, + "y": 1.15813136, + "z": 2.378849 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFA000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -91952, + "ParentId": -11392, + "Position": { + "x": -3.25999641, + "y": 3.0, + "z": -42.98278 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.154567, + "y": 1.426702, + "z": 2.1586628 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "C54108FF" + } + }, + { + "Name": "Cube", + "ObjectId": -92020, + "ParentId": -11392, + "Position": { + "x": 2.0, + "y": 1.0, + "z": -53.5000153 + }, + "Rotation": { + "x": 0.0, + "y": 274.772339, + "z": 0.0 + }, + "Scale": { + "x": 2.05322433, + "y": 1.91090178, + "z": 3.55914712 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "592D2DFF" + } + }, + { + "Name": "Cube", + "ObjectId": -92086, + "ParentId": -11392, + "Position": { + "x": -3.249998, + "y": 0.87500006, + "z": -52.1250153 + }, + "Rotation": { + "x": 0.0, + "y": 316.564667, + "z": 0.0 + }, + "Scale": { + "x": 2.05322313, + "y": 1.73870146, + "z": 3.559147 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "52C500FF" + } + }, + { + "Name": "Cube", + "ObjectId": -92174, + "ParentId": -11392, + "Position": { + "x": -3.25999641, + "y": 4.125, + "z": -42.98278 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.62993, + "y": 1.10060751, + "z": 1.58327115 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00B4FFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -92592, + "ParentId": -11392, + "Position": { + "x": -5.374998, + "y": 0.0, + "z": -50.7500153 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.6991737, + "y": 0.712039, + "z": 0.8418344 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "676767FF" + } + }, + { + "Name": "Cube", + "ObjectId": -92664, + "ParentId": -11392, + "Position": { + "x": -6.124998, + "y": 0.125000119, + "z": -50.0000153 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.4963784, + "y": 0.5157939, + "z": 0.715433 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "767676FF" + } + }, + { + "Name": "Cube", + "ObjectId": -92726, + "ParentId": -11392, + "Position": { + "x": 3.0, + "y": 4.125, + "z": -39.2500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.62993, + "y": 1.10060751, + "z": 1.58327115 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "0000FFFF" + } + }, + { + "Name": "Capsule", + "ObjectId": -92788, + "ParentId": -11392, + "Position": { + "x": -43.1250038, + "y": 3.25, + "z": -39.3750076 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.04740024, + "y": 1.99857759, + "z": 1.49239159 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FF7777FF" + } + }, + { + "Name": "Capsule", + "ObjectId": -92846, + "ParentId": -11392, + "Position": { + "x": -43.1250038, + "y": 3.25, + "z": -43.2500076 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.04740024, + "y": 1.99857759, + "z": 1.49239159 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FF7777FF" + } + }, + { + "Name": "Capsule", + "ObjectId": -92904, + "ParentId": -11392, + "Position": { + "x": -43.1250038, + "y": 3.25, + "z": -3.67450142 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.04740024, + "y": 1.99857759, + "z": 1.49239159 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "333333FF" + } + }, + { + "Name": "Capsule", + "ObjectId": -92962, + "ParentId": -11392, + "Position": { + "x": -43.1250038, + "y": 3.25, + "z": -7.54950333 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.04740024, + "y": 1.99857759, + "z": 1.49239159 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 1, + "Color": "FF7777FF" + } + }, + { + "Name": "Quad", + "ObjectId": -93038, + "ParentId": -11392, + "Position": { + "x": -37.9188042, + "y": 0.0, + "z": -23.7971039 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 11.8382177, + "y": 53.7631226, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "847972FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93106, + "ParentId": -11392, + "Position": { + "x": 37.1480141, + "y": 1.447, + "z": -37.6600037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 2.713324, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93194, + "ParentId": -11392, + "Position": { + "x": 32.6600151, + "y": 3.506, + "z": -35.0600052 + }, + "Rotation": { + "x": 90.0, + "y": 300.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5000001, + "y": 5.219674, + "z": 0.50000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93266, + "ParentId": -11392, + "Position": { + "x": 31.8600159, + "y": 3.506, + "z": -36.071003 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 1.472463, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93350, + "ParentId": -11392, + "Position": { + "x": 29.381012, + "y": 3.506, + "z": -37.525013 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.73192763, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93412, + "ParentId": -11392, + "Position": { + "x": 37.8100166, + "y": 1.447, + "z": -37.6600037 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.6245155, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93496, + "ParentId": -11392, + "Position": { + "x": 37.8100166, + "y": 0.120000124, + "z": -37.6600037 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.6245155, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93584, + "ParentId": -11392, + "Position": { + "x": 37.8100166, + "y": 2.747, + "z": -37.6600037 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.6245155, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93656, + "ParentId": -11392, + "Position": { + "x": 29.2500114, + "y": 3.38, + "z": -42.2270126 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.17163837, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93718, + "ParentId": -11392, + "Position": { + "x": 26.80001, + "y": 3.38, + "z": -42.22701 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.17163837, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93824, + "ParentId": -11392, + "Position": { + "x": 28.6400146, + "y": 0.5400001, + "z": -0.0629997253 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.3452, + "y": 1.4037019, + "z": 1.4959 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93884, + "ParentId": -11392, + "Position": { + "x": 28.6400146, + "y": 2.83, + "z": -0.0629997253 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.3452, + "y": 1.4037019, + "z": 1.4959 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -93942, + "ParentId": -11392, + "Position": { + "x": 27.5740051, + "y": 1.65, + "z": -1.49000168 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 1.3452, + "y": 1.04585671, + "z": 1.49590015 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94000, + "ParentId": -11392, + "Position": { + "x": 37.37501, + "y": 1.8, + "z": -6.78000259 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.06703758, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94058, + "ParentId": -11392, + "Position": { + "x": 37.37501, + "y": 0.435000062, + "z": -9.600002 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.7159431, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94116, + "ParentId": -11392, + "Position": { + "x": 37.9670143, + "y": 0.375, + "z": -9.600002 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 0.4953379, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94276, + "ParentId": -11392, + "Position": { + "x": 37.9670143, + "y": 1.125, + "z": -9.600002 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 0.4953379, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94334, + "ParentId": -11392, + "Position": { + "x": 37.9670143, + "y": 1.875, + "z": -9.600002 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 0.4953379, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94392, + "ParentId": -11392, + "Position": { + "x": 37.96702, + "y": 0.435000062, + "z": -6.79299927 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 0.4953379, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94468, + "ParentId": -11392, + "Position": { + "x": 37.96702, + "y": 1.206, + "z": -6.79299927 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 0.4953379, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94544, + "ParentId": -11392, + "Position": { + "x": 37.96702, + "y": 1.959, + "z": -6.79299927 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 0.4953379, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94620, + "ParentId": -11392, + "Position": { + "x": -46.3700066, + "y": 4.2, + "z": -17.510004 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94696, + "ParentId": -11392, + "Position": { + "x": -51.9900055, + "y": 5.33599949, + "z": -16.4270039 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94772, + "ParentId": -11392, + "Position": { + "x": -51.9900055, + "y": 5.33599949, + "z": -17.4170036 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94832, + "ParentId": -11392, + "Position": { + "x": -54.37401, + "y": 2.54, + "z": -17.4170036 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.74517536, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94892, + "ParentId": -11392, + "Position": { + "x": -54.40001, + "y": 2.602, + "z": -16.4270039 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.74517536, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -94950, + "ParentId": -11392, + "Position": { + "x": -53.7820053, + "y": 5.59, + "z": -23.6610031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.5, + "y": 0.8915775, + "z": 2.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95008, + "ParentId": -11392, + "Position": { + "x": -51.99001, + "y": 5.33599949, + "z": -29.2390079 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95084, + "ParentId": -11392, + "Position": { + "x": -54.40001, + "y": 2.602, + "z": -29.2390079 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.74517536, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95246, + "ParentId": -11392, + "Position": { + "x": -40.220005, + "y": 6.21, + "z": -36.2000122 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 4.52612257, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95398, + "ParentId": -11392, + "Position": { + "x": -33.8800049, + "y": 5.89999962, + "z": -46.86001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.75801575, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95560, + "ParentId": -11392, + "Position": { + "x": -51.9900055, + "y": 5.33599949, + "z": -18.5210037 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95618, + "ParentId": -11392, + "Position": { + "x": -54.37401, + "y": 2.54, + "z": -18.5210037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.74517536, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95676, + "ParentId": -11392, + "Position": { + "x": -51.99001, + "y": 5.33599949, + "z": -28.1960068 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95736, + "ParentId": -11392, + "Position": { + "x": -54.40001, + "y": 2.602, + "z": -28.1960068 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.74517536, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95794, + "ParentId": -11392, + "Position": { + "x": -51.99001, + "y": 5.33599949, + "z": -30.40001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95870, + "ParentId": -11392, + "Position": { + "x": -54.40001, + "y": 2.602, + "z": -30.40001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 2.74517536, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -95930, + "ParentId": -11392, + "Position": { + "x": -52.0620041, + "y": 5.59, + "z": -23.6610031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 0.5000001, + "y": 0.8915778, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96006, + "ParentId": -11392, + "Position": { + "x": -49.11001, + "y": 4.37, + "z": -17.510004 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 0.430414945, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96064, + "ParentId": -11392, + "Position": { + "x": -46.3700066, + "y": 4.2, + "z": -29.53001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96140, + "ParentId": -11392, + "Position": { + "x": -49.11001, + "y": 4.37, + "z": -29.53001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 0.430414945, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96198, + "ParentId": -11392, + "Position": { + "x": -46.3700066, + "y": 4.2, + "z": -28.4500084 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.745176, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96274, + "ParentId": -11392, + "Position": { + "x": -49.11001, + "y": 4.37, + "z": -28.4500084 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.5, + "y": 0.430414945, + "z": 0.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96350, + "ParentId": -11392, + "Position": { + "x": -52.0620041, + "y": 5.59, + "z": -23.6610031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 1.0, + "y": 0.8915778, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96426, + "ParentId": -11392, + "Position": { + "x": -51.1940079, + "y": 4.84, + "z": -23.6610031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.23777974, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96502, + "ParentId": -11392, + "Position": { + "x": -46.279007, + "y": 4.84, + "z": -23.6610031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.23777974, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96578, + "ParentId": -11392, + "Position": { + "x": -48.73501, + "y": 4.116, + "z": -23.6610031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 1.0, + "y": 2.43195653, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96654, + "ParentId": -11392, + "Position": { + "x": -52.17901, + "y": 5.59, + "z": -25.428009 + }, + "Rotation": { + "x": 0.0, + "y": 45.0, + "z": 90.0 + }, + "Scale": { + "x": 1.0, + "y": 1.33089018, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96730, + "ParentId": -11392, + "Position": { + "x": -51.1940079, + "y": 4.84, + "z": -26.4100075 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.23777974, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96806, + "ParentId": -11392, + "Position": { + "x": -46.279007, + "y": 4.84, + "z": -26.4100075 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.23777974, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96882, + "ParentId": -11392, + "Position": { + "x": -48.73501, + "y": 4.116, + "z": -26.4100075 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 1.0, + "y": 2.43195653, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -96958, + "ParentId": -11392, + "Position": { + "x": -51.1940079, + "y": 4.84, + "z": -20.9100037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.23777974, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97034, + "ParentId": -11392, + "Position": { + "x": -46.279007, + "y": 4.84, + "z": -20.9100037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.23777974, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97110, + "ParentId": -11392, + "Position": { + "x": -48.73501, + "y": 4.116, + "z": -20.9100037 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 90.0 + }, + "Scale": { + "x": 1.0, + "y": 2.43195653, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97186, + "ParentId": -11392, + "Position": { + "x": -52.17901, + "y": 5.59, + "z": -21.8710041 + }, + "Rotation": { + "x": 0.0, + "y": 315.0, + "z": 90.0 + }, + "Scale": { + "x": 1.0, + "y": 1.33088994, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97262, + "ParentId": -11392, + "Position": { + "x": -40.220005, + "y": 6.21, + "z": -37.73001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 4.52612257, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97338, + "ParentId": -11392, + "Position": { + "x": -42.3900032, + "y": 5.39999962, + "z": -41.2400131 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.23476458, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97558, + "ParentId": -11392, + "Position": { + "x": -43.61, + "y": 5.71, + "z": -41.2400131 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.23476493, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97736, + "ParentId": -11392, + "Position": { + "x": -42.3900032, + "y": 5.06699944, + "z": -37.6000061 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.734547, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97794, + "ParentId": -11392, + "Position": { + "x": -39.6600037, + "y": 5.85999966, + "z": -41.4450073 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.99955094, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -97870, + "ParentId": -11392, + "Position": { + "x": -35.4800034, + "y": 4.36, + "z": -41.4450073 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.33826351, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98064, + "ParentId": -11392, + "Position": { + "x": -38.1840019, + "y": 5.108, + "z": -41.4450073 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.7411654, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98140, + "ParentId": -11392, + "Position": { + "x": -42.3900032, + "y": 5.39999962, + "z": -5.300001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.23476458, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98216, + "ParentId": -11392, + "Position": { + "x": -43.61, + "y": 5.71, + "z": -5.300003 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.23476493, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98276, + "ParentId": -11392, + "Position": { + "x": -39.6600037, + "y": 5.85999966, + "z": -5.505001 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.99955094, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98336, + "ParentId": -11392, + "Position": { + "x": -35.4800034, + "y": 4.36, + "z": -5.505 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.33826351, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98396, + "ParentId": -11392, + "Position": { + "x": -38.1840057, + "y": 5.108, + "z": -5.505001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 0.7411654, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98472, + "ParentId": -11392, + "Position": { + "x": -35.670002, + "y": 5.95, + "z": -4.97999668 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 8.7493515, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98548, + "ParentId": -11392, + "Position": { + "x": -40.220005, + "y": 6.21, + "z": -9.400002 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 4.52612257, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98624, + "ParentId": -11392, + "Position": { + "x": -33.8800049, + "y": 5.95, + "z": 0.159999847 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 1.75801575, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98700, + "ParentId": -11392, + "Position": { + "x": -40.220005, + "y": 6.21, + "z": -10.9299994 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 4.52612257, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -98894, + "ParentId": -11392, + "Position": { + "x": -42.3900032, + "y": 5.06699944, + "z": -9.730001 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 3.734547, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "333333FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -99374, + "ParentId": -11392, + "Position": { + "x": -38.0800056, + "y": 3.174, + "z": -28.8880081 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.62121248, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -99450, + "ParentId": -11392, + "Position": { + "x": -38.0800056, + "y": 3.174, + "z": -16.2750034 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.50000006, + "y": 2.62121248, + "z": 0.5000001 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -99508, + "ParentId": -11392, + "Position": { + "x": 0.5000057, + "y": 5.88999939, + "z": -33.0600052 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 8.080622, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -99574, + "ParentId": -11392, + "Position": { + "x": -20.2, + "y": 5.89999962, + "z": -29.9700069 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 12.5915127, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -99658, + "ParentId": -11392, + "Position": { + "x": -21.2, + "y": 5.89999962, + "z": -18.4300041 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 2.0, + "y": 11.3986845, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -99878, + "ParentId": -11392, + "Position": { + "x": -18.87, + "y": 0.481000066, + "z": -17.201004 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 1.0, + "z": 0.125 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Cube", + "ObjectId": -99940, + "ParentId": -11392, + "Position": { + "x": -15.8390007, + "y": 0.481000066, + "z": -18.4770031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 1.0, + "z": 0.125 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Cube", + "ObjectId": -100002, + "ParentId": -11392, + "Position": { + "x": -18.87, + "y": 0.481000066, + "z": -18.4770031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 1.0, + "z": 0.125 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Cube", + "ObjectId": -100068, + "ParentId": -11392, + "Position": { + "x": -18.6768, + "y": 1.2253, + "z": -32.0010071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7666409, + "y": 1.55021977, + "z": 0.0047 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -100130, + "ParentId": -11392, + "Position": { + "x": -16.7619972, + "y": 1.2253, + "z": -32.0010071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7666409, + "y": 1.55021977, + "z": 0.0047 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -100192, + "ParentId": -11392, + "Position": { + "x": -14.8279991, + "y": 1.2253, + "z": -32.0010071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7666409, + "y": 1.55021977, + "z": 0.0047 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube", + "ObjectId": -100254, + "ParentId": -11392, + "Position": { + "x": 17.390007, + "y": 3.97099972, + "z": -44.08801 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.87751317, + "y": 0.235846132, + "z": 0.3876297 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFF700FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -100316, + "ParentId": -11392, + "Position": { + "x": -17.593, + "y": 3.174, + "z": -2.49300051 + }, + "Rotation": { + "x": 90.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 0.400000125, + "y": 2.50000048, + "z": 0.400000125 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100374, + "ParentId": -11392, + "Position": { + "x": -42.5000038, + "y": 1.25, + "z": -11.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.49999988, + "y": 2.49999976, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "5B5B5BFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -100432, + "ParentId": -11392, + "Position": { + "x": -42.75, + "y": 1.875, + "z": -9.250002 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 1.0, + "z": 0.25000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -100490, + "ParentId": -11392, + "Position": { + "x": -42.2500038, + "y": 1.875, + "z": -9.250002 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 1.0, + "z": 0.25000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100548, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 2.0, + "z": -11.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.49999997, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100606, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 1.5, + "z": -10.6250019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100664, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 1.125, + "z": -10.6250019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100722, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 0.75000006, + "z": -10.6250019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100780, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 0.375, + "z": -10.6250019 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -100838, + "ParentId": -11392, + "Position": { + "x": -42.5000038, + "y": 1.25, + "z": -36.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.49999988, + "y": 2.49999976, + "z": 2.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "8E8E8EFF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -100914, + "ParentId": -11392, + "Position": { + "x": -42.75, + "y": 1.875, + "z": -37.5000076 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 1.0, + "z": 0.25000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cylinder", + "ObjectId": -100974, + "ParentId": -11392, + "Position": { + "x": -42.2500038, + "y": 1.875, + "z": -37.5000076 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.25, + "y": 1.0, + "z": 0.25000006 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "FF7777FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101032, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 2.0, + "z": -36.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.49999997, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101090, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 1.5, + "z": -35.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101148, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 1.125, + "z": -35.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101206, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 0.75000006, + "z": -35.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101264, + "ParentId": -11392, + "Position": { + "x": -41.75, + "y": 0.375, + "z": -35.6250076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 0.249999985, + "z": 0.75 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FF0000FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101322, + "ParentId": -11392, + "Position": { + "x": -16.875, + "y": 2.0, + "z": -26.0600071 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 359.5684 + }, + "Scale": { + "x": 0.599999845, + "y": 0.549999952, + "z": 0.48786065 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "A2FF00FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101384, + "ParentId": -11392, + "Position": { + "x": -16.7499962, + "y": 1.25, + "z": -32.7500076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 6.0, + "y": 2.49999976, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "939EA4FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101446, + "ParentId": -11392, + "Position": { + "x": 19.0, + "y": 0.5000001, + "z": -16.2130089 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7731123, + "y": 0.49999997, + "z": 0.08445601 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101508, + "ParentId": -11392, + "Position": { + "x": 21.2500076, + "y": 0.5000001, + "z": -16.2130089 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7731123, + "y": 0.49999997, + "z": 0.08445601 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101570, + "ParentId": -11392, + "Position": { + "x": 21.2500076, + "y": 1.25, + "z": -16.2130089 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.7731123, + "y": 0.49999997, + "z": 0.08445601 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "00FF14FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101632, + "ParentId": -11392, + "Position": { + "x": 14.7500076, + "y": 0.8125, + "z": -26.3125076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.74999994, + "y": 0.0624999963, + "z": 3.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "3D5247FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101694, + "ParentId": -11392, + "Position": { + "x": 20.5000038, + "y": 0.8125, + "z": -26.3125076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.74999994, + "y": 0.0624999963, + "z": 3.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "3D5247FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101756, + "ParentId": -11392, + "Position": { + "x": 17.6250076, + "y": 0.8125, + "z": -24.6875076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.0624999963, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "3D5247FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101818, + "ParentId": -11392, + "Position": { + "x": 17.6250038, + "y": 0.8125, + "z": -27.9375076 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 0.0624999963, + "z": 0.25 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "3D5247FF" + } + }, + { + "Name": "Cube", + "ObjectId": -101880, + "ParentId": -11392, + "Position": { + "x": 33.3247147, + "y": 0.0350000858, + "z": -5.000202 + }, + "Rotation": { + "x": 90.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 13.851, + "y": 12.1049747, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "FFF2BFFF" + } + }, + { + "Name": "Quad (1)", + "ObjectId": -156022, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad (2)", + "ObjectId": -156036, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad (3)", + "ObjectId": -156050, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad (4)", + "ObjectId": -156064, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad (5)", + "ObjectId": -156078, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad (6)", + "ObjectId": -156092, + "ParentId": -11392, + "Position": { + "x": 19.7500076, + "y": 1.75, + "z": -0.249996185 + }, + "Rotation": { + "x": 0.0, + "y": 90.0, + "z": 0.0 + }, + "Scale": { + "x": 5.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Cube (1)", + "ObjectId": -162296, + "ParentId": -11392, + "Position": { + "x": -16.0, + "y": 0.481000066, + "z": -17.201004 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 0.125, + "y": 1.0, + "z": 0.125 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 3, + "Color": "5CA3CAFF" + } + }, + { + "Name": "Quad (7)", + "ObjectId": -164432, + "ParentId": -11392, + "Position": { + "x": -34.0, + "y": 1.75, + "z": -12.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.50000167, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad (8)", + "ObjectId": -164424, + "ParentId": -11392, + "Position": { + "x": -42.0, + "y": 1.75, + "z": -12.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 3.50000167, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + }, + { + "Name": "Quad (9)", + "ObjectId": -164416, + "ParentId": -11392, + "Position": { + "x": -43.7500038, + "y": 5.25, + "z": -7.750002 + }, + "Rotation": { + "x": 0.0, + "y": 270.0, + "z": 0.0 + }, + "Scale": { + "x": 10.0, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "FFFFFFFF" + } + }, + { + "Name": "Quad (10)", + "ObjectId": -164408, + "ParentId": -11392, + "Position": { + "x": -38.0, + "y": 5.25, + "z": -12.7500038 + }, + "Rotation": { + "x": 0.0, + "y": 180.0, + "z": 0.0 + }, + "Scale": { + "x": 11.5000048, + "y": 3.5, + "z": 1.0 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 5, + "Color": "A69D8FFF" + } + } + ] +} \ No newline at end of file diff --git a/Schematics/Lobby/Lobby.json b/Schematics/Lobby/Lobby.json index d50ff4f8..afb72b80 100644 --- a/Schematics/Lobby/Lobby.json +++ b/Schematics/Lobby/Lobby.json @@ -1,10 +1,10 @@ { - "RootObjectId": -9886, + "RootObjectId": -1190, "Blocks": [ { "Name": "LightSource", - "ObjectId": -9890, - "ParentId": -9886, + "ObjectId": -1932, + "ParentId": -1190, "Position": { "x": 0.0, "y": 12.1, @@ -20,8 +20,8 @@ }, { "Name": "LightSource", - "ObjectId": -9892, - "ParentId": -9886, + "ObjectId": -1934, + "ParentId": -1190, "Position": { "x": 0.03, "y": 6.48, @@ -37,8 +37,8 @@ }, { "Name": "LightSource", - "ObjectId": -9894, - "ParentId": -9886, + "ObjectId": -1936, + "ParentId": -1190, "Position": { "x": 0.0, "y": 12.1, @@ -54,8 +54,8 @@ }, { "Name": "LightSource", - "ObjectId": -9896, - "ParentId": -9886, + "ObjectId": -1938, + "ParentId": -1190, "Position": { "x": 0.0, "y": 12.1, @@ -71,8 +71,8 @@ }, { "Name": "LightSource", - "ObjectId": -9898, - "ParentId": -9886, + "ObjectId": -1940, + "ParentId": -1190, "Position": { "x": -8.58, "y": 12.1, @@ -88,8 +88,8 @@ }, { "Name": "LightSource", - "ObjectId": -9900, - "ParentId": -9886, + "ObjectId": -1942, + "ParentId": -1190, "Position": { "x": 9.02, "y": 12.1, @@ -105,8 +105,8 @@ }, { "Name": "LightSource", - "ObjectId": -9902, - "ParentId": -9886, + "ObjectId": -1944, + "ParentId": -1190, "Position": { "x": -11.22, "y": 4.47, @@ -122,8 +122,8 @@ }, { "Name": "LightSource", - "ObjectId": -9904, - "ParentId": -9886, + "ObjectId": -1946, + "ParentId": -1190, "Position": { "x": 10.57, "y": 4.47, @@ -139,8 +139,8 @@ }, { "Name": "LightSource", - "ObjectId": -9906, - "ParentId": -9886, + "ObjectId": -1948, + "ParentId": -1190, "Position": { "x": -10.68, "y": 4.47, @@ -156,8 +156,8 @@ }, { "Name": "LightSource", - "ObjectId": -9908, - "ParentId": -9886, + "ObjectId": -1950, + "ParentId": -1190, "Position": { "x": 9.02, "y": 4.47, @@ -173,8 +173,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9910, - "ParentId": -9886, + "ObjectId": -1952, + "ParentId": -1190, "Position": { "x": -18.832, "y": 3.42, @@ -198,8 +198,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9912, - "ParentId": -9886, + "ObjectId": -1954, + "ParentId": -1190, "Position": { "x": -18.832, "y": 3.42, @@ -223,8 +223,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9914, - "ParentId": -9886, + "ObjectId": -1956, + "ParentId": -1190, "Position": { "x": -18.832, "y": 3.42, @@ -248,8 +248,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9916, - "ParentId": -9886, + "ObjectId": -1958, + "ParentId": -1190, "Position": { "x": -18.832, "y": 3.42, @@ -273,8 +273,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9918, - "ParentId": -9886, + "ObjectId": -1960, + "ParentId": -1190, "Position": { "x": -10.86, "y": 3.42, @@ -298,8 +298,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9920, - "ParentId": -9886, + "ObjectId": -1962, + "ParentId": -1190, "Position": { "x": -0.64, "y": 3.42, @@ -323,8 +323,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9922, - "ParentId": -9886, + "ObjectId": -1964, + "ParentId": -1190, "Position": { "x": 11.57, "y": 3.42, @@ -348,8 +348,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9924, - "ParentId": -9886, + "ObjectId": -1966, + "ParentId": -1190, "Position": { "x": 17.26, "y": 3.42, @@ -373,8 +373,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9926, - "ParentId": -9886, + "ObjectId": -1968, + "ParentId": -1190, "Position": { "x": 17.26, "y": 3.42, @@ -398,8 +398,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9928, - "ParentId": -9886, + "ObjectId": -1970, + "ParentId": -1190, "Position": { "x": 18.22, "y": 3.42, @@ -423,8 +423,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9930, - "ParentId": -9886, + "ObjectId": -1972, + "ParentId": -1190, "Position": { "x": 18.22, "y": 3.42, @@ -448,8 +448,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9932, - "ParentId": -9886, + "ObjectId": -1974, + "ParentId": -1190, "Position": { "x": 18.22, "y": 3.42, @@ -473,8 +473,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9934, - "ParentId": -9886, + "ObjectId": -1976, + "ParentId": -1190, "Position": { "x": 18.22, "y": 3.42, @@ -498,8 +498,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9936, - "ParentId": -9886, + "ObjectId": -1978, + "ParentId": -1190, "Position": { "x": 11.48, "y": 3.42, @@ -523,8 +523,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9938, - "ParentId": -9886, + "ObjectId": -1980, + "ParentId": -1190, "Position": { "x": 1.21, "y": 3.42, @@ -548,8 +548,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9940, - "ParentId": -9886, + "ObjectId": -1982, + "ParentId": -1190, "Position": { "x": -9.05, "y": 3.42, @@ -573,8 +573,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9942, - "ParentId": -9886, + "ObjectId": -1984, + "ParentId": -1190, "Position": { "x": -9.05, "y": 3.42, @@ -598,8 +598,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9944, - "ParentId": -9886, + "ObjectId": -1986, + "ParentId": -1190, "Position": { "x": -17.47, "y": 3.42, @@ -623,8 +623,8 @@ }, { "Name": "Spawnpoint", - "ObjectId": -9946, - "ParentId": -9886, + "ObjectId": -1988, + "ParentId": -1190, "Position": { "x": -17.47, "y": 3.42, @@ -648,8 +648,8 @@ }, { "Name": "Teleport", - "ObjectId": -41560, - "ParentId": -9886, + "ObjectId": -1990, + "ParentId": -1190, "Position": { "x": 0.0, "y": 4.224, @@ -673,8 +673,8 @@ }, { "Name": "Teleport", - "ObjectId": -9948, - "ParentId": -9886, + "ObjectId": -1992, + "ParentId": -1190, "Position": { "x": 0.0, "y": 10.93, @@ -698,8 +698,8 @@ }, { "Name": "Wall", - "ObjectId": -9952, - "ParentId": -9886, + "ObjectId": -1994, + "ParentId": -1190, "Position": { "x": 0.053, "y": 2.003, @@ -723,8 +723,8 @@ }, { "Name": "Quad", - "ObjectId": -9954, - "ParentId": -9886, + "ObjectId": -1996, + "ParentId": -1190, "Position": { "x": -0.088, "y": 6.66, @@ -748,8 +748,8 @@ }, { "Name": "Quad", - "ObjectId": -9956, - "ParentId": -9886, + "ObjectId": -1998, + "ParentId": -1190, "Position": { "x": 21.19, "y": 6.683, @@ -773,8 +773,8 @@ }, { "Name": "Quad", - "ObjectId": -9958, - "ParentId": -9886, + "ObjectId": -2000, + "ParentId": -1190, "Position": { "x": -21.56, "y": 6.644, @@ -798,8 +798,8 @@ }, { "Name": "Quad", - "ObjectId": -9960, - "ParentId": -9886, + "ObjectId": -2002, + "ParentId": -1190, "Position": { "x": -0.18, "y": 6.681, @@ -823,8 +823,8 @@ }, { "Name": "Quad", - "ObjectId": -9962, - "ParentId": -9886, + "ObjectId": -2004, + "ParentId": -1190, "Position": { "x": -0.212, "y": 0.41, @@ -848,8 +848,8 @@ }, { "Name": "Quad", - "ObjectId": -9964, - "ParentId": -9886, + "ObjectId": -2006, + "ParentId": -1190, "Position": { "x": -0.101, "y": 13.0, @@ -873,8 +873,8 @@ }, { "Name": "Quad", - "ObjectId": -9966, - "ParentId": -9886, + "ObjectId": -2008, + "ParentId": -1190, "Position": { "x": -0.107, "y": 0.45, @@ -898,8 +898,8 @@ }, { "Name": "Quad", - "ObjectId": -9968, - "ParentId": -9886, + "ObjectId": -2010, + "ParentId": -1190, "Position": { "x": 0.0, "y": 0.45, @@ -923,8 +923,8 @@ }, { "Name": "Quad", - "ObjectId": -9970, - "ParentId": -9886, + "ObjectId": -2012, + "ParentId": -1190, "Position": { "x": -0.119, "y": 0.45, @@ -948,8 +948,8 @@ }, { "Name": "Quad", - "ObjectId": -9972, - "ParentId": -9886, + "ObjectId": -2014, + "ParentId": -1190, "Position": { "x": -0.138, "y": 0.45, @@ -973,8 +973,8 @@ }, { "Name": "Quad", - "ObjectId": -9974, - "ParentId": -9886, + "ObjectId": -2016, + "ParentId": -1190, "Position": { "x": 11.0, "y": 0.45, @@ -998,8 +998,8 @@ }, { "Name": "Quad", - "ObjectId": -9976, - "ParentId": -9886, + "ObjectId": -2018, + "ParentId": -1190, "Position": { "x": -11.0, "y": 0.45, @@ -1023,8 +1023,8 @@ }, { "Name": "Quad", - "ObjectId": -9978, - "ParentId": -9886, + "ObjectId": -2020, + "ParentId": -1190, "Position": { "x": 0.059, "y": 0.43, @@ -1048,8 +1048,8 @@ }, { "Name": "Quad", - "ObjectId": -9980, - "ParentId": -9886, + "ObjectId": -2022, + "ParentId": -1190, "Position": { "x": 16.353, "y": 0.43, @@ -1073,8 +1073,8 @@ }, { "Name": "Quad", - "ObjectId": -9982, - "ParentId": -9886, + "ObjectId": -2024, + "ParentId": -1190, "Position": { "x": -16.57, "y": 0.43, @@ -1098,8 +1098,8 @@ }, { "Name": "Quad", - "ObjectId": -9984, - "ParentId": -9886, + "ObjectId": -2026, + "ParentId": -1190, "Position": { "x": 0.059, "y": 0.43, @@ -1123,8 +1123,8 @@ }, { "Name": "Quad", - "ObjectId": -9986, - "ParentId": -9886, + "ObjectId": -2028, + "ParentId": -1190, "Position": { "x": 0.059, "y": 0.43, @@ -1148,8 +1148,8 @@ }, { "Name": "Quad", - "ObjectId": -9988, - "ParentId": -9886, + "ObjectId": -2030, + "ParentId": -1190, "Position": { "x": 16.353, "y": 0.43, @@ -1173,8 +1173,8 @@ }, { "Name": "Quad", - "ObjectId": -9990, - "ParentId": -9886, + "ObjectId": -2032, + "ParentId": -1190, "Position": { "x": 16.353, "y": 0.43, @@ -1198,8 +1198,8 @@ }, { "Name": "Quad", - "ObjectId": -9992, - "ParentId": -9886, + "ObjectId": -2034, + "ParentId": -1190, "Position": { "x": -16.65, "y": 0.43, @@ -1223,8 +1223,8 @@ }, { "Name": "Quad", - "ObjectId": -9994, - "ParentId": -9886, + "ObjectId": -2036, + "ParentId": -1190, "Position": { "x": -16.49, "y": 0.43, @@ -1248,8 +1248,8 @@ }, { "Name": "Quad", - "ObjectId": -9996, - "ParentId": -9886, + "ObjectId": -2038, + "ParentId": -1190, "Position": { "x": 0.206, "y": 7.97, @@ -1273,8 +1273,8 @@ }, { "Name": "Quad", - "ObjectId": -9998, - "ParentId": -9886, + "ObjectId": -2040, + "ParentId": -1190, "Position": { "x": -0.04, "y": 7.97, @@ -1298,8 +1298,8 @@ }, { "Name": "Quad", - "ObjectId": -10000, - "ParentId": -9886, + "ObjectId": -2042, + "ParentId": -1190, "Position": { "x": -12.9, "y": 7.97, @@ -1323,8 +1323,8 @@ }, { "Name": "Quad", - "ObjectId": -10002, - "ParentId": -9886, + "ObjectId": -2044, + "ParentId": -1190, "Position": { "x": 12.93, "y": 7.97, @@ -1348,8 +1348,8 @@ }, { "Name": "Quad", - "ObjectId": -10004, - "ParentId": -9886, + "ObjectId": -2046, + "ParentId": -1190, "Position": { "x": 0.206, "y": 7.97, @@ -1373,8 +1373,8 @@ }, { "Name": "Quad", - "ObjectId": -10006, - "ParentId": -9886, + "ObjectId": -2048, + "ParentId": -1190, "Position": { "x": 0.206, "y": 7.97, @@ -1398,8 +1398,8 @@ }, { "Name": "Quad", - "ObjectId": -10008, - "ParentId": -9886, + "ObjectId": -2050, + "ParentId": -1190, "Position": { "x": -0.178, "y": 7.97, @@ -1423,8 +1423,8 @@ }, { "Name": "Quad", - "ObjectId": -10010, - "ParentId": -9886, + "ObjectId": -2052, + "ParentId": -1190, "Position": { "x": -0.178, "y": 7.97, @@ -1448,8 +1448,8 @@ }, { "Name": "Quad", - "ObjectId": -10012, - "ParentId": -9886, + "ObjectId": -2054, + "ParentId": -1190, "Position": { "x": -17.761, "y": 7.97, @@ -1473,8 +1473,8 @@ }, { "Name": "Quad", - "ObjectId": -10014, - "ParentId": -9886, + "ObjectId": -2056, + "ParentId": -1190, "Position": { "x": 17.627, "y": 7.97, @@ -1498,8 +1498,8 @@ }, { "Name": "Cube", - "ObjectId": -10016, - "ParentId": -9886, + "ObjectId": -2058, + "ParentId": -1190, "Position": { "x": 0.0042, "y": 4.9301, @@ -1523,8 +1523,8 @@ }, { "Name": "Cube", - "ObjectId": -10018, - "ParentId": -9886, + "ObjectId": -2060, + "ParentId": -1190, "Position": { "x": 4.0, "y": 0.75, @@ -1548,8 +1548,8 @@ }, { "Name": "Cube", - "ObjectId": -10020, - "ParentId": -9886, + "ObjectId": -2062, + "ParentId": -1190, "Position": { "x": -4.0, "y": 0.75, @@ -1573,8 +1573,8 @@ }, { "Name": "Cube", - "ObjectId": -10022, - "ParentId": -9886, + "ObjectId": -2064, + "ParentId": -1190, "Position": { "x": 0.0, "y": 0.75, @@ -1598,8 +1598,8 @@ }, { "Name": "Cube", - "ObjectId": -10024, - "ParentId": -9886, + "ObjectId": -2066, + "ParentId": -1190, "Position": { "x": 0.0, "y": 0.75, @@ -1623,8 +1623,8 @@ }, { "Name": "Cube", - "ObjectId": -10026, - "ParentId": -9886, + "ObjectId": -2068, + "ParentId": -1190, "Position": { "x": -0.017, "y": 7.9, @@ -1648,8 +1648,8 @@ }, { "Name": "Cube", - "ObjectId": -10028, - "ParentId": -9886, + "ObjectId": -2070, + "ParentId": -1190, "Position": { "x": 0.0, "y": 10.481, @@ -1673,8 +1673,8 @@ }, { "Name": "Cube", - "ObjectId": -10030, - "ParentId": -9886, + "ObjectId": -2072, + "ParentId": -1190, "Position": { "x": 0.0, "y": 10.481, @@ -1698,8 +1698,8 @@ }, { "Name": "Cube", - "ObjectId": -10032, - "ParentId": -9886, + "ObjectId": -2074, + "ParentId": -1190, "Position": { "x": 14.0, "y": 10.481, @@ -1723,8 +1723,8 @@ }, { "Name": "Cube", - "ObjectId": -10034, - "ParentId": -9886, + "ObjectId": -2076, + "ParentId": -1190, "Position": { "x": -14.0, "y": 10.481, @@ -1748,8 +1748,8 @@ }, { "Name": "Cube", - "ObjectId": -10036, - "ParentId": -9886, + "ObjectId": -2078, + "ParentId": -1190, "Position": { "x": 20.871, "y": 3.388, @@ -1773,8 +1773,8 @@ }, { "Name": "Cube", - "ObjectId": -10038, - "ParentId": -9886, + "ObjectId": -2080, + "ParentId": -1190, "Position": { "x": -0.005, "y": 0.29, @@ -1798,8 +1798,8 @@ }, { "Name": "Cube", - "ObjectId": -10040, - "ParentId": -9886, + "ObjectId": -2082, + "ParentId": -1190, "Position": { "x": 0.0, "y": 0.0, @@ -1823,8 +1823,8 @@ }, { "Name": "Cube", - "ObjectId": -10042, - "ParentId": -9886, + "ObjectId": -2084, + "ParentId": -1190, "Position": { "x": 0.004, "y": 3.643, @@ -1848,8 +1848,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10044, - "ParentId": -9886, + "ObjectId": -2086, + "ParentId": -1190, "Position": { "x": 0.0, "y": 2.436, @@ -1872,509 +1872,25 @@ } }, { - "Name": "Platform", - "ObjectId": -10046, - "ParentId": -9886, - "Position": { - "x": 0.0, - "y": 8.0789, - "z": 13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10048, - "ParentId": -9886, - "Position": { - "x": -13.0, - "y": 8.0789, - "z": 0.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10050, - "ParentId": -9886, - "Position": { - "x": 13.0, - "y": 8.0789, - "z": 0.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10052, - "ParentId": -9886, - "Position": { - "x": 0.0, - "y": 8.0789, - "z": -13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10054, - "ParentId": -9886, - "Position": { - "x": -13.0, - "y": 8.0789, - "z": -5.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10056, - "ParentId": -9886, - "Position": { - "x": -13.0, - "y": 8.0789, - "z": -10.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10058, - "ParentId": -9886, - "Position": { - "x": -13.0, - "y": 8.0789, - "z": 5.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10060, - "ParentId": -9886, - "Position": { - "x": -13.0, - "y": 8.0789, - "z": 10.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10062, - "ParentId": -9886, - "Position": { - "x": 13.0, - "y": 8.0789, - "z": -5.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10064, - "ParentId": -9886, - "Position": { - "x": 13.0, - "y": 8.0789, - "z": -10.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10066, - "ParentId": -9886, - "Position": { - "x": 13.0, - "y": 8.0789, - "z": 5.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10068, - "ParentId": -9886, - "Position": { - "x": 13.0, - "y": 8.0789, - "z": 10.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10070, - "ParentId": -9886, - "Position": { - "x": 5.0, - "y": 8.0789, - "z": 13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10072, - "ParentId": -9886, - "Position": { - "x": 10.0, - "y": 8.0789, - "z": 13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10074, - "ParentId": -9886, - "Position": { - "x": -10.0, - "y": 8.0789, - "z": 13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10076, - "ParentId": -9886, - "Position": { - "x": -5.0, - "y": 8.0789, - "z": 13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10078, - "ParentId": -9886, - "Position": { - "x": 5.0, - "y": 8.0789, - "z": -13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10080, - "ParentId": -9886, - "Position": { - "x": 10.0, - "y": 8.0789, - "z": -13.0 - }, - "Rotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10082, - "ParentId": -9886, - "Position": { - "x": -10.0, - "y": 8.0789, - "z": -13.0 - }, - "Rotation": { + "Name": "Events", + "ObjectId": -2088, + "ParentId": -1190, + "Position": { "x": 0.0, "y": 0.0, "z": 0.0 }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } - }, - { - "Name": "Platform", - "ObjectId": -10084, - "ParentId": -9886, - "Position": { - "x": -5.0, - "y": 8.0789, - "z": -13.0 - }, "Rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, - "Scale": { - "x": 1.5, - "y": 0.127054334, - "z": 1.5 - }, - "BlockType": 1, - "Properties": { - "PrimitiveType": 2, - "Color": "464646FF" - } + "BlockType": 0 }, { - "Name": "Warhead", - "ObjectId": -10086, - "ParentId": -9886, + "Name": "Atomic Escape", + "ObjectId": -2092, + "ParentId": -2088, "Position": { "x": -5.0, "y": 10.81, @@ -2389,8 +1905,8 @@ }, { "Name": "Cube", - "ObjectId": -10572, - "ParentId": -10086, + "ObjectId": -2788, + "ParentId": -2092, "Position": { "x": 0.2630005, "y": 0.255999565, @@ -2414,8 +1930,8 @@ }, { "Name": "Cube", - "ObjectId": -10574, - "ParentId": -10086, + "ObjectId": -2790, + "ParentId": -2092, "Position": { "x": -0.21149826, "y": 0.1949997, @@ -2439,8 +1955,8 @@ }, { "Name": "Cube", - "ObjectId": -10576, - "ParentId": -10086, + "ObjectId": -2792, + "ParentId": -2092, "Position": { "x": -0.352499, "y": 0.6364994, @@ -2464,8 +1980,8 @@ }, { "Name": "Cube", - "ObjectId": -10578, - "ParentId": -10086, + "ObjectId": -2794, + "ParentId": -2092, "Position": { "x": 0.0225009918, "y": 0.63654995, @@ -2489,8 +2005,8 @@ }, { "Name": "Sphere", - "ObjectId": -10580, - "ParentId": -10086, + "ObjectId": -2796, + "ParentId": -2092, "Position": { "x": 0.0, "y": 0.0, @@ -2514,8 +2030,8 @@ }, { "Name": "Cube", - "ObjectId": -10582, - "ParentId": -10086, + "ObjectId": -2798, + "ParentId": -2092, "Position": { "x": -0.233499527, "y": 0.2414999, @@ -2539,8 +2055,8 @@ }, { "Name": "Cube", - "ObjectId": -10584, - "ParentId": -10086, + "ObjectId": -2800, + "ParentId": -2092, "Position": { "x": 0.397501, "y": 0.6364994, @@ -2564,8 +2080,8 @@ }, { "Name": "Cube", - "ObjectId": -10586, - "ParentId": -10086, + "ObjectId": -2802, + "ParentId": -2092, "Position": { "x": 0.0225009918, "y": 0.63654995, @@ -2589,8 +2105,8 @@ }, { "Name": "Cube", - "ObjectId": -10588, - "ParentId": -10086, + "ObjectId": -2804, + "ParentId": -2092, "Position": { "x": 0.255283356, "y": 0.258999825, @@ -2613,9 +2129,34 @@ } }, { - "Name": "Versus", - "ObjectId": -10088, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2806, + "ParentId": -2092, + "Position": { + "x": 0.0, + "y": -2.7311, + "z": -0.0389995575 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Cock Fights", + "ObjectId": -2094, + "ParentId": -2088, "Position": { "x": -13.635, "y": 9.93, @@ -2629,9 +2170,9 @@ "BlockType": 0 }, { - "Name": "Cube (32)", - "ObjectId": -10652, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2888, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.3072996, @@ -2654,9 +2195,9 @@ } }, { - "Name": "Cube (31)", - "ObjectId": -10654, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2890, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.3782997, @@ -2679,9 +2220,9 @@ } }, { - "Name": "Cube (30)", - "ObjectId": -10656, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2892, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.352199554, @@ -2704,9 +2245,9 @@ } }, { - "Name": "Cube (30)", - "ObjectId": -10658, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2894, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.3777008, @@ -2729,9 +2270,9 @@ } }, { - "Name": "Cube (31)", - "ObjectId": -10660, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2896, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.4038, @@ -2754,9 +2295,9 @@ } }, { - "Name": "Cube (32)", - "ObjectId": -10662, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2898, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.3327999, @@ -2779,9 +2320,9 @@ } }, { - "Name": "Cube (33)", - "ObjectId": -10664, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2900, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.4069004, @@ -2804,9 +2345,9 @@ } }, { - "Name": "Cube (23)", - "ObjectId": -10666, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2902, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.03489971, @@ -2829,9 +2370,9 @@ } }, { - "Name": "Cube (20)", - "ObjectId": -10668, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2904, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.179800034, @@ -2854,9 +2395,9 @@ } }, { - "Name": "Cube (19)", - "ObjectId": -10670, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2906, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.2528, @@ -2879,9 +2420,9 @@ } }, { - "Name": "Cube (16)", - "ObjectId": -10672, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2908, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.372400284, @@ -2904,9 +2445,9 @@ } }, { - "Name": "Cube (22)", - "ObjectId": -10674, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2910, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.0616998672, @@ -2929,9 +2470,9 @@ } }, { - "Name": "Cube (21)", - "ObjectId": -10676, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2912, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.127099991, @@ -2954,9 +2495,9 @@ } }, { - "Name": "Cube (24)", - "ObjectId": -10678, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2914, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.0, @@ -2979,9 +2520,9 @@ } }, { - "Name": "Cube (18)", - "ObjectId": -10680, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2916, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.291399956, @@ -3004,9 +2545,9 @@ } }, { - "Name": "Cube (17)", - "ObjectId": -10682, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2918, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.340900421, @@ -3029,9 +2570,9 @@ } }, { - "Name": "Cube (32)", - "ObjectId": -10684, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2920, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.0346002579, @@ -3054,9 +2595,9 @@ } }, { - "Name": "Cube (16)", - "ObjectId": -10686, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2922, + "ParentId": -2094, "Position": { "x": 0.0, "y": 0.381999969, @@ -3079,9 +2620,9 @@ } }, { - "Name": "Cube (31)", - "ObjectId": -10688, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2924, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.4029007, @@ -3104,9 +2645,9 @@ } }, { - "Name": "Cube (30)", - "ObjectId": -10690, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2926, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.3800001, @@ -3129,9 +2670,9 @@ } }, { - "Name": "Cube (29)", - "ObjectId": -10692, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2928, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.352000237, @@ -3154,9 +2695,9 @@ } }, { - "Name": "Cube (28)", - "ObjectId": -10694, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2930, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.3125, @@ -3179,9 +2720,9 @@ } }, { - "Name": "Cube (27)", - "ObjectId": -10696, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2932, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.246999741, @@ -3204,9 +2745,9 @@ } }, { - "Name": "Cube (24)", - "ObjectId": -10698, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2934, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.07060051, @@ -3229,9 +2770,9 @@ } }, { - "Name": "Cube (26)", - "ObjectId": -10700, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2936, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.186700821, @@ -3254,9 +2795,9 @@ } }, { - "Name": "Cube (25)", - "ObjectId": -10702, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2938, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.124200821, @@ -3279,9 +2820,9 @@ } }, { - "Name": "Cube (1)", - "ObjectId": -10704, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2940, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.02933979, @@ -3304,9 +2845,9 @@ } }, { - "Name": "Cube (5)", - "ObjectId": -10706, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2942, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.353500366, @@ -3329,9 +2870,9 @@ } }, { - "Name": "Cube (6)", - "ObjectId": -10708, - "ParentId": -10088, + "Name": "Cube", + "ObjectId": -2944, + "ParentId": -2094, "Position": { "x": 0.0, "y": -0.0319004059, @@ -3354,9 +2895,34 @@ } }, { - "Name": "Glass", - "ObjectId": -10090, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2946, + "ParentId": -2094, + "Position": { + "x": 0.6350002, + "y": -1.8511, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Dead Jump", + "ObjectId": -2096, + "ParentId": -2088, "Position": { "x": 0.0, "y": 9.603552, @@ -3371,8 +2937,8 @@ }, { "Name": "Cube (1)", - "ObjectId": -10766, - "ParentId": -10090, + "ObjectId": -3044, + "ParentId": -2096, "Position": { "x": 0.0, "y": -0.660552, @@ -3396,8 +2962,8 @@ }, { "Name": "Cube (2)", - "ObjectId": -10768, - "ParentId": -10090, + "ObjectId": -3046, + "ParentId": -2096, "Position": { "x": -0.121125817, "y": 0.488556862, @@ -3421,8 +2987,8 @@ }, { "Name": "Cube (3)", - "ObjectId": -10770, - "ParentId": -10090, + "ObjectId": -3048, + "ParentId": -2096, "Position": { "x": -0.21292901, "y": 0.9476023, @@ -3446,8 +3012,8 @@ }, { "Name": "Cube (4)", - "ObjectId": -10772, - "ParentId": -10090, + "ObjectId": -3050, + "ParentId": -2096, "Position": { "x": -0.202102661, "y": 0.876893044, @@ -3471,8 +3037,8 @@ }, { "Name": "Cube (5)", - "ObjectId": -10774, - "ParentId": -10090, + "ObjectId": -3052, + "ParentId": -2096, "Position": { "x": -0.0522156954, "y": 0.9108591, @@ -3496,8 +3062,8 @@ }, { "Name": "Cube (6)", - "ObjectId": -10776, - "ParentId": -10090, + "ObjectId": -3054, + "ParentId": -2096, "Position": { "x": 0.282376766, "y": 0.8001108, @@ -3521,8 +3087,8 @@ }, { "Name": "Cube (7)", - "ObjectId": -10778, - "ParentId": -10090, + "ObjectId": -3056, + "ParentId": -2096, "Position": { "x": -0.08002722, "y": 1.1269846, @@ -3546,8 +3112,8 @@ }, { "Name": "Cube (9)", - "ObjectId": -10780, - "ParentId": -10090, + "ObjectId": -3058, + "ParentId": -2096, "Position": { "x": -0.337755561, "y": 1.15396214, @@ -3571,8 +3137,8 @@ }, { "Name": "Cube (11)", - "ObjectId": -10782, - "ParentId": -10090, + "ObjectId": -3060, + "ParentId": -2096, "Position": { "x": -0.456405759, "y": 1.03210545, @@ -3596,8 +3162,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -10784, - "ParentId": -10090, + "ObjectId": -3062, + "ParentId": -2096, "Position": { "x": -0.961677432, "y": 1.16412449, @@ -3620,9 +3186,34 @@ } }, { - "Name": "Zombie", - "ObjectId": -10092, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -3064, + "ParentId": -2096, + "Position": { + "x": 0.0, + "y": -1.52465153, + "z": -0.6680012 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Zombie Infection", + "ObjectId": -2098, + "ParentId": -2088, "Position": { "x": 13.5960007, "y": 8.0789, @@ -3637,8 +3228,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10216, - "ParentId": -10092, + "ObjectId": -2382, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 1.96399975, @@ -3662,8 +3253,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10218, - "ParentId": -10092, + "ObjectId": -2384, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 1.569499, @@ -3687,8 +3278,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10220, - "ParentId": -10092, + "ObjectId": -2386, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 2.3581, @@ -3712,8 +3303,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -10222, - "ParentId": -10092, + "ObjectId": -2388, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 1.96419907, @@ -3737,8 +3328,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10224, - "ParentId": -10092, + "ObjectId": -2390, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 2.06919956, @@ -3762,8 +3353,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10226, - "ParentId": -10092, + "ObjectId": -2392, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 1.96419907, @@ -3787,8 +3378,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10228, - "ParentId": -10092, + "ObjectId": -2394, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 2.06919956, @@ -3812,8 +3403,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10230, - "ParentId": -10092, + "ObjectId": -2396, + "ParentId": -2098, "Position": { "x": 0.107000351, "y": 1.74469948, @@ -3836,9 +3427,34 @@ } }, { - "Name": "GunGame", - "ObjectId": -10094, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2398, + "ParentId": -2098, + "Position": { + "x": -0.5960007, + "y": 0.0, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Gun Game", + "ObjectId": -2100, + "ParentId": -2088, "Position": { "x": 0.05000019, "y": 10.28, @@ -3853,8 +3469,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10414, - "ParentId": -10094, + "ObjectId": -2620, + "ParentId": -2100, "Position": { "x": -1.0839, "y": 0.2976, @@ -3878,8 +3494,8 @@ }, { "Name": "Cube (4)", - "ObjectId": -10416, - "ParentId": -10094, + "ObjectId": -2622, + "ParentId": -2100, "Position": { "x": -0.8313, "y": 0.0621, @@ -3903,8 +3519,8 @@ }, { "Name": "Cube (8)", - "ObjectId": -10418, - "ParentId": -10094, + "ObjectId": -2624, + "ParentId": -2100, "Position": { "x": 0.0875613242, "y": -0.184064865, @@ -3928,8 +3544,8 @@ }, { "Name": "Cube (9)", - "ObjectId": -10420, - "ParentId": -10094, + "ObjectId": -2626, + "ParentId": -2100, "Position": { "x": 0.234274223, "y": -0.281615257, @@ -3953,8 +3569,8 @@ }, { "Name": "Cube (10)", - "ObjectId": -10422, - "ParentId": -10094, + "ObjectId": -2628, + "ParentId": -2100, "Position": { "x": 0.421461463, "y": -0.2811041, @@ -3978,8 +3594,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10424, - "ParentId": -10094, + "ObjectId": -2630, + "ParentId": -2100, "Position": { "x": 0.556365252, "y": -0.426458359, @@ -4003,8 +3619,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10426, - "ParentId": -10094, + "ObjectId": -2632, + "ParentId": -2100, "Position": { "x": 0.6936631, "y": -0.544868469, @@ -4028,8 +3644,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -10428, - "ParentId": -10094, + "ObjectId": -2634, + "ParentId": -2100, "Position": { "x": 0.09549345, "y": -0.356781, @@ -4053,8 +3669,8 @@ }, { "Name": "Cylinder (4)", - "ObjectId": -10430, - "ParentId": -10094, + "ObjectId": -2636, + "ParentId": -2100, "Position": { "x": -0.158929214, "y": -0.190396309, @@ -4078,8 +3694,8 @@ }, { "Name": "Cylinder (12)", - "ObjectId": -10432, - "ParentId": -10094, + "ObjectId": -2638, + "ParentId": -2100, "Position": { "x": -0.008875836, "y": -0.254058838, @@ -4103,8 +3719,8 @@ }, { "Name": "Cylinder (1)", - "ObjectId": -10434, - "ParentId": -10094, + "ObjectId": -2640, + "ParentId": -2100, "Position": { "x": -1.0839, "y": 0.2976, @@ -4128,8 +3744,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10436, - "ParentId": -10094, + "ObjectId": -2642, + "ParentId": -2100, "Position": { "x": 0.8645, "y": -0.7869, @@ -4153,8 +3769,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -10438, - "ParentId": -10094, + "ObjectId": -2644, + "ParentId": -2100, "Position": { "x": 0.189826325, "y": -0.4293928, @@ -4178,8 +3794,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -10440, - "ParentId": -10094, + "ObjectId": -2646, + "ParentId": -2100, "Position": { "x": 0.0119304173, "y": -0.45081234, @@ -4201,10 +3817,35 @@ "Color": "525252FF" } }, + { + "Name": "Platform", + "ObjectId": -2648, + "ParentId": -2100, + "Position": { + "x": -0.05000019, + "y": -2.2010994, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, { "Name": "Puzzle", - "ObjectId": -10096, - "ParentId": -9886, + "ObjectId": -2102, + "ParentId": -2088, "Position": { "x": -13.73, "y": 9.506, @@ -4219,8 +3860,8 @@ }, { "Name": "Quad", - "ObjectId": -10344, - "ParentId": -10096, + "ObjectId": -2536, + "ParentId": -2102, "Position": { "x": 0.0, "y": 0.0, @@ -4244,8 +3885,8 @@ }, { "Name": "Quad", - "ObjectId": -10346, - "ParentId": -10096, + "ObjectId": -2538, + "ParentId": -2102, "Position": { "x": 0.0, "y": 0.0, @@ -4269,8 +3910,8 @@ }, { "Name": "Quad", - "ObjectId": -10348, - "ParentId": -10096, + "ObjectId": -2540, + "ParentId": -2102, "Position": { "x": 0.0, "y": 0.0, @@ -4294,8 +3935,8 @@ }, { "Name": "Quad", - "ObjectId": -10350, - "ParentId": -10096, + "ObjectId": -2542, + "ParentId": -2102, "Position": { "x": 0.0, "y": 0.6816006, @@ -4319,8 +3960,8 @@ }, { "Name": "Quad", - "ObjectId": -10352, - "ParentId": -10096, + "ObjectId": -2544, + "ParentId": -2102, "Position": { "x": 0.0, "y": 0.6816006, @@ -4344,8 +3985,8 @@ }, { "Name": "Quad", - "ObjectId": -10354, - "ParentId": -10096, + "ObjectId": -2546, + "ParentId": -2102, "Position": { "x": 0.0, "y": 0.6816006, @@ -4369,8 +4010,8 @@ }, { "Name": "Quad", - "ObjectId": -10356, - "ParentId": -10096, + "ObjectId": -2548, + "ParentId": -2102, "Position": { "x": -0.0167999268, "y": 0.6612005, @@ -4394,8 +4035,8 @@ }, { "Name": "Quad", - "ObjectId": -10358, - "ParentId": -10096, + "ObjectId": -2550, + "ParentId": -2102, "Position": { "x": 0.0, "y": 1.35480118, @@ -4419,8 +4060,8 @@ }, { "Name": "Quad", - "ObjectId": -10360, - "ParentId": -10096, + "ObjectId": -2552, + "ParentId": -2102, "Position": { "x": 0.0, "y": 1.35480118, @@ -4444,8 +4085,8 @@ }, { "Name": "Quad", - "ObjectId": -10362, - "ParentId": -10096, + "ObjectId": -2554, + "ParentId": -2102, "Position": { "x": 0.0, "y": 1.35480118, @@ -4468,9 +4109,34 @@ } }, { - "Name": "Boss", - "ObjectId": -10098, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2556, + "ParentId": -2102, + "Position": { + "x": 0.729999542, + "y": -1.42709923, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Boss Battle", + "ObjectId": -2104, + "ParentId": -2088, "Position": { "x": -13.0, "y": 10.063489, @@ -4485,8 +4151,8 @@ }, { "Name": "Cylinder (2)", - "ObjectId": -10236, - "ParentId": -10098, + "ObjectId": -2404, + "ParentId": -2104, "Position": { "x": -0.0340003967, "y": -0.353184968, @@ -4510,8 +4176,8 @@ }, { "Name": "Sphere (1)", - "ObjectId": -10238, - "ParentId": -10098, + "ObjectId": -2406, + "ParentId": -2104, "Position": { "x": -0.0340003967, "y": -0.118185289, @@ -4535,8 +4201,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10240, - "ParentId": -10098, + "ObjectId": -2408, + "ParentId": -2104, "Position": { "x": -0.0340003967, "y": 0.181814969, @@ -4560,8 +4226,8 @@ }, { "Name": "Sphere", - "ObjectId": -10242, - "ParentId": -10098, + "ObjectId": -2410, + "ParentId": -2104, "Position": { "x": -0.0340003967, "y": 0.481815219, @@ -4585,8 +4251,8 @@ }, { "Name": "Cylinder (1)", - "ObjectId": -10244, - "ParentId": -10098, + "ObjectId": -2412, + "ParentId": -2104, "Position": { "x": -0.0340003967, "y": -0.353184968, @@ -4610,8 +4276,8 @@ }, { "Name": "Capsule (1)", - "ObjectId": -10246, - "ParentId": -10098, + "ObjectId": -2414, + "ParentId": -2104, "Position": { "x": 0.350999832, "y": 0.4658154, @@ -4634,9 +4300,34 @@ } }, { - "Name": "Lava", - "ObjectId": -10100, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2416, + "ParentId": -2104, + "Position": { + "x": 0.0, + "y": -1.98458862, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "The floor is LAVA", + "ObjectId": -2106, + "ParentId": -2088, "Position": { "x": -13.73, "y": 9.506, @@ -4651,8 +4342,8 @@ }, { "Name": "Quad", - "ObjectId": -10612, - "ParentId": -10100, + "ObjectId": -2842, + "ParentId": -2106, "Position": { "x": 0.0, "y": 0.0, @@ -4676,8 +4367,8 @@ }, { "Name": "Quad", - "ObjectId": -10614, - "ParentId": -10100, + "ObjectId": -2844, + "ParentId": -2106, "Position": { "x": -0.02159977, "y": 0.129599571, @@ -4701,8 +4392,8 @@ }, { "Name": "Quad", - "ObjectId": -10616, - "ParentId": -10100, + "ObjectId": -2846, + "ParentId": -2106, "Position": { "x": -0.00899982452, "y": 0.6816006, @@ -4726,8 +4417,8 @@ }, { "Name": "Quad", - "ObjectId": -10618, - "ParentId": -10100, + "ObjectId": -2848, + "ParentId": -2106, "Position": { "x": -0.0167999268, "y": 0.6612005, @@ -4751,8 +4442,8 @@ }, { "Name": "Quad", - "ObjectId": -10620, - "ParentId": -10100, + "ObjectId": -2850, + "ParentId": -2106, "Position": { "x": -0.029999733, "y": 1.28040028, @@ -4776,8 +4467,8 @@ }, { "Name": "Quad", - "ObjectId": -10622, - "ParentId": -10100, + "ObjectId": -2852, + "ParentId": -2106, "Position": { "x": 0.0, "y": 1.35480118, @@ -4800,9 +4491,34 @@ } }, { - "Name": "Deathmatch", - "ObjectId": -10102, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2854, + "ParentId": -2106, + "Position": { + "x": 0.729999542, + "y": -1.42709923, + "z": 0.031999588 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Team Death-Match", + "ObjectId": -2108, + "ParentId": -2088, "Position": { "x": -13.0, "y": 8.0789, @@ -4817,8 +4533,8 @@ }, { "Name": "Cylinder (2)", - "ObjectId": -10536, - "ParentId": -10102, + "ObjectId": -2748, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.89871979, @@ -4842,8 +4558,8 @@ }, { "Name": "Cylinder (3)", - "ObjectId": -10538, - "ParentId": -10102, + "ObjectId": -2750, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.36906528, @@ -4867,8 +4583,8 @@ }, { "Name": "Cylinder (4)", - "ObjectId": -10540, - "ParentId": -10102, + "ObjectId": -2752, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 1.954463, @@ -4892,8 +4608,8 @@ }, { "Name": "Cube (1)", - "ObjectId": -10542, - "ParentId": -10102, + "ObjectId": -2754, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 1.87783432, @@ -4917,8 +4633,8 @@ }, { "Name": "Cube (2)", - "ObjectId": -10544, - "ParentId": -10102, + "ObjectId": -2756, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 1.59912872, @@ -4942,8 +4658,8 @@ }, { "Name": "Cube (3)", - "ObjectId": -10546, - "ParentId": -10102, + "ObjectId": -2758, + "ParentId": -2108, "Position": { "x": -0.5185003, "y": 1.73848152, @@ -4967,8 +4683,8 @@ }, { "Name": "Cube (6)", - "ObjectId": -10548, - "ParentId": -10102, + "ObjectId": -2760, + "ParentId": -2108, "Position": { "x": -0.5567503, "y": 1.63431168, @@ -4992,8 +4708,8 @@ }, { "Name": "Cube (7)", - "ObjectId": -10550, - "ParentId": -10102, + "ObjectId": -2762, + "ParentId": -2108, "Position": { "x": -0.5567503, "y": 1.84265137, @@ -5017,8 +4733,8 @@ }, { "Name": "Cylinder (6)", - "ObjectId": -10552, - "ParentId": -10102, + "ObjectId": -2764, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 1.8850193, @@ -5042,8 +4758,8 @@ }, { "Name": "Cylinder (7)", - "ObjectId": -10554, - "ParentId": -10102, + "ObjectId": -2766, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.01596165, @@ -5067,8 +4783,8 @@ }, { "Name": "Cube (9)", - "ObjectId": -10556, - "ParentId": -10102, + "ObjectId": -2768, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.31787586, @@ -5092,8 +4808,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10558, - "ParentId": -10102, + "ObjectId": -2770, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.29153347, @@ -5117,8 +4833,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10560, - "ParentId": -10102, + "ObjectId": -2772, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.241763, @@ -5142,8 +4858,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10562, - "ParentId": -10102, + "ObjectId": -2774, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 2.327444, @@ -5167,8 +4883,8 @@ }, { "Name": "Cylinder (5)", - "ObjectId": -10564, - "ParentId": -10102, + "ObjectId": -2776, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 3.21533585, @@ -5192,8 +4908,8 @@ }, { "Name": "Sphere", - "ObjectId": -10566, - "ParentId": -10102, + "ObjectId": -2778, + "ParentId": -2108, "Position": { "x": -0.6700001, "y": 1.95328617, @@ -5215,10 +4931,35 @@ "Color": "352500FF" } }, + { + "Name": "Platform", + "ObjectId": -2780, + "ParentId": -2108, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, { "Name": "Battle", - "ObjectId": -10104, - "ParentId": -9886, + "ObjectId": -2110, + "ParentId": -2088, "Position": { "x": 13.59, "y": 11.075, @@ -5233,8 +4974,8 @@ }, { "Name": "Cube", - "ObjectId": -10800, - "ParentId": -10104, + "ObjectId": -3096, + "ParentId": -2110, "Position": { "x": 0.0, "y": 0.0, @@ -5258,8 +4999,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10802, - "ParentId": -10104, + "ObjectId": -3098, + "ParentId": -2110, "Position": { "x": 0.0, "y": -0.7779999, @@ -5283,8 +5024,8 @@ }, { "Name": "Cylinder (1)", - "ObjectId": -10804, - "ParentId": -10104, + "ObjectId": -3100, + "ParentId": -2110, "Position": { "x": 0.0, "y": 0.10606575, @@ -5308,8 +5049,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10806, - "ParentId": -10104, + "ObjectId": -3102, + "ParentId": -2110, "Position": { "x": 0.0, "y": -0.10606575, @@ -5333,8 +5074,8 @@ }, { "Name": "Cube (4)", - "ObjectId": -10808, - "ParentId": -10104, + "ObjectId": -3104, + "ParentId": -2110, "Position": { "x": 0.0, "y": 0.0, @@ -5358,8 +5099,8 @@ }, { "Name": "Cube (3)", - "ObjectId": -10810, - "ParentId": -10104, + "ObjectId": -3106, + "ParentId": -2110, "Position": { "x": 0.0, "y": 0.0, @@ -5383,8 +5124,8 @@ }, { "Name": "Cube (2)", - "ObjectId": -10812, - "ParentId": -10104, + "ObjectId": -3108, + "ParentId": -2110, "Position": { "x": 0.0, "y": 0.0, @@ -5408,8 +5149,8 @@ }, { "Name": "Cube (1)", - "ObjectId": -10814, - "ParentId": -10104, + "ObjectId": -3110, + "ParentId": -2110, "Position": { "x": 0.0, "y": 0.0, @@ -5432,9 +5173,34 @@ } }, { - "Name": "Football", - "ObjectId": -10106, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -3112, + "ParentId": -2110, + "Position": { + "x": -0.590000153, + "y": -2.99609947, + "z": 0.8649993 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Soccer", + "ObjectId": -2112, + "ParentId": -2088, "Position": { "x": 12.9900017, "y": 10.769, @@ -5449,8 +5215,8 @@ }, { "Name": "Sphere", - "ObjectId": -10720, - "ParentId": -10106, + "ObjectId": -2964, + "ParentId": -2112, "Position": { "x": 0.0, "y": 0.0, @@ -5473,9 +5239,34 @@ } }, { - "Name": "Line", - "ObjectId": -10108, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2966, + "ParentId": -2112, + "Position": { + "x": 0.00999832153, + "y": -2.69009972, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "DeathLine", + "ObjectId": -2114, + "ParentId": -2088, "Position": { "x": 13.0, "y": 9.553, @@ -5490,8 +5281,8 @@ }, { "Name": "Quad", - "ObjectId": -10758, - "ParentId": -10108, + "ObjectId": -3034, + "ParentId": -2114, "Position": { "x": 0.0, "y": 1.025, @@ -5515,8 +5306,8 @@ }, { "Name": "Quad (1)", - "ObjectId": -10760, - "ParentId": -10108, + "ObjectId": -3036, + "ParentId": -2114, "Position": { "x": 0.0, "y": -0.1696, @@ -5540,8 +5331,8 @@ }, { "Name": "Quad (2)", - "ObjectId": -10762, - "ParentId": -10108, + "ObjectId": -3038, + "ParentId": -2114, "Position": { "x": 0.0, "y": 0.9674, @@ -5564,9 +5355,34 @@ } }, { - "Name": "Knife", - "ObjectId": -10110, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -3040, + "ParentId": -2114, + "Position": { + "x": 0.0, + "y": -1.47410011, + "z": -0.236999512 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Knives of Death", + "ObjectId": -2116, + "ParentId": -2088, "Position": { "x": 13.5475006, "y": 9.628963, @@ -5581,8 +5397,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10336, - "ParentId": -10110, + "ObjectId": -2526, + "ParentId": -2116, "Position": { "x": 0.0, "y": 0.319119453, @@ -5606,8 +5422,8 @@ }, { "Name": "Sphere", - "ObjectId": -10338, - "ParentId": -10110, + "ObjectId": -2528, + "ParentId": -2116, "Position": { "x": 0.0, "y": 1.29524136, @@ -5631,8 +5447,8 @@ }, { "Name": "Cube", - "ObjectId": -10340, - "ParentId": -10110, + "ObjectId": -2530, + "ParentId": -2116, "Position": { "x": -0.0334997177, "y": 0.4634304, @@ -5655,9 +5471,34 @@ } }, { - "Name": "Jail", - "ObjectId": -10112, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2532, + "ParentId": -2116, + "Position": { + "x": -0.5475006, + "y": -1.55006313, + "z": -0.20249939 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Simon's Prison", + "ObjectId": -2118, + "ParentId": -2088, "Position": { "x": 5.0, "y": 10.4980145, @@ -5672,8 +5513,8 @@ }, { "Name": "Cube", - "ObjectId": -10374, - "ParentId": -10112, + "ObjectId": -2576, + "ParentId": -2118, "Position": { "x": 0.024, "y": -0.0629, @@ -5697,8 +5538,8 @@ }, { "Name": "Cube", - "ObjectId": -10376, - "ParentId": -10112, + "ObjectId": -2578, + "ParentId": -2118, "Position": { "x": -1.06, "y": -1.3362, @@ -5722,8 +5563,8 @@ }, { "Name": "Cube", - "ObjectId": -10378, - "ParentId": -10112, + "ObjectId": -2580, + "ParentId": -2118, "Position": { "x": -1.06, "y": -1.3362, @@ -5747,8 +5588,8 @@ }, { "Name": "Cube", - "ObjectId": -10380, - "ParentId": -10112, + "ObjectId": -2582, + "ParentId": -2118, "Position": { "x": -1.06, "y": -1.3362, @@ -5772,8 +5613,8 @@ }, { "Name": "Cube", - "ObjectId": -10382, - "ParentId": -10112, + "ObjectId": -2584, + "ParentId": -2118, "Position": { "x": -1.06, "y": -1.3362, @@ -5797,8 +5638,8 @@ }, { "Name": "Cube", - "ObjectId": -10384, - "ParentId": -10112, + "ObjectId": -2586, + "ParentId": -2118, "Position": { "x": -1.06, "y": -1.3362, @@ -5822,8 +5663,8 @@ }, { "Name": "Cube", - "ObjectId": -10386, - "ParentId": -10112, + "ObjectId": -2588, + "ParentId": -2118, "Position": { "x": 1.06699991, "y": -1.3362, @@ -5847,8 +5688,8 @@ }, { "Name": "Cube", - "ObjectId": -10388, - "ParentId": -10112, + "ObjectId": -2590, + "ParentId": -2118, "Position": { "x": 1.06699991, "y": -1.3362, @@ -5872,8 +5713,8 @@ }, { "Name": "Cube", - "ObjectId": -10390, - "ParentId": -10112, + "ObjectId": -2592, + "ParentId": -2118, "Position": { "x": 1.06699991, "y": -1.3362, @@ -5897,8 +5738,8 @@ }, { "Name": "Cube", - "ObjectId": -10392, - "ParentId": -10112, + "ObjectId": -2594, + "ParentId": -2118, "Position": { "x": 1.06699991, "y": -1.3362, @@ -5922,8 +5763,8 @@ }, { "Name": "Cube", - "ObjectId": -10394, - "ParentId": -10112, + "ObjectId": -2596, + "ParentId": -2118, "Position": { "x": 1.067, "y": -1.3362, @@ -5947,8 +5788,8 @@ }, { "Name": "Cube", - "ObjectId": -10396, - "ParentId": -10112, + "ObjectId": -2598, + "ParentId": -2118, "Position": { "x": -1.06, "y": -1.3362, @@ -5972,8 +5813,8 @@ }, { "Name": "Cube", - "ObjectId": -10398, - "ParentId": -10112, + "ObjectId": -2600, + "ParentId": -2118, "Position": { "x": 1.107, "y": -1.3362, @@ -5996,9 +5837,34 @@ } }, { - "Name": "Zombie2", - "ObjectId": -10114, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2602, + "ParentId": -2118, + "Position": { + "x": 0.0, + "y": -2.419114, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Zombie Survival", + "ObjectId": -2120, + "ParentId": -2088, "Position": { "x": 10.0300007, "y": 8.0789, @@ -6013,8 +5879,8 @@ }, { "Name": "Cube (17)", - "ObjectId": -10448, - "ParentId": -10114, + "ObjectId": -2658, + "ParentId": -2120, "Position": { "x": -1.32499981, "y": 0.563099861, @@ -6038,8 +5904,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10450, - "ParentId": -10114, + "ObjectId": -2660, + "ParentId": -2120, "Position": { "x": 1.25500011, "y": 0.563099861, @@ -6063,8 +5929,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10452, - "ParentId": -10114, + "ObjectId": -2662, + "ParentId": -2120, "Position": { "x": -1.28899956, "y": 1.22610009, @@ -6088,8 +5954,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10454, - "ParentId": -10114, + "ObjectId": -2664, + "ParentId": -2120, "Position": { "x": -1.15499973, "y": 1.06309986, @@ -6113,8 +5979,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10456, - "ParentId": -10114, + "ObjectId": -2666, + "ParentId": -2120, "Position": { "x": -0.875, "y": 1.06309986, @@ -6138,8 +6004,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -10458, - "ParentId": -10114, + "ObjectId": -2668, + "ParentId": -2120, "Position": { "x": -0.595000267, "y": 1.06309986, @@ -6163,8 +6029,8 @@ }, { "Name": "Cube (10)", - "ObjectId": -10460, - "ParentId": -10114, + "ObjectId": -2670, + "ParentId": -2120, "Position": { "x": -0.31499958, "y": 1.06309986, @@ -6188,8 +6054,8 @@ }, { "Name": "Cube (11)", - "ObjectId": -10462, - "ParentId": -10114, + "ObjectId": -2672, + "ParentId": -2120, "Position": { "x": 1.22190011, "y": 0.904899657, @@ -6213,8 +6079,8 @@ }, { "Name": "Cube (8)", - "ObjectId": -10464, - "ParentId": -10114, + "ObjectId": -2674, + "ParentId": -2120, "Position": { "x": 1.08500016, "y": 1.06309986, @@ -6238,8 +6104,8 @@ }, { "Name": "Cube (7)", - "ObjectId": -10466, - "ParentId": -10114, + "ObjectId": -2676, + "ParentId": -2120, "Position": { "x": 0.8050004, "y": 1.06309986, @@ -6263,8 +6129,8 @@ }, { "Name": "Cube (6)", - "ObjectId": -10468, - "ParentId": -10114, + "ObjectId": -2678, + "ParentId": -2120, "Position": { "x": 0.5250006, "y": 1.06309986, @@ -6288,8 +6154,8 @@ }, { "Name": "Cube (5)", - "ObjectId": -10470, - "ParentId": -10114, + "ObjectId": -2680, + "ParentId": -2120, "Position": { "x": 0.2449999, "y": 1.06309986, @@ -6313,8 +6179,8 @@ }, { "Name": "Cube (3)", - "ObjectId": -10472, - "ParentId": -10114, + "ObjectId": -2682, + "ParentId": -2120, "Position": { "x": -0.0349998474, "y": 1.2731, @@ -6338,8 +6204,8 @@ }, { "Name": "Cube (2)", - "ObjectId": -10474, - "ParentId": -10114, + "ObjectId": -2684, + "ParentId": -2120, "Position": { "x": -0.0349998474, "y": 0.8530998, @@ -6363,8 +6229,8 @@ }, { "Name": "Cube (1)", - "ObjectId": -10476, - "ParentId": -10114, + "ObjectId": -2686, + "ParentId": -2120, "Position": { "x": -0.0349998474, "y": 1.06309986, @@ -6388,8 +6254,8 @@ }, { "Name": "Cube", - "ObjectId": -10478, - "ParentId": -10114, + "ObjectId": -2688, + "ParentId": -2120, "Position": { "x": -0.0349998474, "y": 1.06309986, @@ -6413,8 +6279,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10480, - "ParentId": -10114, + "ObjectId": -2690, + "ParentId": -2120, "Position": { "x": -0.859999657, "y": 1.96399975, @@ -6438,8 +6304,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10482, - "ParentId": -10114, + "ObjectId": -2692, + "ParentId": -2120, "Position": { "x": -0.859999657, "y": 1.569499, @@ -6463,8 +6329,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10484, - "ParentId": -10114, + "ObjectId": -2694, + "ParentId": -2120, "Position": { "x": -0.859999657, "y": 2.3581, @@ -6488,8 +6354,8 @@ }, { "Name": "Cube (25)", - "ObjectId": -10486, - "ParentId": -10114, + "ObjectId": -2696, + "ParentId": -2120, "Position": { "x": 0.6918001, "y": 1.86810017, @@ -6513,8 +6379,8 @@ }, { "Name": "Cube (26)", - "ObjectId": -10488, - "ParentId": -10114, + "ObjectId": -2698, + "ParentId": -2120, "Position": { "x": 0.6733999, "y": 1.80560017, @@ -6538,8 +6404,8 @@ }, { "Name": "Cube (24)", - "ObjectId": -10490, - "ParentId": -10114, + "ObjectId": -2700, + "ParentId": -2120, "Position": { "x": 0.72369957, "y": 1.92169952, @@ -6563,8 +6429,8 @@ }, { "Name": "Cube (27)", - "ObjectId": -10492, - "ParentId": -10114, + "ObjectId": -2702, + "ParentId": -2120, "Position": { "x": 0.67179966, "y": 1.74529934, @@ -6588,8 +6454,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10494, - "ParentId": -10114, + "ObjectId": -2704, + "ParentId": -2120, "Position": { "x": 0.869000435, "y": 2.3743, @@ -6613,8 +6479,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -10496, - "ParentId": -10114, + "ObjectId": -2706, + "ParentId": -2120, "Position": { "x": 0.7637005, "y": 1.95769978, @@ -6638,8 +6504,8 @@ }, { "Name": "Cube (17)", - "ObjectId": -10498, - "ParentId": -10114, + "ObjectId": -2708, + "ParentId": -2120, "Position": { "x": 1.03009987, "y": 2.3331995, @@ -6663,8 +6529,8 @@ }, { "Name": "Cube (18)", - "ObjectId": -10500, - "ParentId": -10114, + "ObjectId": -2710, + "ParentId": -2120, "Position": { "x": 1.07079983, "y": 2.2837, @@ -6688,8 +6554,8 @@ }, { "Name": "Cube (24)", - "ObjectId": -10502, - "ParentId": -10114, + "ObjectId": -2712, + "ParentId": -2120, "Position": { "x": 0.8901005, "y": 1.9923, @@ -6713,8 +6579,8 @@ }, { "Name": "Cube (21)", - "ObjectId": -10504, - "ParentId": -10114, + "ObjectId": -2714, + "ParentId": -2120, "Position": { "x": 1.07649994, "y": 2.1194, @@ -6738,8 +6604,8 @@ }, { "Name": "Cube (22)", - "ObjectId": -10506, - "ParentId": -10114, + "ObjectId": -2716, + "ParentId": -2120, "Position": { "x": 1.04399967, "y": 2.054, @@ -6763,8 +6629,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10508, - "ParentId": -10114, + "ObjectId": -2718, + "ParentId": -2120, "Position": { "x": 0.98429966, "y": 2.36469936, @@ -6788,8 +6654,8 @@ }, { "Name": "Cube (19)", - "ObjectId": -10510, - "ParentId": -10114, + "ObjectId": -2720, + "ParentId": -2120, "Position": { "x": 1.08469963, "y": 2.2451, @@ -6813,8 +6679,8 @@ }, { "Name": "Cube (20)", - "ObjectId": -10512, - "ParentId": -10114, + "ObjectId": -2722, + "ParentId": -2120, "Position": { "x": 1.08769989, "y": 2.1721, @@ -6838,8 +6704,8 @@ }, { "Name": "Cube (23)", - "ObjectId": -10514, - "ParentId": -10114, + "ObjectId": -2724, + "ParentId": -2120, "Position": { "x": 1.0176, "y": 2.02719975, @@ -6863,8 +6729,8 @@ }, { "Name": "Cube (33)", - "ObjectId": -10516, - "ParentId": -10114, + "ObjectId": -2726, + "ParentId": -2120, "Position": { "x": 0.8529997, "y": 1.60999966, @@ -6888,8 +6754,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -10518, - "ParentId": -10114, + "ObjectId": -2728, + "ParentId": -2120, "Position": { "x": 0.7276001, "y": 2.34449959, @@ -6913,8 +6779,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -10520, - "ParentId": -10114, + "ObjectId": -2730, + "ParentId": -2120, "Position": { "x": 0.7652998, "y": 2.37059975, @@ -6938,8 +6804,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -10522, - "ParentId": -10114, + "ObjectId": -2732, + "ParentId": -2120, "Position": { "x": 0.6949997, "y": 2.2865, @@ -6963,8 +6829,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -10524, - "ParentId": -10114, + "ObjectId": -2734, + "ParentId": -2120, "Position": { "x": -0.266999245, "y": 1.96419907, @@ -6988,8 +6854,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10526, - "ParentId": -10114, + "ObjectId": -2736, + "ParentId": -2120, "Position": { "x": -0.112999916, "y": 2.06919956, @@ -7013,8 +6879,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10528, - "ParentId": -10114, + "ObjectId": -2738, + "ParentId": -2120, "Position": { "x": 0.345000267, "y": 1.96419907, @@ -7038,8 +6904,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -10530, - "ParentId": -10114, + "ObjectId": -2740, + "ParentId": -2120, "Position": { "x": 0.190999985, "y": 2.06919956, @@ -7063,8 +6929,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10532, - "ParentId": -10114, + "ObjectId": -2742, + "ParentId": -2120, "Position": { "x": 0.03900051, "y": 1.74469948, @@ -7087,9 +6953,34 @@ } }, { - "Name": "HnS", - "ObjectId": -10116, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2744, + "ParentId": -2120, + "Position": { + "x": -0.0300006866, + "y": 0.0, + "z": -0.529001236 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Tag", + "ObjectId": -2122, + "ParentId": -2088, "Position": { "x": -9.927, "y": 10.28, @@ -7104,8 +6995,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -10260, - "ParentId": -10116, + "ObjectId": -2438, + "ParentId": -2122, "Position": { "x": -1.066, "y": -0.0122995377, @@ -7129,8 +7020,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10262, - "ParentId": -10116, + "ObjectId": -2440, + "ParentId": -2122, "Position": { "x": -0.6000004, "y": -0.0122995377, @@ -7154,8 +7045,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10264, - "ParentId": -10116, + "ObjectId": -2442, + "ParentId": -2122, "Position": { "x": -0.8330002, "y": 0.004699707, @@ -7179,8 +7070,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -10266, - "ParentId": -10116, + "ObjectId": -2444, + "ParentId": -2122, "Position": { "x": -0.2329998, "y": -0.0129003525, @@ -7204,8 +7095,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -10268, - "ParentId": -10116, + "ObjectId": -2446, + "ParentId": -2122, "Position": { "x": 0.0, "y": -0.0129003525, @@ -7229,8 +7120,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -10270, - "ParentId": -10116, + "ObjectId": -2448, + "ParentId": -2122, "Position": { "x": 0.2329998, "y": -0.0129003525, @@ -7254,8 +7145,8 @@ }, { "Name": "Cube (25)", - "ObjectId": -10272, - "ParentId": -10116, + "ObjectId": -2450, + "ParentId": -2122, "Position": { "x": 0.9913006, "y": -0.124199867, @@ -7279,8 +7170,8 @@ }, { "Name": "Cube (26)", - "ObjectId": -10274, - "ParentId": -10116, + "ObjectId": -2452, + "ParentId": -2122, "Position": { "x": 1.00970078, "y": -0.186699867, @@ -7304,8 +7195,8 @@ }, { "Name": "Cube (24)", - "ObjectId": -10276, - "ParentId": -10116, + "ObjectId": -2454, + "ParentId": -2122, "Position": { "x": 0.9594002, "y": -0.070599556, @@ -7329,8 +7220,8 @@ }, { "Name": "Cube (27)", - "ObjectId": -10278, - "ParentId": -10116, + "ObjectId": -2456, + "ParentId": -2122, "Position": { "x": 1.01130009, "y": -0.2470007, @@ -7354,8 +7245,8 @@ }, { "Name": "Cube (28)", - "ObjectId": -10280, - "ParentId": -10116, + "ObjectId": -2458, + "ParentId": -2122, "Position": { "x": 0.9963999, "y": -0.3125, @@ -7379,8 +7270,8 @@ }, { "Name": "Cube (29)", - "ObjectId": -10282, - "ParentId": -10116, + "ObjectId": -2460, + "ParentId": -2122, "Position": { "x": 0.973100662, "y": -0.352000237, @@ -7404,8 +7295,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -10284, - "ParentId": -10116, + "ObjectId": -2462, + "ParentId": -2122, "Position": { "x": 0.935500145, "y": -0.3800001, @@ -7429,8 +7320,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -10286, - "ParentId": -10116, + "ObjectId": -2464, + "ParentId": -2122, "Position": { "x": 0.8803005, "y": -0.402899742, @@ -7454,8 +7345,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10288, - "ParentId": -10116, + "ObjectId": -2466, + "ParentId": -2122, "Position": { "x": 0.814100266, "y": 0.381999969, @@ -7479,8 +7370,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -10290, - "ParentId": -10116, + "ObjectId": -2468, + "ParentId": -2122, "Position": { "x": 0.9194002, "y": -0.0346002579, @@ -7504,8 +7395,8 @@ }, { "Name": "Cube (17)", - "ObjectId": -10292, - "ParentId": -10116, + "ObjectId": -2470, + "ParentId": -2122, "Position": { "x": 0.6529999, "y": 0.340899467, @@ -7529,8 +7420,8 @@ }, { "Name": "Cube (18)", - "ObjectId": -10294, - "ParentId": -10116, + "ObjectId": -2472, + "ParentId": -2122, "Position": { "x": 0.6122999, "y": 0.291399956, @@ -7554,8 +7445,8 @@ }, { "Name": "Cube (24)", - "ObjectId": -10296, - "ParentId": -10116, + "ObjectId": -2474, + "ParentId": -2122, "Position": { "x": 0.7930002, "y": 0.0, @@ -7579,8 +7470,8 @@ }, { "Name": "Cube (21)", - "ObjectId": -10298, - "ParentId": -10116, + "ObjectId": -2476, + "ParentId": -2122, "Position": { "x": 0.606600761, "y": 0.127099991, @@ -7604,8 +7495,8 @@ }, { "Name": "Cube (22)", - "ObjectId": -10300, - "ParentId": -10116, + "ObjectId": -2478, + "ParentId": -2122, "Position": { "x": 0.6391001, "y": 0.0616998672, @@ -7629,8 +7520,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -10302, - "ParentId": -10116, + "ObjectId": -2480, + "ParentId": -2122, "Position": { "x": 0.6988001, "y": 0.37239933, @@ -7654,8 +7545,8 @@ }, { "Name": "Cube (19)", - "ObjectId": -10304, - "ParentId": -10116, + "ObjectId": -2482, + "ParentId": -2122, "Position": { "x": 0.5984001, "y": 0.2528, @@ -7679,8 +7570,8 @@ }, { "Name": "Cube (20)", - "ObjectId": -10306, - "ParentId": -10116, + "ObjectId": -2484, + "ParentId": -2122, "Position": { "x": 0.595399857, "y": 0.179800034, @@ -7704,8 +7595,8 @@ }, { "Name": "Cube (23)", - "ObjectId": -10308, - "ParentId": -10116, + "ObjectId": -2486, + "ParentId": -2122, "Position": { "x": 0.665500641, "y": 0.03489971, @@ -7729,8 +7620,8 @@ }, { "Name": "Cube (33)", - "ObjectId": -10310, - "ParentId": -10116, + "ObjectId": -2488, + "ParentId": -2122, "Position": { "x": 0.7663002, "y": -0.406899452, @@ -7754,8 +7645,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -10312, - "ParentId": -10116, + "ObjectId": -2490, + "ParentId": -2122, "Position": { "x": 0.5892, "y": -0.3327999, @@ -7779,8 +7670,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -10314, - "ParentId": -10116, + "ObjectId": -2492, + "ParentId": -2122, "Position": { "x": 0.6669998, "y": -0.4038, @@ -7804,8 +7695,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -10316, - "ParentId": -10116, + "ObjectId": -2494, + "ParentId": -2122, "Position": { "x": 0.6293001, "y": -0.377699852, @@ -7829,8 +7720,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -10318, - "ParentId": -10116, + "ObjectId": -2496, + "ParentId": -2122, "Position": { "x": 0.9555006, "y": 0.3522005, @@ -7854,8 +7745,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -10320, - "ParentId": -10116, + "ObjectId": -2498, + "ParentId": -2122, "Position": { "x": 0.91779995, "y": 0.3782997, @@ -7879,8 +7770,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -10322, - "ParentId": -10116, + "ObjectId": -2500, + "ParentId": -2122, "Position": { "x": 0.9956007, "y": 0.3072996, @@ -7903,9 +7794,34 @@ } }, { - "Name": "DeathParty", - "ObjectId": -10118, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2502, + "ParentId": -2122, + "Position": { + "x": -0.0729999542, + "y": -2.2010994, + "z": -0.7200031 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Airstrike Party", + "ObjectId": -2124, + "ParentId": -2088, "Position": { "x": -5.0, "y": 10.6, @@ -7920,8 +7836,8 @@ }, { "Name": "Sphere", - "ObjectId": -10628, - "ParentId": -10118, + "ObjectId": -2860, + "ParentId": -2124, "Position": { "x": 0.0, "y": 0.0, @@ -7945,8 +7861,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10630, - "ParentId": -10118, + "ObjectId": -2862, + "ParentId": -2124, "Position": { "x": -0.0254993439, "y": 0.418000221, @@ -7970,8 +7886,8 @@ }, { "Name": "Cube", - "ObjectId": -10632, - "ParentId": -10118, + "ObjectId": -2864, + "ParentId": -2124, "Position": { "x": 0.528500557, "y": 0.1409998, @@ -7995,8 +7911,8 @@ }, { "Name": "Cube", - "ObjectId": -10634, - "ParentId": -10118, + "ObjectId": -2866, + "ParentId": -2124, "Position": { "x": -0.0209999084, "y": 0.7340002, @@ -8020,8 +7936,8 @@ }, { "Name": "Cube", - "ObjectId": -10636, - "ParentId": -10118, + "ObjectId": -2868, + "ParentId": -2124, "Position": { "x": 0.3720007, "y": 0.5475006, @@ -8045,8 +7961,8 @@ }, { "Name": "Cube", - "ObjectId": -10638, - "ParentId": -10118, + "ObjectId": -2870, + "ParentId": -2124, "Position": { "x": -0.0418000221, "y": 0.881500244, @@ -8068,10 +7984,35 @@ "Color": "000000FF" } }, + { + "Name": "Platform", + "ObjectId": -2872, + "ParentId": -2124, + "Position": { + "x": 0.0, + "y": -2.5211, + "z": 0.0240001678 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, { "Name": "FallDown", - "ObjectId": -10120, - "ParentId": -9886, + "ObjectId": -2126, + "ParentId": -2088, "Position": { "x": 5.0, "y": 10.2261181, @@ -8086,8 +8027,8 @@ }, { "Name": "Quad", - "ObjectId": -10402, - "ParentId": -10120, + "ObjectId": -2606, + "ParentId": -2126, "Position": { "x": 0.0, "y": 0.0, @@ -8111,8 +8052,8 @@ }, { "Name": "Quad (1)", - "ObjectId": -10404, - "ParentId": -10120, + "ObjectId": -2608, + "ParentId": -2126, "Position": { "x": 0.0, "y": 0.0, @@ -8136,8 +8077,8 @@ }, { "Name": "Quad (2)", - "ObjectId": -10406, - "ParentId": -10120, + "ObjectId": -2610, + "ParentId": -2126, "Position": { "x": 0.0, "y": 0.0, @@ -8161,8 +8102,8 @@ }, { "Name": "Quad (3)", - "ObjectId": -10408, - "ParentId": -10120, + "ObjectId": -2612, + "ParentId": -2126, "Position": { "x": 0.0, "y": 0.0, @@ -8185,9 +8126,34 @@ } }, { - "Name": "Zombie3", - "ObjectId": -10122, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2614, + "ParentId": -2126, + "Position": { + "x": 0.0, + "y": -2.14721775, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Zombie Escape", + "ObjectId": -2128, + "ParentId": -2088, "Position": { "x": 10.0300007, "y": 8.0789, @@ -8202,8 +8168,8 @@ }, { "Name": "Z", - "ObjectId": -10644, - "ParentId": -10122, + "ObjectId": -2878, + "ParentId": -2128, "Position": { "x": 0.859999657, "y": 1.97709942, @@ -8218,8 +8184,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -11298, - "ParentId": -10644, + "ObjectId": -3290, + "ParentId": -2878, "Position": { "x": 0.0, "y": -0.01309998, @@ -8243,8 +8209,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -11300, - "ParentId": -10644, + "ObjectId": -3292, + "ParentId": -2878, "Position": { "x": 0.0, "y": -0.4076, @@ -8268,8 +8234,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -11302, - "ParentId": -10644, + "ObjectId": -3294, + "ParentId": -2878, "Position": { "x": 0.0, "y": 0.381, @@ -8293,8 +8259,8 @@ }, { "Name": "M", - "ObjectId": -10646, - "ParentId": -10122, + "ObjectId": -2880, + "ParentId": -2128, "Position": { "x": -0.0410003662, "y": 1.97709942, @@ -8309,8 +8275,8 @@ }, { "Name": "Cube (12)", - "ObjectId": -11330, - "ParentId": -10646, + "ObjectId": -3300, + "ParentId": -2880, "Position": { "x": 0.308, "y": -0.012900006, @@ -8334,8 +8300,8 @@ }, { "Name": "Cube (14)", - "ObjectId": -11332, - "ParentId": -10646, + "ObjectId": -3302, + "ParentId": -2880, "Position": { "x": 0.154, "y": 0.0920999944, @@ -8359,8 +8325,8 @@ }, { "Name": "Cube (13)", - "ObjectId": -11334, - "ParentId": -10646, + "ObjectId": -3304, + "ParentId": -2880, "Position": { "x": -0.304, "y": -0.012900006, @@ -8384,8 +8350,8 @@ }, { "Name": "Cube (15)", - "ObjectId": -11336, - "ParentId": -10646, + "ObjectId": -3306, + "ParentId": -2880, "Position": { "x": -0.149999991, "y": 0.0920999944, @@ -8409,8 +8375,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -11338, - "ParentId": -10646, + "ObjectId": -3308, + "ParentId": -2880, "Position": { "x": 0.002, "y": -0.2324, @@ -8434,8 +8400,8 @@ }, { "Name": "3", - "ObjectId": -10648, - "ParentId": -10122, + "ObjectId": -2882, + "ParentId": -2128, "Position": { "x": -0.888, "y": 1.99699974, @@ -8450,8 +8416,8 @@ }, { "Name": "Cube (25)", - "ObjectId": -11752, - "ParentId": -10648, + "ObjectId": -3490, + "ParentId": -2882, "Position": { "x": -0.1849, "y": -0.1269, @@ -8475,8 +8441,8 @@ }, { "Name": "Cube (26)", - "ObjectId": -11754, - "ParentId": -10648, + "ObjectId": -3492, + "ParentId": -2882, "Position": { "x": -0.2033, "y": -0.1894, @@ -8500,8 +8466,8 @@ }, { "Name": "Cube (24)", - "ObjectId": -11756, - "ParentId": -10648, + "ObjectId": -3494, + "ParentId": -2882, "Position": { "x": -0.153, "y": -0.073300004, @@ -8525,8 +8491,8 @@ }, { "Name": "Cube (27)", - "ObjectId": -11758, - "ParentId": -10648, + "ObjectId": -3496, + "ParentId": -2882, "Position": { "x": -0.2049, "y": -0.2497, @@ -8550,8 +8516,8 @@ }, { "Name": "Cube (28)", - "ObjectId": -11760, - "ParentId": -10648, + "ObjectId": -3498, + "ParentId": -2882, "Position": { "x": -0.19, "y": -0.3152, @@ -8575,8 +8541,8 @@ }, { "Name": "Cube (29)", - "ObjectId": -11762, - "ParentId": -10648, + "ObjectId": -3500, + "ParentId": -2882, "Position": { "x": -0.1667, "y": -0.3547, @@ -8600,8 +8566,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -11764, - "ParentId": -10648, + "ObjectId": -3502, + "ParentId": -2882, "Position": { "x": -0.1291, "y": -0.3827, @@ -8625,8 +8591,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -11766, - "ParentId": -10648, + "ObjectId": -3504, + "ParentId": -2882, "Position": { "x": -0.0739, "y": -0.405599982, @@ -8650,8 +8616,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -11768, - "ParentId": -10648, + "ObjectId": -3506, + "ParentId": -2882, "Position": { "x": -0.113000005, "y": -0.0373, @@ -8675,8 +8641,8 @@ }, { "Name": "Cube (33)", - "ObjectId": -11770, - "ParentId": -10648, + "ObjectId": -3508, + "ParentId": -2882, "Position": { "x": 0.0401, "y": -0.4096, @@ -8700,8 +8666,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -11772, - "ParentId": -10648, + "ObjectId": -3510, + "ParentId": -2882, "Position": { "x": 0.2172, "y": -0.335499972, @@ -8725,8 +8691,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -11774, - "ParentId": -10648, + "ObjectId": -3512, + "ParentId": -2882, "Position": { "x": 0.1394, "y": -0.4065, @@ -8750,8 +8716,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -11776, - "ParentId": -10648, + "ObjectId": -3514, + "ParentId": -2882, "Position": { "x": 0.1771, "y": -0.380399972, @@ -8775,8 +8741,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -11778, - "ParentId": -10648, + "ObjectId": -3516, + "ParentId": -2882, "Position": { "x": 0.0077, "y": 0.3793, @@ -8800,8 +8766,8 @@ }, { "Name": "Cube (17)", - "ObjectId": -11780, - "ParentId": -10648, + "ObjectId": -3518, + "ParentId": -2882, "Position": { "x": -0.1534, "y": 0.3382, @@ -8825,8 +8791,8 @@ }, { "Name": "Cube (18)", - "ObjectId": -11782, - "ParentId": -10648, + "ObjectId": -3520, + "ParentId": -2882, "Position": { "x": -0.1941, "y": 0.2887, @@ -8850,8 +8816,8 @@ }, { "Name": "Cube (24)", - "ObjectId": -11784, - "ParentId": -10648, + "ObjectId": -3522, + "ParentId": -2882, "Position": { "x": -0.042, "y": -0.00270000054, @@ -8875,8 +8841,8 @@ }, { "Name": "Cube (21)", - "ObjectId": -11786, - "ParentId": -10648, + "ObjectId": -3524, + "ParentId": -2882, "Position": { "x": -0.1998, "y": 0.12439999, @@ -8900,8 +8866,8 @@ }, { "Name": "Cube (22)", - "ObjectId": -11788, - "ParentId": -10648, + "ObjectId": -3526, + "ParentId": -2882, "Position": { "x": -0.1673, "y": 0.059, @@ -8925,8 +8891,8 @@ }, { "Name": "Cube (16)", - "ObjectId": -11790, - "ParentId": -10648, + "ObjectId": -3528, + "ParentId": -2882, "Position": { "x": -0.107599996, "y": 0.3697, @@ -8950,8 +8916,8 @@ }, { "Name": "Cube (19)", - "ObjectId": -11792, - "ParentId": -10648, + "ObjectId": -3530, + "ParentId": -2882, "Position": { "x": -0.208, "y": 0.2501, @@ -8975,8 +8941,8 @@ }, { "Name": "Cube (20)", - "ObjectId": -11794, - "ParentId": -10648, + "ObjectId": -3532, + "ParentId": -2882, "Position": { "x": -0.21100001, "y": 0.177099988, @@ -9000,8 +8966,8 @@ }, { "Name": "Cube (23)", - "ObjectId": -11796, - "ParentId": -10648, + "ObjectId": -3534, + "ParentId": -2882, "Position": { "x": -0.1409, "y": 0.0321999975, @@ -9025,8 +8991,8 @@ }, { "Name": "Cube (30)", - "ObjectId": -11798, - "ParentId": -10648, + "ObjectId": -3536, + "ParentId": -2882, "Position": { "x": 0.1491, "y": 0.3495, @@ -9050,8 +9016,8 @@ }, { "Name": "Cube (31)", - "ObjectId": -11800, - "ParentId": -10648, + "ObjectId": -3538, + "ParentId": -2882, "Position": { "x": 0.1114, "y": 0.3756, @@ -9075,8 +9041,8 @@ }, { "Name": "Cube (32)", - "ObjectId": -11802, - "ParentId": -10648, + "ObjectId": -3540, + "ParentId": -2882, "Position": { "x": 0.189199984, "y": 0.3046, @@ -9099,9 +9065,34 @@ } }, { - "Name": "FinishWay", - "ObjectId": -10124, - "ParentId": -9886, + "Name": "Platform", + "ObjectId": -2884, + "ParentId": -2128, + "Position": { + "x": -0.0300006866, + "y": 0.0, + "z": 0.23500061 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } + }, + { + "Name": "Race", + "ObjectId": -2130, + "ParentId": -2088, "Position": { "x": -10.0, "y": 10.54, @@ -9116,8 +9107,8 @@ }, { "Name": "Cylinder", - "ObjectId": -10594, - "ParentId": -10124, + "ObjectId": -2814, + "ParentId": -2130, "Position": { "x": 0.0, "y": 0.0, @@ -9141,8 +9132,8 @@ }, { "Name": "Cylinder (1)", - "ObjectId": -10596, - "ParentId": -10124, + "ObjectId": -2816, + "ParentId": -2130, "Position": { "x": 0.0, "y": 0.0, @@ -9166,8 +9157,8 @@ }, { "Name": "Cylinder (2)", - "ObjectId": -10598, - "ParentId": -10124, + "ObjectId": -2818, + "ParentId": -2130, "Position": { "x": 0.0152997971, "y": 0.0, @@ -9188,6 +9179,31 @@ "PrimitiveType": 2, "Color": "FF1A00FF" } + }, + { + "Name": "Platform", + "ObjectId": -2820, + "ParentId": -2130, + "Position": { + "x": 0.0, + "y": -2.46109962, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.5, + "y": 0.127054334, + "z": 1.5 + }, + "BlockType": 1, + "Properties": { + "PrimitiveType": 2, + "Color": "464646FF" + } } ] } \ No newline at end of file