From f76a087e916f27f368c4066ad066d715e47b914c Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 26 Apr 2020 15:44:20 -0500 Subject: [PATCH 01/73] Add meal recipe prototype class and yaml file. Add bare bones MicrowaveComponent. --- .../Kitchen/KitchenMicrowaveComponent.cs | 34 +++++++++++++ .../Kitchen/MicrowaveMealRecipePrototype.cs | 51 +++++++++++++++++++ Resources/Prototypes/Kitchen/meal_recipes.yml | 7 +++ 3 files changed, 92 insertions(+) create mode 100644 Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs create mode 100644 Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs create mode 100644 Resources/Prototypes/Kitchen/meal_recipes.yml diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs new file mode 100644 index 0000000000..a997471845 --- /dev/null +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -0,0 +1,34 @@ +using Content.Server.GameObjects.Components.Sound; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.Audio; +using Robust.Server.GameObjects; +using Robust.Shared.Audio; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Kitchen +{ + [RegisterComponent] + + public class KitchenMicrowaveComponent : Component, IActivate + { + +#pragma warning disable 649 + [Dependency] private readonly IPrototypeManager _prototypeManager; +#pragma warning restore 649 + + public override string Name => "Microwave"; + + public void Activate(ActivateEventArgs eventArgs) + { + + } + } +} diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs new file mode 100644 index 0000000000..d20d63025b --- /dev/null +++ b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Robust.Shared.Localization; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Shared.Kitchen +{ + /// + /// A recipe for space microwaves. + /// + + [Prototype("microwaveMealRecipe")] + + public class FoodRecipe : IPrototype, IIndexedPrototype + { + + public string ID {get; private set;} + public string Name {get; private set;} + + public string Description {get; private set;} + + public Dictionary Ingredients {get; private set;} + + private const char Seperator = ','; + + public void LoadFrom(YamlMappingNode mapping) + { + ID = mapping.GetNode("id").ToString(); + Name = Loc.GetString(mapping.GetNode("name").ToString()); + Description = Loc.GetString(mapping.GetNode("description").ToString()); + if(mapping.TryGetNode("ingredients", out YamlSequenceNode tempDict)) + { + Ingredients = new Dictionary(); + foreach (var node in tempDict.Children) + { + var pair = node.ToString(); + if (pair == null) continue; + + var split = pair.Split(Seperator); + var ingnName = split[0]; + if (int.TryParse(split[1], out var amt)) Ingredients.Add(ingnName, amt); + + } + } + + } + } +} diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml new file mode 100644 index 0000000000..4082dad6eb --- /dev/null +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -0,0 +1,7 @@ +- type: microwaveMealRecipe + id: RecipeBurger + name: "Burger" + description: "A burger, in space." + ingredients: + - "Flour,15" + - "Meat,5" From 7e4d4bb1d4723d3a8defc07362f4ed52ed149a25 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 26 Apr 2020 23:14:02 -0500 Subject: [PATCH 02/73] Reformat the way recipe prototypes work to something sensible. More work on Microwave component. --- Content.Client/EntryPoint.cs | 1 + .../Kitchen/KitchenMicrowaveComponent.cs | 113 +++++++++++++++++- .../Kitchen/MicrowaveMealRecipePrototype.cs | 24 ++-- Resources/Prototypes/Entities/kitchen.yml | 30 +++++ Resources/Prototypes/Kitchen/meal_recipes.yml | 20 +++- 5 files changed, 160 insertions(+), 28 deletions(-) create mode 100644 Resources/Prototypes/Entities/kitchen.yml diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index c8ab1376c7..35fb7b7748 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -143,6 +143,7 @@ namespace Content.Client "Bucket", "Puddle", "CanSpill", + "Microwave" }; foreach (var ignoreName in registerIgnore) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index a997471845..13f2c36411 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -1,34 +1,135 @@ +using System.Collections.Generic; using Content.Server.GameObjects.Components.Sound; using Content.Server.GameObjects.EntitySystems; +using Content.Server.GameObjects.Components; using Content.Shared.Audio; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Robust.Shared.Serialization; -using Robust.Shared.Utility; using Robust.Shared.ViewVariables; +using Content.Server.GameObjects.Components.Chemistry; +using Content.Shared.Chemistry; +using Robust.Shared.Serialization; +using Robust.Shared.Interfaces.GameObjects; +using Content.Shared.Kitchen; namespace Content.Server.GameObjects.Components.Kitchen { [RegisterComponent] - + [ComponentReference(typeof(IActivate))] public class KitchenMicrowaveComponent : Component, IActivate { #pragma warning disable 649 [Dependency] private readonly IPrototypeManager _prototypeManager; + [Dependency] private readonly IEntityManager _entityManager; #pragma warning restore 649 public override string Name => "Microwave"; - public void Activate(ActivateEventArgs eventArgs) + private AppearanceComponent _appearanceComponent; + + [ViewVariables] + private string _useSound; + [ViewVariables] + private string _outputPrototype; + [ViewVariables] + private SolutionComponent _contents; + + private static List _allRecipes; + + public override void ExposeData(ObjectSerializer serializer) { + base.ExposeData(serializer); + if(_allRecipes == null) + { + _allRecipes = new List(); + foreach (var recipe in _prototypeManager.EnumeratePrototypes()) + { + + _allRecipes.Add(recipe); + + } + _allRecipes.Sort(new RecipeComparer()); + } } + + private class RecipeComparer : IComparer + { + int IComparer.Compare(MicrowaveMealRecipePrototype x, MicrowaveMealRecipePrototype y) + { + if(x == null || y == null) + { + return 0; + } + + if(x.Ingredients.Count < y.Ingredients.Count) + { + return 1; + } + + return 0; + } + } + + public override void Initialize() + { + base.Initialize(); + if (_contents == null) + { + if (Owner.TryGetComponent(out SolutionComponent solutionComponent)) + { + _contents = solutionComponent; + } + else + { + _contents = Owner.AddComponent(); + } + } + } + + void IActivate.Activate(ActivateEventArgs eventArgs) + { + if(_contents.ReagentList.Count > 0) + { + DetermineRecipe(); + } + + } + + private void DetermineRecipe() + { + foreach (var r in _allRecipes) + { + if(CheckReagents(r)) + { + var outputFromRecipe = r.OutPutPrototype; + _entityManager.SpawnEntity(outputFromRecipe, Owner.Transform.GridPosition); + } + } + } + + private bool CheckReagents(MicrowaveMealRecipePrototype recipe) + { + foreach(var ingredient in recipe.Ingredients) + { + var ingName = ingredient.Key.ToString(); + var ingQuantity = ingredient.Value; + if (!_contents.ContainsReagent(ingName, out var amt) && amt != ingQuantity) return false; + _contents.TryRemoveReagent(ingName, ReagentUnit.New(ingQuantity)); + + //This doesnt work. + + } + return true; + + } + + + } } diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs index d20d63025b..c0804a7530 100644 --- a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs @@ -14,35 +14,25 @@ namespace Content.Shared.Kitchen [Prototype("microwaveMealRecipe")] - public class FoodRecipe : IPrototype, IIndexedPrototype + public class MicrowaveMealRecipePrototype : IPrototype, IIndexedPrototype { public string ID {get; private set;} public string Name {get; private set;} - public string Description {get; private set;} - - public Dictionary Ingredients {get; private set;} - - private const char Seperator = ','; - + public string OutPutPrototype { get; private set; } + public Dictionary Ingredients {get; private set;} public void LoadFrom(YamlMappingNode mapping) { ID = mapping.GetNode("id").ToString(); Name = Loc.GetString(mapping.GetNode("name").ToString()); - Description = Loc.GetString(mapping.GetNode("description").ToString()); - if(mapping.TryGetNode("ingredients", out YamlSequenceNode tempDict)) + OutPutPrototype = mapping.GetNode("output").ToString(); + if(mapping.TryGetNode("ingredients", out YamlMappingNode ingDict)) { Ingredients = new Dictionary(); - foreach (var node in tempDict.Children) + foreach (var kvp in ingDict.Children) { - var pair = node.ToString(); - if (pair == null) continue; - - var split = pair.Split(Seperator); - var ingnName = split[0]; - if (int.TryParse(split[1], out var amt)) Ingredients.Add(ingnName, amt); - + Ingredients.Add(kvp.Key.ToString(), kvp.Value.AsInt()); } } diff --git a/Resources/Prototypes/Entities/kitchen.yml b/Resources/Prototypes/Entities/kitchen.yml new file mode 100644 index 0000000000..a3daf036b4 --- /dev/null +++ b/Resources/Prototypes/Entities/kitchen.yml @@ -0,0 +1,30 @@ +- type: entity + id: KitchenMicrowave + name: Microwave + description: It's magic. + components: + - type: Microwave + - type: Clickable + - type: InteractionOutline + - type: Solution + maxVol: 100 + caps: 1 + + - type: Collidable + shapes: + - !type:PhysShapeAabb + bounds: "-0.5,0,0.5,1" + layer: 15 + IsScrapingFloor: true + - type: Sprite + netsync: false + sprite: Buildings/medical_scanner.rsi + layers: + - state: scanner_open + map: ["enum.MedicalScannerVisualLayers.Machine"] + - state: scanner_terminal_blue + map: ["enum.MedicalScannerVisualLayers.Terminal"] + - type: PowerDevice + - type: Icon + sprite: Buildings/medical_scanner.rsi + state: scanner_open diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 4082dad6eb..2b088ed8be 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -1,7 +1,17 @@ - type: microwaveMealRecipe - id: RecipeBurger - name: "Burger" - description: "A burger, in space." + id: RecipeCheeseburger + name: "Cheeseburger Recipe" + output: FoodCheeseburger ingredients: - - "Flour,15" - - "Meat,5" + chem.H2O: 15 + chem.Nutriment: 5 + +- type: microwaveMealRecipe + id: RecipeFlashlight + name: "Flashlight Recipe" + output: FlashlightLantern + ingredients: + chem.H2O: 15 + chem.Nutriment: 20 + chem.Glucose: 5 + From 24842418c326d4427e0cbe43b4eb526a1bc281ea Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Mon, 27 Apr 2020 00:27:25 -0500 Subject: [PATCH 03/73] Rewrite recipe prototype. Fix comparer in microwavecomponent. --- .../Kitchen/KitchenMicrowaveComponent.cs | 20 +++++++++---- .../Kitchen/MicrowaveMealRecipePrototype.cs | 30 +++++++++---------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 13f2c36411..e120a3e43e 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -67,11 +67,16 @@ namespace Content.Server.GameObjects.Components.Kitchen return 0; } - if(x.Ingredients.Count < y.Ingredients.Count) + if (x.Ingredients.Count < y.Ingredients.Count) { return 1; } + if (x.Ingredients.Count > y.Ingredients.Count) + { + return -1; + } + return 0; } } @@ -109,7 +114,9 @@ namespace Content.Server.GameObjects.Components.Kitchen { var outputFromRecipe = r.OutPutPrototype; _entityManager.SpawnEntity(outputFromRecipe, Owner.Transform.GridPosition); + return; } + } } @@ -119,13 +126,14 @@ namespace Content.Server.GameObjects.Components.Kitchen { var ingName = ingredient.Key.ToString(); var ingQuantity = ingredient.Value; - if (!_contents.ContainsReagent(ingName, out var amt) && amt != ingQuantity) return false; - _contents.TryRemoveReagent(ingName, ReagentUnit.New(ingQuantity)); - - //This doesnt work. + if (_contents.ContainsReagent(ingName, out var amt) && amt >= ingQuantity) + { + _contents.TryRemoveReagent(ingName, ReagentUnit.New(ingQuantity)); + return true; + } } - return true; + return false; } diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs index c0804a7530..7b93cbbb3e 100644 --- a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using Robust.Shared.Localization; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; @@ -17,25 +18,24 @@ namespace Content.Shared.Kitchen public class MicrowaveMealRecipePrototype : IPrototype, IIndexedPrototype { - public string ID {get; private set;} - public string Name {get; private set;} + private string _id; + private string _name; + private string _output; + private Dictionary _ingredients; + + public string ID => _id; + public string Name => Loc.GetString(_name); + public string OutPutPrototype => _output; + public IReadOnlyDictionary Ingredients => _ingredients; - public string OutPutPrototype { get; private set; } - public Dictionary Ingredients {get; private set;} public void LoadFrom(YamlMappingNode mapping) { - ID = mapping.GetNode("id").ToString(); - Name = Loc.GetString(mapping.GetNode("name").ToString()); - OutPutPrototype = mapping.GetNode("output").ToString(); - if(mapping.TryGetNode("ingredients", out YamlMappingNode ingDict)) - { - Ingredients = new Dictionary(); - foreach (var kvp in ingDict.Children) - { - Ingredients.Add(kvp.Key.ToString(), kvp.Value.AsInt()); - } - } + var serializer = YamlObjectSerializer.NewReader(mapping); + serializer.DataField(ref _id, "id", string.Empty); + serializer.DataField(ref _name, "name", string.Empty); + serializer.DataField(ref _output, "output", string.Empty); + serializer.DataField(ref _ingredients, "ingredients", new Dictionary()); } } } From d0f18b2f66f5b1a2d49266f79b9a654a17ff2914 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Tue, 28 Apr 2020 19:15:43 -0500 Subject: [PATCH 04/73] Add Eris microwave RSI. Cleaned up the Microwave component code. --- .../Kitchen/KitchenMicrowaveComponent.cs | 25 +++++++----------- Resources/Prototypes/Entities/kitchen.yml | 12 +++------ .../Textures/Objects/Kitchen/microwave.dmi | Bin 0 -> 2309 bytes .../Objects/Kitchen/microwave.rsi/meta.json | 1 + .../Objects/Kitchen/microwave.rsi/mw.png | Bin 0 -> 636 bytes .../Objects/Kitchen/microwave.rsi/mw0.png | Bin 0 -> 614 bytes .../Objects/Kitchen/microwave.rsi/mw1.png | Bin 0 -> 825 bytes .../Objects/Kitchen/microwave.rsi/mwb.png | Bin 0 -> 1159 bytes .../Kitchen/microwave.rsi/mwbloody.png | Bin 0 -> 824 bytes .../Kitchen/microwave.rsi/mwbloody0.png | Bin 0 -> 824 bytes .../Kitchen/microwave.rsi/mwbloody1.png | Bin 0 -> 1165 bytes .../Kitchen/microwave.rsi/mwbloodyo.png | Bin 0 -> 1306 bytes .../Objects/Kitchen/microwave.rsi/mwo.png | Bin 0 -> 1095 bytes 13 files changed, 15 insertions(+), 23 deletions(-) create mode 100644 Resources/Textures/Objects/Kitchen/microwave.dmi create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mw.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mw0.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mw1.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mwb.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloody.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloody0.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloody1.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloodyo.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mwo.png diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index e120a3e43e..b3a9927a38 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -101,26 +101,21 @@ namespace Content.Server.GameObjects.Components.Kitchen { if(_contents.ReagentList.Count > 0) { - DetermineRecipe(); - } - - } - - private void DetermineRecipe() - { - foreach (var r in _allRecipes) - { - if(CheckReagents(r)) + foreach (var r in _allRecipes) { - var outputFromRecipe = r.OutPutPrototype; - _entityManager.SpawnEntity(outputFromRecipe, Owner.Transform.GridPosition); - return; - } + if (CanSatisfyRecipe(r)) + { + var outputFromRecipe = r.OutPutPrototype; + _entityManager.SpawnEntity(outputFromRecipe, Owner.Transform.GridPosition); + return; + } + } } + } - private bool CheckReagents(MicrowaveMealRecipePrototype recipe) + private bool CanSatisfyRecipe(MicrowaveMealRecipePrototype recipe) { foreach(var ingredient in recipe.Ingredients) { diff --git a/Resources/Prototypes/Entities/kitchen.yml b/Resources/Prototypes/Entities/kitchen.yml index a3daf036b4..d7d9f9803b 100644 --- a/Resources/Prototypes/Entities/kitchen.yml +++ b/Resources/Prototypes/Entities/kitchen.yml @@ -18,13 +18,9 @@ IsScrapingFloor: true - type: Sprite netsync: false - sprite: Buildings/medical_scanner.rsi - layers: - - state: scanner_open - map: ["enum.MedicalScannerVisualLayers.Machine"] - - state: scanner_terminal_blue - map: ["enum.MedicalScannerVisualLayers.Terminal"] + sprite: Objects/Kitchen/microwave.rsi + state: mw0 - type: PowerDevice - type: Icon - sprite: Buildings/medical_scanner.rsi - state: scanner_open + sprite: Objects/Kitchen/microwave.rsi + state: mw0 diff --git a/Resources/Textures/Objects/Kitchen/microwave.dmi b/Resources/Textures/Objects/Kitchen/microwave.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0b96c553c029dbf9425455259fdc59b88c2990ea GIT binary patch literal 2309 zcmV+g3HtVlP)C0004`P)t-sz`(#l zLRCypVK+KUKtol~(Al`T!;q7qrKq{KxywO8K`t;mR8&-Oa)C`zXorfNZg75qgqBlO zQd(R;T3vHfRYzlHc}7M?RaQnHubEQfX;Wb#zSJ)^Oa`Z*8z1ZQLHu!%o!5P2SH+=;4Iw;)HyXE@r0>>B(nh zWl?c&P3Yl)=iq{7(+^=|REdBxk%>agpdNySm5Gd-v#f2aq+O_>TG7W&`Shgz^}2wD zr`^_Yr=eq_oJygaN}`-iuBcj&hdG##Nn>P2WM)Nqdx)c(REB>#j)zI0prDtRmu6^v zj*+6GqJyXa0M!5hBTXZ!sXH%P)Y?G00kBw_@Zcvkzq@A6ohlg#HlyKq8FUPea<=b)B(019v zL*v?S%e6e$&~=M#F>-M_kU$(_V?Ea$50@bm(FX^>z`)YXcG%K)+|_j3)OFU+bke|a zfQ_W000001bW%=J06^y0W&i*Hm3mZIbVOxyV{&P5bZKvH004NLQ&wYD79{`FYecb~Fl$HPh25w12K~#90?OKh0(?l39v|-i^B7>AK5%wXY zYDdeGsz5+pm@p;-<)++CMg?sA*b08kW(o-U!>@nZ_mW)hk~B^DL9(Bi=UBG&Y3_aU z-X-hv@|H?lj&0k^fb9{$iw^ z-Ts zBfDXOu{|M-c@ud2UNwZhsd-th)oNi{RhfW&fU+W~`ws-LUzOYm7=Q3k00+bTt06F6 zmaEmnuhrBeN5?0Gam3?GmC4De*XaburjLu`7@L6cF%$TFz5a%Xy2s0s^yXWKtFqdd zIU$aQC}7GF5Qsl53UK(C34FfZY>9&lI5|7(2$*R2&?d$O0aIQE^tL#-0FQ4>1TxSF z^Yypi5eFAAJNvGi0WP2+W`M2XskYA1)=!1kI4%Q>kIlg8GiTfk7=~t0z;Rs2z}a)> z&N>2u8Sn)#9x@=J5#}KSBDjF}-v59Km}{7(W}4@npnee0DJ+Ap9^MS zF3i{K9|i``!08KAz{LgQys1%`=Z%GhOMD4NM~B~r9)EEmfJ#4|8TuOR+G-s^We@|B*82wa{=vBMd zj*x`tuW8Ot^zZ5F2cw@Q)eqv%=l(s;->0n~sMo#7*S#MV6ySB-)`{LGbb$B6%$WH8 zJ;vXI{hpj0UO$*zDWlI-^~UN=iW{q|t2b`m^fSon2TuGB=@8vjzy)~zz1|AA+g3zC zZ2e#b_%Bp-`qphA?tFRs)*bjR3UKNN)N+$eaWH`CwVzU2s1RfGcdgErQ&P6(s`zQK=Nfal*^EsaAEkgk3J8PMBn>%F_ZyZXJ} zy55F8Pz~+@xN1T$!4@VUM#zBY-&+lkz%GA=3rMUVAau6;-S?{6?)BEz)_(Z0*VFZN z9WoF+ANE}b_8=sH?twrCn19#2B(z$Be@|IIK&slK!q(UBt=*&F{Uu=MJ9h!Wm?{YF z0nxuZmml!&DeDKwy#;&1g8&83r+ZMx7I8Bm-UY+`d&>F&iV8%j&QJ93sp|uXeiVYI zu!5YA1Bg9}6V6Zc?^)Lm3jbdC_W}h9ym0k_qJN+e@ShZr;Quq`i~fP9=^qe3vp;+P zz}|5GK#YIq{R7z8AcjWh`03E00sP`3q5tSuT=aPe@6;dqCN?e8v~1fZeY0;y`UhhC zJLiuYM58=aFra?`A8m5J*=(}^Ijwp12aHYI?3$)YKt|uRBmDz0{$1!F*xX>eHiIMm z0}!+6^G)mvkWLaz1@wQ$7AUYxi}XPZ<^raM`gh(xfH$$`@{j=>=^ucYjBgTA0LD)J zp^xGEEwf9kzGe1>B}nk^LjM5XVEiVI_75~6DC3*>1Q&4njF$mocTJig3p_IB0uubY z&_94X+Aj{Tk#QX99{>RzSOk|3WPlK758Q|7gqRSWz$V~Jkl^2W{{Y_HVEpC`j`R;e z%qHWT!6m@%Cd6KX=)hb+f`1qK2MqGSP`7eKI6f4~o|j4BNk?7yEMxuYuTtJe4&s+fW?@#`~HkfzEziWT~ z^@JIRtReV!&9=KVyk%?m`*v;un18paf494qZ4n#ezj1y7JpXQEtqThP{@u3n&4B0M zZR+1`-@oT5!1wP4_3sAt@5VpHKzwrqJPg`K;hpD f|6ZWL{~P}TuqOgG$KJaP00000NkvXXu0mjf#*ld+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json b/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json new file mode 100644 index 0000000000..b03b51e24c --- /dev/null +++ b/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "license": "AGPL v3", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris", "states": [{"name": "mw", "directions": 1, "delays": [[1.0]]}, {"name": "mw0", "directions": 1, "delays": [[1.0]]}, {"name": "mw1", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "mwb", "directions": 1, "delays": [[1.0]]}, {"name": "mwbloody", "directions": 1, "delays": [[1.0]]}, {"name": "mwbloody0", "directions": 1, "delays": [[1.0]]}, {"name": "mwbloody1", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "mwbloodyo", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "mwo", "directions": 1, "delays": [[0.1, 0.1]]}]} \ No newline at end of file diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/mw.png b/Resources/Textures/Objects/Kitchen/microwave.rsi/mw.png new file mode 100644 index 0000000000000000000000000000000000000000..88e285a134e152ceb158d89b7de51f32a7fb3038 GIT binary patch literal 636 zcmV-?0)zdDP)7iz#lDs2FN@E{s;`T1pXIy0S|_@Q)DbviJ^^x)3Zy zQH#4Qgt`z-7u8sz%`{1!CQe+$Tr$bTnwKKvgW;Sxa~|J4_uez`k0Aj}Ok64}`#fxJ zeldIu1_!%Rq&Bb1r68AKdHKEsUjwT)oERWQ^FUvC6{2Jz=xfI_Nk}1ARV!R|uFv?pfwOf&Ybo;Sh#HUZJ~OimAODP#guJO8`g4 zPn2ECKtu7JodUgp+o>4mfIkpsJTk`n51#-yG<<;9t8a+M&l8D6fX=(HkyZgnCX*x* zkA+=qfzKc0%UXslStOecyupUjpG#rbcH8}cw9xSqs$6X?qx3(m++jcTvja{w6{2Jah zUr9T~b9t+IGBX0}(Nsm5Hh132+Hl%`v@CxIL2ooO!sy~iju`4nSEr-WXMnc2CnjpBMp082pnJaMs0000O!y- zMJ?{K5b8qIO*NKilg^}06K7n+UNU*KP9BPoKMd#0x##h}=gvI?{}>X$rI}l=H zMmSe!%m9phO%c) zR|GbTUi`kFuH{}3^u`NE91Fz;$4XUZC}g6SYaxFkLs}KRtWdSu?^6&sefB)6>I1+u zcUW3_(&Sv9)Q#NKJ^K@|q$tmxE&y;cbER#7n-0{=eF?l;Ss)w^3w`$*io#o^?yg~N z=r%zd&hD;DrIMoq>-iGcLA*W_k5cLA@%l`#gJK%C?0{)}B6WO5==GSLoA22uZiECd zbLpa8_}=`X^y_DID5>)B!K2n^GQa=>4Dh${3)T4xuj_A{TL1t607*qoM6N<$f@i=V ADF6Tf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/mw1.png b/Resources/Textures/Objects/Kitchen/microwave.rsi/mw1.png new file mode 100644 index 0000000000000000000000000000000000000000..7525b08a80b0afb87484c16816907bc95afbe418 GIT binary patch literal 825 zcmV-91IGM`P)adhG(D?PPSiEIad2^xZU8Zn5UvVO*~;UZ0D8&x&i9(L(Q3c zK_QbM=o?tpY;kDTKFY2-8kBH4B|I)a8%aCW{*+6(kjqQ!vh;^3f-|LO=46@l^!!Hkgk!lz@+8 zJ$SudrJVTh6 zEw9?M8u#ilawOxN$F{y3R3vZe>Y0}GH^|p!shgWJ+ z`$0mq+C)PAC zX5fE@1TZx8e%aR;;Ne5PW^%_4LG5EZj*t0vH$=5*q?F&h7SgUQuHxYK+cEU(MP? zV!*L~orBo`hG78K$x^A5;MY5_&)NCSP?LhrNFS+Gir~mW!CA6dP}CT0YM$BoTQoP8 zg~Ym+M$=8=@%V<$Q>hfHA`{&C911iy7WwY`%VL~J3mga$$Vb7jd&~y{8*Nd*D zF$@D$kwr>0-4rRY2WH>bp}_R?B#FcT!JR_@T)1$-p#WIv(6uzGB8zdQtpubhvQR-) z~ zb^Bhzkxt$oIVjZ7bW@zpj`e&ZF(8z+uN@uzR;&>_w6yMEI2;0Cc{wKxqI-9fOr}U) zKl6`II(GK7Xx*M3jve~|O|MOdD8j3kMmaZjl5=Axxq4|7fZqPM7&`PCh5QTvN8UNG zsYCnxdfP&NM!XGnh|%n}IYGLzGTXCJR7GZf{%65oPfjy3+)euSuMX$savjFXLq>+X zg>8G#s-?yIRxQQjaYsQqUPD(_rWmktsp%#yEzM%iES8v?TcCS)2X0r9;%XVUtBAQO zv43A1rU`R%3#3xN;b|y{`OP2#aAoBh=Kw7)`MEt?RVLs!G4c|b%mSfM1h1z^HYXE} zwqfM!$z&EV@)CakD%qS&z;BYxRVBB-z7>d3SE0-56s%?$c)XmWZ-0~@E?L~tvWtMv zB)8H)gS+1P~y*Q9X@ZFT^$iT?lq=vEE4cl4^+LBss$|qIB@6)yW0H# z+*{0X_Ut(Veh>HVRr4M2nM5LC0FpNs1s@6pX>4?{ucrfmpJuEz{k`o>-B<)xfsHRE z5x|<%%BfQ)0C;2YLjbb5JdOUUWRXaiJ9qAqU6Bd+OtLF7{k`oZZ{Ek_E|D+P<8hY& ziGa^!>c%4dz3rU8SS{pdrr^hk6Ern7i9WbkkBKXldRXPr5)2*)bN=F-!w%rll4WOi z4%N%50#SsOQ$Km~MD%M6r807Tsph#ddCS3V^wde^4TG#vppaXj=hdU4UxA{=_~_%~ z;^Sif>(O*mNLuMDYE1kc+1qD90yz5KyX8L~*E=R()W_)MpqsD1`bPSD%PnkS3tRXP Z@E1>Q>DdI?1+oAD002ovPDHLkV1h!}IXeIV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloody.png b/Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloody.png new file mode 100644 index 0000000000000000000000000000000000000000..3b144ce3107415c417fe1a8edd5d387360545275 GIT binary patch literal 824 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloodyo.png b/Resources/Textures/Objects/Kitchen/microwave.rsi/mwbloodyo.png new file mode 100644 index 0000000000000000000000000000000000000000..4d90ec33cc4ce8d94f530b880e58e3502921a8c2 GIT binary patch literal 1306 zcmV+#1?BpQP)c~f1=q0q}zdX>#JT&(%!|}@I(^*!R7jt7FK&N2_!W&`Hrw z?m!dyh3gm{?k2x*9dB&=8biT6eA76XjQ`a#zS9 z7}PNSyN10jzPS7hfZMmOQ&wKZQO6PVFCXLdsyYCcE-k|Axd1>{acd;_L4ObT15SK` z1i<}(la)p@lcF7yXvY|Es)8T%_avO1neh9bvm={Z*x+sipkKCeSF}g!;lNFzoeZTt zF`+@9^(S*OrxK?m0AR=V2HG!d;hk59uo{PA3@ZnkuwL3pryyYx?F{;Ruqa8;Dv2lo z`hd~lZaM{tuHseze2Sxql#FkYZCEeu+ z1J=CPLoeX!ogdfu;_3s`2Ap_-l}0mKLBgW6{YnyY2bwSxw^AE$QaRAX=x{f+%2r9H zneaEb8}TY_lV~SLw&5i-`v4ir_SoQV#3DB{UwD8eYI{tTYH?iMvzBaKE;Xet&TNe} zwqDwaUy#U=ZTOVn{er|?LfQ8MWyP)Z0li8>fEg!XCj8OW2O=}yFWZ+c@T?mHPWl9iL0}LljS4!v9oX_>(gY;p`$Rhy zxtVdtGIUDN;aMMdETgYsNX0igmZ4o<$HJ$etJpp*KjwJoP2iwU+>cKIgl$WKPC=qx zY1ad7K#3sHmNev8CF2u^?{652;nz0|(MD@hp6Uz;4?NOR6W7?&^aAyOC(7QVlxo+Mse6EO{+_*h zrR=|am-8zYa=zkOcmUT&#u7R+9e@1ZcMrw))|9|le7-6H^YaYk?mA5=>OJ_@wtW~1 z=JCf4FaeqhGZXF}Oi?xy5NStWHr6Y@WWgumOK*Pq$oP?up`(r?%n_gF+kKk>Fs=QF zj*gRfJr{`nP)UWB7_#VSKdJf{N*7qDr->crpKH2X zeLDE61bp$OBXafZkuPeLGL`IvN-N(iT7zcM8vJ)?|2_V!W;Lr>&FXQ~UvxiO7D}nc Qwg3PC07*qoM6N<$f=YRG@&Et; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/mwo.png b/Resources/Textures/Objects/Kitchen/microwave.rsi/mwo.png new file mode 100644 index 0000000000000000000000000000000000000000..35ed2e9baefc6863c2e16b225835293991eeed81 GIT binary patch literal 1095 zcmV-N1i1T&P)Qct0CE>!%?0S$gS&|%@%YbcswVCq)kh{9v~sWp*IgO z8n?bVFO)9v<2ESWe(xua{G&zLwdv zTMk9?PkJ1%I>Dtl+*O|5WPJ^8-_pMb!go=t@x<|^!FVF;GK6r1mMKc z*Lkq@Wrl};1mKwt6J|5mih>lG65NdFRF8pcPQK`i;BuDWT_?C~{HLDSvZ3UU_0K8t z^#Jp80Y3li2mrlT9)@~=yK%d#`1qp_*uK4(Dwl}CAYw7vSzIol%pO-g8VbdX!KvZz zY)GC9GOwj9fn)u1iZimmK;J+o%Z@ONtg}o!Ncctt0O6=U<5(oPS&Coe+Pn@!p}Ip& zHhxKQ82||pbb|UZlVp8B$T1;Z)GIrS1x{6o00dTM5DT1?+12;)nfS@%;qRo>j+rFe z0X4tXU@}`_5-yTRa~9%3;^VUbxbNA=)a7r|d~UTz-7XeyqIw5p;{%8@Q>xYi5GvhS zePji=x4xN3WPx}r4!(fQQKyHMSOq&eUIAdiH^`2Tw*fE+Wo{25Uf za3(&$^u#cCRy6@qA+jYH3Jg*1x<8|jtN_1^odaNN^?hlMUSAARg!uSDc6Ih(t!rVy zH<;#Ut!u#`l=IWcE__jGFAIXY4_7Asx2Mk|ir^}g5*I4nin}3Mlu1vw#2-D6AQY_2 zloh~eG-5Ja3C;S`9KXL1L(qu~Bx>1D7XZ6Dds0t6snNcJ0DSU8ErKozfS8D}+H_`= zD*lk4{SQg6*w*$J()=bp-T#O$D}c#tCA<)no`7#0fZa{4+_*l%QY4!4d;d(ebaCb_ zg(X+#SYBf{5eQya4C40r-))#LD?q8uMXAk2Y$YsndiJ@)8$OU^OI|C!tN{K$E@Lv4 z0`TP1@6q4?6(hp~jE!B|5PYrfav4!-Y_;Ia3h?OTpQb8x;Eh)SX$$stA6D^4Rj>8B zdM)_+wUbHkrJv6Ut79(NS*01jp|M$PXl%ZnM*Dxk&nvII^2%#7>M!1f2SN%;yF>s0 N002ovPDHLkV1oB+5kLR{ literal 0 HcmV?d00001 From 6c5b4b642e2285f0781f00bbc0da2c5516984ee5 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 30 Apr 2020 00:33:14 +0200 Subject: [PATCH 05/73] Add CanScript: true permission to Host group. --- Resources/Groups/groups.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Groups/groups.yml b/Resources/Groups/groups.yml index 50b84be17f..7e3688ef71 100644 --- a/Resources/Groups/groups.yml +++ b/Resources/Groups/groups.yml @@ -134,3 +134,4 @@ - gc_mode CanViewVar: true CanAdminPlace: true + CanScript: true From 0a43d5ff0f2e59f8581b2ece121d1a9c2585d7df Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 30 Apr 2020 00:34:20 +0200 Subject: [PATCH 06/73] Update submodule. --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 7c4b1af967..2042312df7 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 7c4b1af96743d2b87a787726c851e141b7ba45c2 +Subproject commit 2042312df795f7e5d6228f1ae3ed0ad40602b529 From bfdb240712f3d39be0e3810b87c4e01c61c410fd Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 30 Apr 2020 00:35:10 +0200 Subject: [PATCH 07/73] Add Robust.Shared.Scripting to solution file. --- SpaceStation14.sln | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SpaceStation14.sln b/SpaceStation14.sln index df58010a94..5e771fdbcc 100644 --- a/SpaceStation14.sln +++ b/SpaceStation14.sln @@ -62,6 +62,8 @@ ProjectSection(SolutionItems) = preProject Tools\gen_build_info.py = Tools\gen_build_info.py EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Shared.Scripting", "RobustToolbox\Robust.Shared.Scripting\Robust.Shared.Scripting.csproj", "{41B450C0-A361-4CD7-8121-7072B8995CFC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -128,6 +130,10 @@ Global {45C9B43F-305D-4651-9863-F6384CBC847F}.Debug|x64.Build.0 = Debug|x64 {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|x64.ActiveCfg = Release|x64 {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|x64.Build.0 = Release|x64 + {41B450C0-A361-4CD7-8121-7072B8995CFC}.Debug|x64.ActiveCfg = Debug|Any CPU + {41B450C0-A361-4CD7-8121-7072B8995CFC}.Debug|x64.Build.0 = Debug|Any CPU + {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|x64.ActiveCfg = Release|Any CPU + {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -142,6 +148,7 @@ Global {0529F740-0000-0000-0000-000000000000} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {4809F412-3132-419E-BF9D-CCF7593C3533} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {50404922-9637-4394-BF59-165D0850ADC8} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} + {41B450C0-A361-4CD7-8121-7072B8995CFC} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AA37ED9F-F8D6-468E-A101-658AD605B09A} From 8e0185f892a2fe4612e4889e3afa80c392c25c3f Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Wed, 29 Apr 2020 21:04:08 -0500 Subject: [PATCH 08/73] Refactor "output" to "result" for recipes/prototypes. Remove a debug recipe from meal_recipes.yml Add food.yml for food related reagents: sugar, flour, etc. --- .../Kitchen/KitchenMicrowaveComponent.cs | 2 +- .../Kitchen/MicrowaveMealRecipePrototype.cs | 6 +++--- Resources/Prototypes/Kitchen/meal_recipes.yml | 14 ++------------ Resources/Prototypes/Reagents/food.yml | 8 ++++++++ 4 files changed, 14 insertions(+), 16 deletions(-) create mode 100644 Resources/Prototypes/Reagents/food.yml diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index b3a9927a38..878096cd5b 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -105,7 +105,7 @@ namespace Content.Server.GameObjects.Components.Kitchen { if (CanSatisfyRecipe(r)) { - var outputFromRecipe = r.OutPutPrototype; + var outputFromRecipe = r.Result; _entityManager.SpawnEntity(outputFromRecipe, Owner.Transform.GridPosition); return; } diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs index 7b93cbbb3e..c7a20faf8f 100644 --- a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs @@ -20,12 +20,12 @@ namespace Content.Shared.Kitchen private string _id; private string _name; - private string _output; + private string _result; private Dictionary _ingredients; public string ID => _id; public string Name => Loc.GetString(_name); - public string OutPutPrototype => _output; + public string Result => _result; public IReadOnlyDictionary Ingredients => _ingredients; public void LoadFrom(YamlMappingNode mapping) @@ -34,7 +34,7 @@ namespace Content.Shared.Kitchen serializer.DataField(ref _id, "id", string.Empty); serializer.DataField(ref _name, "name", string.Empty); - serializer.DataField(ref _output, "output", string.Empty); + serializer.DataField(ref _result, "result", string.Empty); serializer.DataField(ref _ingredients, "ingredients", new Dictionary()); } } diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 2b088ed8be..2c1c261fcc 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -1,17 +1,7 @@ - type: microwaveMealRecipe id: RecipeCheeseburger name: "Cheeseburger Recipe" - output: FoodCheeseburger + result: FoodCheeseburger ingredients: - chem.H2O: 15 + chem.Flour: 15 chem.Nutriment: 5 - -- type: microwaveMealRecipe - id: RecipeFlashlight - name: "Flashlight Recipe" - output: FlashlightLantern - ingredients: - chem.H2O: 15 - chem.Nutriment: 20 - chem.Glucose: 5 - diff --git a/Resources/Prototypes/Reagents/food.yml b/Resources/Prototypes/Reagents/food.yml new file mode 100644 index 0000000000..6c838830da --- /dev/null +++ b/Resources/Prototypes/Reagents/food.yml @@ -0,0 +1,8 @@ +- type: reagent + id: chem.Flour + name: Flour + desc: Used for baking. + color: "#FFFFFF" + metabolism: + - !type:DefaultFood + rate: 1 From ccf2139c63f44470e0542afcd5136c159a9c4ae4 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 30 Apr 2020 12:45:13 +0200 Subject: [PATCH 09/73] Update submodule. --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 2042312df7..aa6af785e5 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 2042312df795f7e5d6228f1ae3ed0ad40602b529 +Subproject commit aa6af785e54a4fc7fcf7926673e2ec07ee97f783 From d4ca0a65eee3033a1b0abbde1086e9dfa37ee511 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 30 Apr 2020 12:45:21 +0200 Subject: [PATCH 10/73] Screenshot button. --- Content.Client/ClientContentIoC.cs | 1 + Content.Client/EntryPoint.cs | 1 + Content.Client/Input/ContentContexts.cs | 2 + Content.Client/ScreenshotHook.cs | 85 +++++++++++++++++++++ Content.Shared/Input/ContentKeyFunctions.cs | 2 + Resources/keybinds.yml | 7 ++ 6 files changed, 98 insertions(+) create mode 100644 Content.Client/ScreenshotHook.cs diff --git a/Content.Client/ClientContentIoC.cs b/Content.Client/ClientContentIoC.cs index 690de5c18a..93e75a88f1 100644 --- a/Content.Client/ClientContentIoC.cs +++ b/Content.Client/ClientContentIoC.cs @@ -31,6 +31,7 @@ namespace Content.Client IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); + IoCManager.Register(); } } } diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index c8ab1376c7..89681280c8 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -178,6 +178,7 @@ namespace Content.Client IoCManager.Resolve().LoadParallax(); IoCManager.Resolve().PlayerJoinedServer += SubscribePlayerAttachmentEvents; IoCManager.Resolve().Initialize(); + IoCManager.Resolve().Initialize(); IoCManager.InjectDependencies(this); diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs index 26e850a3a3..5301d8ba4f 100644 --- a/Content.Client/Input/ContentContexts.cs +++ b/Content.Client/Input/ContentContexts.cs @@ -16,6 +16,8 @@ namespace Content.Client.Input common.AddFunction(ContentKeyFunctions.ExamineEntity); common.AddFunction(ContentKeyFunctions.OpenTutorial); common.AddFunction(ContentKeyFunctions.UseOrAttack); + common.AddFunction(ContentKeyFunctions.TakeScreenshot); + common.AddFunction(ContentKeyFunctions.TakeScreenshotNoUI); var human = contexts.GetContext("human"); human.AddFunction(ContentKeyFunctions.SwapHands); diff --git a/Content.Client/ScreenshotHook.cs b/Content.Client/ScreenshotHook.cs new file mode 100644 index 0000000000..529a469b72 --- /dev/null +++ b/Content.Client/ScreenshotHook.cs @@ -0,0 +1,85 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using Content.Shared.Input; +using Robust.Client.Interfaces.Graphics; +using Robust.Client.Interfaces.Input; +using Robust.Shared.Input; +using Robust.Shared.Interfaces.Resources; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Utility; +using SixLabors.ImageSharp; + +namespace Content.Client +{ + internal class ScreenshotHook : IScreenshotHook + { + private static readonly ResourcePath BaseScreenshotPath = new ResourcePath("/Screenshots"); + + [Dependency] private readonly IInputManager _inputManager = default; + [Dependency] private readonly IClyde _clyde = default; + [Dependency] private readonly IResourceManager _resourceManager = default; + + public void Initialize() + { + _inputManager.SetInputCommand(ContentKeyFunctions.TakeScreenshot, InputCmdHandler.FromDelegate(_ => + { + Take(ScreenshotType.AfterUI); + })); + + _inputManager.SetInputCommand(ContentKeyFunctions.TakeScreenshotNoUI, InputCmdHandler.FromDelegate(_ => + { + Take(ScreenshotType.BeforeUI); + })); + } + + private async void Take(ScreenshotType type) + { + var screenshot = await _clyde.ScreenshotAsync(type); + + var time = DateTime.Now.ToString("yyyy-M-dd_HH.mm.ss"); + + if (!_resourceManager.UserData.IsDir(BaseScreenshotPath)) + { + _resourceManager.UserData.CreateDir(BaseScreenshotPath); + } + + for (var i = 0; i < 5; i++) + { + try + { + var filename = time; + + if (i != 0) + { + filename = $"{filename}-{i}"; + } + + await using var file = + _resourceManager.UserData.Open(BaseScreenshotPath / $"{filename}.png", FileMode.CreateNew); + + await Task.Run(() => + { + // Saving takes forever, so don't hang the game on it. + screenshot.SaveAsPng(file); + }); + + Logger.InfoS("screenshot", "Screenshot taken as {0}.png", filename); + return; + } + catch (IOException e) + { + Logger.WarningS("screenshot", "Failed to save screenshot, retrying?:\n{0}", e); + } + } + + Logger.ErrorS("screenshot", "Unable to save screenshot."); + } + } + + public interface IScreenshotHook + { + void Initialize(); + } +} diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index a0ae771de3..a713c7db54 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -24,5 +24,7 @@ namespace Content.Shared.Input public static readonly BoundKeyFunction OpenEntitySpawnWindow = "OpenEntitySpawnWindow"; public static readonly BoundKeyFunction OpenSandboxWindow = "OpenSandboxWindow"; public static readonly BoundKeyFunction OpenTileSpawnWindow = "OpenTileSpawnWindow"; + public static readonly BoundKeyFunction TakeScreenshot = "TakeScreenshot"; + public static readonly BoundKeyFunction TakeScreenshotNoUI = "TakeScreenshotNoUI"; } } diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 504ec81af9..29eeb8fbc7 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -155,3 +155,10 @@ binds: - function: OpenSandboxWindow type: state key: B +- function: TakeScreenshot + type: state + key: F2 +- function: TakeScreenshotNoUI + type: state + key: F2 + mod1: Shift From 93c3e86c9fb9d59a0edb7564836820ab1c832cdb Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Thu, 30 Apr 2020 18:08:51 -0500 Subject: [PATCH 11/73] Unfuck mostly everything. --- Content.Server/EntryPoint.cs | 3 + .../Kitchen/KitchenMicrowaveComponent.cs | 55 +++---------------- Content.Server/ServerContentIoC.cs | 2 + Content.Shared/EntryPoint.cs | 3 +- Content.Shared/Kitchen/RecipeManager.cs | 52 ++++++++++++++++++ .../Kitchen/MicrowaveMealRecipePrototype.cs | 4 +- Resources/Prototypes/Entities/kitchen.yml | 2 +- 7 files changed, 69 insertions(+), 52 deletions(-) create mode 100644 Content.Shared/Kitchen/RecipeManager.cs rename Content.Shared/{ => Prototypes}/Kitchen/MicrowaveMealRecipePrototype.cs (91%) diff --git a/Content.Server/EntryPoint.cs b/Content.Server/EntryPoint.cs index 7a97e2f538..6eb0c31d8c 100644 --- a/Content.Server/EntryPoint.cs +++ b/Content.Server/EntryPoint.cs @@ -4,6 +4,7 @@ using Content.Server.Interfaces.Chat; using Content.Server.Interfaces.GameTicking; using Content.Server.Preferences; using Content.Server.Sandbox; +using Content.Shared.Kitchen; using Robust.Server.Interfaces.Player; using Robust.Shared.ContentPack; using Robust.Shared.Interfaces.GameObjects; @@ -70,6 +71,7 @@ namespace Content.Server logManager.GetSawmill("Storage").Level = LogLevel.Info; IoCManager.Resolve().StartInit(); + } public override void PostInit() @@ -79,6 +81,7 @@ namespace Content.Server _gameTicker.Initialize(); IoCManager.Resolve().Initialize(); IoCManager.Resolve().FinishInit(); + IoCManager.Resolve().Initialize(); } public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 878096cd5b..62dbda34ad 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -14,6 +14,7 @@ using Content.Server.GameObjects.Components.Chemistry; using Content.Shared.Chemistry; using Robust.Shared.Serialization; using Robust.Shared.Interfaces.GameObjects; +using Content.Shared.Prototypes.Kitchen; using Content.Shared.Kitchen; namespace Content.Server.GameObjects.Components.Kitchen @@ -24,61 +25,19 @@ namespace Content.Server.GameObjects.Components.Kitchen { #pragma warning disable 649 - [Dependency] private readonly IPrototypeManager _prototypeManager; [Dependency] private readonly IEntityManager _entityManager; + [Dependency] private readonly RecipeManager _recipeManager; #pragma warning restore 649 public override string Name => "Microwave"; - private AppearanceComponent _appearanceComponent; - - [ViewVariables] - private string _useSound; - [ViewVariables] - private string _outputPrototype; [ViewVariables] private SolutionComponent _contents; - private static List _allRecipes; - public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - if(_allRecipes == null) - { - _allRecipes = new List(); - foreach (var recipe in _prototypeManager.EnumeratePrototypes()) - { - _allRecipes.Add(recipe); - - } - _allRecipes.Sort(new RecipeComparer()); - } - - } - - private class RecipeComparer : IComparer - { - int IComparer.Compare(MicrowaveMealRecipePrototype x, MicrowaveMealRecipePrototype y) - { - if(x == null || y == null) - { - return 0; - } - - if (x.Ingredients.Count < y.Ingredients.Count) - { - return 1; - } - - if (x.Ingredients.Count > y.Ingredients.Count) - { - return -1; - } - - return 0; - } } public override void Initialize() @@ -101,12 +60,12 @@ namespace Content.Server.GameObjects.Components.Kitchen { if(_contents.ReagentList.Count > 0) { - foreach (var r in _allRecipes) + foreach(var r in _recipeManager.Recipes) { - if (CanSatisfyRecipe(r)) + if(CanSatisfyRecipe(r)) { - var outputFromRecipe = r.Result; - _entityManager.SpawnEntity(outputFromRecipe, Owner.Transform.GridPosition); + var resultPrototype = r.Result; + _entityManager.SpawnEntity(resultPrototype, Owner.Transform.GridPosition); return; } @@ -115,7 +74,7 @@ namespace Content.Server.GameObjects.Components.Kitchen } - private bool CanSatisfyRecipe(MicrowaveMealRecipePrototype recipe) + private bool CanSatisfyRecipe(MealRecipePrototype recipe) { foreach(var ingredient in recipe.Ingredients) { diff --git a/Content.Server/ServerContentIoC.cs b/Content.Server/ServerContentIoC.cs index f4bb04b9cc..7ca422e4c4 100644 --- a/Content.Server/ServerContentIoC.cs +++ b/Content.Server/ServerContentIoC.cs @@ -8,6 +8,7 @@ using Content.Server.Preferences; using Content.Server.Sandbox; using Content.Server.Utility; using Content.Shared.Chemistry; +using Content.Shared.Kitchen; using Content.Shared.Interfaces; using Content.Shared.Interfaces.Chemistry; using Robust.Shared.IoC; @@ -28,6 +29,7 @@ namespace Content.Server IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); + IoCManager.Register(); } } } diff --git a/Content.Shared/EntryPoint.cs b/Content.Shared/EntryPoint.cs index a9df20ff2a..8975f3fbb4 100644 --- a/Content.Shared/EntryPoint.cs +++ b/Content.Shared/EntryPoint.cs @@ -6,7 +6,7 @@ using Robust.Shared.IoC; using Robust.Shared.Prototypes; - namespace Content.Shared +namespace Content.Shared { public class EntryPoint : GameShared { @@ -55,5 +55,6 @@ _tileDefinitionManager.Initialize(); } + } } diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs new file mode 100644 index 0000000000..81c15279c1 --- /dev/null +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using Content.Shared.Prototypes.Kitchen; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Kitchen +{ + + public class RecipeManager + { +#pragma warning disable 649 + [Dependency] private readonly IPrototypeManager _prototypeManager; +#pragma warning restore 649 + public List Recipes { get; private set; } + + public void Initialize() + { + Recipes = new List(); + foreach (var item in _prototypeManager.EnumeratePrototypes()) + { + Recipes.Add(item); + } + + Recipes.Sort(new RecipeComparer()); + } + private class RecipeComparer : IComparer + { + int IComparer.Compare(MealRecipePrototype x, MealRecipePrototype y) + { + if (x == null || y == null) + { + return 0; + } + + if (x.Ingredients.Count < y.Ingredients.Count) + { + return 1; + } + + if (x.Ingredients.Count > y.Ingredients.Count) + { + return -1; + } + + return 0; + } + + + } + } +} diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs similarity index 91% rename from Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs rename to Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs index c7a20faf8f..d61d11590d 100644 --- a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs @@ -7,7 +7,7 @@ using Robust.Shared.Serialization; using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; -namespace Content.Shared.Kitchen +namespace Content.Shared.Prototypes.Kitchen { /// /// A recipe for space microwaves. @@ -15,7 +15,7 @@ namespace Content.Shared.Kitchen [Prototype("microwaveMealRecipe")] - public class MicrowaveMealRecipePrototype : IPrototype, IIndexedPrototype + public class MealRecipePrototype : IPrototype, IIndexedPrototype { private string _id; diff --git a/Resources/Prototypes/Entities/kitchen.yml b/Resources/Prototypes/Entities/kitchen.yml index d7d9f9803b..064550b61b 100644 --- a/Resources/Prototypes/Entities/kitchen.yml +++ b/Resources/Prototypes/Entities/kitchen.yml @@ -13,7 +13,7 @@ - type: Collidable shapes: - !type:PhysShapeAabb - bounds: "-0.5,0,0.5,1" + bounds: "-0.25,-0.4,0.25,0.4" layer: 15 IsScrapingFloor: true - type: Sprite From 5d4c0609ec5ffeb5e7568f511116d23089f68650 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Thu, 30 Apr 2020 23:07:27 -0500 Subject: [PATCH 12/73] ShadowCommander is MVP. --- .../Kitchen/KitchenMicrowaveComponent.cs | 37 +++++++++---------- Content.Shared/Kitchen/RecipeManager.cs | 10 ++--- .../Kitchen/MicrowaveMealRecipePrototype.cs | 2 +- Resources/Prototypes/Kitchen/meal_recipes.yml | 4 +- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 62dbda34ad..8ccaa8c91a 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -1,14 +1,6 @@ -using System.Collections.Generic; -using Content.Server.GameObjects.Components.Sound; -using Content.Server.GameObjects.EntitySystems; -using Content.Server.GameObjects.Components; -using Content.Shared.Audio; -using Robust.Server.GameObjects; -using Robust.Shared.Audio; +using Content.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.IoC; -using Robust.Shared.Localization; -using Robust.Shared.Prototypes; using Robust.Shared.ViewVariables; using Content.Server.GameObjects.Components.Chemistry; using Content.Shared.Chemistry; @@ -64,33 +56,40 @@ namespace Content.Server.GameObjects.Components.Kitchen { if(CanSatisfyRecipe(r)) { + RemoveContents(r); var resultPrototype = r.Result; _entityManager.SpawnEntity(resultPrototype, Owner.Transform.GridPosition); return; } - } } - } - private bool CanSatisfyRecipe(MealRecipePrototype recipe) + private bool CanSatisfyRecipe(FoodRecipePrototype recipe) { - foreach(var ingredient in recipe.Ingredients) + foreach (var item in recipe.Ingredients) { - var ingName = ingredient.Key.ToString(); - var ingQuantity = ingredient.Value; - if (_contents.ContainsReagent(ingName, out var amt) && amt >= ingQuantity) + if (!_contents.ContainsReagent(item.Key, out var amount)) { - _contents.TryRemoveReagent(ingName, ReagentUnit.New(ingQuantity)); - return true; + return false; } + if (amount.Int() < item.Value) + { + return false; + } } - return false; + return true; } + private void RemoveContents(FoodRecipePrototype recipe) + { + foreach(var item in recipe.Ingredients) + { + _contents.TryRemoveReagent(item.Key, ReagentUnit.New(item.Value)); + } + } } diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs index 81c15279c1..6b653ee96a 100644 --- a/Content.Shared/Kitchen/RecipeManager.cs +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -12,21 +12,21 @@ namespace Content.Shared.Kitchen #pragma warning disable 649 [Dependency] private readonly IPrototypeManager _prototypeManager; #pragma warning restore 649 - public List Recipes { get; private set; } + public List Recipes { get; private set; } public void Initialize() { - Recipes = new List(); - foreach (var item in _prototypeManager.EnumeratePrototypes()) + Recipes = new List(); + foreach (var item in _prototypeManager.EnumeratePrototypes()) { Recipes.Add(item); } Recipes.Sort(new RecipeComparer()); } - private class RecipeComparer : IComparer + private class RecipeComparer : IComparer { - int IComparer.Compare(MealRecipePrototype x, MealRecipePrototype y) + int IComparer.Compare(FoodRecipePrototype x, FoodRecipePrototype y) { if (x == null || y == null) { diff --git a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs index d61d11590d..f120499af4 100644 --- a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs @@ -15,7 +15,7 @@ namespace Content.Shared.Prototypes.Kitchen [Prototype("microwaveMealRecipe")] - public class MealRecipePrototype : IPrototype, IIndexedPrototype + public class FoodRecipePrototype : IPrototype, IIndexedPrototype { private string _id; diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 2c1c261fcc..a383a7fbce 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -1,7 +1,7 @@ - type: microwaveMealRecipe id: RecipeCheeseburger - name: "Cheeseburger Recipe" + name: Cheeseburger Recipe result: FoodCheeseburger ingredients: - chem.Flour: 15 + chem.H2O: 15 chem.Nutriment: 5 From b2aca9a686fbd7981a6fc187957ea45158ef9df4 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Fri, 1 May 2020 03:37:21 -0500 Subject: [PATCH 13/73] Add microwave visualizer. Clean up microwave code. --- .../Components/Kitchen/MicrowaveVisualizer.cs | 50 +++++++++ .../Kitchen/KitchenMicrowaveComponent.cs | 56 +++++++-- .../Research/SharedLatheComponent.cs | 2 +- Content.Shared/Kitchen/SharedMicrowave.cs | 18 +++ Resources/Audio/machines/ding.ogg | Bin 0 -> 16007 bytes Resources/Prototypes/Entities/kitchen.yml | 10 +- Resources/Prototypes/Kitchen/meal_recipes.yml | 8 ++ .../Textures/Objects/Kitchen/microwave.dmi | Bin 2309 -> 2180 bytes .../Objects/Kitchen/microwave.rsi/meta.json | 106 +++++++++++++++++- .../microwave.rsi/mw_running_unlit.png | Bin 0 -> 2286 bytes .../Kitchen/microwave.rsi/mw_unlit.png | Bin 0 -> 1698 bytes 11 files changed, 238 insertions(+), 12 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs create mode 100644 Content.Shared/Kitchen/SharedMicrowave.cs create mode 100644 Resources/Audio/machines/ding.ogg create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mw_running_unlit.png create mode 100644 Resources/Textures/Objects/Kitchen/microwave.rsi/mw_unlit.png diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs new file mode 100644 index 0000000000..7cfcd07253 --- /dev/null +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs @@ -0,0 +1,50 @@ +using Content.Shared.GameObjects.Components.Power; +using Content.Shared.Kitchen; +using Robust.Client.Animations; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Content.Client.GameObjects.Components.Kitchen +{ + public sealed class MicrowaveVisualizer : AppearanceVisualizer + { + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + var sprite = component.Owner.GetComponent(); + if (!component.TryGetData(PowerDeviceVisuals.VisualState, out MicrowaveVisualState state)) + { + state = MicrowaveVisualState.PoweredIdle; + } + switch (state) + { + case MicrowaveVisualState.PoweredIdle: + sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); + sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_unlit"); + break; + + case MicrowaveVisualState.Cooking: + sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); + sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_running_unlit"); + break; + + } + + var glowingPartsVisible = !(component.TryGetData(PowerDeviceVisuals.Powered, out bool powered) && !powered); + sprite.LayerSetVisible(MicrowaveVisualizerLayers.BaseUnlit, glowingPartsVisible); + + + } + + public enum MicrowaveVisualizerLayers + { + Base, + BaseUnlit + } + } + + +} diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 8ccaa8c91a..93cf571478 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -8,6 +8,11 @@ using Robust.Shared.Serialization; using Robust.Shared.Interfaces.GameObjects; using Content.Shared.Prototypes.Kitchen; using Content.Shared.Kitchen; +using Robust.Shared.Timers; +using Robust.Server.GameObjects; +using Content.Shared.GameObjects.Components.Power; +using Robust.Server.GameObjects.EntitySystems; +using Content.Server.GameObjects.Components.Power; namespace Content.Server.GameObjects.Components.Kitchen { @@ -17,19 +22,28 @@ namespace Content.Server.GameObjects.Components.Kitchen { #pragma warning disable 649 + [Dependency] private readonly IEntitySystemManager _entitySystemManager; [Dependency] private readonly IEntityManager _entityManager; [Dependency] private readonly RecipeManager _recipeManager; #pragma warning restore 649 public override string Name => "Microwave"; + private int _cookTimeSeconds; + private string _badRecipeName; [ViewVariables] private SolutionComponent _contents; + private AppearanceComponent _appearance; + + private AudioSystem _audioSystem; + + private PowerDeviceComponent _powerDevice; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - + serializer.DataField(ref _badRecipeName, "failureResult", "FoodBadRecipe"); + serializer.DataField(ref _cookTimeSeconds, "cookTime", 5000); } public override void Initialize() @@ -46,23 +60,43 @@ namespace Content.Server.GameObjects.Components.Kitchen _contents = Owner.AddComponent(); } } + + _appearance = Owner.GetComponent(); + _powerDevice = Owner.GetComponent(); + _audioSystem = _entitySystemManager.GetEntitySystem(); } void IActivate.Activate(ActivateEventArgs eventArgs) { - if(_contents.ReagentList.Count > 0) + if (_contents.ReagentList.Count == 0 || !_powerDevice.Powered) { - foreach(var r in _recipeManager.Recipes) + return; + } + foreach(var r in _recipeManager.Recipes) + { + if(CanSatisfyRecipe(r)) { - if(CanSatisfyRecipe(r)) + SetAppearance(MicrowaveVisualState.Cooking); + Timer.Spawn(_cookTimeSeconds, () => { RemoveContents(r); - var resultPrototype = r.Result; - _entityManager.SpawnEntity(resultPrototype, Owner.Transform.GridPosition); - return; - } + _entityManager.SpawnEntity(r.Result, Owner.Transform.GridPosition); + + _audioSystem.Play("/Audio/machines/ding.ogg"); + SetAppearance(MicrowaveVisualState.PoweredIdle); + }); + return; } } + + SetAppearance(MicrowaveVisualState.Cooking); + Timer.Spawn(_cookTimeSeconds, () => + { + _contents.RemoveAllSolution(); + _entityManager.SpawnEntity(_badRecipeName, Owner.Transform.GridPosition); + _audioSystem.Play("/Audio/machines/ding.ogg"); + SetAppearance(MicrowaveVisualState.PoweredIdle); + }); } private bool CanSatisfyRecipe(FoodRecipePrototype recipe) @@ -91,6 +125,10 @@ namespace Content.Server.GameObjects.Components.Kitchen } } - + private void SetAppearance(MicrowaveVisualState state) + { + if (_appearance != null || Owner.TryGetComponent(out _appearance)) + _appearance.SetData(PowerDeviceVisuals.VisualState, state); + } } } diff --git a/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs b/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs index dabae088fb..6b290d551d 100644 --- a/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs +++ b/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs @@ -1,4 +1,4 @@ -// Only unused on .NET Core due to KeyValuePair.Deconstruct +// Only unused on .NET Core due to KeyValuePair.Deconstruct // ReSharper disable once RedundantUsingDirective using Robust.Shared.Utility; using System; diff --git a/Content.Shared/Kitchen/SharedMicrowave.cs b/Content.Shared/Kitchen/SharedMicrowave.cs new file mode 100644 index 0000000000..94ac50e1cc --- /dev/null +++ b/Content.Shared/Kitchen/SharedMicrowave.cs @@ -0,0 +1,18 @@ +using Robust.Shared.Serialization; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Content.Shared.Kitchen +{ + + [Serializable, NetSerializable] + public enum MicrowaveVisualState + { + Off, + PoweredIdle, + Cooking + } + + +} diff --git a/Resources/Audio/machines/ding.ogg b/Resources/Audio/machines/ding.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ff1e3ebbc9990da3a7492abad96bf32ea5760941 GIT binary patch literal 16007 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 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Entities/kitchen.yml b/Resources/Prototypes/Entities/kitchen.yml index 064550b61b..806ef99b7f 100644 --- a/Resources/Prototypes/Entities/kitchen.yml +++ b/Resources/Prototypes/Entities/kitchen.yml @@ -9,6 +9,9 @@ - type: Solution maxVol: 100 caps: 1 + - type: Appearance + visuals: + - type: MicrowaveVisualizer - type: Collidable shapes: @@ -19,7 +22,12 @@ - type: Sprite netsync: false sprite: Objects/Kitchen/microwave.rsi - state: mw0 + layers: + - state: mw0 + map: ["enum.MicrowaveVisualizerLayers.Base"] + - state: mw_unlit + shader: unshaded + map: ["enum.MicrowaveVisualizerLayers.BaseUnlit"] - type: PowerDevice - type: Icon sprite: Objects/Kitchen/microwave.rsi diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index a383a7fbce..f763dc616b 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -5,3 +5,11 @@ ingredients: chem.H2O: 15 chem.Nutriment: 5 + +- type: microwaveMealRecipe + id: RecipeFlashlight + name: Flashlight Recipe + result: FoodCheeseWedge + ingredients: + chem.H2O: 15 + chem.Glucose: 5 diff --git a/Resources/Textures/Objects/Kitchen/microwave.dmi b/Resources/Textures/Objects/Kitchen/microwave.dmi index 0b96c553c029dbf9425455259fdc59b88c2990ea..a3cb98f9c14d5fd5fe9bb2c191c860815381f929 100644 GIT binary patch delta 1839 zcmV+~2hjM15`+HubEQfX;Wb#zQ^upVvP9?!#0)W}WV&r00ZaNO2!e3C9^rw{4LXX@gF z=;4HAWl?c&O_9_p45y)EqMS;hn@XabO_LA-fl;ogTIJhu*U)y-%y!t)cih!<+thW} z&~@3uL*v?S*3WdywLH?maf@v+a&bD4KpbLYJ=Yx%mmw3;2M21j$m9S300DGTPE!Ct z=GbNc005Vh;sIcP5}_s^yBeUqDXBS$l^|gq6b%MM7@9!WVOWJ>Z#~)ZZ^<^U^CZN%?FKIKH7!U~eeI{^RZYe-xgk_mk<=5zA)Qbq=Kvl*ITF%IkIQnQ zaO(A&46ANx4?kQOJku7 z1OaAd-gPn%7$}JbU0#mJH{hM)i&Z^PRlgXW11&Q!J2&TKz%Vp}3HPI;FJcdDoKJSnzJYUw#kmSh(N{f4dbm1v46GK2;sjRMzLy3H3UZe8 zezs>e2pUjG?+mOej1vs2;MqqL3QGe~dQ=}EoMU*5jo+(mk5Uxnd8!ZWpC_yj41B78 zNNm*3*a?vcdz!d@(1s_h4-9g%M(YbLc+&a+Wwocoe`>My|NrhENXUi$05GAg zwzK1NJUs6YXqsSJrfJ!>O`B%ZjPeIRgN=}L?U!F4#QF!|j6pTFerFDZ284iD0$!<9 zy#I_A-TnXo(>Cj-X;QS&H0?OoY`f0FTekMFX^RHj{(#+WZ~d-KK`FX_zQ>pqpI5*) zAYGuq0yKXE3msUdMVn{_qTFWOu3NT6ZGhi}3dw}q9{{_cIqP@KfMCGo7}MhwDjERb z{Q*tD@mpq{T20Gr`lrC>HfVJ`0myADl!2f>0JgpL`!4wX0Y0x_P>)yOd|+U9&dmU| z>n2N(g==6iqugfP_PHH@s}GdMpr-x7*Y6q~4Km2Nqy=+grcyPQgNSeUC9K9)spxB{*pdCK|1H}&g1MT?%I7s^k dQl;uj{{e1D#C7Fdv`zp3002ovPDHLkV1j8id*uKC delta 1969 zcmV;i2Tu5e5rqC0004`ktJAHt*BaHUO<_gtgxw1xw22ny*Smy zHXd0Y0FwX!>HubEQfX;Wb#zSJ)^Oa`Z*8z1ZQLHu!%o!5P2SH+=;4Iw;)HyXE@r0> z>B(nhWl?c&P3Yl)=iq{o&MFe!)^MkxW1^f&p_@vgoK3E%T9X6;fl=k#ao5mx*}_BP z+HcFXJlD{5i)}G-aXOGd9AaZV*BuX+ArsLD2f)C<(#&?)(s$g|blcQ**3Wd(z;S?$ zq@n--00DGTPE!Ct=GbNc005Pf)&XFDVpjt+GbJ@Au@WS#gQ6jyR1F41xFU%dH97hD zDV0PkB+6Q_N|J*BqK&wKP*!mDa{)&m0E#1h-2(=cmH+?-Zb?KzRCt{2T8)3xL>Ml# zVb%;HgOo23_93HcN6V6`KtNrXFeU@#rrb?N1#JA-3VzIH3JChcuYcP2l3eb8k~B^D zL9(Bi=UBG&Y3_aU-X-hv@|H?lj&0k^fb9{$iw^-TsBfDXOu{|MwjCm7y{9ZMLy{UOwuGMN`T2+~VeSoqesrwHEuwRwj z2^fFyPyh$R{Hq}_UY4uX!>`rUBS*(4gmJ{mj;>CX!y`3#svXW zUIz5GIJf|hZ%hO-&LM*&e7ISh1WPP1B{Q&!09t* z+zc3oW>CO!T*$!LbLY-F0)iRv1uz~mAfgfGAp;_~fcM`2fC`vvn5Jf$=bhusi8)`u z{Jwqju7Ci10gRsuW?(LV%-8E51_sZ-=?hfA#RcQMsZp5cjfI6vd-s^We@|B*82wa#k?2*s*N%{c=&xzcPxSBU>Ib8rCDjk&&gcF;&fll4AE?*8$k)9e z6%^og+}4TSCUk)J!_1iY{yoOugZ-YI99}<|Tq&c^RrSW|O^O?IY8z z4(SlxRlo&!{=MD`xZ74lKy3YB1^6#ib^6wAAnts5`_>(Q_$~@?>Ic+vlWvC)s|)dQ zn+x##dn<&9fSCHh$_nsbeXXj;LBTiE-`>9E2vk*s0`-G7*0D|qqyWCbk6eJ~-&-w> zLlBUzegGNJ+iUB+yS=;mz23UshCNUX?g6-JLNLJ=CLl)0fal*^4UoVte})T4tREnB zw*1}qs@m><_14zbe)zH1)Ae;7G7vl;_FV_|AS8h9fj|bBf7iSuv|56HPgy@es@kK% z*4OT>-J{?AC1B?}cLBkeDhTcY(Z4&FAMo!f>j%ia1$)AS00qyddr-#~aWf#^1;hP& z%K8C{3Ph>SPxSAp>jQ{>6oRL)f}D>7h&_rE&QJ7z?^)Lm3jbdC_W}h9ym0k_qJN+e z@ShZr;Quq`i~fP9=^qe3vp;+Pz}|5GK#YIq{R7z8AcjWh`03E00sP`3q5tSuT=aPe z@6;dqCN?e8v~1fZeY0;y`UhhCJLiuYM58=aFra?`A8m5J*=(}^Ijwp12aHYI?3$)Y zKt|txv?KikG5%fXAK2Vryf%X){R0rQ>GMtO3y@9{Oa=6R#ug~BOpEkE4CVr+hWdBj zKY%x}=JJpM9O)l`n2c`{Q2@qH{h^QH`Yp3dtiEOTg(XPv??V3o-eCMDj`j~UAt>XU z_yiYl`iz$WVs}lNAPYP)<^mG@yU;&?JK8UQ4zH1M9O)kb0UcNbmk(rs5N8kEhv;w*xu$4`AYd z)gOKzz~|6EK(@YrptiO3hgwm8C{Uola3uQotdZ#7vlo!y-3kGPfb0b%`1h=l=-;zO zqJPg^K$3sYTmbX$PyWC*n0Lp&Yk&Urgc*mdA^3OAw!1XEWo!5Qc5VWgf48ZBx4V{Y z5gX&baee|k|88Tg3kv}L-L~@0fal*(ZR+1`-@oT5!1wP4_3sAt@5VpHKzwrqJPg`K;hpD|6ZWL{~P}TuqOgG$KJaP00000NkvXXu0mjf Dv~1n1 diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json b/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json index b03b51e24c..e1c3ede466 100644 --- a/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json +++ b/Resources/Textures/Objects/Kitchen/microwave.rsi/meta.json @@ -1 +1,105 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "AGPL v3", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris", "states": [{"name": "mw", "directions": 1, "delays": [[1.0]]}, {"name": "mw0", "directions": 1, "delays": [[1.0]]}, {"name": "mw1", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "mwb", "directions": 1, "delays": [[1.0]]}, {"name": "mwbloody", "directions": 1, "delays": [[1.0]]}, {"name": "mwbloody0", "directions": 1, "delays": [[1.0]]}, {"name": "mwbloody1", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "mwbloodyo", "directions": 1, "delays": [[0.1, 0.1]]}, {"name": "mwo", "directions": 1, "delays": [[0.1, 0.1]]}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "AGPL v3", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris", + "states": [ + { + "name": "mw", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "mw_unlit", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "mw0", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "mw_running_unlit", + "directions": 1, + "delays": [ + [ + 1.0, + 1.0 + ] + ] + }, + { + "name": "mwb", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "mwbloody", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "mwbloody0", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "mwbloody1", + "directions": 1, + "delays": [ + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "mwbloodyo", + "directions": 1, + "delays": [ + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "mwo", + "directions": 1, + "delays": [ + [ + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Kitchen/microwave.rsi/mw_running_unlit.png b/Resources/Textures/Objects/Kitchen/microwave.rsi/mw_running_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..d259712b6dd8404f1d1a7d801a5b32f96adc6785 GIT binary patch literal 2286 zcmb_e4Qvxt9KV4KHh~Z^IvMJDTNnt}`{>=Zy{y944pyMsT&o*`%Jn|lbM4)Ecca}h z8S?`JGDAcY1sCSxCqZ$M!4lX&VnF#&ln`79U!tf}KE%xsiJPxoTc#OEh)wR@yZ8R@ z|Ns4e|KEGBt18OoO~{^-4METZPpP{Syyt)i9+wH)wwC43gIAVTy2yZ_+b74L3~2qE zIS`cDA^WS%YVSgpS0ffqPy?bR7SVt;1QpJXX&hf8ns7i2%8C=YxMLRr%YqZBqP@6R zbBQ6jv|bl|^<{p(zJ_-Q$n1yU!Wau2L`0K=W0A08urVi+@XLaJd>BLEgo#<>M2g}8 z;c9OM>{4|RrY#K06O4L;oy5}Zi zfiEW#GEI%euxK=DiCQhH9>fTT1Na~@l0<<8YSbwv7ef^zFXh248oVxRrmQM(+#?rI zYfUEtkPf8~(b8@eBS{k=42y9ZMp*E8N(n=OPupp=dN>hW;4v{QMnuIlfGv@>)k3PN z8X@&MuG7>12mq+{debpR#1e_5Ll|bsGLS}+kP)p7f1M^`m7<~6>bzL848Y8bXQQz$ zUF1wv_p53+Rj7&-WS9h5!_%u|MNp&0jA08zH)o1Ygv3c4#VM3@_z4?JFsv1nk7jXv z$keL}vQ#(Rlm^xH<5t!RI>YRMUIfnMZfq&=tfcA@4x}naxS)t>N)Un51hOtQtm+^n zz-1ji?s2&)bXAhWV8W=JR}6bfTnyo07?iXS37}pt>ro7oQ+Uzib|Qcli!2MQNZaj# z1D8;nK+vctQ37h`Z4OkVc#^V94u-&~)Oxqd*T#zeeN2KpF^Zm5zO<#e$q2)O%C{bAPwZ*a?Q44n+vX&kpRD2+2X8lWixkY;62!X_~| zPjL>Be2b=zdB&UHrO+$4 zW&fJd-*71USQhr^Nk{X61D`*&zjNU9nf|Mjf6_+HZ2j1G>Dc~>lxubEth?oNgYqZh zUAsF6Cgq*GV$CgS9vyqKdUWgY^X)sX@~z))e0XrREwbil^Hnbu-|zclV)*0d`t!<5i{o`W{;L`g-z_w5flh*(A6aT} z`!rzs%A4TI5G#V1=L8JnULx_ZqK|p8S{JVk9gHFQennp`9D?0O6I4aUfm`w*H60(6 zgOcev$oAd<7BT|^`G#pjWMbrDw+yB~U3tq`h_`F&Q(x+-qIdH=#fC8$3`zsLB(jcS z27%(R49kKF0p($mlOasx@{FOzCC#EVk3<3rM$#7jyrL_mlMv!`PMgSSnpDD!AxRCh zgo=>HKt|`dw4e3H&KWg$kHiPD+9H`Vb8gn1VYKh~y3z@GS zs4%7pITkHjhbcFZuL6y>S)P*Q%ZwcpkJ$=2&i{ zf$NFPNkVzOR?$^*N>Rjc==&bAYytyTG$(NaNC;)n;mo%g;-2GrGy9sL{h|d5`^jlw zf+~(j@@N>ErW+s_xIqX5-$AgAhzlulY$pgj*Y@2R+qEoG2a@y_SqoK6F;dGSPRJ4T zk?F$FavVs!HiEQF{Ln3z%a-RBZ9ncLyctPVlaFWeJhdNmxgvc+mrT4%5#|Gu@zsvX-BY{Jc$|1i4xTLi*-AOlv?%@9uKhpK zr)i;Gl61J5u!dd)V-&M!QWWFA^&0Oj%&i$*4Z~tNpTg>4KF4{Ys53RC*-JMcs0qJQ zudTLrZ_x)2AFllP)^ndNeSPznrMu@Z^p8G2v3?o-aS6Qg>CusY>;B5``|IEQ+Wf7$ z_v-gwZpfqMFK)m1$?cziTDo)h&-dPW;SSz=WcS?(ZE*4YwGS`<9T#7b`r20QtE+qO F{{!9c75D%E literal 0 HcmV?d00001 From a5fa18476551c648a31cdb4fcdd218ce205c8a7d Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Fri, 1 May 2020 03:38:48 -0500 Subject: [PATCH 14/73] Reformat 'PoweredIdle' to 'Idle' --- .../GameObjects/Components/Kitchen/MicrowaveVisualizer.cs | 4 ++-- .../Components/Kitchen/KitchenMicrowaveComponent.cs | 4 ++-- Content.Shared/Kitchen/SharedMicrowave.cs | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs index 7cfcd07253..bebc196dfc 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs @@ -17,11 +17,11 @@ namespace Content.Client.GameObjects.Components.Kitchen var sprite = component.Owner.GetComponent(); if (!component.TryGetData(PowerDeviceVisuals.VisualState, out MicrowaveVisualState state)) { - state = MicrowaveVisualState.PoweredIdle; + state = MicrowaveVisualState.Idle; } switch (state) { - case MicrowaveVisualState.PoweredIdle: + case MicrowaveVisualState.Idle: sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_unlit"); break; diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 93cf571478..02f451ce57 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -83,7 +83,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _entityManager.SpawnEntity(r.Result, Owner.Transform.GridPosition); _audioSystem.Play("/Audio/machines/ding.ogg"); - SetAppearance(MicrowaveVisualState.PoweredIdle); + SetAppearance(MicrowaveVisualState.Idle); }); return; } @@ -95,7 +95,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _contents.RemoveAllSolution(); _entityManager.SpawnEntity(_badRecipeName, Owner.Transform.GridPosition); _audioSystem.Play("/Audio/machines/ding.ogg"); - SetAppearance(MicrowaveVisualState.PoweredIdle); + SetAppearance(MicrowaveVisualState.Idle); }); } diff --git a/Content.Shared/Kitchen/SharedMicrowave.cs b/Content.Shared/Kitchen/SharedMicrowave.cs index 94ac50e1cc..a2b5b49e58 100644 --- a/Content.Shared/Kitchen/SharedMicrowave.cs +++ b/Content.Shared/Kitchen/SharedMicrowave.cs @@ -9,8 +9,7 @@ namespace Content.Shared.Kitchen [Serializable, NetSerializable] public enum MicrowaveVisualState { - Off, - PoweredIdle, + Idle, Cooking } From f5657569e44f32d07b2216d031fc5ce839007799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Aguilera=20Puerto?= <6766154+Zumorica@users.noreply.github.com> Date: Fri, 1 May 2020 17:44:22 +0200 Subject: [PATCH 15/73] Fix drop range (#871) --- Content.Server/GameObjects/EntitySystems/HandsSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs index 79d0048f76..cc70bc6d07 100644 --- a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs @@ -126,7 +126,7 @@ namespace Content.Server.GameObjects.EntitySystems var interactionSystem = _entitySystemManager.GetEntitySystem(); - if(interactionSystem.InRangeUnobstructed(coords.ToMap(_mapManager), ent.Transform.WorldPosition, 0f, ignoredEnt: ent)) + if(interactionSystem.InRangeUnobstructed(coords.ToMap(_mapManager), ent.Transform.WorldPosition, ignoredEnt: ent)) if (coords.InRange(_mapManager, ent.Transform.GridPosition, InteractionSystem.InteractionRange)) { handsComp.Drop(handsComp.ActiveIndex, coords); From c0ef4c4cbf35a00407ba5bb2ead7825557d8f663 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 19:32:53 +0200 Subject: [PATCH 16/73] Ship fluidsynth --- SpaceStation14.sln | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SpaceStation14.sln b/SpaceStation14.sln index 5e771fdbcc..ccb629b7e1 100644 --- a/SpaceStation14.sln +++ b/SpaceStation14.sln @@ -64,6 +64,11 @@ EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Shared.Scripting", "RobustToolbox\Robust.Shared.Scripting\Robust.Shared.Scripting.csproj", "{41B450C0-A361-4CD7-8121-7072B8995CFC}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{DDD55F86-0406-42E5-8443-93EDC6BB2D75}" +ProjectSection(SolutionItems) = preProject + RobustToolbox\Tools\download_natives.py = RobustToolbox\Tools\download_natives.py +EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -149,6 +154,7 @@ Global {4809F412-3132-419E-BF9D-CCF7593C3533} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {50404922-9637-4394-BF59-165D0850ADC8} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {41B450C0-A361-4CD7-8121-7072B8995CFC} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} + {DDD55F86-0406-42E5-8443-93EDC6BB2D75} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AA37ED9F-F8D6-468E-A101-658AD605B09A} From 15a0e670ad1ac3f566802da3f652031d6340d293 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 20:03:12 +0200 Subject: [PATCH 17/73] Fix C# VSCode extension recommendation. --- .vscode/extensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 945465607f..83bca6f97b 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,6 @@ { "recommendations": [ - "ms-vscode.csharp", + "ms-dotnettools.csharp", "editorconfig.editorconfig" ] } From 5493ae7680d38d21b862cf250aa9b55c528009cd Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 20:03:30 +0200 Subject: [PATCH 18/73] Update submodule FLUIDSYNTH BOYS --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index aa6af785e5..ff03de4408 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit aa6af785e54a4fc7fcf7926673e2ec07ee97f783 +Subproject commit ff03de440890c8eb905ba08621d581067be93704 From 9043035837989d75a7d093b5f2c4a4bc6f005221 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 20:06:22 +0200 Subject: [PATCH 19/73] I blame my IDE for this. --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index ff03de4408..6debbef454 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit ff03de440890c8eb905ba08621d581067be93704 +Subproject commit 6debbef454d33d46de0f47ccf730d468f8d6bb52 From 41ce1380df6baba97f9b4d62034a4865f4f62822 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 20:38:48 +0200 Subject: [PATCH 20/73] Try to figure out why fluidsynth isn't getting copied --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 6debbef454..ee3a1a6cf5 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 6debbef454d33d46de0f47ccf730d468f8d6bb52 +Subproject commit ee3a1a6cf5c22c8d5f47ab8691cb0e57178d4717 From 05a6417838391abcc9552b53b1fcf699e65db8c7 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 20:45:49 +0200 Subject: [PATCH 21/73] Fix fluidsynth hopefully. --- Tools/package_release_build.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Tools/package_release_build.py b/Tools/package_release_build.py index c72a44fa87..007eca89f1 100755 --- a/Tools/package_release_build.py +++ b/Tools/package_release_build.py @@ -63,7 +63,14 @@ WINDOWS_NATIVES = { "freetype6.dll", "openal32.dll", "swnfd.dll", - "glfw3.dll" + "glfw3.dll", + "fluidsynth.dll", + "libglib-2.0-0.dll", + "libgobject-2.0-0.dll", + "libgthread-2.0-0.dll", + "libinstpatch-2.dll", + "libintl-8.dll", + "libsndfile-1.dll" } LINUX_NATIVES = { From 08018f5ea8afe312aa2a70414739e7932247b6f1 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 1 May 2020 20:56:29 +0200 Subject: [PATCH 22/73] Update Submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index ee3a1a6cf5..e5800bdf6b 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit ee3a1a6cf5c22c8d5f47ab8691cb0e57178d4717 +Subproject commit e5800bdf6b30c60b8d12af689300ef298a3473cc From a65d60dc2c6f8af3268e9835c7ea57771eae52f1 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Fri, 1 May 2020 17:17:05 -0500 Subject: [PATCH 23/73] Refactor SoundComponent for stopping sounds. --- .../Components/Sound/SoundComponent.cs | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/Content.Client/GameObjects/Components/Sound/SoundComponent.cs b/Content.Client/GameObjects/Components/Sound/SoundComponent.cs index c36f79fe83..076ac902a6 100644 --- a/Content.Client/GameObjects/Components/Sound/SoundComponent.cs +++ b/Content.Client/GameObjects/Components/Sound/SoundComponent.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +using System.Linq; using Content.Shared.GameObjects.Components.Sound; +using Microsoft.DiaSymReader; using Robust.Client.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; @@ -15,7 +17,7 @@ namespace Content.Client.GameObjects.Components.Sound [RegisterComponent] public class SoundComponent : SharedSoundComponent { - private readonly List _schedules = new List(); + private readonly Dictionary _audioStreams = new Dictionary(); private AudioSystem _audioSystem; #pragma warning disable 649 [Dependency] private readonly IRobustRandom _random; @@ -23,26 +25,27 @@ namespace Content.Client.GameObjects.Components.Sound public override void StopAllSounds() { - foreach (var schedule in _schedules) + foreach (var kvp in _audioStreams) { - schedule.Play = false; + kvp.Key.Play = false; + kvp.Value.Stop(); } - _schedules.Clear(); + _audioStreams.Clear(); } public override void StopScheduledSound(string filename) { - foreach (var schedule in _schedules.ToArray()) + foreach (var kvp in _audioStreams) { - if (schedule.Filename != filename) continue; - schedule.Play = false; - _schedules.Remove(schedule); + if (kvp.Key.Filename != filename) continue; + kvp.Key.Play = false; + kvp.Value.Stop(); + _audioStreams.Remove(kvp.Key); } } public override void AddScheduledSound(ScheduledSound schedule) { - _schedules.Add(schedule); Play(schedule); } @@ -54,16 +57,11 @@ namespace Content.Client.GameObjects.Components.Sound { if (!schedule.Play) return; // We make sure this hasn't changed. if (_audioSystem == null) _audioSystem = IoCManager.Resolve().GetEntitySystem(); - _audioSystem.Play(schedule.Filename, Owner, schedule.AudioParams); + _audioStreams.Add(schedule,_audioSystem.Play(schedule.Filename, Owner, schedule.AudioParams)); - if (schedule.Times == 0) - { - _schedules.Remove(schedule); - return; - } + if (schedule.Times == 0) return; - if (schedule.Times > 0) - schedule.Times--; + if (schedule.Times > 0) schedule.Times--; Play(schedule); }); From 13fba25edc0648c4fe58de00e8f06756ae0ffdcd Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Fri, 1 May 2020 17:19:04 -0500 Subject: [PATCH 24/73] A shit ton of microwave stuff i can't really explain this. --- .../Kitchen/MicrowaveBoundUserInterface.cs | 16 +++ .../Components/Kitchen/MicrowaveVisualizer.cs | 33 ++++-- .../Kitchen/KitchenMicrowaveComponent.cs | 100 ++++++++++-------- Content.Shared/Kitchen/RecipeManager.cs | 4 +- .../Kitchen/MicrowaveMealRecipePrototype.cs | 20 ++-- .../Audio/machines/microwave_done_beep.ogg | Bin 0 -> 18523 bytes Resources/Audio/machines/microwave_loop.ogg | Bin 0 -> 74414 bytes .../Audio/machines/microwave_start_beep.ogg | Bin 0 -> 5743 bytes Resources/Prototypes/Entities/kitchen.yml | 1 + Resources/Prototypes/Kitchen/meal_recipes.yml | 2 + 10 files changed, 116 insertions(+), 60 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs create mode 100644 Resources/Audio/machines/microwave_done_beep.ogg create mode 100644 Resources/Audio/machines/microwave_loop.ogg create mode 100644 Resources/Audio/machines/microwave_start_beep.ogg diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs new file mode 100644 index 0000000000..7c15ecb885 --- /dev/null +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -0,0 +1,16 @@ +using Robust.Client.GameObjects.Components.UserInterface; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Content.Client.GameObjects.Components.Kitchen +{ + public class MicrowaveBoundUserInterface : BoundUserInterface + { + + public MicrowaveBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner,uiKey) + { + + } + } +} diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs index bebc196dfc..124dafb8e2 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs @@ -1,20 +1,34 @@ -using Content.Shared.GameObjects.Components.Power; +using System.Reflection.Metadata.Ecma335; +using Content.Client.GameObjects.Components.Sound; +using Content.Shared.GameObjects.Components.Power; +using Content.Shared.GameObjects.Components.Sound; using Content.Shared.Kitchen; -using Robust.Client.Animations; using Robust.Client.GameObjects; +using Robust.Client.GameObjects.EntitySystems; using Robust.Client.Interfaces.GameObjects.Components; -using System; -using System.Collections.Generic; -using System.Text; +using Robust.Shared.Audio; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using YamlDotNet.RepresentationModel; namespace Content.Client.GameObjects.Components.Kitchen { public sealed class MicrowaveVisualizer : AppearanceVisualizer - { + { + private SoundComponent _soundComponent; + private const string _microwaveSoundLoop = "/Audio/machines/microwave_loop.ogg"; + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + //_audioSystem = IoCManager.Resolve().GetEntitySystem(); + + } + public override void OnChangeData(AppearanceComponent component) { base.OnChangeData(component); var sprite = component.Owner.GetComponent(); + _soundComponent ??= component.Owner.GetComponent(); if (!component.TryGetData(PowerDeviceVisuals.VisualState, out MicrowaveVisualState state)) { state = MicrowaveVisualState.Idle; @@ -24,11 +38,18 @@ namespace Content.Client.GameObjects.Components.Kitchen case MicrowaveVisualState.Idle: sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_unlit"); + _soundComponent.StopAllSounds(); break; case MicrowaveVisualState.Cooking: sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_running_unlit"); + var audioParams = AudioParams.Default; + audioParams.Loop = true; + var schedSound = new ScheduledSound(); + schedSound.Filename = _microwaveSoundLoop; + schedSound.AudioParams = audioParams; + _soundComponent.AddScheduledSound(schedSound); break; } diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 02f451ce57..63c2da2b10 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -1,4 +1,6 @@ -using Content.Server.GameObjects.EntitySystems; +using System; +using System.Linq; +using Content.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.ViewVariables; @@ -12,6 +14,8 @@ using Robust.Shared.Timers; using Robust.Server.GameObjects; using Content.Shared.GameObjects.Components.Power; using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.GameObjects.Components.Container; +using Robust.Shared.Log; using Content.Server.GameObjects.Components.Power; namespace Content.Server.GameObjects.Components.Kitchen @@ -29,38 +33,38 @@ namespace Content.Server.GameObjects.Components.Kitchen public override string Name => "Microwave"; - private int _cookTimeSeconds; + private int _cookTimeDefault; + private int _cookTimeMultiplier; //For upgrades and stuff I guess? private string _badRecipeName; [ViewVariables] private SolutionComponent _contents; + [ViewVariables] + public bool _busy = false; + private AppearanceComponent _appearance; private AudioSystem _audioSystem; private PowerDeviceComponent _powerDevice; + + private Container _storage; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataField(ref _badRecipeName, "failureResult", "FoodBadRecipe"); - serializer.DataField(ref _cookTimeSeconds, "cookTime", 5000); + serializer.DataField(ref _cookTimeDefault, "cookTime", 5); + serializer.DataField(ref _cookTimeMultiplier, "cookTimeMultiplier", 1000); } public override void Initialize() { base.Initialize(); - if (_contents == null) - { - if (Owner.TryGetComponent(out SolutionComponent solutionComponent)) - { - _contents = solutionComponent; - } - else - { - _contents = Owner.AddComponent(); - } - } + _contents ??= Owner.TryGetComponent(out SolutionComponent solutionComponent) + ? solutionComponent + : Owner.AddComponent(); + _storage = ContainerManagerComponent.Ensure("microwave_entity_container", Owner, out var existed); _appearance = Owner.GetComponent(); _powerDevice = Owner.GetComponent(); _audioSystem = _entitySystemManager.GetEntitySystem(); @@ -68,40 +72,50 @@ namespace Content.Server.GameObjects.Components.Kitchen void IActivate.Activate(ActivateEventArgs eventArgs) { - if (_contents.ReagentList.Count == 0 || !_powerDevice.Powered) + + if (!_powerDevice.Powered || _busy) return; + if (_contents.ReagentList.Count <= 0) { return; } - foreach(var r in _recipeManager.Recipes) - { - if(CanSatisfyRecipe(r)) - { - SetAppearance(MicrowaveVisualState.Cooking); - Timer.Spawn(_cookTimeSeconds, () => - { - RemoveContents(r); - _entityManager.SpawnEntity(r.Result, Owner.Transform.GridPosition); - - _audioSystem.Play("/Audio/machines/ding.ogg"); - SetAppearance(MicrowaveVisualState.Idle); - }); - return; - } - } - - SetAppearance(MicrowaveVisualState.Cooking); - Timer.Spawn(_cookTimeSeconds, () => - { - _contents.RemoveAllSolution(); - _entityManager.SpawnEntity(_badRecipeName, Owner.Transform.GridPosition); - _audioSystem.Play("/Audio/machines/ding.ogg"); - SetAppearance(MicrowaveVisualState.Idle); - }); + _busy = true; + wzhzhzh(); } + //This is required. + private void wzhzhzh() + { + foreach(var r in _recipeManager.Recipes) + { + + var success = CanSatisfyRecipe(r); + SetAppearance(MicrowaveVisualState.Cooking); + _audioSystem.Play("/Audio/machines/microwave_start_beep.ogg"); + var time = success ? r._cookTime : _cookTimeDefault; + Timer.Spawn(time * _cookTimeMultiplier, () => + { + + if (success) + { + SubtractContents(r); + } + else + { + _contents.RemoveAllSolution(); + } + + var entityToSpawn = success ? r._result : _badRecipeName; + _entityManager.SpawnEntity(entityToSpawn, Owner.Transform.GridPosition); + _audioSystem.Play("/Audio/machines/microwave_done_beep.ogg"); + SetAppearance(MicrowaveVisualState.Idle); + _busy = false; + }); + return; + } + } private bool CanSatisfyRecipe(FoodRecipePrototype recipe) { - foreach (var item in recipe.Ingredients) + foreach (var item in recipe._ingredients) { if (!_contents.ContainsReagent(item.Key, out var amount)) { @@ -117,9 +131,9 @@ namespace Content.Server.GameObjects.Components.Kitchen return true; } - private void RemoveContents(FoodRecipePrototype recipe) + private void SubtractContents(FoodRecipePrototype recipe) { - foreach(var item in recipe.Ingredients) + foreach(var item in recipe._ingredients) { _contents.TryRemoveReagent(item.Key, ReagentUnit.New(item.Value)); } diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs index 6b653ee96a..eb238b105d 100644 --- a/Content.Shared/Kitchen/RecipeManager.cs +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -33,12 +33,12 @@ namespace Content.Shared.Kitchen return 0; } - if (x.Ingredients.Count < y.Ingredients.Count) + if (x._ingredients.Count < y._ingredients.Count) { return 1; } - if (x.Ingredients.Count > y.Ingredients.Count) + if (x._ingredients.Count > y._ingredients.Count) { return -1; } diff --git a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs index f120499af4..4a61598629 100644 --- a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs @@ -18,24 +18,26 @@ namespace Content.Shared.Prototypes.Kitchen public class FoodRecipePrototype : IPrototype, IIndexedPrototype { - private string _id; - private string _name; - private string _result; - private Dictionary _ingredients; + public string _id; + public string _name => Loc.GetString(Name); + private string Name; + public string _result; + public IReadOnlyDictionary _ingredients => Ingredients; + private Dictionary Ingredients; + public int _cookTime; public string ID => _id; - public string Name => Loc.GetString(_name); - public string Result => _result; - public IReadOnlyDictionary Ingredients => _ingredients; public void LoadFrom(YamlMappingNode mapping) { var serializer = YamlObjectSerializer.NewReader(mapping); serializer.DataField(ref _id, "id", string.Empty); - serializer.DataField(ref _name, "name", string.Empty); + serializer.DataField(ref Name, "name", string.Empty); serializer.DataField(ref _result, "result", string.Empty); - serializer.DataField(ref _ingredients, "ingredients", new Dictionary()); + serializer.DataField(ref Ingredients, "ingredients", new Dictionary()); + serializer.DataField(ref _cookTime, "time", 5); } + } } diff --git a/Resources/Audio/machines/microwave_done_beep.ogg b/Resources/Audio/machines/microwave_done_beep.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e11bd45107f4cd74c94d5e67aa6f4103cc6b6ac9 GIT binary patch literal 18523 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/machines/microwave_loop.ogg b/Resources/Audio/machines/microwave_loop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d72097e73b5c914134b1bcee2a3f41ab437e0a11 GIT binary patch literal 74414 zcmd42byQu?^C0+u;2PY6dk7xf-JPJp;b8$D?(P!Y-Q8Uh+#$GIkcSh31`;xt&*%G_ znLRtRbN1{%d(Wk5satecS9O=6Vr8WPf(8BO5#jx};^6SLABG&p?US=981m8u6VUbV z$bbEAhf#U?^1nYXU%~(__R5tq;gu)}}|%`_RMGt}qgBZ(l%?9v&g ziSm&pA^765IS^cp3clrR+v<)MiV!Sf4OK??4D~p5Fp=5kml~FW9IXpBKYflFmcCry zQo3!lSSx7=dZxM}<6yFSlsFQRMhxRnvbwxDBCQJs{~@VHoIHbAdp4x1B{kJ7y22$< z9!g`bC@#wwnkbK0qMso9jy2FI%&{oUOR8!4 zF7jw;-MJbrzq}M&=6EkyMPyQwF{Wy5>V4 zNL;WbpEc9ap^GEc;-Q=a)8Sz@WSWmY3o^_L&4xrdTe4dNaM=*-U`xh-Yq^7mVz!kp zeZzcZ!A{bI09uYG#>!+PflGv933Do=kj*O!B$SE(j}{|t77fr?qdB8g$P^VN zsGm?IYYxjX=KQ;IBoK%)1Xo>_GW0)11Z5bZ=_q4ab`T0vMR8#i$2d#VB*(-{aa!Lr z&40!=h$Vqm(~Pa4)Ux=&tfm8+ZHqCd2d-&Zl4mRdcA4=X`UL>ngG6NhSxou`a|C5+ zw(~e+c|PnvY}CFVyN3{zq(}qG1Y$i-uHic zUCI7gqAUn>BpX*O8&xbDx5t}E15-d*1p*Pha1%pR5pUd{Y$A|`7)n|ar*6eKlx{l3kg}p)9Sez5 zm#HaAHf4G1maHCIF${1EEGh8A5&}&B6-W&P3SpOJEXFmB;Va9Qh+%}LL&De(Ng;83 z(0mtlCTO;cviu++&@9V_sPogOK$PX_3jqEAAp$?B1>Zj7!H8yq0>lypReo}*C3C6Z zN@=(ls&N@E{}f!jQPj{9n$^_O(6V3E)Y45AoZ%9h*VLNf(pm(Xz}b;1rL|~3@9Mhl zqP3Z7zkYA1kME|YWxuIuxc**i`Oa|l&R2KI)$FIB)~({atI)iQ#iFadzN?|(y`n~{ z(sGK$ysQ0siiM%O#p*rxyo=$ymc^=z;i{X3PMe|bo$tJB=yr<5M;!}YLN~+vQ2phU z0~fE#13NVDtrZhpQo>u-2`w zhFj>ai^cYG=(etdA#duetFK9l{q6?~T|U3v52>5?DHZ^#5B95s+Pe5*A0KiK?tJ$= zTn&jFHldT9muMrG#ZTk&i}q$2zMHz1AKl}23HiVL*sG|l%c^BYD`P?Za(+78^wirJ zQ+xVU2{f73`x{PsuYdQ}vlN{@_S;PK*RQp*Z}d8_d~qb5ust1TKkZd(b@ln^fiiII z;%ew=X*hD{>ar)p>o*Q;EzHZ-;*5(HP%^^?@WO!NX(9{Fbqg7EQyHR4k2(vjJ8O%< zr4`^@uwJHBW+}L`kukHD1)K@i%eBnREXydh&aAb~EUk_zWt=Fr8E*t%Cb8Y{@Y_nDg&V0fAHmj6r zqSpSY_jJ6`p|a8rzjc=bifmvOS*M6$1tUi5dUOd)1o_4ZzH`+Z_RzG$!uXlbr}H& zgWG-`kQ0Cf?<|0>SuT5hEiHW>rNveYfCYgg)r3oF6_BDOrNw4@-Bf#%R*PK#xXnWU z&UHD(_2aVd-m=B!VQ1s{L}SfUWz}Qr#Z$lIY3&ab5Qxwb1VUmfK*J?�EtGr$UTL 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Ϗ`qYU!dy-F1&LarqEJ&)SnaEUxEiA6`76*`CF zNSy6{YfFEltf!-zut~nCelx~w@d131nrBD?<4azUlCP7RJ@GWp#IXCYgTBsCDpXM( z!I?7Q^hS&gz_-Xc$mu1aoBu!pS*hTDsZ`AtrUW<5aFH3%PWhH~MAlulQJa+bWLf^``r1j}QJw z{(bE1sF-t=Qr+*3Pzlip%+2s=dXMa8pE zLHl(WZ7EX`Byg|rT>KTU%|in-MveAB<{eu>zLwHoEEWOLtG^Ulw-10Wu#z_xC+o^04uE_k=vE!>j zIqD63QJToy(V&9b_J@#`A=>}o2%67U&i|?*5P(ac`V zrsuP`QwObWy6FEpvwYcf;p@)ic;G%6jN!$-D8gd88i9rSzg`UZCf zo0V~#*oi8C<_bqybm#M{{HG>wZESY^=_}z>B;h*+={m3iQP5< z(FwD6yX6%OII`vdLlOllBfDSF;(Z9MI86qGhu~-wzlL3k-C^W9yKC{Q2R|hLg)U|m z@2V)c-pjFdaYde8IK;h(8%?jl5r{jt=)~erq*vS|hQ%>b#vc7@Z5j0J!k8taGUN;>$9magS?k-CI66vE|x;`(QQ18B$_e zdH#)^@79o51#{;-6~8$(HgI|p#wEYs7q30}R)Gr)orx_2b%}9x!D?LZW+F}tb_E?N zQD^F^P=B*WXIhA>Y5;zPKW6-A-Vt9;Wy&G+-1k{Ps0b*yh}kVyR8zii^Lqoh=5MG!tK%|QnNZ2+clM0kd9`h6*ZnGT z?sRRM@wm6EOkmMkp_g+(#0|)jhjSN3zCe4KkkoWh(Buux7{sV%Y*)_@96}@~kOAfu zJ5U?MMK%HG_Dt~_Qjn)XL5ygB07WSCi%V5bF&nYV?UATCCFpTy6PBvReUh|bORVFo zhQXsL9|*E+h0Y#Qd}9{*@g}Qpf@x@eB2c1Q(TU=8ljChFMoS2Bfl!#YJT6wVCFvBI zO`B^JPBc+Zox9Lj=0it66QsxJ0WicP+OCvI_H$ozM2cwwmHE{m81Iu>q zyH_>HCH#jbw)vKQfX{l(@S?cYtZ{ZpQqZu(#;#8SQEjdS*wV8;K-9Q6ARNF`e)fm+ zv)`_`$dYTw22i7Q{d*XxH&Ws%`cP0u*XTFO2zGzyhrb@C)F0bJUn?_}btK`fo(+oE zDY*UjaF2bEBbA%xZ*9?`Fg|)!BjG^fVdSJUGL18ESXGdXs0{`_Ve-wWJ!2krqZ-F4 zlM}_t6xDEiQF^m-5eV*0Oapjgoz0N*GZ}5mGqNh!-`KJ4CWsI0ugA7qwN9G;HC4tX z^V}2KBpRg%if~_(1r^W7u2-!xa1tl3Yc1NF#2!Li80(3_b-p;d5xGk`))7pQ22X_P z){vwqT0&`b^+^8vjl`EJE`?i{IHW?F+=8Hu!<>EmiC}-A%)v{4;-L3>ES%9eq5ujC zV-E4vSMDgnwz9Qn@V*Uuc2P6euRDJEdg@n!5_r^sV`s@~LUO8xiMWI83c4hs! zJO#>WQUuHT3Nut67|XZh2Q!3FfG8{GIY9akS8vM z3uw7;n}V2ew^C-AY6jd*C;zfCBkCi=GKb0oT?a zG+R6tZRsI(?wSWFddv26NhoJrEn;`#MlCxgOblZ~QjS+O>)L^cVld^|T!vJTaXgVQ z=1O>hEM76n1Ya8H+68UEjZMEEYEh zSJB-suCH0VKb>7~3PZdm`^tNxXu|3o_QZh6M(ig`jo=`;2JXB|YFGd=1l2f{C z3r@L0+kMq@*vMcl^m__Z23ExffEl-nf|8-9I7#Ia95XIwRR}?`;2{k6^!oRA^l4(_ zPiap#cEjAs>QbG=H>of(@d=oul>`1fiI*&jO!}-}l*()>G5?RKvkZ!(jkYxw+}(o& zcX!v|?hxD=+%32b?(Xg$G`PDvA-D$*5XkL(=iEBK_(K)d%yhrI*IN5oTk98j-Lh=z zpkAp#cX=N(e$zSJE6C9lkeqErLaD76TXE>j(+>FC7pDLiDhR~u;8Qrz+Y0T(QN}bKs?L%!G9BKf^ zXB?3?`8`p4G~4}Bbf}Qp2z_VO6Q5&|MX210edL51M9^=}8NUp~+ukiAsDLiZTX5Q) z`4u@j7ul=~`B9?}&+O2i&l!1}`@dz2;OzaV*3se577Qi*{FE*}r;%~;O{o<7srQpHvL^o{XRD7cq-6cHc+`X=Xei|z_7jB_ ze0~zBofWfOqgg%b*9+INmgLhv^B_s7sRp8a$x4p) z^UR!pG$<(da#hN)VTd_T>8st>DtI}2Mpc^;Qc{`C0CjP$Ak=MmZ_%#V*Sj&bB2{mN$`zt=4? z?wLacKbruVa2*sj2ES==l65NYPIl^ANUMfE#wy?{$mhWy&{eeS3;_WM;y`bYLKY+t zge)4z-_DK5q7TQ3?%pMQeP_EoI_eO_zB(8rMO(?*env;(3iz4g#!tCgZiH%(iudwm z@l^F3=5!g8SU7DxEL5VNxBNOF(lrgqIa8LDgoYMvj|N6eH-)t()k&P*{ITv$K0@k4 zd%yL*;QSCbasBcZHxNww3BR|+iIOE;EYT8c*oFtymlO>KQrsxxI2@Ft{OiQ4bgR|T zxZ>sL2Wc(4PcRHA`dH30CgJpdcI}a#hvJY-+VX=^dn~2rY>S&AE?a%9j}`diE7TuT z0~Al2&uh7uIdcZ_Mfct(m~_68FqKIQiRNd`t296slLBJRDe|-^(QqU{N$^I!V+=;J zfrQ8kwID#$pY!}kx!LD@ILOj>(A{(Ff?oMHEzT$7h?eXUyso`owcOg9Z^3Z{b1anzobodeO z_;RuD-m&Pw4e&1>C%W*j9b9;(i85p+mI|R6G3<&9S>wg-s)G~Tj2~WqQGZGugv(Dr zlt!2W8u1@KG?;BRqwpMG(&l&6AW9n-okg2ynjBi<3z3WNLaEIullDil_qWji&H) z=lt|cvOjn>Bg%RsUU0KG3p1{ubkg{9_RBY+3HGp@FctKoVwkvBp*3GL;NO1(ZwLrQ z(dkhbLOi*y8)2{^6)NUJPY9Fo`=58a@?vy(g*BbGV>d1uuuht#Z(;H$*m8Fj^#+z* zd1mv!XbUG*joOKOSG9TmDP0_Ux5!#Rh;5Yk8ib1?GyS6hb$d3_T;L3u7!Mu|5GzkY)QZh&{-22ih2Q+J{J&>;YIrk03-BNx_;Mj#&?q03cOp~EPd z+kZ*;sl9EcGQ@Ld8P!ckvco|O>l~V^ zDVUHFjyW z!^ck5sGQKbIbv<*U+0ffeoT$;^w@G4HlRFcwTT@$U`+ltkXe%H{tQghzg#O$II`7x z_FD|e)P5;B-E+b15-=r!=38J+7@mT+9fvM`P;B8&d<1zZ%J*4q3%0UmRf1JzC>k~q z+a5vzomS~RQYupg5UBw$Pmj`+j~(P!O$OH@@%jDn%bu4Fn+>50%Un3pa={wpHtVVRQb?-nno{)LO zWE^;uv$G`69$l0+6|Cy-3^CSrd6_YM_;>A*xv2PnGvU31eTcw)Ifj{u6MbSbW%H@` zy75=#Q$f?i8ms%ZA-JpI(H-qG&wTD%f0eS}u@cgA*!@J#p7Aa1ie$8IV^WYnmem3+ zE;ae@SJ^{#D`0g$&@CrMsF~fNfVL7%VZ~Yly|mRdZSNS4SE8t4J;fs?`1SbzcXrnQ zpIm_o$QAEJ%Shz@fkFNOUwyp-y#s*G3?N1k7#b4sHOMQ#KiD@E2&4N0Pi)J0#(#TO zi<6^iT>|VB<7(<5h#x9aWqPl79c`B77d@=l%5kbrWDp)%d}u!r5;Da%Yuk)wwKM*Z z=P0FFSn9azI056hEX{`qwr3Mh_^ z6$&6k|DbGdH@y!$E<9Y6Ijtl@2r1Ir%j~+=F)R;<8pKWhYz6F`iVHrpe>Z3rX0}vw z#3O~Bk=?5hqV!%9zS`???+Ly#kA@=H|8A{`=k)(OrraO-pM4$l-=qr0}CLJ5elo(o3A! zqbe;hwZ0?1Pcr+&BUzYYSK#EwkbQAMAcRPO2?xS`yTl`C>uBvhEt2SCY&KvdQKrzHBdig8}h`9r&pi)(4NzU)UykY&>Oj64<}0Ap~Z^ z$RZ-?O+iq#wzq(dB+?z;xsI$846MNy8G5FW?~`#B@ivG+p0pdA;iqL&vE}E4LBueJ zv8{;j`QCrCZhCaQkIS?^+%c;%TZ5czZWiwog&yS$5Rw}vtxRdn>Qh(WaJ0V-%o!bT zxtU&nyy+rxy3$Ztoe6Q}dl~7gbDwJw`0%mnhjiV_;;RweD^5l;7Qr48du~O!fBPfK&`e6#E_8-PXAx$RZm7c%Li4p zA+*ITP9F?j;Z{+40=zIohIXr&Hb~HpO=G;jnPqcyNTsmN!<-!zgcU1%;D>iheMW=_ zRk!c}y;8U@$b0``th`OYAo)>Q=>fzrNBqss%7M-q)rSoHOZ(ck*xGBDa0Uj764jfLY-b> zd;3jjt2XCgl@tNtHpg}vYJ}4PH(O3Mx)8|xua)xz^_Ybqo-mqu$D5q>otn1fxie!G zBsbE@vf*#Kg~OFOYGD;sNABjeal4A7KG|;;`yl;-61sC$xBX5gY<|-2NB3AKnujA_ z36!xz2hZlK%Zy@y&l#Gup@9PF#|7S#yPm(Z?fx2ZDUh!?$x*$o9({yYpD_t|JK1kMJk-!s~D2*gWA8M1q|9KtO>c!$@!ho3~ zUetwyPpZ60xi&f+HSb@O)`>JlN*fpmuTz(t@TsYJk(wdL7KZ(pL_Ou}_{tB2N zJ^6iq(511Wi>*bK0KGr;Fun*+~%ZFs_B^CcU5K85K6=Cobt$ z>IB}7X+#?uee6f$K65wFr!(3K=y^Sq!9px;<-SiBOq@Vw!Q&n1@m2?-oE`9qn>~r< zXM$pBg|wu1@Q&kHGP3OtiThP_ua;vupj$uN7Ie*rq18*_HrU2lAu; zjB^4RGNGNv&ZL1D#KhT8+2}4De~Z0HORP8qPd(^;u+8J%8~SXg>2gj$j{U*G1FOxG zywdIA;eBEJ5CBv9N>&^gixik~UfjTkrcx0=KqoPExB0^JD5cE})f1IpIlPFE=k~YG z?8jy;k+L0C)y{nbOoVTF8LCGY^*A5v47DEp<*4_C%ujDCKz?9_vs^;hdGQmknXo}7 z=FrFO-@8uaauwDGXYoCONYk*ts?T5RcE@OPt(u0Op-XC}PaKW*(EwCZdkCgv*nNOly$nhDH{ zpevt=>`Ug?Kiu>nI82#fwuQS^;3)0}@gN-hA>OA0`AN#8>s1(rv+d`oyJ$kXRjA&- z``3Ga2}oV(Ku8J?;iw#t+w@5kfCN7NQ)Clk+DJQ5=8x?NR<2Wal_tOe!y~AwoUQmf zqJ8(v_2#n;f!gHK4ZfOT45$7hgI&qJd{)Y*eTSIgZ+=+XwlNnY$dZ(lFauvtz-yG? zRE&2=-rr~x1{*&FbNPf-j9ubvu&OzEV@-YJ#5Gl|qO(^|;mn~QAl@fEY>4Fg5){@H zySq`>P2<=yaKK_H*a3iRHEk2uDIgLXf9=OTYZG~4vWIE(XndEla+Vd4Xyo6PLyuyAs!wp%m0*n`X%-ffD-8?k`6?~6mKKd%9 zA8vA%ns$9xtRZS_vmZUQtf$MD+D1K?Yn!t_^Ije9i2RV9nO%k;C)~EL$F0>@ER}ag zh7&q|)TazbkEN0SIO+`Dh=@n-`x(_ekZ^_Qr|m}VdGMvs{J(VA${`?%a*k&a&L7ue z5ZG#=KxE+kEAzW!DG`o*NFrtt=o%m!sym~W)iik(E}kDTjV=Zw?i|V6V98D0mnrYd zq8>;36ki2RODQU@3xalsnr@4|*Kk-HKFY=vZF=7sTbefu6-d5A^EwhOH`Zo~Ve%JH zL?0r?E^Kw_-`YR{X{i7-3+!N1$=ERqQ%U^Ij%>!tDb;X_YqiaV7u4ka~Q z8gk>BA9G}^FNo>8Y<%lV$yE-0rwQ`3Sj>d%)sOg!)nvMj~wJ7K|i z1+Yp#t>Ve8)w78EFCJIL!~0cJeM%m`?4`wcR-RJda=Ol0=W)tEwn6kxJ_Zn-BmRr; z&`}QfT_h%*4j{y+*!qlR71b1)4qhDj8?+j7otg+gaJ}%9uB8@IZ>6hzzBwmeaMp(9 zQQu2{au=4lY<{h=N(CN8{+y8m@65)XdDI2|=SWVO^>a>->S6H!X( zTP(<#Jgxp0Lxxtq#DC6Eq+9vCo>&p=J$nzik_&ku7jc|;r2!y^Jsln7+t*jgOvtgB zp^y8m=Uw_3&A=WjyHb6O*((D{uWxx9e0(xGIOx-*4kMc_a1y3P8_dDhLuw@cHsXfZ zH7hoqPA?oTQHE>9zT|#C(npLWylmLN<>brNZL1l7|f}i@?@{eXhCrU#hirBIty@Vi~ptyl6Kw?-NM5?|-EuAS`c5Svh`;;|!@92Nh5ofitL7R(^x zNi}5N?rpK){k(w++cwy-v_?J?E^b7--uz-~@H8kMg{;JH_yK1c**dwB-he^nZ=?Kb z+4dCqsEN5Xd+4&5=AZ^J>M6M^k)p~1&VW(ft4f}xj7hXpWdM!_zmSpZ7j+M=GOEHvG&0&8kCVZ__>njAfJ;#SGqW~9eR20sp) z1X6I0b0x2LdEYE~7-Ka1d@H)a3Zngo(MucdPPv@LtpA)y_-QeWn#xo`yqM)96Us(R zQA1O73)Y~lD$JzQ2fFpSoc{*cE50F#ocG$Nvebx>w#BgyC85>9M{QcYV@AFs9x~nyYqkOI+ z5mycKp1x?Hzvm%1##y`6w5<#eg%1=-Y@HOIK;Wo3UU?9ZKY{M%Q1x|5dS>xBAMSz9#sx99!vqC6z)y;h9s4@?>s#nHL z!iw0UI+#nGE?#+Qb6s%4or^5`n^*TUy?NcTr`L)3PE+S@>!Zc`4HW&%Rj^5-VZ}kG znyDCiJwDJyE~uYiJ@tzZlIfN5JemX(tz+$1%=`s!+J*>Ry4dDffK~x3vZT05?XLyV z|9UJeVr_s9RTb!4!SiW6Av;?Xh%^l)okCgu_XmeR-*=yWc$4ZE*;0~nR$Lcyx}nM$*F7aVRC?fgJn~^ZZ1UJ7F*#BWwU27$nsb0vxT;~ z@zIYfWb6{6flqCP+Af_D^Fxd`KD6yA+6FY`MUcH+D*zs>pBN>}NVrzD+5f!k^Bipo zeRq5#{f=YL)1>Tk4)R?UpYR7)kb%pNnax9%yHGu~f719BKUeFYvOAlo8D8IMiwg&5 z!bg<&9c|`>W_{zw!E97bj(Pjrpx>&nu5l|RIB?(exrzeKdAF8>y^sx0)tdeK&7uka zH%Gw%_b)~PA;Jp*fd>3+Hx)!)O*-!I79$20INP^=LW65#I>5(c0w zeE>7{2%x%&#hx6dj>*=KU~)?r{t7M3@>|k9Ldlodi}PG+=EQp`t8tBtnWmXEjoJ1h zLoR;_P8LT7GmM4H7gRp~4rX5p9$BlUqYShV3sEllah)r`6qD@&-(IdksPXp#uACCJ zv2zawG>3j<_>9>Xk0Jce!{7!fx{pRf0WOa3$i|3eX)1;{+<@LTHF>*j8&u;BpYmpI@0yk>eB};W60U@iVZ@t0 zCzj1NXJ*hw|5jY5#nc%8RS$E2zKfF;NOQsr3tmr}zuM#{HT8MlP4A9VCSP#VTJ2<& zlGy#lwzU$e=w>iBZWmr0ffz>1qq=IwQl^KU6T0z@duVTcx;6XeTT$sVq&-hs)*1xP zs3B2$>^P=}cO=89RO-~S4XFUPnzl?MC(69jy?vS!5|B8$0;kQdK>-r_1iv?*?*R35 zFn(I0Bz-11+jp%|wm25-UZvv~AIm$!%=g)>%`=^nj*BWVHsWlD{BupdgaNAsCr;!U z`DsfFy7hN-aSgWIYc_a{zoY3VxIMvp;tAxE5tJ>-@o4oAofTueenlMyU=_x|P&-q2 z$_7+&B0v>-N49|YH>eQK_ZU*@;se_(k*<_Cv-tH~cbH$E#&R+r7{eDUNgo611z4Ek7&e+0)ab$&?H{yyW|BrZl6hBPvf>xEwb}2*Enn=xg@c6!{)BT z=pdXroSNSMHO{R_boZ1zEOQ5B5#Ia!2MnxP*;ub!>$!eV;?xY#DbDRbKJ+n3=WL&X z9hnP8cX@zcdW~brVaqg5QF8^Od;oL`kn&l7fiaNbp?FH-HjU#m&C6=Q93#KF+THlO z+G4oEFe=!EEoMP_1&)@WTxp#X$5Kv`89vNm&8qS!o<#;LE1j8H&XH283`&=UtQcd! zj*etun_3&UYLMN3(;?A|y6lOwUQ~=oqQ%c<#~{ftMB^yM!+cXyfdqB{ePVwi!>g#j zbSq8hM@pMQ_L-h*YQ+%9@1j8iuM)LHUH(S{op-aN@f}nJmE3m&PpWBoi_NxLr1+c!zRri|AZiic(tCU*rJ=$VCu8-Qg5DquTBNj2e@78)BZt+ zPP$*vc|dkU@oeNPOzY^R%z9FD6t=t$Rf5FN?|wOo?VJ)fs=C{%1Rdc%%E$2KX}O!A z%aPhW4<%nB#gH3*g`UUG)>DEbty_UB$pNAAG# zEJjM?&gragu z0Q^lsRHv5uAduEk#d>ubiSaVPh++AXX%i;dNnum#`;YLFFm*wjmMm=a^^({ z)%p@vizBc$*oWvCC*Q#qzgC<4LY0T`P+=T&F}41?#_lF~1nDLUS7RJjmcyDvm8O6o zoRh9ijk?}5FMH((eh>QyUYfHf#eJ;B&253IAD{(YZW>Q)cvc2>w`;HpFP|*x)IX;< ztBYixRd=kR%3T z2G1lxyBR0td$W^JuhM8DqWh8iMr`!oGW}pRQgOwbdJ4(lxJZH3;lrZHkq|@n(J0#9 z{+g2P7acXH!ia%Nq4clDp73?1@FzNwN&#f%n%lP6#00@i^ZAeqOXH%IcYQ(-dA=(k z)Wkj|pu>QG;cms0qrEI#H>{{@Xx{ekSI(9E+qj1#okQa=q3K#`LV<_{3xIX8!^_r| z4gaZK*y_AGf678A`r~7U%Pr|SH&{P<$wvKV+Hz@+Ij}d#PN_X+1(^q69F_JPhq=k$ zK+rQF(btDCJGor_LJNrD_CW)7M`{mlbJ#P20h@c=Y#UJR}ci?s>D6b9f2c8D}}We1;>L9(Ku z0B!2^HOFn7LYRZz`5qL8QbW*%#|l-iUeq;t;h^lKiXXX6X=!@3`C?N7slJ!!euInY zb5m-cPnR&bN6&kI+S|f{XTrw!C>#_@#rte55mPwPp)b5*DH>Z9(dIOQRbv&!hhchs zxh)a06gH4mC|@qzPo%kzU?8lMA`!!$TA#x^K5N6CZ(8abDKk{;fWlIgWth`!*9UsDh0GU2*s_tL29-e`HUHiHeW%Y&;-R>^p$Z+HJUVB3L zj2P<$hIi|vtUwo`l@7|HarzjVv2n>uC6wEv51Nyhr(u0L`aH_!HMs(33(*_HeFZ-t zW(S0F*z3ov7!bH{2I*6L?r6U_5}WwC{+&MI^>rr6kBDRh5f(>@RJ-TaV%81>}>;iJ85g0{VY`zcc;LbL-r5rsN*ZM_3R0i&f0XgvYrF%PjTnD)T3Y5 zQ|sO+q>D;O$YXsERnp{(_!+1RJmAMI)4H#c5mx48JURh%CGY|w)SpmL286PvT#7kX z1otY$D}~#i)<$lmMbdBsUo~1*iHRZ`;%E>qI{U!1n@QHOu`SuH9QH^<@DiF8BMQbm zvS09lY5wv3pXq>da_CLgN~tptX%aT@8j*y5aR|)HtGmjFi&_qTPIp-)CW=waXfXeA{g_tc`mbMA;#<+Pt(e%M?I=j6LhHfa`RHw}bQsOThU_m23yoB| z@o6tUh2`g2E*bO4_PR$)^)1PB3VMA@DRzz4hb)6q?!1lj_BPqX$dz$AkxfF0Gw9A% zG1FGat%0Z=%Rl%AB?GFa;UgzCq7@a1a{0}rZCmOJvmen>Z70eAfCbP=mJw%^H1#hG zifU^@Nx;Bm0#;%D64?4@`mS!9W!H6^M16gnSn*QddnkQ@^J)K7-tuuSZj9k5Dh-OY zd^hv>8(#JBJps2%K%5il+D?nP54eB>Roq3c_7$6=P|ZW&Qfe)Pe2MO7?s}CAXIsN^ zT16p8Sr6QbDfiJ&My`PDv?G8T6a@=ZG{tihoLvP?CC|}fD;>{U&9n*~N5|JroX#xQ zRqrW8TjUqLK9e1lqT$Z@N-tHIDChgXcyk`J{~qo8;{SzSetYIJx-+K&4N2Xjv`k=H zO~A657k3JGd*7fVlv+yvfT-&BL_gJPf~*6=h&7M8DP*(>s+AHZjtw#Zp!F&a5TF+V z+qoymn`gt+6wQdkv+d*$!M*-pSiZ0ry^ewu(5={}{e?=sc5Yo}C6!E%ctK-BVesNJ z&2$H3PYa<ustnkL#Qm+=BpBSlG_ z8lG@%GCE&6rCoWLg_oxCW!qGF@i5RB*n1ph&x7C7wOQ1oEv3>Nu?n%rKWhEc^Mi@n zp?RpX!&Wi3ss`s<^#_%Bg>!t?K51&Rx_coXdpAno-}>jvC`To1H_p?quMKBueJ3Xe)nOi7JUcJl0g{y9gYZEKwyoi(JhOiciSu<0R`5Kg)TE*HIgDm|U~-O?vM-xw3< z?UZDht$wmt=5JnTs1UyyEL&xh*LxZGeaF0;iKFaRS78?GJ}ScPdN>?$am6q-Lf z*AV~Epx){<5D{Chc%s6RG&5TE5&=g@Yc>M<=x8 zphe;?{H=_r-Oc1T^MMP}Y`#M!>AzCUYk&5psv>XrWFn##eiCbyIuWUxt;q~^;0(O7 zLG69Z;^X^)9GTvX8DU8+p@2Pb#v1!u0SYV$9M8b|zK|#uU=DV4b8Al`OHN~&T$d{Pf=G* z*Wl;%zmN)_Zisb$!y^n5GE0_kaM% zMn3T~1z)*<^`6z-j(RLpnJTGZ)k4K@sm7Is5n) zvZF!98I|K5j02FH@FJ?-Q?$Ufr`;%=L1I#88SU7ff12+C>Nj_&(NtK_Y$1k3m$)#j4@14dY2{jam7~ylDSML_c&CvQyOzjZu`3J;BK{Ig4W{zND zB&kTQU`obzmTo$RE<%Q*eu{Cs*$iTYX{zSdi7s7kc zulZjCzFB^Bu_3Bd{~k}4vHjK%Kxc#tyCJ%w!!;&e3nyTDd z(YSRa5#j!@ROCF%#!hEW`#~~iDB*2Be6*eFv{THoASTgiugtvheRFQ{!4yr}03Sk1 z-^VZPRzfLFPVQNWZHWp7aNmbHwK+`616|eKY_DBt?cPk3OZx+!CMIrJojShtwWc@S z*=jlDoiG{mqplpfRu7JY!|bp*VpEOP{eqEEGrrLosRzj3fKHXNZbX60<$j4Iw@v`+ zBH0nzck%`e1_4BA(X)Mnqp{;qfS;>pxA3x3leWggk^N!1rPKB}^$_-vH1dx?mliFt zddd1I(}JJq$}Bp{qA`VEtc!eCaTFD5>TMB6QG6LU`5S6lJRwqBpg=X7&U3m;pQJ@_ z`&j@v$tT{R|EsxT?ATq+dWJG{55!l-=1@&qwf(2n&Zx-Dddtlo!5&_(^F)ZmE}hmx zGVq1ee7dBjxiqcXUc2Q?V^z*%&+W6pQ z2xfcyXR~MLYq+%V=dsD`JaSnoN88){>eeNaohP}ErQ9yLs|qyUr)D1*j5u-zsKK6A zcHc`V^=KQaV7BsFe3(`9zks|;(uOgL38o)F<6{rY(o7YZ!yE(c1XjeOJWQJ5h9 zrQw6KXVPd7Lv;(Sjeyg2SuWIUr{kG#%m=^7*M4u=pU^;SmWg~^B_&V_#f8{o`3@A{ zK##{gxZ<^*T={#{qgu^rGm+1LlEOo%MO?3Z98F+;fk+c7WoDje>}aW(d!n%rN6|@} zkTE!xWrPilq%HPCKn(5;{6CI0^~oW>1huO9iFqPc7=^t3^@Hr#{(Ao8;WOhoIbXAH zY+jTEqIz8)da4>N>Zx7_(X!iV!3DQ#tNz%dLIbcziqINaZI?;nf> z)K=(X7K!(RsPPptqhF^}uR1Sxq)UA?XN}g3LGc1n$D1vYI~$vY-Kw(t?J;TFLdEEM z6pBSXYA3KXu%E?}7a$)>@@73#ij8tH1mrT)^~C1$@2xm@L#6AdOpq-p_H0f#G)}&G z#jF4K+M(D=CJ4+Ox7gL~ZKmVN5Tet9COC*YfJ??$Z{f0pEOMWfgn8DlyMng{;{eE*oAyTXcnJm-kS-`&6+LQ znu(7VT6UjO^~{=HHykyi>-~oCMldnUw0a?B9O2ce+b4{lue?U2BiA5fQ!!4R!U zldjU-lrv3SpEaPuJVg{O*c?H#Yk?kr&Ny){G28X^^Q;13LF<!kCD z=%~oFKiER6$(Yf@P8G_U6iF*Cz{7#4J(n?#D3&`_w{E?@v?L{GmSN+l9Xbpoa9!}s)9KCu0RpTAR2bzY2#gitq+ z_xUl|VPY~W`1`qcisquqi6dm$&)xw`7=EFfg52({O}pNnNByS$(~any#(D=C>8=V6 z^Tk!@?fmk!$BB=yCt_G`$ke@Lb3SSZ(8zxw-eWwR<1=Q+WPw*+BNl0^%`8EPuNJyM z-ew@c?{D(dVur;x~7F0N&2;yNCh}5^7UH zu~tFn0X0zZ)-w9%7}T8c8>4TR2G)Y@U%U1iS_0zmUQamH0Fm< zpfhod@N(Ac4RWD@ddSWN`pk!*kL>#}_G%FqaQ|ekc(-y@NuZ5}nSHu`ZOYvv1Qx;& zA4`k&>S#U9R;0H%7s)r&?iGwWp6wG_kW~}`(Q1)HmF=TRFEiFom5=eIr%9J8Pl}nf zXqiY+^P)nMIy3l+T6wG`&xK{u8$LMiXF`8P+h^Obi3ABTr9wj-ckGM=|KM0GLnwg+ zz;*SoL^=HW&p&gIADLLdsGXdGylMqC+VDZKSBKARCBYW(n-X~r9wT;qf~3ifVE zoKjeRepsyL@4B>f)84m9Eq6oZDsqin;!e(My)`Q#ShHge9i$XK{-$7O%Z|gC#xSz8 z_~4%#f_)enMc4|8q)OSNtUv=jpy&dnpMc>mNiA^U;A$Z^K#b$^(r(fGHfs64p@2-- zIa6g#q!P9LA^pjFw3^S|;3{3ZwR7Lc_H%!Xic8>Wy6+Pv+Wu1Kb8(W%HSIPU>#;rD za}HBk^(C8Q{B_BwA+(0nUFmUhGqo!M$Bzdvvcc*~B@Yf^0%SlR)xNJti5Rl$ss%O$MB}-j0`i(Oov-o6`=E7T>KcnxW1CLwShe z&GGMKuQ&rEd?FA&_gY*%!c1j;hCA`YP&Ag|@xkIAtO zKKsUpM8^nRyW@$BgY0=5ZtrNy4C6Wuv!99ow1a_-UYCq>(y9*2J^$*4O}A)biK8DO^_ z?|1X^ZbNrR{2=?Y4>C;d|bUcHfqRBzXWbbD9qd zgXlakX1HvR%je#~a+#nuCq!oP+w0FNhV0x2Iz)6R+wrk!v~@q3I*ejpM0_v2J(n3Y zY9JJ9?e7xOb>fqb*1dO>rGdwaEdi1BG?{v|Q2N zoL%lA`0IAp^G3J1fd~DqgE3!qSKw-9>P|SJZJF zM^{YPM+F_p4J@MN-!mwP;kHm!E@exc1n1PX>3)8SSKxiR{k(BXv6!{v9?}e#e#5Hu zOJa^4auXkhz-gYj3o!;`9?{Rm7E-Ef7B$?z{u4=huyo7&P3L)@nUa<>G6Gp;Mx$0c31kU<+*el8O{3 zeR`7twv4efrQk^_8kXXdepOK)C0{EeO}8@Nz@5`6&WAr}9~FhagnFE-JtxDUJW23d z0vI=sQ?R{~3H;>OtcA(#&*qk6g1YoTXJRb%`lC>O;#h1def;Z5!KrTE)(lR7+w>oP zlLpkJ%(}K;)5DkJmBvjid=8kLT_ch|(LE>-KZ9RdkrQ|Pg`n^ZiK?K-g_!Cri7~_v zU=|e=4^K3_gd#8(klpT!Oh;BO_v5W9Ac1@52>H-h9!Ljyqcpk4eX`*d)1tMubKblo zVS2e0Fgtb?MiJ(C@EEbIH)Kw1L0)3jQPOibehXJnP!FdX(|dz|tyN}0PR+N&i0TG; zOBqB9CbZ5fu$tEd zBH zt@7NhzEljIFK=`!LnwXJ`N;7XO*iUG3d@5TBTZuFu5}3<$gA1t;!pVTUI(iJf?Qia z`5P;FTMHJ(#hkK7Xe|h!s^KvXX*{9d-h@3&BwaI%5<&=j@jt13`dp+n+^uaFg(kM9=k}o+X(Z;F28*%dOF*ZrJ; z6Yb|2M(OjROW_2WZI;apLB%@h=jX|%&RXZWdrlU=;%TE?&-JXIbk|ZJ$;&e0>TnPj z*FU|%g9mTK-Gu3cA)7L2&;8)Fun^SOyxS)cI3iWoqIt0>#M-FkS%hRcQor?`Y zlv$`=A%ajOLu-lwPZr|@w|25>vJ=sW4J%77OhY5*(Hw%*uWOLZGtO1wEklF0MvH$E zMg;O3;8O`_xK6UJV($A4uSJX-UJIZBmYq+mDjZV~;ryg49D$wH(h_R5O2)N~?_G2J zO^P5Xc?_FE8uIvZ*=x)bD#>nUerRx`EK0|g&vM!y?o-#9_UNslCjTVbm42xJEjx(C z_zOk51%wNZm@J0+GT$T~1>HK(7fxy8#j&!8&tV>i?skP?{P>C_K*j;Ya>)4>4#PD( zIVv@$D4!;YgBVZn_FH0;dq1$J`YAg*``LbRp?!Y*hli`fPi22ImKM__?Q2$A#dT+E zGE%HB%~fj*k~1Q!KD;n^q^p;qA0_mDe>6U!3~?qw+@6z$t?0UBajY>;V9!#FhZPpE|uAuai&3ZlFe-{NmbfB$n-yi9i4wPBZ#xm1bL~ zTO?85cmErEo^|;d*J6|#I&c?bpv+o%#SxTEccq+C2V`}#cUjeeu)13~7FLcKxz7ZH zugS>$4yS1CNB)Lk?khBM29!RtG2%!?9pJ?@_1lO_IkoT^`==_T;7j~Se)W**-H%Lnw7gn ztB6b13o&oCWbB56N2h;$O)P@J*w1-sLHIB}UO3>-Q@No(Xt@!3IPYJOU`b3v@(%2O zAe$5*gac3*12^gJvyjr(0$ApV@Nu-J$`?REZV%#uY|6Bn{;%llNR&r@l~Ot-;GhaC1W2+KR)p z!)575Y-w+i4cB{a%9^zAs#R+kzF;by2kax)HaMHH( zt7UNoGXzRU;YlWuecb+a3q+!phTOP|4b02{N zZLr+(rRJ1k9v@#&hYsaPP0%6xM0YUw$;XX-Pq=vcL{NKzv$=5Z01H z-Z=l#`Y1Cj1erXhbXd`8Y~ez~bCh;z1t~r6PDwq{b+CQ_#e5-;Od!_c>HxR-(aP4V zx7ui1tO!l(hFSM?Z?VV!3l$aW>J`T`G&AmMujFUJr1?hsjDhJ+fZB~hih`nkfLcjb)uM&`+Z-2#h8cJ;Irw{tnLsz)<-^vEy zDrz)-G*+BlOSL&6RT_uvm+VHkGcwizqN=6#fY~k%-~-M<0v^1MWe?3kk_@PsoXEqB zi3}P`5rZs3abr^VY3$Klw}1X?yeZ;hSh#zIpaz1Vud|^_L zD=9aD1=L#VX%Pw<%UVO}q*;_ne^qqk7a!>_TqdaWCcdlIZV$^TOvMm2A}4a)N%-Gm`^6%2P5*dy> zRTPgRAsohU4aZVUbW5E{-ml>93K?n{Uc@xMiRLfkQ4Z3%VVJN;pbz3Gz=y^(NhCc# z&B-lCZ7TuZtJeOE&mfV61vR3VxrVvWT87pnDip12Vv<95%9>V{^{<7lx1J;BdY-&I zea5zTwSm89_8817YCV_y*gM41;=PxNqm_AHh1f!|gH@kvhW5E)kX!$Az9oUEY$KIh z1rp7ALQtWlRaWO8dT0I2)`e!Dhi zkH7#4YD6xT8|(>sunuEbg~H0{diiJ2hj6p!KIWkqA(-M+G7qk&V$0efGez#vgw2ya zLiHZ3=l~Tq$>CzuwYO5Mwka{*f|yWuE(-&$b>Vp)2gy7(X~$_LR@{b4{`>derbM5+ z;PlQxDku}2sDx@yzPpZQjdWw66s8*E<>_qW%&qL`SVA#Tp|IQ9+B|}rH{U;=3LoR| zj$vY$hG|+68#fKB@LU9u_RD#FqWtDeDZ?S0BNq*+xK^8w@x$?(diIY;1j^kT`2kp}C`xb|=X_3P#UNM9#)cMi~$2QE46k z4<5YsX^$*tF3M;YYCtc~fqCsH!n` zGwp^7^77~|!hBWk8tUURJ_#_ns_)LUsYrCPztq^i!?ry3_Io$+C$}t(47Cr+-pE}& zEOrP?2GJ;FdANSPzbv0Ejmy|{8CXtbnI3;^D{ zcK!@uph!>ya(QLw+iqsaSt??pP$x|NqaWt$J!g4-n9a*jcloUL5NpZ|-*n|m zQ(mttKD$L+jiC`=7-!v%D{lur8f^f+t2Snhx-%IwL5=CI_+hA_e^3 zMp^sV@qI-7QMt2v5L<{d%_vwgtnS;m`RkC=UFGKY;4`_XFcnv^chC39c&`LA8SN(a z$7zSNu`7KU_!0g`L#gD?uuWBK2BV&wMKe6aH**&9oxrKMpACk5!Nh2EPXm6q3Ld#@yk&)TB#BZBGfU$!zCj2HxX zWk++EF!fnmUuH<4^Wn%|3V*=~_#p(|t2Ta#n1L)9P($=G@gnZPCN&GI3Z>pnuaE31 zn@hN!KTQ$4rJx7bris#L|Gp0kW#!hG=Rc1s#c}8AE(;S5E$NK#gNmEX4IOB)^?$>u zic7RTQS>Z>_sy5Ch;~)Zl*>NRM+f)=eo}>*HxPw`5!04*sHY}S^qmUct9Ee@;Xng5 zlgs3$+!#W#q=U=~CCb*uw{lxc+IWt}ui9A%24fjqq=|wqo5Z{@xYC3E!>^ox=V_noaCW#jkqp~CHqE;`Ap37VsROFB zLIsUR{{+6Pj&hDSXOJ}mYCtY$q<%I>Am&Mes8GzfsomVuS$pvR{$D=t$W6*aD{c0Nm&L1PiJRS00a`92mk;8002KY000sI z000fmOtcw%e}H;}d4Pg@etdXOUk=c1@{(p)uY+=$D--?laO1chl5EoT1y*`Wj(Hu98%|6 zHn->!1!_@di<^n%>o9wBxCjJ8akwD17>=RR3eAWxwl!!1 zp1U?~4Z=a0#YEG~?}Ci%lh%@0gDe!bRn~em;^U0D`c4|guJsOe=D3-&q166fa*xjW$_MUm%V2s1R2!-rwl`$4x6UcyL_#pxAYbI5 z9T8_I5vLQl^K*j>2cWYsv_`c>fh+~S%l7UJp&&_6Q*!yZ#IdYJ6B9)!m~Hf$zDAb5 zUN6TAb>(`VDrJOlIX5_rcbc2qiH%&ph)yE4GvCXbMSR4n#%JMfGw{;37#OOTwwKDd zMD_zR%Gu~7BCd8iDkn_FL&BLjkE4t-UbemEx;1zK-(B~5MH}Y=H06E$ut5U;tB&!A z!5EOB2K4gwBI_ZJkz<67tWYHFT3`G&yKVRR<~tY0=P2xWhmJn3r;+zK`g12o&xgA% zGDo;LnL`Y_UMMzzkvYzd&_!Rh1%uLd zkmjHp4eODtK21x=ah31`^B()Km=GAbV{r8_=844x(&_cWd3RK_G$B?)+h%zU5l)Ccl!K!HEiogFCE+T$;C-$ zqi~i^qz+qhy*|xY@PXMKPQ>f18FN(mON3#?<~IP|t2Xfn%|Vh()RFzE3ht9HeH44PTQ!DUk^cYJBR}dfuyc zehGXj6_kh7Z#IFXS3%Ew3@O+P54$kDZ4p4VhvN6Mah z+BmUW>jw->uBPej>)eQJ30x$%F~|v?yVm9m%|KBMs1dn5%tWp04U8fQt58^`dcJS9 zxV6S9%T-FLj%nht_SO&l-V4`^&&zG927lw?3*!+zbUcH?CXm_~P#elsGe)mUt5BdP zl_XL(B$v~TGG&ku$x5H@=Klq)Zrr__Dm!Hmv?HcYG5&5a8JslRx$uFIu7M8zyEgs| zWelbPH6oX<(zcj$#3~oTU=)gMUx<7EUUQgxd{y7iX2VXmxY{$_I`9#WW1`iV5vm|3 z>hWI_O_-MGw}3mVWJ4qre2lh?Rx$91MRV8n?<$JR7Eg;6J;ofb^ocO-%Y=MLe{%;q zjd++a4}wTV#+}7F|Y`*7n(5B2Z65L z5h1f_(YogQ&y?J(DP+L$edWjN5%j(W5a={;%}EttkSxBd_I?c&AW4R(F@5GHVi`Gf zO#;A@g~O~+^hNv+>uZm^uj@t{kFyR(q?geF<_X*$RAvaX!T#o%8h4YegiznHFFGL_ zHUV-qu1{48yA3*Idq?*5W^!aF15Z4QKM2L%?x#*KPQFvr z(6n!+d4+r0SJD94aifEkR$3br!;E-P(*_&6gkx5NB=9N`i!hk8_IAg zL|+4EJywrC*|DK22i%X4YfyP|Uo-e~WwG@=j%-;b~Et&N*P<7r@RO8 ze2!r(mBws}48Iu%J%%lx?!5Rq73VmA((PJD!=e6jbuo1n zH+t@-pZecSY`j(9@I7%NF?Xq0L~)Tp--R}Ra4tga$C=Dl;Y;uPG@;W(EgU1F%{l;k zEkFMdTH|33&65J14AYYXpD)4?4`YrQOaR`ymhlqN44o-B4mBm0$0zk|^~$Itj8UQJ zmrR*E)^^y}{O=elA9>w?+o17c)*LD`(4tkPnXRVbtul?RsoaFznfEyk@vi4+2L}3# z;A~OR5LY95FT^pGB%+_KM{~RV?K!bC1yE}is)~^uMxWqyW5Evq7%dG|0KThEW{+aD z2NKkXT+SwQbTd_O)>5Sjv=JS&ULAPnVY&`^c71a=h_!TT#Q2 z`j4?nm#^-)m@%&=rUVFy2@8bi0vh-=VzSU<6xy%zai-i>8Lz3E4*gO|F-Hkm9M;H% zK@zrbLBNE#qdFWSZ_@-GtTt&Irh}nCjmYJ0oH@58by+y9LeV$waXYsg^f_AXbZ|Ac z)A&Y4?dFQ1y!4p*71Omf=ys((0yw7@apyBB@8TWR$}^U+FlM{c9X);4z_B;IAF*S_ zHAg0U1@>ve*=V;zalG@_3N4rWz)}xIh2R)Hk#q+DUts~htBzugVhjjSGr4?iG`5p0 z%#5s1*pc;|>GuCk^8T5|3-cFqf$oe-lg5PmpJaf;%w)_?Si&B#WyehxV=((5G_QtI zO<9oJ+72k3_Fs3Sh_oB<_2wuGb; zqJ(_)uh|wrxpOdyO#b8(?OFAs42Nz93sq_E72s3Dip>YK8;;t zKk|_-jq(mvkws}>-fkK`OY+vE%9b!A<61^fj3sQ*tLIl3p1z#g;Zrb8wBH3)3dcQ? zHn<&!#zcjlzH-Y3_J z$#mrx3?pX+J==IEt40m_a0`)jUjBHMLBl~8mnqe_O!y6!*2SUd#L7IlB*GL|@L-5y z;PE4H;(G6j1YT>FdJQc>X~CMBlFMYBWb_zf(aaN8p<%T@?B!v;?{_!-^=8`Rn>2Qf zX~V{k(WgC0rKS+Bqem6GEjsKu@lnSUT}?ibt5i{ap`E8aS6J#aZmY-99{I)b9L0qV z^sQ|U?Iye68nU`md$;H<412Q(*Ki0-xJ$(hpoMFk=>Q(-t!7CI0vxCnZ|4S1j65-N zmm~=q=$n!~PuruL-c3jcFN>Gs{7yrLjUmf8X*EaJb4ZFkD3gno#HK@;Qk>E|F_8S> z*`ySw6sHuA*&c*4;aPiKO8{XdDNZSY{8}ae?!vP@8=yGF762F>D)tQIr2K`UY6HMU NZC3+ed0l&e5CHtWis=9V literal 0 HcmV?d00001 diff --git a/Resources/Audio/machines/microwave_start_beep.ogg b/Resources/Audio/machines/microwave_start_beep.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43f6c24660d3fecca5eacc9cd4ba20aa5542f92f GIT binary patch literal 5743 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 Date: Fri, 1 May 2020 23:34:04 -0500 Subject: [PATCH 25/73] Microwave interface. --- Content.Client/EntryPoint.cs | 6 +- .../Kitchen/MicrowaveBoundUserInterface.cs | 30 ++++++ .../Components/Kitchen/MicrowaveMenu.cs | 95 +++++++++++++++++++ .../Components/Kitchen/MicrowaveVisualizer.cs | 9 +- .../Kitchen/KitchenMicrowaveComponent.cs | 72 +++++++++++--- Content.Shared/GameObjects/ContentNetIDs.cs | 1 + .../Kitchen/SharedMicrowaveComponent.cs | 60 ++++++++++++ Resources/Prototypes/Entities/kitchen.yml | 5 + 8 files changed, 256 insertions(+), 22 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs create mode 100644 Content.Shared/Kitchen/SharedMicrowaveComponent.cs diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index 35fb7b7748..971096182b 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -15,6 +15,7 @@ using Content.Shared.GameObjects.Components.Chemistry; using Content.Shared.GameObjects.Components.Markers; using Content.Shared.GameObjects.Components.Research; using Content.Shared.GameObjects.Components.VendingMachines; +using Content.Shared.Kitchen; using Robust.Client; using Robust.Client.Interfaces; using Robust.Client.Interfaces.Graphics.Overlays; @@ -142,8 +143,7 @@ namespace Content.Client "Mop", "Bucket", "Puddle", - "CanSpill", - "Microwave" + "CanSpill" }; foreach (var ignoreName in registerIgnore) @@ -161,7 +161,7 @@ namespace Content.Client factory.Register(); factory.Register(); factory.Register(); - + factory.Register(); prototypes.RegisterIgnore("material"); prototypes.RegisterIgnore("reaction"); //Chemical reactions only needed by server. Reactions checks are server-side. prototypes.RegisterIgnore("barSign"); diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 7c15ecb885..1fdd84c7e6 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -2,15 +2,45 @@ using System; using System.Collections.Generic; using System.Text; +using Content.Shared.Kitchen; +using Robust.Shared.GameObjects.Components.UserInterface; namespace Content.Client.GameObjects.Components.Kitchen { public class MicrowaveBoundUserInterface : BoundUserInterface { + private MicrowaveMenu _menu; public MicrowaveBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner,uiKey) { } + + protected override void Open() + { + base.Open(); + _menu = new MicrowaveMenu(this); + _menu.OpenCentered(); + _menu.OnClose += Close; + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + if (!(state is MicrowaveUserInterfaceState cstate)) + return; + _menu.RefreshReagents(cstate.ContainedReagents); + + } + + public void Cook() + { + SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); + } + + public void Eject() + { + SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); + } } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs new file mode 100644 index 0000000000..0b7016fdba --- /dev/null +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using Content.Shared.Chemistry; +using Content.Shared.GameObjects; +using Content.Shared.Kitchen; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; + +namespace Content.Client.GameObjects.Components.Kitchen +{ + public class MicrowaveMenu : SS14Window + { + protected override Vector2? CustomSize => (512, 256); + + public MicrowaveBoundUserInterface Owner { get; set; } + + private List _heldReagents; + + private VBoxContainer InnerScrollContainer { get; set; } + + public MicrowaveMenu(MicrowaveBoundUserInterface owner = null) + { + Owner = owner; + _heldReagents = new List(); + Title = Loc.GetString("Microwave"); + var vbox = new VBoxContainer() + { + SizeFlagsVertical = SizeFlags.Fill + }; + + var startButton = new Button() + { + Label = { Text = Loc.GetString("START")} + }; + var ejectButton = new Button() + { + Label = { Text = Loc.GetString("EJECT CONTENTS")} + }; + var scrollContainer = new ScrollContainer() + { + SizeFlagsVertical = SizeFlags.FillExpand + }; + + InnerScrollContainer = new VBoxContainer() + { + SizeFlagsVertical = SizeFlags.FillExpand + }; + + scrollContainer.AddChild(InnerScrollContainer); + vbox.AddChild(startButton); + vbox.AddChild(ejectButton); + vbox.AddChild(scrollContainer); + Contents.AddChild(vbox); + startButton.OnPressed += OnCookButtonPressed; + ejectButton.OnPressed += OnEjectButtonPressed; + + } + + private void OnEjectButtonPressed(BaseButton.ButtonEventArgs obj) + { + Owner.Eject(); + } + + private void OnCookButtonPressed(BaseButton.ButtonEventArgs args) + { + Owner.Cook(); + + } + + + public void RefreshReagents(List reagents) + { + InnerScrollContainer.RemoveAllChildren(); + foreach (var item in reagents) + { + IoCManager.Resolve().TryIndex(item.ReagentId, out ReagentPrototype proto); + + InnerScrollContainer.AddChild(new Label() + { + + Text = $"{item.Quantity} {proto.Name}" + }); + } + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + InnerScrollContainer.Dispose(); + } + } +} diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs index 124dafb8e2..e7c443074c 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs @@ -1,14 +1,14 @@ -using System.Reflection.Metadata.Ecma335; +using System; +using System.Reflection.Metadata.Ecma335; using Content.Client.GameObjects.Components.Sound; using Content.Shared.GameObjects.Components.Power; using Content.Shared.GameObjects.Components.Sound; using Content.Shared.Kitchen; using Robust.Client.GameObjects; -using Robust.Client.GameObjects.EntitySystems; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.Audio; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; using YamlDotNet.RepresentationModel; namespace Content.Client.GameObjects.Components.Kitchen @@ -60,6 +60,7 @@ namespace Content.Client.GameObjects.Components.Kitchen } + public enum MicrowaveVisualizerLayers { Base, diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 63c2da2b10..cd7c932235 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -1,5 +1,4 @@ -using System; -using System.Linq; +using System.Linq; using Content.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.IoC; @@ -15,24 +14,22 @@ using Robust.Server.GameObjects; using Content.Shared.GameObjects.Components.Power; using Robust.Server.GameObjects.EntitySystems; using Robust.Server.GameObjects.Components.Container; -using Robust.Shared.Log; using Content.Server.GameObjects.Components.Power; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.Interfaces.GameObjects; namespace Content.Server.GameObjects.Components.Kitchen { [RegisterComponent] [ComponentReference(typeof(IActivate))] - public class KitchenMicrowaveComponent : Component, IActivate + public class KitchenMicrowaveComponent : SharedMicrowaveComponent, IActivate, ISolutionChange { - #pragma warning disable 649 [Dependency] private readonly IEntitySystemManager _entitySystemManager; [Dependency] private readonly IEntityManager _entityManager; [Dependency] private readonly RecipeManager _recipeManager; #pragma warning restore 649 - public override string Name => "Microwave"; - private int _cookTimeDefault; private int _cookTimeMultiplier; //For upgrades and stuff I guess? private string _badRecipeName; @@ -42,6 +39,10 @@ namespace Content.Server.GameObjects.Components.Kitchen [ViewVariables] public bool _busy = false; + private bool Powered => _powerDevice.Powered; + + private bool HasContents => _contents.ReagentList.Count > 0; + private AppearanceComponent _appearance; private AudioSystem _audioSystem; @@ -49,6 +50,9 @@ namespace Content.Server.GameObjects.Components.Kitchen private PowerDeviceComponent _powerDevice; private Container _storage; + + private BoundUserInterface _userInterface; + void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) => UpdateUserInterface(); public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); @@ -68,23 +72,48 @@ namespace Content.Server.GameObjects.Components.Kitchen _appearance = Owner.GetComponent(); _powerDevice = Owner.GetComponent(); _audioSystem = _entitySystemManager.GetEntitySystem(); + _userInterface = Owner.GetComponent() + .GetBoundUserInterface(MicrowaveUiKey.Key); + _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; + } + private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message) + { + if (!Powered || _busy) return; + + switch (message.Message) + { + case MicrowaveStartCookMessage msg : + if (!HasContents) return; + UpdateUserInterface(); + wzhzhzh(); + break; + + case MicrowaveEjectMessage msg : + if (!HasContents) return; + EjectReagents(); + UpdateUserInterface(); + break; + } + + } + + void IActivate.Activate(ActivateEventArgs eventArgs) { - - if (!_powerDevice.Powered || _busy) return; - if (_contents.ReagentList.Count <= 0) - { + if (!eventArgs.User.TryGetComponent(out IActorComponent actor)) return; - } - _busy = true; - wzhzhzh(); + if (!Powered) return; + UpdateUserInterface(); + _userInterface.Open(actor.playerSession); + } //This is required. private void wzhzhzh() { + _busy = true; foreach(var r in _recipeManager.Recipes) { @@ -101,7 +130,7 @@ namespace Content.Server.GameObjects.Components.Kitchen } else { - _contents.RemoveAllSolution(); + EjectReagents(); } var entityToSpawn = success ? r._result : _badRecipeName; @@ -113,6 +142,14 @@ namespace Content.Server.GameObjects.Components.Kitchen return; } } + + /// + /// This actually deletes all the reagents. + /// + private void EjectReagents() + { + _contents.RemoveAllSolution(); + } private bool CanSatisfyRecipe(FoodRecipePrototype recipe) { foreach (var item in recipe._ingredients) @@ -144,5 +181,10 @@ namespace Content.Server.GameObjects.Components.Kitchen if (_appearance != null || Owner.TryGetComponent(out _appearance)) _appearance.SetData(PowerDeviceVisuals.VisualState, state); } + + private void UpdateUserInterface() + { + _userInterface.SetState(new MicrowaveUserInterfaceState(_contents.Solution.Contents.ToList())); + } } } diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index ef69972f4d..f9832cc751 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -42,5 +42,6 @@ public const uint PAPER = 1037; public const uint REAGENT_INJECTOR = 1038; public const uint GHOST = 1039; + public const uint MICROWAVE = 1040; } } diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs new file mode 100644 index 0000000000..59e34aa82f --- /dev/null +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using Content.Shared.Chemistry; +using Content.Shared.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.GameObjects.Components; +using Robust.Shared.GameObjects.Components.UserInterface; + + +namespace Content.Shared.Kitchen +{ + + public class SharedMicrowaveComponent : Component + { + + public override string Name => "Microwave"; + public override uint? NetID => ContentNetIDs.MICROWAVE; + + [Serializable, NetSerializable] + public class MicrowaveStartCookMessage : BoundUserInterfaceMessage + { + public MicrowaveStartCookMessage() + { + } + } + + [Serializable, NetSerializable] + public class MicrowaveEjectMessage : BoundUserInterfaceMessage + { + public MicrowaveEjectMessage() + { + } + } + } + + [NetSerializable, Serializable] + public class MicrowaveUserInterfaceState : BoundUserInterfaceState + { + public readonly List ContainedReagents; + public MicrowaveUserInterfaceState(List contained) + { + ContainedReagents = contained; + } + } + + [Serializable, NetSerializable] + public enum MicrowaveVisualState + { + Idle, + Cooking + } + + [NetSerializable, Serializable] + public enum MicrowaveUiKey + { + Key + } + +} diff --git a/Resources/Prototypes/Entities/kitchen.yml b/Resources/Prototypes/Entities/kitchen.yml index 5828bd07ea..f517051c87 100644 --- a/Resources/Prototypes/Entities/kitchen.yml +++ b/Resources/Prototypes/Entities/kitchen.yml @@ -13,6 +13,11 @@ visuals: - type: MicrowaveVisualizer - type: Sound + - type: UserInterface + interfaces: + - key: enum.MicrowaveUiKey.Key + type: MicrowaveBoundUserInterface + - type: Collidable shapes: From dba0949c5b586e7646c199960d5201643d42c7e8 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sat, 2 May 2020 01:29:20 -0500 Subject: [PATCH 26/73] Add (not working) basis for allowing solids (entities) in recipes. --- .../Kitchen/MicrowaveBoundUserInterface.cs | 3 +- .../Components/Kitchen/MicrowaveMenu.cs | 18 +++- .../Kitchen/KitchenMicrowaveComponent.cs | 100 ++++++++++++++++-- Content.Shared/Kitchen/RecipeManager.cs | 4 +- Content.Shared/Kitchen/SharedMicrowave.cs | 17 --- .../Kitchen/SharedMicrowaveComponent.cs | 8 +- .../Kitchen/MicrowaveMealRecipePrototype.cs | 10 +- .../Entities/Items/Consumables/food.yml | 16 +-- Resources/Prototypes/Kitchen/meal_recipes.yml | 12 +-- 9 files changed, 132 insertions(+), 56 deletions(-) delete mode 100644 Content.Shared/Kitchen/SharedMicrowave.cs diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 1fdd84c7e6..6a07143798 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Text; +using Content.Client.GameObjects.Components.Mobs; using Content.Shared.Kitchen; using Robust.Shared.GameObjects.Components.UserInterface; @@ -29,7 +30,7 @@ namespace Content.Client.GameObjects.Components.Kitchen base.UpdateState(state); if (!(state is MicrowaveUserInterfaceState cstate)) return; - _menu.RefreshReagents(cstate.ContainedReagents); + _menu.RefreshContents(cstate.ReagentsReagents, cstate.ContainedSolids); } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index 0b7016fdba..83a4a84552 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -2,8 +2,10 @@ using Content.Shared.Chemistry; using Content.Shared.GameObjects; using Content.Shared.Kitchen; +using Robust.Client.ResourceManagement; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; @@ -37,7 +39,7 @@ namespace Content.Client.GameObjects.Components.Kitchen }; var ejectButton = new Button() { - Label = { Text = Loc.GetString("EJECT CONTENTS")} + Label = { Text = Loc.GetString("EJECT REAGENTS")} }; var scrollContainer = new ScrollContainer() { @@ -71,7 +73,7 @@ namespace Content.Client.GameObjects.Components.Kitchen } - public void RefreshReagents(List reagents) + public void RefreshContents(List reagents, Dictionary solids) { InnerScrollContainer.RemoveAllChildren(); foreach (var item in reagents) @@ -84,6 +86,18 @@ namespace Content.Client.GameObjects.Components.Kitchen Text = $"{item.Quantity} {proto.Name}" }); } + + foreach (var item in solids) + { + IoCManager.Resolve().TryIndex(item.Key, out EntityPrototype proto); + var solidLabel = new Button() + { + Text = $"{item.Value} {proto.Name}" + }; + + InnerScrollContainer.AddChild(solidLabel); + } + } protected override void Dispose(bool disposing) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index cd7c932235..8f7fc05429 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -1,9 +1,11 @@ -using System.Linq; +using System.Collections.Generic; +using System.Linq; using Content.Server.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.ViewVariables; using Content.Server.GameObjects.Components.Chemistry; +using Content.Server.GameObjects.Components.Nutrition; using Content.Shared.Chemistry; using Robust.Shared.Serialization; using Robust.Shared.Interfaces.GameObjects; @@ -17,17 +19,19 @@ using Robust.Server.GameObjects.Components.Container; using Content.Server.GameObjects.Components.Power; using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.Prototypes; namespace Content.Server.GameObjects.Components.Kitchen { [RegisterComponent] [ComponentReference(typeof(IActivate))] - public class KitchenMicrowaveComponent : SharedMicrowaveComponent, IActivate, ISolutionChange + public class KitchenMicrowaveComponent : SharedMicrowaveComponent, IActivate, IAttackBy, ISolutionChange { #pragma warning disable 649 [Dependency] private readonly IEntitySystemManager _entitySystemManager; [Dependency] private readonly IEntityManager _entityManager; [Dependency] private readonly RecipeManager _recipeManager; + [Dependency] private readonly IPrototypeManager _prototypeManager; #pragma warning restore 649 private int _cookTimeDefault; @@ -41,7 +45,7 @@ namespace Content.Server.GameObjects.Components.Kitchen private bool Powered => _powerDevice.Powered; - private bool HasContents => _contents.ReagentList.Count > 0; + private bool HasContents => _contents.ReagentList.Count > 0 || _entityContents.Count > 0; private AppearanceComponent _appearance; @@ -51,6 +55,8 @@ namespace Content.Server.GameObjects.Components.Kitchen private Container _storage; + private Dictionary _entityContents; + private BoundUserInterface _userInterface; void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) => UpdateUserInterface(); public override void ExposeData(ObjectSerializer serializer) @@ -74,6 +80,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _audioSystem = _entitySystemManager.GetEntitySystem(); _userInterface = Owner.GetComponent() .GetBoundUserInterface(MicrowaveUiKey.Key); + _entityContents = new Dictionary(); _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; } @@ -92,7 +99,8 @@ namespace Content.Server.GameObjects.Components.Kitchen case MicrowaveEjectMessage msg : if (!HasContents) return; - EjectReagents(); + DestroyReagents(); + EjectSolids(); UpdateUserInterface(); break; } @@ -110,6 +118,31 @@ namespace Content.Server.GameObjects.Components.Kitchen } + public bool AttackBy(AttackByEventArgs eventArgs) + { + var itemEntity = eventArgs.User.GetComponent().GetActiveHand.Owner; + if (itemEntity.TryGetComponent(typeof(FoodComponent), out var food)) + { + if (_entityContents.TryGetValue(itemEntity.Prototype.ID, out var quantity) && quantity > 0) + { + quantity++; + food.Owner.Delete(); + UpdateUserInterface(); + return true; + } + else + { + _storage.Insert(food.Owner); + } + + _entityContents.Add(itemEntity.Prototype.ID, 1); + UpdateUserInterface(); + return true; + } + + return false; + } + //This is required. private void wzhzhzh() { @@ -130,7 +163,8 @@ namespace Content.Server.GameObjects.Components.Kitchen } else { - EjectReagents(); + DestroyReagents(); + EjectSolids(); } var entityToSpawn = success ? r._result : _badRecipeName; @@ -139,6 +173,8 @@ namespace Content.Server.GameObjects.Components.Kitchen SetAppearance(MicrowaveVisualState.Idle); _busy = false; }); + _busy = false; + UpdateUserInterface(); return; } } @@ -146,20 +182,54 @@ namespace Content.Server.GameObjects.Components.Kitchen /// /// This actually deletes all the reagents. /// - private void EjectReagents() + private void DestroyReagents() { _contents.RemoveAllSolution(); } + + private void EjectSolids() + { + + foreach (var item in _storage.ContainedEntities.ToList()) + { + _storage.Remove(item); + } + + foreach (var kvp in _entityContents) + { + if (kvp.Value > 1 && _prototypeManager.TryIndex(kvp.Key, out EntityPrototype proto)) + { + for(int i = 0; i <= kvp.Value - 1; i++) + _entityManager.SpawnEntity(proto.Name, Owner.Transform.GridPosition); + + } + } + + _entityContents.Clear(); + } private bool CanSatisfyRecipe(FoodRecipePrototype recipe) { - foreach (var item in recipe._ingredients) + foreach (var reagent in recipe._ingReagents) { - if (!_contents.ContainsReagent(item.Key, out var amount)) + if (!_contents.ContainsReagent(reagent.Key, out var amount)) { return false; } - if (amount.Int() < item.Value) + if (amount.Int() < reagent.Value) + { + return false; + } + } + + foreach (var solid in recipe._ingSolids) + { + if (!_entityContents.TryGetValue(solid.Key, out var amount)) + { + return false; + } + + if (amount < solid.Value) { return false; } @@ -170,10 +240,16 @@ namespace Content.Server.GameObjects.Components.Kitchen private void SubtractContents(FoodRecipePrototype recipe) { - foreach(var item in recipe._ingredients) + foreach(var item in recipe._ingReagents) { _contents.TryRemoveReagent(item.Key, ReagentUnit.New(item.Value)); } + + foreach(var item in recipe._ingSolids) + { + _entityContents.TryGetValue(item.Key, out var value); + value -= item.Value; + } } private void SetAppearance(MicrowaveVisualState state) @@ -184,7 +260,9 @@ namespace Content.Server.GameObjects.Components.Kitchen private void UpdateUserInterface() { - _userInterface.SetState(new MicrowaveUserInterfaceState(_contents.Solution.Contents.ToList())); + _userInterface.SetState(new MicrowaveUserInterfaceState(_contents.Solution.Contents.ToList(), solids:_entityContents)); } + + } } diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs index eb238b105d..72772f2434 100644 --- a/Content.Shared/Kitchen/RecipeManager.cs +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -33,12 +33,12 @@ namespace Content.Shared.Kitchen return 0; } - if (x._ingredients.Count < y._ingredients.Count) + if (x._ingReagents.Count < y._ingReagents.Count) { return 1; } - if (x._ingredients.Count > y._ingredients.Count) + if (x._ingReagents.Count > y._ingReagents.Count) { return -1; } diff --git a/Content.Shared/Kitchen/SharedMicrowave.cs b/Content.Shared/Kitchen/SharedMicrowave.cs deleted file mode 100644 index a2b5b49e58..0000000000 --- a/Content.Shared/Kitchen/SharedMicrowave.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Robust.Shared.Serialization; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Content.Shared.Kitchen -{ - - [Serializable, NetSerializable] - public enum MicrowaveVisualState - { - Idle, - Cooking - } - - -} diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index 59e34aa82f..fa506fd107 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -37,10 +37,12 @@ namespace Content.Shared.Kitchen [NetSerializable, Serializable] public class MicrowaveUserInterfaceState : BoundUserInterfaceState { - public readonly List ContainedReagents; - public MicrowaveUserInterfaceState(List contained) + public readonly List ReagentsReagents; + public readonly Dictionary ContainedSolids; + public MicrowaveUserInterfaceState(List reagents, Dictionary solids) { - ContainedReagents = contained; + ReagentsReagents = reagents; + ContainedSolids = solids; } } diff --git a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs index 4a61598629..f54a1ac86c 100644 --- a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs @@ -22,8 +22,11 @@ namespace Content.Shared.Prototypes.Kitchen public string _name => Loc.GetString(Name); private string Name; public string _result; - public IReadOnlyDictionary _ingredients => Ingredients; - private Dictionary Ingredients; + public IReadOnlyDictionary _ingReagents => IngredientsReagents; + public IReadOnlyDictionary _ingSolids => IngredientsSolids; + + private Dictionary IngredientsReagents; + private Dictionary IngredientsSolids; public int _cookTime; public string ID => _id; @@ -35,7 +38,8 @@ namespace Content.Shared.Prototypes.Kitchen serializer.DataField(ref _id, "id", string.Empty); serializer.DataField(ref Name, "name", string.Empty); serializer.DataField(ref _result, "result", string.Empty); - serializer.DataField(ref Ingredients, "ingredients", new Dictionary()); + serializer.DataField(ref IngredientsReagents, "reagents", new Dictionary()); + serializer.DataField(ref IngredientsSolids, "solids", new Dictionary()); serializer.DataField(ref _cookTime, "time", 5); } diff --git a/Resources/Prototypes/Entities/Items/Consumables/food.yml b/Resources/Prototypes/Entities/Items/Consumables/food.yml index 8e6dd97175..7ab00d754b 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/food.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/food.yml @@ -90,7 +90,7 @@ # name: Ambrosia vulgar is crushed # parent: FoodBase # id: FoodAmbrosiaVulgarIsCrushed -# description: +# description: # components: # - type: Food # uses: 1 @@ -137,7 +137,7 @@ # name: Bacon # parent: FoodBase # id: FoodBacon -# description: +# description: # components: # - type: Food # uses: 1 @@ -182,7 +182,7 @@ name: Bread (slice) parent: FoodBase id: FoodBreadSlice - description: + description: components: - type: Food contents: @@ -199,7 +199,7 @@ name: Banana bread (slice) parent: FoodBase id: FoodBananaBreadSlice - description: + description: components: - type: Food contents: @@ -233,7 +233,7 @@ # name: Bear meat # parent: FoodBase # id: FoodBearMeat -# description: +# description: # components: # - type: Food # uses: 1 @@ -612,7 +612,7 @@ # name: Cocoa # parent: FoodBase # id: FoodCocoa -# description: +# description: # components: # - type: Food # uses: 1 @@ -1482,11 +1482,11 @@ - type: Icon sprite: Objects/Food/loadedbakedpotato.rsi -#- type: entity +# - type: entity # parent: FoodBase # id: FoodMeat # name: Meat -# description: '' +# description: A slab of meat. # components: # - type: Food # uses: 1 diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 660f7eef2a..a1c3fc51ba 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -3,15 +3,9 @@ name: Cheeseburger Recipe result: FoodCheeseburger time: 10 - ingredients: + reagents: chem.H2O: 15 chem.Nutriment: 5 + solids: + FoodMeatBreadSlice: 1 -- type: microwaveMealRecipe - id: RecipeFlashlight - name: Flashlight Recipe - result: FoodCheeseWedge - time: 5 - ingredients: - chem.H2O: 15 - chem.Glucose: 5 From 1f0c72dd281b035d06fd08e6eeb815ee7015af64 Mon Sep 17 00:00:00 2001 From: Jackson Lewis Date: Sat, 2 May 2020 15:02:52 +0100 Subject: [PATCH 27/73] Gravity (#841) --- Content.Client/EntryPoint.cs | 3 + .../GravityGeneratorBoundUserInterface.cs | 104 + .../Tests/GravityGridTest.cs | 64 + .../Gravity/GravityGeneratorComponent.cs | 206 + .../Movement/AiControllerComponent.cs | 9 + .../Movement/PlayerInputMoverComponent.cs | 8 + .../Movement/ShuttleControllerComponent.cs | 9 + .../EntitySystems/GravitySystem.cs | 134 + .../GameObjects/EntitySystems/MoverSystem.cs | 50 +- .../Components/Movement/IMoverComponent.cs | 11 + Content.Server/Throw/ThrowHelper.cs | 8 + .../SharedGravityGeneratorComponent.cs | 57 + Content.Shared/GameObjects/ContentNetIDs.cs | 1 + Resources/Audio/effects/alert.ogg | Bin 0 -> 34401 bytes Resources/Maps/stationstation.yml | 6777 ++++++++++++++--- .../Entities/Buildings/gravity_generator.yml | 36 + .../gravity_generator.rsi/broken.png | Bin 0 -> 21698 bytes .../Buildings/gravity_generator.rsi/meta.json | 23 + .../Buildings/gravity_generator.rsi/off.png | Bin 0 -> 17961 bytes .../Buildings/gravity_generator.rsi/on.png | Bin 0 -> 18219 bytes .../gravity_generator_core.rsi/activated.png | Bin 0 -> 1289 bytes .../gravity_generator_core.rsi/activating.png | Bin 0 -> 684 bytes .../gravity_generator_core.rsi/idle.png | Bin 0 -> 1076 bytes .../gravity_generator_core.rsi/meta.json | 20 + .../gravity_generator_core.rsi/startup.png | Bin 0 -> 1132 bytes RobustToolbox | 2 +- 26 files changed, 6621 insertions(+), 901 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Gravity/GravityGeneratorBoundUserInterface.cs create mode 100644 Content.IntegrationTests/Tests/GravityGridTest.cs create mode 100644 Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs create mode 100644 Content.Server/GameObjects/EntitySystems/GravitySystem.cs create mode 100644 Content.Shared/GameObjects/Components/Gravity/SharedGravityGeneratorComponent.cs create mode 100644 Resources/Audio/effects/alert.ogg create mode 100644 Resources/Prototypes/Entities/Buildings/gravity_generator.yml create mode 100644 Resources/Textures/Buildings/gravity_generator.rsi/broken.png create mode 100755 Resources/Textures/Buildings/gravity_generator.rsi/meta.json create mode 100644 Resources/Textures/Buildings/gravity_generator.rsi/off.png create mode 100755 Resources/Textures/Buildings/gravity_generator.rsi/on.png create mode 100644 Resources/Textures/Buildings/gravity_generator_core.rsi/activated.png create mode 100644 Resources/Textures/Buildings/gravity_generator_core.rsi/activating.png create mode 100644 Resources/Textures/Buildings/gravity_generator_core.rsi/idle.png create mode 100644 Resources/Textures/Buildings/gravity_generator_core.rsi/meta.json create mode 100644 Resources/Textures/Buildings/gravity_generator_core.rsi/startup.png diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index 89681280c8..bed89711c9 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -12,6 +12,7 @@ using Content.Client.UserInterface.Stylesheets; using Content.Shared.GameObjects.Components; using Content.Shared.GameObjects.Components.Cargo; using Content.Shared.GameObjects.Components.Chemistry; +using Content.Shared.GameObjects.Components.Gravity; using Content.Shared.GameObjects.Components.Markers; using Content.Shared.GameObjects.Components.Research; using Content.Shared.GameObjects.Components.VendingMachines; @@ -161,6 +162,8 @@ namespace Content.Client factory.Register(); factory.Register(); + factory.Register(); + prototypes.RegisterIgnore("material"); prototypes.RegisterIgnore("reaction"); //Chemical reactions only needed by server. Reactions checks are server-side. prototypes.RegisterIgnore("barSign"); diff --git a/Content.Client/GameObjects/Components/Gravity/GravityGeneratorBoundUserInterface.cs b/Content.Client/GameObjects/Components/Gravity/GravityGeneratorBoundUserInterface.cs new file mode 100644 index 0000000000..450e73c288 --- /dev/null +++ b/Content.Client/GameObjects/Components/Gravity/GravityGeneratorBoundUserInterface.cs @@ -0,0 +1,104 @@ +using System; +using Content.Shared.GameObjects.Components.Gravity; +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; + +namespace Content.Client.GameObjects.Components.Gravity +{ + public class GravityGeneratorBoundUserInterface: BoundUserInterface + { + private GravityGeneratorWindow _window; + + public bool IsOn; + + public GravityGeneratorBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base (owner, uiKey) + { + SendMessage(new SharedGravityGeneratorComponent.GeneratorStatusRequestMessage()); + } + + protected override void Open() + { + base.Open(); + + IsOn = false; + + _window = new GravityGeneratorWindow(this); + + _window.Switch.OnPressed += (args) => + { + SendMessage(new SharedGravityGeneratorComponent.SwitchGeneratorMessage(!IsOn)); + SendMessage(new SharedGravityGeneratorComponent.GeneratorStatusRequestMessage()); + }; + + _window.OpenCentered(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + var castState = (SharedGravityGeneratorComponent.GeneratorState) state; + IsOn = castState.On; + _window.UpdateButton(); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) return; + + _window?.Dispose(); + } + } + + public class GravityGeneratorWindow : SS14Window + { + public Label Status; + + public Button Switch; + + public GravityGeneratorBoundUserInterface Owner; + + public GravityGeneratorWindow(GravityGeneratorBoundUserInterface gravityGeneratorInterface = null) + { + IoCManager.InjectDependencies(this); + + Owner = gravityGeneratorInterface; + + Title = Loc.GetString("Gravity Generator Control"); + + var vBox = new VBoxContainer + { + CustomMinimumSize = new Vector2(250, 100) + }; + Status = new Label + { + Text = Loc.GetString("Current Status: " + (Owner.IsOn ? "On" : "Off")), + FontColorOverride = Owner.IsOn ? Color.ForestGreen : Color.Red + }; + Switch = new Button + { + Text = Loc.GetString(Owner.IsOn ? "Turn Off" : "Turn On"), + TextAlign = Label.AlignMode.Center, + CustomMinimumSize = new Vector2(150, 60) + }; + + vBox.AddChild(Status); + vBox.AddChild(Switch); + + Contents.AddChild(vBox); + } + + public void UpdateButton() + { + Status.Text = Loc.GetString("Current Status: " + (Owner.IsOn ? "On" : "Off")); + Status.FontColorOverride = Owner.IsOn ? Color.ForestGreen : Color.Red; + Switch.Text = Loc.GetString(Owner.IsOn ? "Turn Off" : "Turn On"); + } + } +} diff --git a/Content.IntegrationTests/Tests/GravityGridTest.cs b/Content.IntegrationTests/Tests/GravityGridTest.cs new file mode 100644 index 0000000000..0b35fa603a --- /dev/null +++ b/Content.IntegrationTests/Tests/GravityGridTest.cs @@ -0,0 +1,64 @@ +using System.Threading.Tasks; +using Content.Client.GameObjects.Components.Gravity; +using Content.Server.GameObjects.Components.Gravity; +using Content.Server.GameObjects.Components.Power; +using NUnit.Framework; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.IoC; +using Robust.Shared.Map; +using Robust.Shared.Maths; + +namespace Content.IntegrationTests.Tests +{ + /// Tests the behavior of GravityGeneratorComponent, + /// making sure that gravity is applied to the correct grids. + [TestFixture] + [TestOf(typeof(GravityGeneratorComponent))] + public class GravityGridTest : ContentIntegrationTest + { + [Test] + public async Task Test() + { + var server = StartServerDummyTicker(); + + IEntity generator = null; + + IMapGrid grid1 = null; + IMapGrid grid2 = null; + + // Create grids + server.Assert(() => + { + var mapMan = IoCManager.Resolve(); + + mapMan.CreateMap(new MapId(1)); + grid1 = mapMan.CreateGrid(new MapId(1)); + grid2 = mapMan.CreateGrid(new MapId(1)); + + var entityMan = IoCManager.Resolve(); + + generator = entityMan.SpawnEntity("GravityGenerator", new GridCoordinates(new Vector2(0, 0), grid2.Index)); + Assert.That(generator.HasComponent()); + Assert.That(generator.HasComponent()); + var generatorComponent = generator.GetComponent(); + var powerComponent = generator.GetComponent(); + Assert.AreEqual(generatorComponent.Status, GravityGeneratorStatus.Unpowered); + powerComponent.ExternalPowered = true; + }); + server.RunTicks(1); + + server.Assert(() => + { + var generatorComponent = generator.GetComponent(); + + Assert.AreEqual(generatorComponent.Status, GravityGeneratorStatus.On); + + Assert.That(!grid1.HasGravity); + Assert.That(grid2.HasGravity); + }); + + await server.WaitIdleAsync(); + } + } +} diff --git a/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs b/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs new file mode 100644 index 0000000000..494a97c9d8 --- /dev/null +++ b/Content.Server/GameObjects/Components/Gravity/GravityGeneratorComponent.cs @@ -0,0 +1,206 @@ +using Content.Server.GameObjects.Components.Damage; +using Content.Server.GameObjects.Components.Interactable.Tools; +using Content.Server.GameObjects.Components.Power; +using Content.Server.GameObjects.EntitySystems; +using Content.Server.Interfaces; +using Content.Shared.GameObjects.Components.Gravity; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Gravity +{ + [RegisterComponent] + public class GravityGeneratorComponent: SharedGravityGeneratorComponent, IAttackBy, IBreakAct, IAttackHand + { + private BoundUserInterface _userInterface; + + private PowerDeviceComponent _powerDevice; + + private SpriteComponent _sprite; + + private bool _switchedOn; + + private bool _intact; + + private GravityGeneratorStatus _status; + + public bool Powered => _powerDevice.Powered; + + public bool SwitchedOn => _switchedOn; + + public bool Intact => _intact; + + public GravityGeneratorStatus Status => _status; + + public bool NeedsUpdate + { + get + { + switch (_status) + { + case GravityGeneratorStatus.On: + return !(Powered && SwitchedOn && Intact); + case GravityGeneratorStatus.Off: + return SwitchedOn || !(Powered && Intact); + case GravityGeneratorStatus.Unpowered: + return SwitchedOn || Powered || !Intact; + case GravityGeneratorStatus.Broken: + return SwitchedOn || Powered || Intact; + default: + return true; // This _should_ be unreachable + } + } + } + + public override string Name => "GravityGenerator"; + + public override void Initialize() + { + base.Initialize(); + + _userInterface = Owner.GetComponent() + .GetBoundUserInterface(GravityGeneratorUiKey.Key); + _userInterface.OnReceiveMessage += HandleUIMessage; + _powerDevice = Owner.GetComponent(); + _sprite = Owner.GetComponent(); + _switchedOn = true; + _intact = true; + _status = GravityGeneratorStatus.On; + UpdateState(); + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _switchedOn, "switched_on", true); + serializer.DataField(ref _intact, "intact", true); + } + + bool IAttackHand.AttackHand(AttackHandEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out var actor)) + return false; + if (Status != GravityGeneratorStatus.Off && Status != GravityGeneratorStatus.On) + { + return false; + } + OpenUserInterface(actor.playerSession); + return true; + } + + public bool AttackBy(AttackByEventArgs eventArgs) + { + if (!eventArgs.AttackWith.TryGetComponent(out var welder)) return false; + if (welder.TryUse(5.0f)) + { + // Repair generator + var damagable = Owner.GetComponent(); + var breakable = Owner.GetComponent(); + damagable.HealAllDamage(); + breakable.broken = false; + _intact = true; + + var entitySystemManager = IoCManager.Resolve(); + var notifyManager = IoCManager.Resolve(); + + entitySystemManager.GetEntitySystem().Play("/Audio/items/welder2.ogg", Owner); + notifyManager.PopupMessage(Owner, eventArgs.User, Loc.GetString("You repair the gravity generator with the welder")); + + return true; + } else + { + return false; + } + } + + public void OnBreak(BreakageEventArgs eventArgs) + { + _intact = false; + _switchedOn = false; + } + + public void UpdateState() + { + if (!Intact) + { + MakeBroken(); + } else if (!Powered) + { + MakeUnpowered(); + } else if (!SwitchedOn) + { + MakeOff(); + } else + { + MakeOn(); + } + } + + private void HandleUIMessage(ServerBoundUserInterfaceMessage message) + { + switch (message.Message) + { + case GeneratorStatusRequestMessage _: + _userInterface.SetState(new GeneratorState(Status == GravityGeneratorStatus.On)); + break; + case SwitchGeneratorMessage msg: + _switchedOn = msg.On; + UpdateState(); + break; + default: + break; + } + } + + private void OpenUserInterface(IPlayerSession playerSession) + { + _userInterface.Open(playerSession); + } + + private void MakeBroken() + { + _status = GravityGeneratorStatus.Broken; + _sprite.LayerSetState(0, "broken"); + _sprite.LayerSetVisible(1, false); + } + + private void MakeUnpowered() + { + _status = GravityGeneratorStatus.Unpowered; + _sprite.LayerSetState(0, "off"); + _sprite.LayerSetVisible(1, false); + } + + private void MakeOff() + { + _status = GravityGeneratorStatus.Off; + _sprite.LayerSetState(0, "off"); + _sprite.LayerSetVisible(1, false); + } + + private void MakeOn() + { + _status = GravityGeneratorStatus.On; + _sprite.LayerSetState(0, "on"); + _sprite.LayerSetVisible(1, true); + } + } + + public enum GravityGeneratorStatus + { + Broken, + Unpowered, + Off, + On + } +} diff --git a/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs b/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs index f5e947d3d3..aa45e6a4b3 100644 --- a/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/AiControllerComponent.cs @@ -90,6 +90,15 @@ namespace Content.Server.GameObjects.Components.Movement } } + /// + [ViewVariables] + public float CurrentPushSpeed => 5.0f; + + /// + [ViewVariables] + public float GrabRange => 0.2f; + + /// /// Is the entity Sprinting (running)? /// diff --git a/Content.Server/GameObjects/Components/Movement/PlayerInputMoverComponent.cs b/Content.Server/GameObjects/Components/Movement/PlayerInputMoverComponent.cs index f3229c82ac..f15f81f8fd 100644 --- a/Content.Server/GameObjects/Components/Movement/PlayerInputMoverComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/PlayerInputMoverComponent.cs @@ -67,6 +67,14 @@ namespace Content.Server.GameObjects.Components.Movement } } + /// + [ViewVariables] + public float CurrentPushSpeed => 5.0f; + + /// + [ViewVariables] + public float GrabRange => 0.2f; + /// /// Is the entity Sprinting (running)? /// diff --git a/Content.Server/GameObjects/Components/Movement/ShuttleControllerComponent.cs b/Content.Server/GameObjects/Components/Movement/ShuttleControllerComponent.cs index 9bc123c88a..ebbcae52ea 100644 --- a/Content.Server/GameObjects/Components/Movement/ShuttleControllerComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ShuttleControllerComponent.cs @@ -34,6 +34,15 @@ namespace Content.Server.GameObjects.Components.Movement [ViewVariables(VVAccess.ReadWrite)] public float CurrentWalkSpeed { get; set; } = 8; public float CurrentSprintSpeed { get; set; } + + /// + [ViewVariables] + public float CurrentPushSpeed => 0.0f; + + /// + [ViewVariables] + public float GrabRange => 0.0f; + public bool Sprinting { get; set; } public Vector2 VelocityDir { get; } = Vector2.Zero; public GridCoordinates LastPosition { get; set; } diff --git a/Content.Server/GameObjects/EntitySystems/GravitySystem.cs b/Content.Server/GameObjects/EntitySystems/GravitySystem.cs new file mode 100644 index 0000000000..1d60ddeec1 --- /dev/null +++ b/Content.Server/GameObjects/EntitySystems/GravitySystem.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Content.Server.GameObjects.Components.Gravity; +using Content.Server.GameObjects.Components.Mobs; +using JetBrains.Annotations; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Map; +using Robust.Shared.Maths; +using Robust.Shared.Random; + +namespace Content.Server.GameObjects.EntitySystems +{ + [UsedImplicitly] + public class GravitySystem: EntitySystem + { +#pragma warning disable 649 + [Dependency] private readonly IMapManager _mapManager; + [Dependency] private readonly IPlayerManager _playerManager; + [Dependency] private readonly IEntitySystemManager _entitySystemManager; + [Dependency] private readonly IRobustRandom _random; +#pragma warning restore 649 + + private const float GravityKick = 100.0f; + + private const uint ShakeTimes = 10; + + private Dictionary _gridsToShake; + + private float internalTimer = 0.0f; + + public override void Initialize() + { + EntityQuery = new TypeEntityQuery(); + _gridsToShake = new Dictionary(); + } + + public override void Update(float frameTime) + { + internalTimer += frameTime; + var gridsWithGravity = new List(); + foreach (var entity in RelevantEntities) + { + var generator = entity.GetComponent(); + if (generator.NeedsUpdate) + { + generator.UpdateState(); + } + if (generator.Status == GravityGeneratorStatus.On) + { + gridsWithGravity.Add(entity.Transform.GridID); + } + } + + foreach (var grid in _mapManager.GetAllGrids()) + { + if (grid.HasGravity && !gridsWithGravity.Contains(grid.Index)) + { + grid.HasGravity = false; + ScheduleGridToShake(grid.Index, ShakeTimes); + } else if (!grid.HasGravity && gridsWithGravity.Contains(grid.Index)) + { + grid.HasGravity = true; + ScheduleGridToShake(grid.Index, ShakeTimes); + } + } + + if (internalTimer > 0.2f) + { + ShakeGrids(); + internalTimer = 0.0f; + } + } + + private void ScheduleGridToShake(GridId gridId, uint shakeTimes) + { + if (!_gridsToShake.Keys.Contains(gridId)) + { + _gridsToShake.Add(gridId, shakeTimes); + } + else + { + _gridsToShake[gridId] = shakeTimes; + } + // Play the gravity sound + foreach (var player in _playerManager.GetAllPlayers()) + { + if (player.AttachedEntity == null + || player.AttachedEntity.Transform.GridID != gridId) continue; + _entitySystemManager.GetEntitySystem().Play("/Audio/effects/alert.ogg", player.AttachedEntity); + } + } + + private void ShakeGrids() + { + // I have to copy this because C# doesn't allow changing collections while they're + // getting enumerated. + var gridsToShake = new Dictionary(_gridsToShake); + foreach (var gridId in _gridsToShake.Keys) + { + if (_gridsToShake[gridId] == 0) + { + gridsToShake.Remove(gridId); + continue; + } + ShakeGrid(gridId); + gridsToShake[gridId] -= 1; + } + _gridsToShake = gridsToShake; + } + + private void ShakeGrid(GridId gridId) + { + foreach (var player in _playerManager.GetAllPlayers()) + { + if (player.AttachedEntity == null + || player.AttachedEntity.Transform.GridID != gridId + || !player.AttachedEntity.TryGetComponent(out CameraRecoilComponent recoil)) + { + continue; + } + + recoil.Kick(new Vector2(_random.NextFloat(), _random.NextFloat()) * GravityKick); + } + } + } +} diff --git a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs index 65282a8a74..bdb05b95ce 100644 --- a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs @@ -1,4 +1,6 @@ -using Content.Server.GameObjects.Components; +using System; +using System.Net; +using Content.Server.GameObjects.Components; using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.Components.Movement; using Content.Server.GameObjects.Components.Sound; @@ -15,6 +17,7 @@ using Robust.Server.Interfaces.Player; using Robust.Server.Interfaces.Timing; using Robust.Shared.Configuration; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.Transform; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Input; @@ -28,6 +31,7 @@ using Robust.Shared.Log; using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Network; +using Robust.Shared.Physics; using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -44,6 +48,7 @@ namespace Content.Server.GameObjects.EntitySystems [Dependency] private readonly IMapManager _mapManager; [Dependency] private readonly IRobustRandom _robustRandom; [Dependency] private readonly IConfigurationManager _configurationManager; + [Dependency] private readonly IEntityManager _entityManager; #pragma warning restore 649 private AudioSystem _audioSystem; @@ -130,13 +135,43 @@ namespace Content.Server.GameObjects.EntitySystems } var mover = entity.GetComponent(); var physics = entity.GetComponent(); - - UpdateKinematics(entity.Transform, mover, physics); + if (entity.TryGetComponent(out var collider)) + { + UpdateKinematics(entity.Transform, mover, physics, collider); + } + else + { + UpdateKinematics(entity.Transform, mover, physics); + } } } - private void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, PhysicsComponent physics) + private void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, PhysicsComponent physics, CollidableComponent collider = null) { + bool weightless = false; + + var tile = _mapManager.GetGrid(transform.GridID).GetTileRef(transform.GridPosition).Tile; + + if ((!_mapManager.GetGrid(transform.GridID).HasGravity || tile.IsEmpty) && collider != null) + { + weightless = true; + // No gravity: is our entity touching anything? + var touching = false; + foreach (var entity in _entityManager.GetEntitiesInRange(transform.Owner, mover.GrabRange, true)) + { + if (entity.TryGetComponent(out var otherCollider)) + { + if (otherCollider.Owner == transform.Owner) continue; // Don't try to push off of yourself! + touching |= ((collider.CollisionMask & otherCollider.CollisionLayer) != 0x0 + || (otherCollider.CollisionMask & collider.CollisionLayer) != 0x0) // Ensure collision + && !entity.HasComponent(); // This can't be an item + } + } + if (!touching) + { + return; + } + } if (mover.VelocityDir.LengthSquared < 0.001 || !ActionBlockerSystem.CanMove(mover.Owner)) { if (physics.LinearVelocity != Vector2.Zero) @@ -145,6 +180,13 @@ namespace Content.Server.GameObjects.EntitySystems } else { + if (weightless) + { + physics.LinearVelocity = mover.VelocityDir * mover.CurrentPushSpeed; + transform.LocalRotation = mover.VelocityDir.GetDir().ToAngle(); + return; + } + physics.LinearVelocity = mover.VelocityDir * (mover.Sprinting ? mover.CurrentSprintSpeed : mover.CurrentWalkSpeed); transform.LocalRotation = mover.VelocityDir.GetDir().ToAngle(); diff --git a/Content.Server/Interfaces/GameObjects/Components/Movement/IMoverComponent.cs b/Content.Server/Interfaces/GameObjects/Components/Movement/IMoverComponent.cs index 5e3ed05180..9a5196ad3f 100644 --- a/Content.Server/Interfaces/GameObjects/Components/Movement/IMoverComponent.cs +++ b/Content.Server/Interfaces/GameObjects/Components/Movement/IMoverComponent.cs @@ -19,6 +19,17 @@ namespace Content.Server.Interfaces.GameObjects.Components.Movement ///
float CurrentSprintSpeed { get; } + + /// + /// The movement speed (m/s) of the entity when it pushes off of a solid object in zero gravity. + /// + float CurrentPushSpeed { get; } + + /// + /// How far an entity can reach (in meters) to grab hold of a solid object in zero gravity. + /// + float GrabRange { get; } + /// /// Is the entity Sprinting (running)? /// diff --git a/Content.Server/Throw/ThrowHelper.cs b/Content.Server/Throw/ThrowHelper.cs index 0e402da225..77484fa656 100644 --- a/Content.Server/Throw/ThrowHelper.cs +++ b/Content.Server/Throw/ThrowHelper.cs @@ -65,6 +65,14 @@ namespace Content.Server.Throw var spd = a / (1f / timing.TickRate); // acceleration is applied in 1 tick instead of 1 second, scale appropriately physComp.LinearVelocity = angle.ToVec() * spd; + + if (throwSourceEnt != null) + { + var p = throwSourceEnt.GetComponent(); + var playerAccel = 5 * throwForce / (float) Math.Max(0.001, p.Mass); + p.LinearVelocity = Angle.FromDegrees(angle.Degrees + 180).ToVec() + * playerAccel / (1f / timing.TickRate); + } } } } diff --git a/Content.Shared/GameObjects/Components/Gravity/SharedGravityGeneratorComponent.cs b/Content.Shared/GameObjects/Components/Gravity/SharedGravityGeneratorComponent.cs new file mode 100644 index 0000000000..344a6f68ce --- /dev/null +++ b/Content.Shared/GameObjects/Components/Gravity/SharedGravityGeneratorComponent.cs @@ -0,0 +1,57 @@ +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Gravity +{ + public class SharedGravityGeneratorComponent: Component + { + public override string Name => "GravityGenerator"; + + public override uint? NetID => ContentNetIDs.GRAVITY_GENERATOR; + + /// + /// Sent to the server to set whether the generator should be on or off + /// + [Serializable, NetSerializable] + public class SwitchGeneratorMessage : BoundUserInterfaceMessage + { + public bool On; + + public SwitchGeneratorMessage(bool on) + { + On = on; + } + } + + /// + /// Sent to the server when requesting the status of the generator + /// + [Serializable, NetSerializable] + public class GeneratorStatusRequestMessage : BoundUserInterfaceMessage + { + public GeneratorStatusRequestMessage() + { + + } + } + + [Serializable, NetSerializable] + public class GeneratorState : BoundUserInterfaceState + { + public bool On; + + public GeneratorState(bool on) + { + On = on; + } + } + + [Serializable, NetSerializable] + public enum GravityGeneratorUiKey + { + Key + } + } +} diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index ef69972f4d..28ef999efc 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -42,5 +42,6 @@ public const uint PAPER = 1037; public const uint REAGENT_INJECTOR = 1038; public const uint GHOST = 1039; + public const uint GRAVITY_GENERATOR = 1040; } } diff --git a/Resources/Audio/effects/alert.ogg b/Resources/Audio/effects/alert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..69bc52bdb804bf5ac30f1b728d4825c402da1490 GIT binary patch literal 34401 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 literal 0 HcmV?d00001 diff --git a/Resources/Maps/stationstation.yml b/Resources/Maps/stationstation.yml index e7402cdbde..63b317c907 100644 --- a/Resources/Maps/stationstation.yml +++ b/Resources/Maps/stationstation.yml @@ -79,9 +79,9 @@ grids: - ind: "0,1" tiles: AAAAADsAAAA2AAAANgAAADsAAAA7AAAAOwAAADsAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAANgAAAAAAAAA7AAAANgAAADYAAAA7AAAAOAAAADsAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAAAAAAAOwAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA7AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAAAAAAAA7AAAANgAAADYAAAA7AAAAOAAAADsAAAA4AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAOwAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA5AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOQAAAAAAAAA7AAAANgAAADYAAAA7AAAAOAAAADsAAAA4AAAAOAAAADgAAAA7AAAAOAAAADgAAAA7AAAAOwAAADkAAAAAAAAAOwAAADYAAAA2AAAAOwAAADgAAAA7AAAAOAAAADgAAAA4AAAAOwAAADgAAAA4AAAAOwAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAADsAAAA4AAAAOwAAADgAAAA4AAAAOAAAADsAAAA4AAAAOAAAADsAAAA7AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADgAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAAAAAAAAAAAAAAAAAAAAAADsAAAA4AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "0,0" - tiles: NgAAADsAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAAOQAAADsAAAA7AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA7AAAAOwAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOwAAADsAAAA2AAAANgAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA5AAAAOQAAADsAAAA4AAAANgAAADYAAAA4AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA4AAAAOQAAADkAAAA7AAAAOwAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA2AAAAAAAAADsAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAOwAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA7AAAAOQAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAAA== + tiles: NgAAADsAAAA2AAAANgAAADsAAAAzAAAAMwAAADMAAAAzAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAAOQAAADsAAAA7AAAANgAAADYAAAA7AAAAMwAAADMAAAAzAAAAMwAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAADMAAAAzAAAAMwAAADMAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA7AAAAOwAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOwAAADsAAAA2AAAANgAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA5AAAAOQAAADsAAAA4AAAANgAAADYAAAA4AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA4AAAAOQAAADkAAAA7AAAAOwAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA2AAAAAAAAADsAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAOwAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA7AAAAOQAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAAA== - ind: "0,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADsAAAA4AAAAOAAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAADgAAAA7AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA7AAAAOwAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADsAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOQAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADsAAAA4AAAAOAAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAADgAAAA7AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA7AAAAOwAAADgAAAA4AAAAOwAAADsAAAA7AAAAMwAAADMAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADsAAAA2AAAANgAAADsAAAAzAAAAMwAAADMAAAAzAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAMwAAADMAAAAzAAAAMwAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAADMAAAAzAAAAMwAAADMAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADMAAAAzAAAAMwAAADMAAAAzAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOQAAAA== - ind: "1,-1" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOwAAADsAAAA7AAAAOQAAADsAAAA7AAAAOwAAAA== - ind: "-2,0" @@ -108,6 +108,11 @@ entities: pos: -1.47174,4.550247 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - charge: 1200 type: HitscanWeaponCapacitor - uid: 2 @@ -117,6 +122,11 @@ entities: pos: -0.6748645,4.487747 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - charge: 1200 type: HitscanWeaponCapacitor - uid: 3 @@ -126,6 +136,11 @@ entities: pos: -2.106966,-1.457896 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 4 type: Ointment components: @@ -133,6 +148,11 @@ entities: pos: -1.481966,-1.317271 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 5 type: Spear components: @@ -140,6 +160,11 @@ entities: pos: -4.144312,7.499083 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 6 type: Spear components: @@ -147,6 +172,11 @@ entities: pos: -1.238062,7.436583 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 7 type: PowerCellSmallHigh components: @@ -154,6 +184,12 @@ entities: pos: -2.67511,-10.351 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable - uid: 8 type: PowerCellSmallHigh components: @@ -161,6 +197,12 @@ entities: pos: -2.55011,-10.6635 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable - uid: 9 type: OuterclothingVest components: @@ -168,6 +210,11 @@ entities: pos: 1.412994,7.507263 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 10 type: solid_wall components: @@ -175,6 +222,10 @@ entities: pos: -7.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 11 type: solid_wall components: @@ -182,6 +233,10 @@ entities: pos: -7.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 12 type: solid_wall components: @@ -189,6 +244,10 @@ entities: pos: -7.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 13 type: solid_wall components: @@ -196,6 +255,10 @@ entities: pos: -7.5,-2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 14 type: solid_wall components: @@ -203,6 +266,10 @@ entities: pos: -7.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 15 type: solid_wall components: @@ -210,6 +277,10 @@ entities: pos: 0.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 16 type: solid_wall components: @@ -217,6 +288,10 @@ entities: pos: -0.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 17 type: solid_wall components: @@ -224,6 +299,10 @@ entities: pos: 3.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 18 type: solid_wall components: @@ -231,6 +310,10 @@ entities: pos: 4.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 19 type: solid_wall components: @@ -238,6 +321,10 @@ entities: pos: -7.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 20 type: solid_wall components: @@ -245,6 +332,10 @@ entities: pos: -7.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 21 type: solid_wall components: @@ -252,6 +343,10 @@ entities: pos: -7.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 22 type: solid_wall components: @@ -259,6 +354,10 @@ entities: pos: -7.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 23 type: solid_wall components: @@ -266,6 +365,10 @@ entities: pos: 2.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 24 type: solid_wall components: @@ -273,6 +376,10 @@ entities: pos: 1.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 25 type: solid_wall components: @@ -280,6 +387,10 @@ entities: pos: -1.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 26 type: PoweredSmallLight components: @@ -287,16 +398,19 @@ entities: pos: -4.5,-5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - 30 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - load: 40 + type: PowerDevice - uid: 27 type: MetalStack components: @@ -304,6 +418,11 @@ entities: pos: -15.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 28 type: Wire components: @@ -311,6 +430,9 @@ entities: pos: 8.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 29 type: PoweredSmallLight components: @@ -318,21 +440,29 @@ entities: pos: 0.5,-5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - 170 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - load: 40 + type: PowerDevice - uid: 30 type: LightBulb components: - parent: 26 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 31 type: Wire components: @@ -340,6 +470,9 @@ entities: pos: -6.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 32 type: solid_wall components: @@ -347,6 +480,10 @@ entities: pos: -7.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 33 type: solid_wall components: @@ -354,6 +491,10 @@ entities: pos: -10.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 34 type: airlock_engineering components: @@ -361,6 +502,12 @@ entities: pos: -12.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 35 type: solid_wall components: @@ -368,6 +515,10 @@ entities: pos: -10.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 36 type: solid_wall components: @@ -375,6 +526,10 @@ entities: pos: -10.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 37 type: solid_wall components: @@ -382,6 +537,10 @@ entities: pos: -10.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 38 type: solid_wall components: @@ -389,6 +548,10 @@ entities: pos: -10.5,-2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 39 type: solid_wall components: @@ -396,6 +559,10 @@ entities: pos: -10.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 40 type: solid_wall components: @@ -403,6 +570,10 @@ entities: pos: -3.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 41 type: solid_wall components: @@ -410,6 +581,10 @@ entities: pos: 1.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 42 type: solid_wall components: @@ -417,6 +592,10 @@ entities: pos: 0.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 43 type: solid_wall components: @@ -424,6 +603,10 @@ entities: pos: -0.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 44 type: solid_wall components: @@ -431,6 +614,10 @@ entities: pos: -1.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 45 type: solid_wall components: @@ -438,6 +625,10 @@ entities: pos: -2.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 46 type: solid_wall components: @@ -445,6 +636,10 @@ entities: pos: -3.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 47 type: solid_wall components: @@ -452,6 +647,10 @@ entities: pos: -4.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 48 type: solid_wall components: @@ -459,6 +658,10 @@ entities: pos: -5.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 49 type: solid_wall components: @@ -466,6 +669,10 @@ entities: pos: -6.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 50 type: solid_wall components: @@ -473,6 +680,10 @@ entities: pos: 4.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 51 type: solid_wall components: @@ -480,6 +691,10 @@ entities: pos: 5.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 52 type: solid_wall components: @@ -487,6 +702,10 @@ entities: pos: 6.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 53 type: solid_wall components: @@ -494,6 +713,10 @@ entities: pos: -7.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 54 type: solid_wall components: @@ -501,6 +724,10 @@ entities: pos: -2.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 55 type: solid_wall components: @@ -508,6 +735,10 @@ entities: pos: -6.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 56 type: solid_wall components: @@ -515,6 +746,10 @@ entities: pos: -5.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 57 type: solid_wall components: @@ -522,6 +757,10 @@ entities: pos: -4.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 58 type: solid_wall components: @@ -529,6 +768,10 @@ entities: pos: 6.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 59 type: solid_wall components: @@ -536,6 +779,10 @@ entities: pos: 6.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 60 type: solid_wall components: @@ -543,6 +790,10 @@ entities: pos: 6.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 61 type: solid_wall components: @@ -550,6 +801,10 @@ entities: pos: 6.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 62 type: solid_wall components: @@ -557,6 +812,10 @@ entities: pos: 6.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 63 type: solid_wall components: @@ -564,6 +823,10 @@ entities: pos: 5.5,-14.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 64 type: solid_wall components: @@ -571,6 +834,10 @@ entities: pos: -7.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 65 type: solid_wall components: @@ -578,6 +845,10 @@ entities: pos: -7.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 66 type: solid_wall components: @@ -585,6 +856,10 @@ entities: pos: -8.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 67 type: solid_wall components: @@ -592,6 +867,10 @@ entities: pos: -9.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 68 type: solid_wall components: @@ -599,6 +878,10 @@ entities: pos: -10.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 69 type: solid_wall components: @@ -606,6 +889,10 @@ entities: pos: -7.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 70 type: Catwalk components: @@ -613,6 +900,9 @@ entities: pos: -6.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 71 type: Catwalk components: @@ -620,6 +910,9 @@ entities: pos: -8.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 72 type: solid_wall components: @@ -627,6 +920,10 @@ entities: pos: 5.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 73 type: solid_wall components: @@ -634,6 +931,10 @@ entities: pos: 5.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 74 type: solid_wall components: @@ -641,6 +942,10 @@ entities: pos: 6.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 75 type: solid_wall components: @@ -648,6 +953,10 @@ entities: pos: 6.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 76 type: Catwalk components: @@ -655,6 +964,9 @@ entities: pos: 4.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 77 type: LargeBeaker components: @@ -662,6 +974,11 @@ entities: pos: 23.494947,7.0422435 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 78 type: solid_wall components: @@ -669,6 +986,10 @@ entities: pos: 7.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 79 type: airlock_external components: @@ -676,6 +997,12 @@ entities: pos: 7.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 80 type: airlock_external components: @@ -683,6 +1010,12 @@ entities: pos: 5.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 81 type: airlock_engineering components: @@ -690,6 +1023,12 @@ entities: pos: -7.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 82 type: airlock_engineering components: @@ -697,6 +1036,12 @@ entities: pos: 3.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 83 type: airlock_engineering components: @@ -704,6 +1049,12 @@ entities: pos: 2.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 84 type: solid_wall components: @@ -711,6 +1062,10 @@ entities: pos: 6.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 85 type: solid_wall components: @@ -718,6 +1073,10 @@ entities: pos: 6.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 86 type: Table components: @@ -725,6 +1084,10 @@ entities: pos: -3.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 87 type: Table components: @@ -732,6 +1095,10 @@ entities: pos: -2.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 88 type: Table components: @@ -739,6 +1106,10 @@ entities: pos: -1.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 89 type: Table components: @@ -746,6 +1117,10 @@ entities: pos: -0.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 90 type: WirelessMachine components: @@ -753,6 +1128,11 @@ entities: pos: 5.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - uid: 91 type: CrateGeneric components: @@ -760,6 +1140,12 @@ entities: pos: 5.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.4,-0.4,0.4,0.4 + type: Collidable - containers: storagebase: entities: [] @@ -768,6 +1154,8 @@ entities: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface - uid: 92 type: Wire components: @@ -775,6 +1163,9 @@ entities: pos: -6.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 93 type: Wire components: @@ -782,6 +1173,9 @@ entities: pos: -7.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 94 type: Wire components: @@ -789,6 +1183,9 @@ entities: pos: -8.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 95 type: Wire components: @@ -796,6 +1193,9 @@ entities: pos: -8.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 96 type: Wire components: @@ -803,6 +1203,9 @@ entities: pos: -8.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 97 type: Wire components: @@ -810,6 +1213,9 @@ entities: pos: -8.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 98 type: Wire components: @@ -817,6 +1223,9 @@ entities: pos: -8.5,-2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 99 type: Wire components: @@ -824,6 +1233,9 @@ entities: pos: -8.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 100 type: Wire components: @@ -831,6 +1243,9 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 101 type: Wire components: @@ -838,6 +1253,9 @@ entities: pos: -6.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 102 type: Wire components: @@ -845,6 +1263,9 @@ entities: pos: -6.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 103 type: Wire components: @@ -852,6 +1273,9 @@ entities: pos: -6.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 104 type: Wire components: @@ -859,6 +1283,9 @@ entities: pos: 4.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 105 type: Wire components: @@ -866,6 +1293,9 @@ entities: pos: 4.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 106 type: Wire components: @@ -873,6 +1303,9 @@ entities: pos: 4.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 107 type: Wire components: @@ -880,6 +1313,9 @@ entities: pos: 4.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 108 type: Wire components: @@ -887,6 +1323,9 @@ entities: pos: 5.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 109 type: Wire components: @@ -894,6 +1333,9 @@ entities: pos: 6.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 110 type: Wire components: @@ -901,6 +1343,9 @@ entities: pos: 7.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 111 type: Catwalk components: @@ -908,6 +1353,9 @@ entities: pos: 2.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 112 type: Catwalk components: @@ -915,6 +1363,9 @@ entities: pos: -4.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 113 type: Wire components: @@ -922,6 +1373,9 @@ entities: pos: 3.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 114 type: Wire components: @@ -929,6 +1383,9 @@ entities: pos: 2.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 115 type: Wire components: @@ -936,6 +1393,9 @@ entities: pos: 1.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 116 type: Wire components: @@ -943,6 +1403,9 @@ entities: pos: 0.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 117 type: Wire components: @@ -950,6 +1413,9 @@ entities: pos: -0.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 118 type: Wire components: @@ -957,6 +1423,9 @@ entities: pos: -1.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 119 type: Wire components: @@ -964,6 +1433,9 @@ entities: pos: -2.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 120 type: Wire components: @@ -971,6 +1443,9 @@ entities: pos: -3.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 121 type: Wire components: @@ -978,6 +1453,9 @@ entities: pos: -4.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 122 type: Wire components: @@ -985,6 +1463,9 @@ entities: pos: -5.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 123 type: Wire components: @@ -992,6 +1473,9 @@ entities: pos: 1.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 124 type: Wire components: @@ -999,6 +1483,9 @@ entities: pos: 1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 125 type: Wire components: @@ -1006,6 +1493,9 @@ entities: pos: 2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 126 type: Wire components: @@ -1013,6 +1503,9 @@ entities: pos: -2.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 127 type: Wire components: @@ -1020,6 +1513,9 @@ entities: pos: -2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 128 type: Wire components: @@ -1027,6 +1523,9 @@ entities: pos: -3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 129 type: Wire components: @@ -1034,6 +1533,9 @@ entities: pos: -1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 130 type: Generator components: @@ -1041,6 +1543,11 @@ entities: pos: 2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable - uid: 131 type: Generator components: @@ -1048,6 +1555,11 @@ entities: pos: 1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable - uid: 132 type: SmesDry components: @@ -1055,6 +1567,10 @@ entities: pos: -1.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - charge: 3000 type: PowerStorage - uid: 133 @@ -1064,6 +1580,10 @@ entities: pos: -2.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - charge: 3000 type: PowerStorage - uid: 134 @@ -1073,6 +1593,10 @@ entities: pos: -3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - charge: 3000 type: PowerStorage - uid: 135 @@ -1082,6 +1606,11 @@ entities: pos: -1.249865,-10.43489 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 136 type: Catwalk components: @@ -1089,6 +1618,9 @@ entities: pos: -2.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 137 type: Catwalk components: @@ -1096,6 +1628,9 @@ entities: pos: 1.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 138 type: spawn_point_latejoin components: @@ -1117,6 +1652,10 @@ entities: pos: -3.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 141 type: Table components: @@ -1124,6 +1663,10 @@ entities: pos: -2.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 142 type: Table components: @@ -1131,6 +1674,10 @@ entities: pos: -1.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 143 type: Table components: @@ -1138,6 +1685,10 @@ entities: pos: -0.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 144 type: solid_wall components: @@ -1145,6 +1696,10 @@ entities: pos: -7.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 145 type: spawn_point_latejoin components: @@ -1159,6 +1714,11 @@ entities: pos: 0.5223687,7.507263 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 147 type: LockerGeneric components: @@ -1166,6 +1726,12 @@ entities: pos: 1.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: storagebase: entities: [] @@ -1177,6 +1743,8 @@ entities: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface - uid: 148 type: MedkitFilled components: @@ -1184,11 +1752,24 @@ entities: pos: -3.209215,-1.486604 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 953 + - 954 + - 955 + - 956 + - 957 + - 958 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 30 + type: Storage - uid: 149 type: MedkitFilled components: @@ -1196,11 +1777,24 @@ entities: pos: -4.146715,-1.408479 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 959 + - 960 + - 961 + - 962 + - 963 + - 964 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 30 + type: Storage - uid: 150 type: LockerGeneric components: @@ -1208,6 +1802,12 @@ entities: pos: 0.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: storagebase: entities: [] @@ -1219,6 +1819,8 @@ entities: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface - uid: 151 type: FireExtinguisher components: @@ -1226,6 +1828,11 @@ entities: pos: -1.297692,-5.396082 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 152 type: spawn_point_latejoin components: @@ -1247,6 +1854,11 @@ entities: pos: 0.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - products: - cargo.dice - cargo.flashlight @@ -1259,6 +1871,11 @@ entities: pos: 0.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - products: - cargo.dice - cargo.flashlight @@ -1271,6 +1888,10 @@ entities: pos: -4.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 157 type: Table components: @@ -1278,6 +1899,10 @@ entities: pos: -1.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 158 type: Table components: @@ -1285,6 +1910,10 @@ entities: pos: -2.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 159 type: Table components: @@ -1292,6 +1921,10 @@ entities: pos: -3.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 160 type: WirelessMachine components: @@ -1299,6 +1932,11 @@ entities: pos: -6.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - uid: 161 type: Catwalk components: @@ -1306,6 +1944,9 @@ entities: pos: 4.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 162 type: Catwalk components: @@ -1313,6 +1954,9 @@ entities: pos: -5.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 163 type: Wire components: @@ -1320,6 +1964,9 @@ entities: pos: -6.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 164 type: Wire components: @@ -1327,6 +1974,9 @@ entities: pos: -6.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 165 type: Wire components: @@ -1334,6 +1984,9 @@ entities: pos: 5.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 166 type: Wire components: @@ -1341,6 +1994,9 @@ entities: pos: 5.5,-12.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 167 type: Wire components: @@ -1348,6 +2004,9 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 168 type: WiredMachine components: @@ -1355,6 +2014,11 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - uid: 169 type: WiredMachine components: @@ -1362,11 +2026,21 @@ entities: pos: -6.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - uid: 170 type: LightBulb components: - parent: 29 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 171 type: WallLight components: @@ -1374,6 +2048,9 @@ entities: pos: -0.5,-14 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 172 type: spawn_point_latejoin components: @@ -1416,6 +2093,9 @@ entities: pos: 9.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 178 type: Catwalk components: @@ -1423,6 +2103,9 @@ entities: pos: 9.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 179 type: Catwalk components: @@ -1430,6 +2113,9 @@ entities: pos: 9.5,2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 180 type: Catwalk components: @@ -1437,6 +2123,9 @@ entities: pos: 9.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 181 type: Catwalk components: @@ -1444,6 +2133,9 @@ entities: pos: 9.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 182 type: VendingMachineYouTool components: @@ -1451,6 +2143,11 @@ entities: pos: -11.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - sprite: Buildings/VendingMachines/youtool.rsi type: Sprite - uid: 183 @@ -1460,6 +2157,11 @@ entities: pos: 0.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable - uid: 184 type: Wire components: @@ -1467,6 +2169,9 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 185 type: Wire components: @@ -1474,6 +2179,9 @@ entities: pos: 0.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 186 type: Generator components: @@ -1481,6 +2189,11 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable - uid: 187 type: Table components: @@ -1488,6 +2201,10 @@ entities: pos: -6.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 188 type: Table components: @@ -1495,6 +2212,10 @@ entities: pos: -5.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 189 type: Table components: @@ -1502,6 +2223,10 @@ entities: pos: -4.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 190 type: Table components: @@ -1509,6 +2234,10 @@ entities: pos: -3.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 191 type: Table components: @@ -1516,6 +2245,10 @@ entities: pos: -2.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 192 type: Table components: @@ -1523,6 +2256,10 @@ entities: pos: -1.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 193 type: Table components: @@ -1530,6 +2267,10 @@ entities: pos: -0.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 194 type: Table components: @@ -1537,6 +2278,10 @@ entities: pos: 0.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 195 type: Table components: @@ -1544,6 +2289,10 @@ entities: pos: 1.5,7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 196 type: Table components: @@ -1551,6 +2300,10 @@ entities: pos: -4.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 197 type: Table components: @@ -1558,6 +2311,10 @@ entities: pos: -3.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 198 type: Table components: @@ -1565,6 +2322,10 @@ entities: pos: -2.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 199 type: Table components: @@ -1572,6 +2333,10 @@ entities: pos: -1.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 200 type: Table components: @@ -1579,6 +2344,10 @@ entities: pos: -0.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable - uid: 201 type: airlock_medical_glass components: @@ -1586,6 +2355,12 @@ entities: pos: 26.5,-3.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 202 type: airlock_medical_glass components: @@ -1593,6 +2368,12 @@ entities: pos: 28.5,-0.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 203 type: Catwalk components: @@ -1600,6 +2381,9 @@ entities: pos: -9.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 204 type: Wire components: @@ -1607,6 +2391,9 @@ entities: pos: -8.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 205 type: Wire components: @@ -1614,6 +2401,9 @@ entities: pos: -8.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 206 type: Wire components: @@ -1621,6 +2411,9 @@ entities: pos: -9.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 207 type: Wire components: @@ -1628,6 +2421,9 @@ entities: pos: -9.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 208 type: solid_wall components: @@ -1635,6 +2431,10 @@ entities: pos: -10.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 209 type: solid_wall components: @@ -1642,6 +2442,10 @@ entities: pos: -10.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 210 type: Airlock components: @@ -1649,11 +2453,22 @@ entities: pos: -9.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable - uid: 211 type: LightTube components: - parent: 212 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 212 type: Poweredlight components: @@ -1661,16 +2476,19 @@ entities: pos: 0.5,1 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - 211 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - load: 40 + type: PowerDevice - uid: 213 type: ChairOfficeLight components: @@ -1678,6 +2496,9 @@ entities: pos: -3.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 214 type: ChairOfficeDark components: @@ -1685,6 +2506,9 @@ entities: pos: 0.5,-6.5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 215 type: Poweredlight components: @@ -1692,16 +2516,19 @@ entities: pos: -6.5,1 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 316 + - 315 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - load: 40 + type: PowerDevice - uid: 216 type: MetalStack components: @@ -1709,6 +2536,11 @@ entities: pos: -15.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 217 type: Stool components: @@ -1716,6 +2548,9 @@ entities: pos: -1.5,-9.5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 218 type: ChairOfficeLight components: @@ -1723,6 +2558,9 @@ entities: pos: -3.5,-2.5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 219 type: ChairOfficeLight components: @@ -1730,6 +2568,9 @@ entities: pos: -2.5,-2.5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 220 type: ChairOfficeLight components: @@ -1737,6 +2578,9 @@ entities: pos: -2.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 221 type: Stool components: @@ -1744,11 +2588,19 @@ entities: pos: -2.5,-6.5 rot: 1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 222 type: LightBulb components: - parent: 251 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 223 type: APC components: @@ -1756,6 +2608,10 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable - uid: 224 type: Wire components: @@ -1763,6 +2619,9 @@ entities: pos: -9.5,2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 225 type: Wire components: @@ -1770,6 +2629,9 @@ entities: pos: -9.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 226 type: Wire components: @@ -1777,6 +2639,9 @@ entities: pos: -8.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 227 type: Wire components: @@ -1784,6 +2649,9 @@ entities: pos: -7.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 228 type: Wire components: @@ -1791,6 +2659,9 @@ entities: pos: -6.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 229 type: Wire components: @@ -1798,6 +2669,9 @@ entities: pos: -5.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 230 type: Wire components: @@ -1805,6 +2679,9 @@ entities: pos: -4.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 231 type: Wire components: @@ -1812,6 +2689,9 @@ entities: pos: -3.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 232 type: Wire components: @@ -1819,6 +2699,9 @@ entities: pos: -2.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 233 type: Wire components: @@ -1826,6 +2709,9 @@ entities: pos: -1.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 234 type: Wire components: @@ -1833,6 +2719,9 @@ entities: pos: -0.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 235 type: Wire components: @@ -1840,6 +2729,9 @@ entities: pos: 0.5,3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 236 type: LargeBeaker components: @@ -1847,6 +2739,11 @@ entities: pos: 23.510572,7.7141185 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 237 type: Catwalk components: @@ -1854,6 +2751,9 @@ entities: pos: 9.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 238 type: Catwalk components: @@ -1861,6 +2761,9 @@ entities: pos: 9.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 239 type: Catwalk components: @@ -1868,6 +2771,9 @@ entities: pos: 9.5,-2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 240 type: Catwalk components: @@ -1875,6 +2781,9 @@ entities: pos: 9.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 241 type: Catwalk components: @@ -1882,6 +2791,9 @@ entities: pos: 9.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 242 type: Catwalk components: @@ -1889,6 +2801,9 @@ entities: pos: 9.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 243 type: Catwalk components: @@ -1896,6 +2811,9 @@ entities: pos: 9.5,-6.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 244 type: Catwalk components: @@ -1903,6 +2821,9 @@ entities: pos: 9.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 245 type: Catwalk components: @@ -1910,6 +2831,9 @@ entities: pos: 9.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 246 type: Catwalk components: @@ -1917,6 +2841,9 @@ entities: pos: 9.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 247 type: Catwalk components: @@ -1924,6 +2851,9 @@ entities: pos: 9.5,-10.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 248 type: Catwalk components: @@ -1931,6 +2861,9 @@ entities: pos: 9.5,-11.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 249 type: Catwalk components: @@ -1938,6 +2871,9 @@ entities: pos: 8.5,-8.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - uid: 250 type: APC components: @@ -1945,22 +2881,29 @@ entities: pos: 4.5,-9.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable - uid: 251 type: PoweredSmallLight components: - parent: 0 pos: 5,-9.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - 222 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - load: 40 + type: PowerDevice - uid: 252 type: solid_wall components: @@ -1968,6 +2911,10 @@ entities: pos: 7.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 253 type: YellowToolboxItemFilled components: @@ -1975,11 +2922,24 @@ entities: pos: -0.8099712,-5.21454 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 965 + - 966 + - 967 + - 968 + - 969 + - 970 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 30 + type: Storage - uid: 254 type: YellowToolboxItemFilled components: @@ -1987,11 +2947,24 @@ entities: pos: -0.5597038,-5.679647 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 971 + - 972 + - 973 + - 974 + - 975 + - 976 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 30 + type: Storage - uid: 255 type: FlashlightLantern components: @@ -1999,9 +2972,15 @@ entities: pos: -1.934832,-5.154238 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: flashlight_cell_container: - entities: [] + entities: + - 977 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 256 @@ -2011,9 +2990,15 @@ entities: pos: -2.017696,-5.71715 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: flashlight_cell_container: - entities: [] + entities: + - 978 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 257 @@ -2023,6 +3008,11 @@ entities: pos: -2.861032,-5.524786 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 258 type: UniformEngineering components: @@ -2030,6 +3020,11 @@ entities: pos: -0.6474335,-10.27245 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 259 type: GasMaskClothing components: @@ -2037,6 +3032,11 @@ entities: pos: -0.2880585,-10.69432 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 260 type: OuterclothingVest components: @@ -2044,6 +3044,11 @@ entities: pos: -0.9130585,-10.66307 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 261 type: UtilityBeltClothingFilled components: @@ -2051,11 +3056,25 @@ entities: pos: -1.895102,-10.33495 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 979 + - 980 + - 981 + - 982 + - 983 + - 984 + - 985 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 35 + type: Storage - uid: 262 type: UtilityBeltClothingFilled components: @@ -2063,11 +3082,25 @@ entities: pos: -1.770102,-10.63182 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 986 + - 987 + - 988 + - 989 + - 990 + - 991 + - 992 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - used: 35 + type: Storage - uid: 263 type: magazine_10mm_smg components: @@ -2075,6 +3108,11 @@ entities: pos: -6.605512,7.638151 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: magazine_bullet_container: entities: [] @@ -2087,6 +3125,11 @@ entities: pos: -6.339887,7.669401 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: magazine_bullet_container: entities: [] @@ -2099,6 +3142,11 @@ entities: pos: -6.027387,7.622526 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: magazine_bullet_container: entities: [] @@ -2111,6 +3159,11 @@ entities: pos: -5.089887,7.591276 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: entities: [] @@ -2123,6 +3176,11 @@ entities: pos: -4.683637,7.606901 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: entities: [] @@ -2135,6 +3193,11 @@ entities: pos: -3.386762,7.466276 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 269 type: SmgC20r components: @@ -2142,12 +3205,19 @@ entities: pos: -2.524035,7.579326 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: ballistics_chamber_0: - entities: [] + entities: + - 994 type: Content.Server.GameObjects.ContainerSlot ballistic_gun_magazine: - entities: [] + entities: + - 993 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - magazines: @@ -2160,12 +3230,19 @@ entities: pos: -1.94591,7.485576 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: ballistics_chamber_0: - entities: [] + entities: + - 996 type: Content.Server.GameObjects.ContainerSlot ballistic_gun_magazine: - entities: [] + entities: + - 995 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - magazines: @@ -2178,6 +3255,10 @@ entities: pos: -10.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 272 type: solid_wall components: @@ -2185,6 +3266,10 @@ entities: pos: -11.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 273 type: solid_wall components: @@ -2192,6 +3277,10 @@ entities: pos: -10.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 274 type: solid_wall components: @@ -2199,6 +3288,10 @@ entities: pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 275 type: solid_wall components: @@ -2206,6 +3299,10 @@ entities: pos: -8.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 276 type: solid_wall components: @@ -2213,6 +3310,10 @@ entities: pos: -7.5,4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 277 type: solid_wall components: @@ -2220,6 +3321,10 @@ entities: pos: -8.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 278 type: solid_wall components: @@ -2227,6 +3332,10 @@ entities: pos: -5.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 279 type: solid_wall components: @@ -2234,6 +3343,10 @@ entities: pos: -6.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 280 type: solid_wall components: @@ -2241,6 +3354,10 @@ entities: pos: -7.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 281 type: solid_wall components: @@ -2248,6 +3365,10 @@ entities: pos: -0.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 282 type: solid_wall components: @@ -2255,6 +3376,10 @@ entities: pos: 0.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 283 type: solid_wall components: @@ -2262,6 +3387,10 @@ entities: pos: 1.5,1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 284 type: solid_wall components: @@ -2269,6 +3398,10 @@ entities: pos: 1.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 285 type: solid_wall components: @@ -2276,6 +3409,10 @@ entities: pos: 1.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 286 type: solid_wall components: @@ -2283,6 +3420,10 @@ entities: pos: 4.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 287 type: solid_wall components: @@ -2290,642 +3431,1051 @@ entities: pos: 4.5,-2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable - uid: 288 - type: solid_wall - components: - - parent: 0 - pos: 4.5,-1.5 - rot: -1.5707963267949 rad - type: Transform -- uid: 289 - type: solid_wall + type: Wire components: - parent: 0 pos: 4.5,-0.5 - rot: -1.5707963267949 rad type: Transform -- uid: 290 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 289 type: solid_wall components: - parent: 0 pos: 4.5,0.5 rot: -1.5707963267949 rad type: Transform -- uid: 291 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 290 type: solid_wall components: - parent: 0 pos: 4.5,1.5 rot: -1.5707963267949 rad type: Transform -- uid: 292 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 291 type: solid_wall components: - parent: 0 pos: 4.5,2.5 rot: -1.5707963267949 rad type: Transform -- uid: 293 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 292 type: solid_wall components: - parent: 0 pos: 4.5,3.5 rot: -1.5707963267949 rad type: Transform -- uid: 294 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 293 type: solid_wall components: - parent: 0 pos: 4.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 295 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 294 type: solid_wall components: - parent: 0 pos: 4.5,5.5 rot: -1.5707963267949 rad type: Transform -- uid: 296 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 295 type: solid_wall components: - parent: 0 pos: 4.5,6.5 rot: -1.5707963267949 rad type: Transform -- uid: 297 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 296 type: solid_wall components: - parent: 0 pos: 4.5,7.5 rot: -1.5707963267949 rad type: Transform -- uid: 298 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 297 type: solid_wall components: - parent: 0 pos: 4.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 299 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 298 type: solid_wall components: - parent: 0 pos: 1.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 300 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 299 type: solid_wall components: - parent: 0 pos: 0.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 301 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 300 type: solid_wall components: - parent: 0 pos: -0.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 302 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 301 type: solid_wall components: - parent: 0 pos: -1.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 303 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 302 type: solid_wall components: - parent: 0 pos: -2.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 304 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 303 type: solid_wall components: - parent: 0 pos: -3.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 305 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 304 type: solid_wall components: - parent: 0 pos: -4.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 306 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 305 type: solid_wall components: - parent: 0 pos: -5.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 307 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 306 type: solid_wall components: - parent: 0 pos: -6.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 308 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 307 type: solid_wall components: - parent: 0 pos: -7.5,8.5 rot: -1.5707963267949 rad type: Transform -- uid: 309 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 308 type: solid_wall components: - parent: 0 pos: -7.5,7.5 rot: -1.5707963267949 rad type: Transform -- uid: 310 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 309 type: solid_wall components: - parent: 0 pos: -7.5,6.5 rot: -1.5707963267949 rad type: Transform -- uid: 311 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 310 type: solid_wall components: - parent: 0 pos: -7.5,5.5 rot: -1.5707963267949 rad type: Transform -- uid: 312 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 311 type: GlovesLeather components: - parent: 0 pos: -4.332221,4.64238 rot: -1.5707963267949 rad type: Transform -- uid: 313 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 312 type: GlovesLeather components: - parent: 0 pos: -3.519721,4.64238 rot: -1.5707963267949 rad type: Transform -- uid: 314 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 313 type: GlovesLeather components: - parent: 0 pos: -2.597846,4.61113 rot: -1.5707963267949 rad type: Transform -- uid: 315 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 314 type: LedLightTube components: - parent: 0 pos: -3.511025,-10.35149 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - color: '#EEEEFFFF' type: Sprite -- uid: 316 +- uid: 315 type: LightTube components: - parent: 215 type: Transform -- uid: 317 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 316 type: Poweredlight components: - parent: 0 pos: -1.5,8 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 318 + - 317 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 318 + - load: 40 + type: PowerDevice +- uid: 317 type: LightTube components: - - parent: 317 + - parent: 316 type: Transform -- uid: 319 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 318 type: Poweredlight components: - parent: 0 pos: 4,3.5 rot: 3.14159265358979 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 320 + - 319 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 320 + - load: 40 + type: PowerDevice +- uid: 319 type: LightTube components: - - parent: 319 + - parent: 318 type: Transform -- uid: 321 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 320 type: WallLight components: - parent: 0 pos: -7,-10.5 type: Transform -- uid: 322 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 321 type: PoweredSmallLight components: - parent: 0 pos: -10,-5.5 rot: 3.14159265358979 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 323 + - 322 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 323 + - load: 40 + type: PowerDevice +- uid: 322 type: LightBulb components: - - parent: 322 + - parent: 321 type: Transform -- uid: 324 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 323 type: solid_wall components: - parent: 0 pos: -15.5,2.5 rot: -1.5707963267949 rad type: Transform -- uid: 325 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 324 type: solid_wall components: - parent: 0 pos: -15.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 326 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 325 type: solid_wall components: - parent: 0 pos: -15.5,3.5 rot: -1.5707963267949 rad type: Transform -- uid: 327 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 326 type: solid_wall components: - parent: 0 pos: -14.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 328 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 327 type: solid_wall components: - parent: 0 pos: -12.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 329 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 328 type: solid_wall components: - parent: 0 pos: -15.5,1.5 rot: -1.5707963267949 rad type: Transform -- uid: 330 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 329 type: solid_wall components: - parent: 0 pos: -14.5,1.5 rot: -1.5707963267949 rad type: Transform -- uid: 331 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 330 type: solid_wall components: - parent: 0 pos: -11.5,1.5 rot: -1.5707963267949 rad type: Transform -- uid: 332 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 331 type: solid_wall components: - parent: 0 pos: -14.5,5.5 rot: -1.5707963267949 rad type: Transform -- uid: 333 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 332 type: solid_wall components: - parent: 0 pos: -14.5,6.5 rot: -1.5707963267949 rad type: Transform -- uid: 334 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 333 type: solid_wall components: - parent: 0 pos: -12.5,6.5 rot: -1.5707963267949 rad type: Transform -- uid: 335 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 334 type: solid_wall components: - parent: 0 pos: -12.5,5.5 rot: -1.5707963267949 rad type: Transform -- uid: 336 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 335 type: solid_wall components: - parent: 0 pos: -16.5,1.5 rot: -1.5707963267949 rad type: Transform -- uid: 337 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 336 type: solid_wall components: - parent: 0 pos: -16.5,0.5 rot: -1.5707963267949 rad type: Transform -- uid: 338 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 337 type: solid_wall components: - parent: 0 pos: -16.5,-0.5 rot: -1.5707963267949 rad type: Transform -- uid: 339 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 338 type: solid_wall components: - parent: 0 pos: -16.5,-1.5 rot: -1.5707963267949 rad type: Transform -- uid: 340 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 339 type: solid_wall components: - parent: 0 pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform -- uid: 341 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 340 type: solid_wall components: - parent: 0 pos: -16.5,-3.5 rot: -1.5707963267949 rad type: Transform -- uid: 342 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 341 type: solid_wall components: - parent: 0 pos: -16.5,-4.5 rot: -1.5707963267949 rad type: Transform -- uid: 343 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 342 type: solid_wall components: - parent: 0 pos: -16.5,-5.5 rot: -1.5707963267949 rad type: Transform -- uid: 344 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 343 type: solid_wall components: - parent: 0 pos: -16.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 345 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 344 type: solid_wall components: - parent: 0 pos: -16.5,-7.5 rot: -1.5707963267949 rad type: Transform -- uid: 346 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 345 type: solid_wall components: - parent: 0 pos: -16.5,-8.5 rot: -1.5707963267949 rad type: Transform -- uid: 347 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 346 type: solid_wall components: - parent: 0 pos: -15.5,-8.5 rot: -1.5707963267949 rad type: Transform -- uid: 348 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 347 type: solid_wall components: - parent: 0 pos: -14.5,-8.5 rot: -1.5707963267949 rad type: Transform -- uid: 349 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 348 type: solid_wall components: - parent: 0 pos: -13.5,-8.5 rot: -1.5707963267949 rad type: Transform -- uid: 350 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 349 type: solid_wall components: - parent: 0 pos: -12.5,-8.5 rot: -1.5707963267949 rad type: Transform -- uid: 351 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 350 type: solid_wall components: - parent: 0 pos: -11.5,-8.5 rot: -1.5707963267949 rad type: Transform -- uid: 352 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 351 type: airlock_external components: - parent: 0 pos: -13.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 353 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 352 type: airlock_external components: - parent: 0 pos: -13.5,6.5 rot: -1.5707963267949 rad type: Transform -- uid: 354 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 353 type: airlock_engineering components: - parent: 0 pos: -13.5,1.5 rot: -1.5707963267949 rad type: Transform -- uid: 355 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 354 type: Table components: - parent: 0 pos: -15.5,-5.5 rot: -1.5707963267949 rad type: Transform -- uid: 356 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 355 type: Table components: - parent: 0 pos: -15.5,-1.5 rot: -1.5707963267949 rad type: Transform -- uid: 357 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 356 type: Wire components: - parent: 0 pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 358 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 357 type: Wire components: - parent: 0 pos: -13.5,-7.5 rot: -1.5707963267949 rad type: Transform -- uid: 359 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 358 type: Wire components: - parent: 0 pos: -9.5,3.5 rot: -1.5707963267949 rad type: Transform -- uid: 360 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 359 type: Table components: - parent: 0 pos: -15.5,-0.5 rot: -1.5707963267949 rad type: Transform -- uid: 361 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 360 type: Catwalk components: - parent: 0 pos: -14.5,7.5 rot: -1.5707963267949 rad type: Transform -- uid: 362 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 361 type: Catwalk components: - parent: 0 pos: -13.5,7.5 rot: -1.5707963267949 rad type: Transform -- uid: 363 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 362 type: Catwalk components: - parent: 0 pos: -12.5,7.5 rot: -1.5707963267949 rad type: Transform -- uid: 364 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 363 type: LockerToolFilled components: - parent: 0 pos: -11.5,-5.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: - entities: [] + entities: + - 997 + - 999 + - 1000 + - 1001 + - 1002 + - 1003 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 365 + - IsPlaceable: False + type: PlaceableSurface +- uid: 364 type: LockerToolFilled components: - parent: 0 pos: -11.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: - entities: [] + entities: + - 1004 + - 1006 + - 1007 + - 1008 + - 1009 + - 1010 + - 1011 + - 1012 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 366 + - IsPlaceable: False + type: PlaceableSurface +- uid: 365 type: LockerToolFilled components: - parent: 0 pos: -11.5,-3.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: - entities: [] + entities: + - 1013 + - 1014 + - 1015 + - 1016 + - 1017 + - 1018 + - 1019 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 367 + - IsPlaceable: False + type: PlaceableSurface +- uid: 366 type: LockerToolFilled components: - parent: 0 pos: -11.5,-2.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: - entities: [] + entities: + - 1020 + - 1021 + - 1022 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 368 + - IsPlaceable: False + type: PlaceableSurface +- uid: 367 type: LockerToolFilled components: - parent: 0 pos: -11.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: - entities: [] + entities: + - 1023 + - 1025 + - 1026 + - 1027 + - 1028 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 369 + - IsPlaceable: False + type: PlaceableSurface +- uid: 368 type: GlassStack components: - parent: 0 pos: -15.5,-3.5 rot: -1.5707963267949 rad type: Transform -- uid: 370 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 369 type: airlock_engineering components: - parent: 0 pos: -10.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 371 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 370 type: Autolathe components: - parent: 0 pos: -14.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable + - recipes: + - Brutepack + - Ointment + - LightTube + - LightBulb + - MetalStack + - GlassStack + - Wirecutter + - Screwdriver + - Welder + - Wrench + - CableStack + - Crowbar + - Multitool + type: LatheDatabase +- uid: 371 + type: Autolathe + components: + - parent: 0 + pos: -13.5,-7.5 + rot: -1.5707963267949 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable - recipes: - Brutepack - Ointment @@ -2945,9 +4495,13 @@ entities: type: Autolathe components: - parent: 0 - pos: -13.5,-7.5 + pos: -12.5,-7.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable - recipes: - Brutepack - Ointment @@ -2964,156 +4518,194 @@ entities: - Multitool type: LatheDatabase - uid: 373 - type: Autolathe - components: - - parent: 0 - pos: -12.5,-7.5 - rot: -1.5707963267949 rad - type: Transform - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 374 type: Poweredlight components: - parent: 0 pos: -11,-5.5 rot: 3.14159265358979 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 375 + - 374 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 375 + - load: 40 + type: PowerDevice +- uid: 374 type: LightTube components: - - parent: 374 + - parent: 373 type: Transform -- uid: 376 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 375 type: Poweredlight components: - parent: 0 pos: -11,-0.5 rot: 3.14159265358979 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 377 + - 376 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 377 + - load: 40 + type: PowerDevice +- uid: 376 type: LightTube components: - - parent: 376 + - parent: 375 type: Transform -- uid: 378 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 377 type: Poweredlight components: - parent: 0 pos: -16,-0.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 379 + - 378 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 379 + - load: 40 + type: PowerDevice +- uid: 378 type: LightTube components: - - parent: 378 + - parent: 377 type: Transform -- uid: 380 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 379 type: Poweredlight components: - parent: 0 pos: -16,-5.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 381 + - 380 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 381 + - load: 40 + type: PowerDevice +- uid: 380 type: LightTube components: - - parent: 380 + - parent: 379 type: Transform -- uid: 382 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 381 type: Poweredlight components: - parent: 0 pos: -15,3.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 383 + - 382 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 383 + - load: 40 + type: PowerDevice +- uid: 382 type: LightTube components: - - parent: 382 + - parent: 381 type: Transform -- uid: 384 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 383 type: PoweredSmallLight components: - parent: 0 pos: -14.5,7 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 385 + - 384 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 385 + - load: 40 + type: PowerDevice +- uid: 384 type: LightBulb components: - - parent: 384 + - parent: 383 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 385 + type: CableStack + components: + - parent: 0 + pos: -15.5,-0.5 + rot: -1.5707963267949 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 386 type: CableStack components: @@ -3121,63 +4713,93 @@ entities: pos: -15.5,-0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 387 - type: CableStack - components: - - parent: 0 - pos: -15.5,-0.5 - rot: -1.5707963267949 rad - type: Transform -- uid: 388 type: Wire components: - parent: 0 pos: -14.5,-7.5 rot: -1.5707963267949 rad type: Transform -- uid: 389 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 388 type: Wire components: - parent: 0 pos: -12.5,-7.5 rot: -1.5707963267949 rad type: Transform -- uid: 390 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 389 type: Catwalk components: - parent: 0 pos: -11.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 391 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 390 type: Catwalk components: - parent: 0 pos: -9.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 392 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 391 type: Poweredlight components: - parent: 0 pos: -10.5,4 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 393 + - 392 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 393 + - load: 40 + type: PowerDevice +- uid: 392 type: LightTube components: - - parent: 392 + - parent: 391 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 393 + type: MetalStack + components: + - parent: 0 + pos: -15.5,-4.5 + rot: -1.5707963267949 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 394 type: MetalStack components: @@ -3185,132 +4807,198 @@ entities: pos: -15.5,-4.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 395 - type: MetalStack - components: - - parent: 0 - pos: -15.5,-4.5 - rot: -1.5707963267949 rad - type: Transform -- uid: 396 type: APC components: - parent: 0 pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform -- uid: 397 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 396 type: APC components: - parent: 0 pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform -- uid: 398 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 397 type: Wire components: - parent: 0 pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform -- uid: 399 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 398 type: Wire components: - parent: 0 pos: -15.5,-2.5 rot: -1.5707963267949 rad type: Transform -- uid: 400 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 399 type: Wire components: - parent: 0 pos: -14.5,-2.5 rot: -1.5707963267949 rad type: Transform -- uid: 401 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 400 type: Wire components: - parent: 0 pos: -13.5,-2.5 rot: -1.5707963267949 rad type: Transform -- uid: 402 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 401 type: Wire components: - parent: 0 pos: -13.5,-3.5 rot: -1.5707963267949 rad type: Transform -- uid: 403 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 402 type: Wire components: - parent: 0 pos: -13.5,-4.5 rot: -1.5707963267949 rad type: Transform -- uid: 404 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 403 type: Wire components: - parent: 0 pos: -13.5,-5.5 rot: -1.5707963267949 rad type: Transform -- uid: 405 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 404 type: Wire components: - parent: 0 pos: -13.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 406 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 405 type: Wire components: - parent: 0 pos: -12.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 407 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 406 type: Wire components: - parent: 0 pos: -11.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 408 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 407 type: Wire components: - parent: 0 pos: -10.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 409 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 408 type: Wire components: - parent: 0 pos: -9.5,-6.5 rot: -1.5707963267949 rad type: Transform -- uid: 410 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 409 type: Table components: - parent: 0 pos: -15.5,-4.5 rot: -1.5707963267949 rad type: Transform -- uid: 411 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 410 type: Table components: - parent: 0 pos: -15.5,-3.5 rot: -1.5707963267949 rad type: Transform -- uid: 412 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 411 type: Table components: - parent: 0 pos: -15.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 412 + type: CableStack + components: + - parent: 0 + pos: -15.5,0.5 + rot: -1.5707963267949 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 413 type: CableStack components: @@ -3318,13 +5006,23 @@ entities: pos: -15.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 414 - type: CableStack + type: GlassStack components: - parent: 0 - pos: -15.5,0.5 + pos: -15.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 415 type: GlassStack components: @@ -3332,3611 +5030,5506 @@ entities: pos: -15.5,-1.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 416 - type: GlassStack - components: - - parent: 0 - pos: -15.5,-1.5 - rot: -1.5707963267949 rad - type: Transform -- uid: 417 type: GlassStack components: - parent: 0 pos: -15.5,-3.5 rot: -1.5707963267949 rad type: Transform -- uid: 418 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 417 type: VendingMachineEngivend components: - parent: 0 pos: -11.5,0.5 rot: -1.5707963267949 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - sprite: Buildings/VendingMachines/engivend.rsi type: Sprite -- uid: 419 +- uid: 418 type: Table components: - parent: 0 pos: 18.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 420 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 419 type: Table components: - parent: 0 pos: 21.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 421 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 420 type: Table components: - parent: 0 pos: 20.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 422 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 421 type: Table components: - parent: 0 pos: 18.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 423 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 422 type: Table components: - parent: 0 pos: 19.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 424 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 423 type: Table components: - parent: 0 pos: 18.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 425 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 424 type: Table components: - parent: 0 pos: 22.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 426 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 425 type: Table components: - parent: 0 pos: 24.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 427 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 426 type: ChairOfficeLight components: - parent: 0 pos: 19.5,4.5 rot: 3.141592653589793 rad type: Transform -- uid: 428 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 427 type: ChairOfficeLight components: - parent: 0 pos: 20.5,5.5 rot: 1.5707963267948966 rad type: Transform -- uid: 429 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 428 type: ChairOfficeLight components: - parent: 0 pos: 23.5,8.5 rot: 3.141592653589793 rad type: Transform -- uid: 430 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 429 type: ChairOfficeLight components: - parent: 0 pos: 24.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 431 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 430 type: Chair components: - parent: 0 pos: 14.5,6.5 type: Transform -- uid: 432 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 431 type: Chair components: - parent: 0 pos: 14.5,8.5 type: Transform -- uid: 433 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 432 type: Chair components: - parent: 0 pos: 14.5,7.5 type: Transform -- uid: 434 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 433 type: chem_dispenser components: - parent: 0 pos: 23.5,9.5 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.4,-0.25,0.4,0.25 + type: Collidable - containers: ReagentDispenser-reagentContainerContainer: entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 435 +- uid: 434 type: Table components: - parent: 0 pos: 23.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 436 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 435 type: Catwalk components: - parent: 0 pos: 0.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 437 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 436 type: Table components: - parent: 0 pos: 25.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 438 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 437 type: Table components: - parent: 0 pos: 23.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 439 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 438 type: Table components: - parent: 0 pos: 24.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 440 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 439 type: Table components: - parent: 0 pos: 26.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 441 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 440 type: Table components: - parent: 0 pos: 27.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 442 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 441 type: ComputerMedicalRecords components: - parent: 0 pos: 21.5,5.5 rot: 3.141592653589793 rad type: Transform -- uid: 443 + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable +- uid: 442 type: MedicalScanner components: - parent: 0 pos: 18.5,-1.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,0,0.5,1 + type: Collidable - containers: MedicalScanner-bodyContainer: entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 444 +- uid: 443 type: MedicalScanner components: - parent: 0 pos: 18.5,-5.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,0,0.5,1 + type: Collidable - containers: MedicalScanner-bodyContainer: entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 445 +- uid: 444 type: Table components: - parent: 0 pos: 13.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 446 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 445 type: Table components: - parent: 0 pos: 13.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 447 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 446 type: Table components: - parent: 0 pos: 13.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 448 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 447 type: solid_wall components: - parent: 0 pos: 22.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 449 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 448 type: solid_wall components: - parent: 0 pos: 17.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 450 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 449 type: solid_wall components: - parent: 0 pos: 18.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 451 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 450 type: solid_wall components: - parent: 0 pos: 20.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 452 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 451 type: solid_wall components: - parent: 0 pos: 21.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 453 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 452 type: solid_wall components: - parent: 0 pos: 19.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 454 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 453 type: solid_wall components: - parent: 0 pos: 14.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 455 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 454 type: solid_wall components: - parent: 0 pos: 13.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 456 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 455 type: solid_wall components: - parent: 0 pos: 12.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 457 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 456 type: solid_wall components: - parent: 0 pos: 12.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 458 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 457 type: solid_wall components: - parent: 0 pos: 12.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 459 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 458 type: solid_wall components: - parent: 0 pos: 12.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 460 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 459 type: solid_wall components: - parent: 0 pos: 12.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 461 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 460 type: solid_wall components: - parent: 0 pos: 13.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 462 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 461 type: solid_wall components: - parent: 0 pos: 14.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 463 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 462 type: solid_wall components: - parent: 0 pos: 13.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 464 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 463 type: solid_wall components: - parent: 0 pos: 13.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 465 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 464 type: solid_wall components: - parent: 0 pos: 13.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 466 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 465 type: solid_wall components: - parent: 0 pos: 13.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 467 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 466 type: solid_wall components: - parent: 0 pos: 13.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 468 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 467 type: solid_wall components: - parent: 0 pos: 13.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 469 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 468 type: solid_wall components: - parent: 0 pos: 14.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 470 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 469 type: solid_wall components: - parent: 0 pos: 15.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 471 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 470 type: solid_wall components: - parent: 0 pos: 16.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 472 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 471 type: solid_wall components: - parent: 0 pos: 17.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 473 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 472 type: solid_wall components: - parent: 0 pos: 18.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 474 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 473 type: solid_wall components: - parent: 0 pos: 19.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 475 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 474 type: solid_wall components: - parent: 0 pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 476 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 475 type: solid_wall components: - parent: 0 pos: 21.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 477 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 476 type: solid_wall components: - parent: 0 pos: 22.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 478 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 477 type: solid_wall components: - parent: 0 pos: 23.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 479 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 478 type: solid_wall components: - parent: 0 pos: 24.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 480 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 479 type: solid_wall components: - parent: 0 pos: 25.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 481 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 480 type: solid_wall components: - parent: 0 pos: 26.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 482 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 481 type: solid_wall components: - parent: 0 pos: 26.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 483 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 482 type: solid_wall components: - parent: 0 pos: 26.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 484 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 483 type: solid_wall components: - parent: 0 pos: 27.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 485 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 484 type: solid_wall components: - parent: 0 pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 486 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 485 type: solid_wall components: - parent: 0 pos: 29.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 487 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 486 type: solid_wall components: - parent: 0 pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 488 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 487 type: solid_wall components: - parent: 0 pos: 31.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 489 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 488 type: solid_wall components: - parent: 0 pos: 32.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 490 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 489 type: solid_wall components: - parent: 0 pos: 33.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 491 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 490 type: solid_wall components: - parent: 0 pos: 34.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 492 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 491 type: solid_wall components: - parent: 0 pos: 34.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 493 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 492 type: solid_wall components: - parent: 0 pos: 34.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 494 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 493 type: solid_wall components: - parent: 0 pos: 34.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 495 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 494 type: solid_wall components: - parent: 0 pos: 34.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 496 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 495 type: solid_wall components: - parent: 0 pos: 34.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 497 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 496 type: solid_wall components: - parent: 0 pos: 34.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 498 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 497 type: solid_wall components: - parent: 0 pos: 33.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 499 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 498 type: solid_wall components: - parent: 0 pos: 32.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 500 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 499 type: solid_wall components: - parent: 0 pos: 31.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 501 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 500 type: solid_wall components: - parent: 0 pos: 30.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 502 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 501 type: solid_wall components: - parent: 0 pos: 29.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 503 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 502 type: solid_wall components: - parent: 0 pos: 30.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 504 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 503 type: solid_wall components: - parent: 0 pos: 30.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 505 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 504 type: solid_wall components: - parent: 0 pos: 30.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 506 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 505 type: solid_wall components: - parent: 0 pos: 30.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 507 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 506 type: solid_wall components: - parent: 0 pos: 30.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 508 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 507 type: solid_wall components: - parent: 0 pos: 29.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 509 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 508 type: solid_wall components: - parent: 0 pos: 28.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 510 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 509 type: solid_wall components: - parent: 0 pos: 27.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 511 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 510 type: solid_wall components: - parent: 0 pos: 27.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 512 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 511 type: solid_wall components: - parent: 0 pos: 26.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 513 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 512 type: solid_wall components: - parent: 0 pos: 25.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 514 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 513 type: solid_wall components: - parent: 0 pos: 26.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 515 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 514 type: solid_wall components: - parent: 0 pos: 26.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 516 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 515 type: solid_wall components: - parent: 0 pos: 28.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 517 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 516 type: solid_wall components: - parent: 0 pos: 28.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 518 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 517 type: solid_wall components: - parent: 0 pos: 28.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 519 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 518 type: solid_wall components: - parent: 0 pos: 28.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 520 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 519 type: solid_wall components: - parent: 0 pos: 28.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 521 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 520 type: solid_wall components: - parent: 0 pos: 28.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 522 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 521 type: solid_wall components: - parent: 0 pos: 28.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 523 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 522 type: solid_wall components: - parent: 0 pos: 27.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 524 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 523 type: solid_wall components: - parent: 0 pos: 26.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 525 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 524 type: solid_wall components: - parent: 0 pos: 25.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 526 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 525 type: solid_wall components: - parent: 0 pos: 24.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 527 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 526 type: solid_wall components: - parent: 0 pos: 23.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 528 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 527 type: solid_wall components: - parent: 0 pos: 22.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 529 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 528 type: solid_wall components: - parent: 0 pos: 21.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 530 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 529 type: solid_wall components: - parent: 0 pos: 22.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 531 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 530 type: solid_wall components: - parent: 0 pos: 22.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 532 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 531 type: solid_wall components: - parent: 0 pos: 22.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 533 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 532 type: solid_wall components: - parent: 0 pos: 22.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 534 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 533 type: solid_wall components: - parent: 0 pos: 22.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 535 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 534 type: solid_wall components: - parent: 0 pos: 22.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 536 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 535 type: solid_wall components: - parent: 0 pos: 22.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 537 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 536 type: solid_wall components: - parent: 0 pos: 21.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 538 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 537 type: solid_wall components: - parent: 0 pos: 19.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 539 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 538 type: solid_wall components: - parent: 0 pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 540 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 539 type: solid_wall components: - parent: 0 pos: 17.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 541 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 540 type: solid_wall components: - parent: 0 pos: 23.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 542 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 541 type: solid_wall components: - parent: 0 pos: 25.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 543 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 542 type: solid_wall components: - parent: 0 pos: 13.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 544 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 543 type: solid_wall components: - parent: 0 pos: 13.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 545 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 544 type: solid_wall components: - parent: 0 pos: 13.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 546 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 545 type: solid_wall components: - parent: 0 pos: 13.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 547 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 546 type: solid_wall components: - parent: 0 pos: 13.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 548 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 547 type: solid_wall components: - parent: 0 pos: 13.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 549 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 548 type: solid_wall components: - parent: 0 pos: 14.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 550 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 549 type: solid_wall components: - parent: 0 pos: 13.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 551 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 550 type: solid_wall components: - parent: 0 pos: 12.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 552 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 551 type: solid_wall components: - parent: 0 pos: 11.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 553 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 552 type: solid_wall components: - parent: 0 pos: 10.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 554 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 553 type: solid_wall components: - parent: 0 pos: 9.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 555 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 554 type: solid_wall components: - parent: 0 pos: 8.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 556 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 555 type: solid_wall components: - parent: 0 pos: 7.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 557 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 556 type: solid_wall components: - parent: 0 pos: 6.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 558 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 557 type: solid_wall components: - parent: 0 pos: 5.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 559 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 558 type: solid_wall components: - parent: 0 pos: 4.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 560 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 559 type: solid_wall components: - parent: 0 pos: 5.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 561 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 560 type: solid_wall components: - parent: 0 pos: 6.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 562 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 561 type: solid_wall components: - parent: 0 pos: 7.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 563 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 562 type: solid_wall components: - parent: 0 pos: 8.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 564 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 563 type: solid_wall components: - parent: 0 pos: 9.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 565 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 564 type: solid_wall components: - parent: 0 pos: 10.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 566 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 565 type: solid_wall components: - parent: 0 pos: 11.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 567 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 566 type: solid_wall components: - parent: 0 pos: 12.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 568 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 567 type: solid_wall components: - parent: 0 pos: 4.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 569 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 568 type: solid_wall components: - parent: 0 pos: 1.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 570 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 569 type: solid_wall components: - parent: 0 pos: 1.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 571 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 570 type: solid_wall components: - parent: 0 pos: 0.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 572 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 571 type: solid_wall components: - parent: 0 pos: -0.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 573 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 572 type: solid_wall components: - parent: 0 pos: -1.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 574 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 573 type: solid_wall components: - parent: 0 pos: -2.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 575 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 574 type: solid_wall components: - parent: 0 pos: -3.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 576 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 575 type: solid_wall components: - parent: 0 pos: -4.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 577 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 576 type: solid_wall components: - parent: 0 pos: -5.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 578 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 577 type: solid_wall components: - parent: 0 pos: -6.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 579 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 578 type: solid_wall components: - parent: 0 pos: -7.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 580 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 579 type: solid_wall components: - parent: 0 pos: 1.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 581 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 580 type: solid_wall components: - parent: 0 pos: 1.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 582 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 581 type: solid_wall components: - parent: 0 pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 583 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 582 type: Catwalk components: - parent: 0 pos: 5.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 584 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 583 type: Catwalk components: - parent: 0 pos: 12.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 585 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 584 type: Table components: - parent: 0 pos: 23.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 586 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 585 type: Table components: - parent: 0 pos: 23.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 587 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 586 type: airlock_medical_glass components: - parent: 0 pos: 15.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 588 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 587 type: airlock_medical_glass components: - parent: 0 pos: 16.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 589 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 588 type: airlock_medical_glass components: - parent: 0 pos: 20.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 590 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 589 type: airlock_medical_glass components: - parent: 0 pos: 26.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 591 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 590 type: Beaker components: - parent: 0 pos: 26.416822,10.651619 rot: -1.5707963267948966 rad type: Transform -- uid: 592 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 591 type: Beaker components: - parent: 0 pos: 24.541822,10.635994 rot: -1.5707963267948966 rad type: Transform -- uid: 593 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 592 type: Beaker components: - parent: 0 pos: 25.291822,10.667244 rot: -1.5707963267948966 rad type: Transform -- uid: 594 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 593 type: Wire components: - parent: 0 pos: 1.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 595 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 594 type: Wire components: - parent: 0 pos: 2.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 596 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 595 type: Wire components: - parent: 0 pos: 2.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 597 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 596 type: Wire components: - parent: 0 pos: 2.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 598 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 597 type: Wire components: - parent: 0 pos: 2.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 599 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 598 type: Wire components: - parent: 0 pos: 2.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 600 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 599 type: Wire components: - parent: 0 pos: 2.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 601 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 600 type: Wire components: - parent: 0 pos: 2.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 602 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 601 type: Wire components: - parent: 0 pos: 2.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 603 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 602 type: Wire components: - parent: 0 pos: 3.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 604 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 603 type: Wire components: - parent: 0 pos: 4.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 605 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 604 type: Wire components: - parent: 0 pos: 5.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 606 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 605 type: Wire components: - parent: 0 pos: 5.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 607 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 606 type: Wire components: - parent: 0 pos: 6.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 608 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 607 type: Wire components: - parent: 0 pos: 7.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 609 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 608 type: Wire components: - parent: 0 pos: 8.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 610 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 609 type: Wire components: - parent: 0 pos: 9.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 611 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 610 type: Wire components: - parent: 0 pos: 10.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 612 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 611 type: Wire components: - parent: 0 pos: 11.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 613 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 612 type: Wire components: - parent: 0 pos: 12.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 614 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 613 type: Wire components: - parent: 0 pos: 12.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 615 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 614 type: Wire components: - parent: 0 pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 616 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 615 type: Wire components: - parent: 0 pos: 14.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 617 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 616 type: Wire components: - parent: 0 pos: 15.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 618 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 617 type: Wire components: - parent: 0 pos: 16.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 619 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 618 type: Wire components: - parent: 0 pos: 16.5,9.5 rot: -1.5707963267948966 rad type: Transform -- uid: 620 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 619 type: Wire components: - parent: 0 pos: 16.5,8.5 rot: -1.5707963267948966 rad type: Transform -- uid: 621 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 620 type: Wire components: - parent: 0 pos: 16.5,7.5 rot: -1.5707963267948966 rad type: Transform -- uid: 622 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 621 type: Wire components: - parent: 0 pos: 16.5,6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 623 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 622 type: Wire components: - parent: 0 pos: 16.5,5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 624 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 623 type: Wire components: - parent: 0 pos: 16.5,4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 625 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 624 type: Wire components: - parent: 0 pos: 16.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 626 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 625 type: Wire components: - parent: 0 pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 627 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 626 type: Wire components: - parent: 0 pos: 17.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 628 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 627 type: Wire components: - parent: 0 pos: 18.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 629 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 628 type: Wire components: - parent: 0 pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 630 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 629 type: APC components: - parent: 0 pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 631 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 630 type: Wire components: - parent: 0 pos: 1.5,2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 632 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 631 type: Wire components: - parent: 0 pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 633 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 632 type: APC components: - parent: 0 pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 634 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 633 type: Airlock components: - parent: 0 pos: 1.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 635 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 634 type: Airlock components: - parent: 0 pos: 4.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 636 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 635 type: Airlock components: - parent: 0 pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform -- uid: 637 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 636 type: APC components: - parent: 0 pos: 13.5,6.5 type: Transform -- uid: 638 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 637 type: Wire components: - parent: 0 pos: 13.5,6.5 type: Transform -- uid: 639 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 638 type: APC components: - parent: 0 pos: 28.5,8.5 type: Transform -- uid: 640 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 639 type: Wire components: - parent: 0 pos: 25.5,4.5 type: Transform -- uid: 641 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 640 type: Poweredlight components: - parent: 0 pos: 17.5,4 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 642 + - 641 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 642 + - load: 40 + type: PowerDevice +- uid: 641 type: LightTube components: - - parent: 641 + - parent: 640 type: Transform -- uid: 643 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 642 type: Poweredlight components: - parent: 0 pos: 22.5,3 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 644 + - 643 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 644 + - load: 40 + type: PowerDevice +- uid: 643 type: LightTube components: - - parent: 643 + - parent: 642 type: Transform -- uid: 645 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 644 type: Poweredlight components: - parent: 0 pos: 13.5,3 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 646 + - 645 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 646 + - load: 40 + type: PowerDevice +- uid: 645 type: LightTube components: - - parent: 645 + - parent: 644 type: Transform -- uid: 647 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 646 type: Wire components: - parent: 0 pos: 27.5,8.5 rot: 3.141592653589793 rad type: Transform -- uid: 648 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 647 type: Wire components: - parent: 0 pos: 26.5,8.5 rot: 3.141592653589793 rad type: Transform -- uid: 649 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 648 type: Wire components: - parent: 0 pos: 15.5,8.5 type: Transform -- uid: 650 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 649 type: Wire components: - parent: 0 pos: 14.5,8.5 type: Transform -- uid: 651 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 650 type: Wire components: - parent: 0 pos: 13.5,8.5 type: Transform -- uid: 652 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 651 type: Wire components: - parent: 0 pos: 15.5,6.5 type: Transform -- uid: 653 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 652 type: Wire components: - parent: 0 pos: 14.5,6.5 type: Transform -- uid: 654 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 653 type: APC components: - parent: 0 pos: 30.5,2.5 rot: 3.141592653589793 rad type: Transform -- uid: 655 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 654 type: Wire components: - parent: 0 pos: 19.5,2.5 type: Transform -- uid: 656 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 655 type: Wire components: - parent: 0 pos: 20.5,2.5 type: Transform -- uid: 657 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 656 type: Wire components: - parent: 0 pos: 21.5,2.5 type: Transform -- uid: 658 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 657 type: Wire components: - parent: 0 pos: 22.5,2.5 type: Transform -- uid: 659 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 658 type: Wire components: - parent: 0 pos: 23.5,2.5 type: Transform -- uid: 660 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 659 type: Wire components: - parent: 0 pos: 24.5,2.5 type: Transform -- uid: 661 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 660 type: Wire components: - parent: 0 pos: 25.5,2.5 type: Transform -- uid: 662 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 661 type: Wire components: - parent: 0 pos: 25.5,3.5 type: Transform -- uid: 663 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 662 type: Poweredlight components: - parent: 0 pos: 14,9.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 664 + - 663 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 664 + - load: 40 + type: PowerDevice +- uid: 663 type: LightTube components: - - parent: 663 + - parent: 662 type: Transform -- uid: 665 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 664 type: Poweredlight components: - parent: 0 pos: 22,9.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 666 + - 665 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 666 + - load: 40 + type: PowerDevice +- uid: 665 type: LightTube components: - - parent: 665 + - parent: 664 type: Transform -- uid: 667 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 666 type: Wire components: - parent: 0 pos: 30.5,2.5 rot: 3.141592653589793 rad type: Transform -- uid: 668 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 667 type: Wire components: - parent: 0 pos: 29.5,2.5 rot: 3.141592653589793 rad type: Transform -- uid: 669 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 668 type: Poweredlight components: - parent: 0 pos: 16.5,-6 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 670 + - 669 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 670 + - load: 40 + type: PowerDevice +- uid: 669 type: LightTube components: - - parent: 669 + - parent: 668 type: Transform -- uid: 671 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 670 type: Table components: - parent: 0 pos: 23.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 672 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 671 type: Table components: - parent: 0 pos: 24.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 673 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 672 type: APC components: - parent: 0 pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 674 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 673 type: Wire components: - parent: 0 pos: 16.5,1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 675 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 674 type: Wire components: - parent: 0 pos: 16.5,0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 676 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 675 type: Wire components: - parent: 0 pos: 16.5,-0.5 rot: -1.5707963267948966 rad type: Transform -- uid: 677 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 676 type: Wire components: - parent: 0 pos: 16.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 678 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 677 type: Wire components: - parent: 0 pos: 16.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 679 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 678 type: Wire components: - parent: 0 pos: 16.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 680 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 679 type: Wire components: - parent: 0 pos: 17.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 681 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 680 type: Wire components: - parent: 0 pos: 18.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 682 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 681 type: Wire components: - parent: 0 pos: 19.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 683 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 682 type: Wire components: - parent: 0 pos: 20.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 684 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 683 type: Wire components: - parent: 0 pos: 20.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 685 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 684 type: Wire components: - parent: 0 pos: 20.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 686 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 685 type: Wire components: - parent: 0 pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 687 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 686 type: Wire components: - parent: 0 pos: 21.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 688 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 687 type: Wire components: - parent: 0 pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 689 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 688 type: Wire components: - parent: 0 pos: 23.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 690 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 689 type: Wire components: - parent: 0 pos: 24.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 691 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 690 type: Wire components: - parent: 0 pos: 25.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 692 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 691 type: Wire components: - parent: 0 pos: 26.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 693 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 692 type: Wire components: - parent: 0 pos: 27.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 694 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 693 type: Wire components: - parent: 0 pos: 28.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 695 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 694 type: Wire components: - parent: 0 pos: 29.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 696 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 695 type: Wire components: - parent: 0 pos: 30.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 697 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 696 type: Wire components: - parent: 0 pos: 30.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 698 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 697 type: Wire components: - parent: 0 pos: 30.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 699 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 698 type: Wire components: - parent: 0 pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 700 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 699 type: APC components: - parent: 0 pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform -- uid: 701 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 700 type: Poweredlight components: - parent: 0 pos: 31.5,-6 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 702 + - 701 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 702 + - load: 40 + type: PowerDevice +- uid: 701 type: LightTube components: - - parent: 701 + - parent: 700 type: Transform -- uid: 703 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 702 type: Poweredlight components: - parent: 0 pos: 30,1.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 704 + - 703 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 704 + - load: 40 + type: PowerDevice +- uid: 703 type: LightTube components: - - parent: 703 + - parent: 702 type: Transform -- uid: 705 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 704 type: Wire components: - parent: 0 pos: 26.5,2.5 rot: 3.141592653589793 rad type: Transform -- uid: 706 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 705 type: Wire components: - parent: 0 pos: 27.5,2.5 rot: 3.141592653589793 rad type: Transform -- uid: 707 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 706 type: Wire components: - parent: 0 pos: 28.5,2.5 rot: 3.141592653589793 rad type: Transform -- uid: 708 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 707 type: Wire components: - parent: 0 pos: 28.5,8.5 rot: 3.141592653589793 rad type: Transform -- uid: 709 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 708 type: Wire components: - parent: 0 pos: 25.5,5.5 rot: 3.141592653589793 rad type: Transform -- uid: 710 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 709 type: Wire components: - parent: 0 pos: 25.5,6.5 rot: 3.141592653589793 rad type: Transform -- uid: 711 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 710 type: Wire components: - parent: 0 pos: 25.5,7.5 rot: 3.141592653589793 rad type: Transform -- uid: 712 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 711 type: Wire components: - parent: 0 pos: 25.5,8.5 rot: 3.141592653589793 rad type: Transform -- uid: 713 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 712 type: Poweredlight components: - parent: 0 pos: 28,7.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 714 + - 713 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 714 + - load: 40 + type: PowerDevice +- uid: 713 type: LightTube components: - - parent: 713 + - parent: 712 type: Transform -- uid: 715 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 714 type: VendingMachineMedical components: - parent: 0 pos: 29.5,3.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - sprite: Buildings/VendingMachines/medical.rsi type: Sprite -- uid: 716 +- uid: 715 type: VendingMachineMedical components: - parent: 0 pos: 27.5,-5.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - sprite: Buildings/VendingMachines/medical.rsi type: Sprite -- uid: 717 +- uid: 716 type: VendingMachineMedical components: - parent: 0 pos: 25.5,-5.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - sprite: Buildings/VendingMachines/medical.rsi type: Sprite -- uid: 718 - type: VendingMachineWallMedical +- uid: 717 + type: VendingMachineMedical components: - parent: 0 pos: 1.5,-3.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - sprite: Buildings/VendingMachines/wallmed.rsi type: Sprite -- uid: 719 +- uid: 718 type: MedkitFilled components: - parent: 0 pos: 13.460339,0.6141751 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 1029 + - 1030 + - 1031 + - 1032 + - 1033 + - 1034 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 720 + - used: 30 + type: Storage +- uid: 719 type: MedkitFilled components: - parent: 0 pos: 13.632214,1.5673001 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - containers: storagebase: - entities: [] + entities: + - 1035 + - 1036 + - 1037 + - 1038 + - 1039 + - 1040 type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 721 + - used: 30 + type: Storage +- uid: 720 type: ComputerMedicalRecords components: - parent: 0 pos: 22.5,-5.5 rot: 1.5707963267948966 rad type: Transform -- uid: 722 + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable +- uid: 721 type: Poweredlight components: - parent: 0 pos: 23.5,-6 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 723 + - 722 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 723 + - load: 40 + type: PowerDevice +- uid: 722 type: LightTube components: - - parent: 722 + - parent: 721 type: Transform -- uid: 724 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 723 type: Brutepack components: - parent: 0 pos: 18.476385,4.841032 rot: 1.5707963267948966 rad type: Transform -- uid: 725 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 724 type: Brutepack components: - parent: 0 pos: 18.601385,5.512907 rot: 1.5707963267948966 rad type: Transform -- uid: 726 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 725 type: Ointment components: - parent: 0 pos: 18.49201,6.059782 rot: 1.5707963267948966 rad type: Transform -- uid: 727 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 726 type: Ointment components: - parent: 0 pos: 18.77326,6.653532 rot: 1.5707963267948966 rad type: Transform -- uid: 728 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 727 type: spawn_point_latejoin components: - parent: 0 pos: 17.5,8.5 rot: 1.5707963267948966 rad type: Transform -- uid: 729 +- uid: 728 type: spawn_point_latejoin components: - parent: 0 pos: 19.5,-3.5 rot: 1.5707963267948966 rad type: Transform -- uid: 730 +- uid: 729 type: Table components: - parent: 0 pos: 33.5,-1.5 rot: -1.5707963267948966 rad type: Transform -- uid: 731 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 730 type: Table components: - parent: 0 pos: 33.5,-2.5 rot: -1.5707963267948966 rad type: Transform -- uid: 732 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 731 type: Table components: - parent: 0 pos: 33.5,-3.5 rot: -1.5707963267948966 rad type: Transform -- uid: 733 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 732 type: Table components: - parent: 0 pos: 33.5,-4.5 rot: -1.5707963267948966 rad type: Transform -- uid: 734 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 733 type: Table components: - parent: 0 pos: 33.5,-5.5 rot: -1.5707963267948966 rad type: Transform -- uid: 735 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 734 type: LargeBeaker components: - parent: 0 pos: 33.18525,-5.681699 rot: -1.5707963267948966 rad type: Transform -- uid: 736 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 735 type: LargeBeaker components: - parent: 0 pos: 33.294624,-5.181699 rot: -1.5707963267948966 rad type: Transform -- uid: 737 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 736 type: LargeBeaker components: - parent: 0 pos: 33.544624,-5.572324 rot: -1.5707963267948966 rad type: Transform -- uid: 738 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 737 type: Beaker components: - parent: 0 pos: 33.357124,-4.837949 rot: -1.5707963267948966 rad type: Transform -- uid: 739 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 738 type: Beaker components: - parent: 0 pos: 33.357124,-4.166074 rot: -1.5707963267948966 rad type: Transform -- uid: 740 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 739 type: Beaker components: - parent: 0 pos: 33.388374,-4.431699 rot: -1.5707963267948966 rad type: Transform -- uid: 741 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 740 type: Beaker components: - parent: 0 pos: 33.62275,-4.228574 rot: -1.5707963267948966 rad type: Transform -- uid: 742 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 741 type: Beaker components: - parent: 0 pos: 33.62275,-4.634824 rot: -1.5707963267948966 rad type: Transform -- uid: 743 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 742 type: CrateMedical components: - parent: 0 pos: 32.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.4,-0.4,0.4,0.4 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 744 + - IsPlaceable: False + type: PlaceableSurface +- uid: 743 type: CrateMedical components: - parent: 0 pos: 31.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.4,-0.4,0.4,0.4 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 745 + - IsPlaceable: False + type: PlaceableSurface +- uid: 744 type: LockerMedical components: - parent: 0 pos: 30.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 746 + - IsPlaceable: False + type: PlaceableSurface +- uid: 745 type: LockerMedical components: - parent: 0 pos: 29.5,-1.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 747 + - IsPlaceable: False + type: PlaceableSurface +- uid: 746 type: LockerMedical components: - parent: 0 pos: 27.5,5.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 748 + - IsPlaceable: False + type: PlaceableSurface +- uid: 747 type: LockerChemistry components: - parent: 0 pos: 27.5,6.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 749 + - IsPlaceable: False + type: PlaceableSurface +- uid: 748 type: solid_wall components: - parent: 0 pos: 4.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 750 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 749 type: solid_wall components: - parent: 0 pos: 4.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 751 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 750 type: solid_wall components: - parent: 0 pos: 4.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 752 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 751 type: solid_wall components: - parent: 0 pos: 4.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 753 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 752 type: solid_wall components: - parent: 0 pos: 4.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 754 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 753 type: solid_wall components: - parent: 0 pos: 4.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 755 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 754 type: solid_wall components: - parent: 0 pos: 4.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 756 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 755 type: solid_wall components: - parent: 0 pos: 4.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 757 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 756 type: solid_wall components: - parent: 0 pos: 4.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 758 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 757 type: solid_wall components: - parent: 0 pos: 4.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 759 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 758 type: solid_wall components: - parent: 0 pos: 7.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 760 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 759 type: solid_wall components: - parent: 0 pos: 7.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 761 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 760 type: solid_wall components: - parent: 0 pos: 7.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 762 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 761 type: solid_wall components: - parent: 0 pos: 7.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 763 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 762 type: solid_wall components: - parent: 0 pos: 7.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 764 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 763 type: solid_wall components: - parent: 0 pos: 8.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 765 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 764 type: solid_wall components: - parent: 0 pos: 10.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 766 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 765 type: solid_wall components: - parent: 0 pos: 11.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 767 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 766 type: solid_wall components: - parent: 0 pos: 12.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 768 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 767 type: solid_wall components: - parent: 0 pos: 13.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 769 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 768 type: solid_wall components: - parent: 0 pos: 14.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 770 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 769 type: solid_wall components: - parent: 0 pos: 15.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 771 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 770 type: solid_wall components: - parent: 0 pos: 14.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 772 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 771 type: solid_wall components: - parent: 0 pos: 14.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 773 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 772 type: solid_wall components: - parent: 0 pos: 14.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 774 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 773 type: solid_wall components: - parent: 0 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 775 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 774 type: solid_wall components: - parent: 0 pos: 15.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 776 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 775 type: solid_wall components: - parent: 0 pos: 17.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 777 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 776 type: solid_wall components: - parent: 0 pos: 17.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 778 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 777 type: solid_wall components: - parent: 0 pos: 18.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 779 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 778 type: solid_wall components: - parent: 0 pos: 18.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 780 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 779 type: solid_wall components: - parent: 0 pos: 18.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 781 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 780 type: solid_wall components: - parent: 0 pos: 18.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 782 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 781 type: solid_wall components: - parent: 0 pos: 18.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 783 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 782 type: solid_wall components: - parent: 0 pos: 18.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 784 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 783 type: solid_wall components: - parent: 0 pos: 18.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 785 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 784 type: solid_wall components: - parent: 0 pos: 18.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 786 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 785 type: solid_wall components: - parent: 0 pos: 19.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 787 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 786 type: solid_wall components: - parent: 0 pos: 20.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 788 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 787 type: solid_wall components: - parent: 0 pos: 21.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 789 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 788 type: solid_wall components: - parent: 0 pos: 22.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 790 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 789 type: solid_wall components: - parent: 0 pos: 23.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 791 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 790 type: solid_wall components: - parent: 0 pos: 24.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 792 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 791 type: solid_wall components: - parent: 0 pos: 25.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 793 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 792 type: solid_wall components: - parent: 0 pos: 26.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 794 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 793 type: solid_wall components: - parent: 0 pos: 27.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 795 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 794 type: solid_wall components: - parent: 0 pos: 28.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 796 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 795 type: solid_wall components: - parent: 0 pos: 6.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 797 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 796 type: solid_wall components: - parent: 0 pos: 7.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 798 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 797 type: solid_wall components: - parent: 0 pos: 14.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 799 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 798 type: solid_wall components: - parent: 0 pos: 14.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 800 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 799 type: solid_wall components: - parent: 0 pos: 8.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 801 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 800 type: solid_wall components: - parent: 0 pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 802 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 801 type: solid_wall components: - parent: 0 pos: 10.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 803 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 802 type: solid_wall components: - parent: 0 pos: 11.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 804 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 803 type: solid_wall components: - parent: 0 pos: 12.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 805 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 804 type: solid_wall components: - parent: 0 pos: 13.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 806 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 805 type: solid_wall components: - parent: 0 pos: 14.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 807 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 806 type: solid_wall components: - parent: 0 pos: 14.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 808 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 807 type: solid_wall components: - parent: 0 pos: 14.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 809 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 808 type: solid_wall components: - parent: 0 pos: 14.5,27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 810 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 809 type: solid_wall components: - parent: 0 pos: 14.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 811 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 810 type: solid_wall components: - parent: 0 pos: 18.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 812 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 811 type: solid_wall components: - parent: 0 pos: 18.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 813 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 812 type: solid_wall components: - parent: 0 pos: 18.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 814 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 813 type: solid_wall components: - parent: 0 pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 815 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 814 type: solid_wall components: - parent: 0 pos: 18.5,27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 816 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 815 type: solid_wall components: - parent: 0 pos: 18.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 817 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 816 type: solid_wall components: - parent: 0 pos: 13.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 818 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 817 type: solid_wall components: - parent: 0 pos: 12.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 819 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 818 type: solid_wall components: - parent: 0 pos: 11.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 820 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 819 type: solid_wall components: - parent: 0 pos: 10.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 821 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 820 type: solid_wall components: - parent: 0 pos: 9.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 822 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 821 type: solid_wall components: - parent: 0 pos: 8.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 823 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 822 type: solid_wall components: - parent: 0 pos: 4.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 824 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 823 type: solid_wall components: - parent: 0 pos: 10.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 825 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 824 type: solid_wall components: - parent: 0 pos: 10.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 826 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 825 type: solid_wall components: - parent: 0 pos: 10.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 827 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 826 type: solid_wall components: - parent: 0 pos: 4.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 828 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 827 type: solid_wall components: - parent: 0 pos: 4.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 829 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 828 type: solid_wall components: - parent: 0 pos: 4.5,27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 830 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 829 type: solid_wall components: - parent: 0 pos: 7.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 831 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 830 type: solid_wall components: - parent: 0 pos: 7.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 832 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 831 type: solid_wall components: - parent: 0 pos: 7.5,27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 833 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 832 type: solid_wall components: - parent: 0 pos: 7.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 834 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 833 type: Catwalk components: - parent: 0 pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 835 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 834 type: Catwalk components: - parent: 0 pos: 6.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 836 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 835 type: Catwalk components: - parent: 0 pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 837 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 836 type: solid_wall components: - parent: 0 pos: 1.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 838 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 837 type: solid_wall components: - parent: 0 pos: 1.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 839 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 838 type: solid_wall components: - parent: 0 pos: 1.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 840 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 839 type: solid_wall components: - parent: 0 pos: 1.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 841 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 840 type: solid_wall components: - parent: 0 pos: 1.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 842 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 841 type: solid_wall components: - parent: 0 pos: 1.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 843 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 842 type: solid_wall components: - parent: 0 pos: 1.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 844 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 843 type: solid_wall components: - parent: 0 pos: 1.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 845 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 844 type: solid_wall components: - parent: 0 pos: 1.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 846 + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 845 type: Wire components: - parent: 0 pos: 2.5,11.5 rot: -1.5707963267948966 rad type: Transform -- uid: 847 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 846 type: Wire components: - parent: 0 pos: 2.5,12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 848 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 847 type: Wire components: - parent: 0 pos: 2.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 849 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 848 type: Wire components: - parent: 0 pos: 3.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 850 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 849 type: Wire components: - parent: 0 pos: 4.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 851 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 850 type: Wire components: - parent: 0 pos: 6.5,27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 852 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 851 type: Wire components: - parent: 0 pos: 6.5,28.5 rot: -1.5707963267948966 rad type: Transform -- uid: 853 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 852 type: Wire components: - parent: 0 pos: 5.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 854 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 853 type: Wire components: - parent: 0 pos: 5.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 855 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 854 type: Wire components: - parent: 0 pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 856 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 855 type: Wire components: - parent: 0 pos: 6.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 857 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 856 type: Wire components: - parent: 0 pos: 6.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 858 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 857 type: Wire components: - parent: 0 pos: 6.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 859 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 858 type: Wire components: - parent: 0 pos: 6.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 860 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 859 type: Wire components: - parent: 0 pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 861 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 860 type: Wire components: - parent: 0 pos: 6.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 862 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 861 type: Wire components: - parent: 0 pos: 6.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 863 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 862 type: Wire components: - parent: 0 pos: 6.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 864 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 863 type: Wire components: - parent: 0 pos: 6.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 865 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 864 type: Wire components: - parent: 0 pos: 6.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 866 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 865 type: Wire components: - parent: 0 pos: 6.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 867 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 866 type: Wire components: - parent: 0 pos: 5.5,13.5 rot: -1.5707963267948966 rad type: Transform -- uid: 868 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 867 type: airlock_science_glass components: - parent: 0 pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 869 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 868 type: airlock_science components: - parent: 0 pos: 14.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 870 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 869 type: airlock_science components: - parent: 0 pos: 16.5,18.5 rot: -1.5707963267948966 rad type: Transform -- uid: 871 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 870 type: airlock_science components: - parent: 0 pos: 16.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 872 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 871 type: Airlock components: - parent: 0 pos: 5.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 873 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 872 type: Airlock components: - parent: 0 pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 874 + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 873 type: Table components: - parent: 0 pos: 9.5,15.5 rot: -1.5707963267948966 rad type: Transform -- uid: 875 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 874 type: Poweredlight components: - parent: 0 pos: 6.5,12 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 876 + - 875 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 876 + - load: 40 + type: PowerDevice +- uid: 875 type: LightTube components: - - parent: 875 + - parent: 874 type: Transform -- uid: 877 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 876 type: Poweredlight components: - parent: 0 pos: 12.5,12 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 878 + - 877 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer + - load: 40 + type: PowerDevice +- uid: 877 + type: LightTube + components: + - parent: 876 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 878 type: LightTube components: - - parent: 877 + - parent: 879 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable - uid: 879 - type: LightTube - components: - - parent: 880 - type: Transform -- uid: 880 type: Poweredlight components: - parent: 0 pos: 14,18.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 879 + - 878 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 881 + - load: 40 + type: PowerDevice +- uid: 880 type: Wire components: - parent: 0 pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 882 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 881 type: Wire components: - parent: 0 pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 883 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 882 type: Poweredlight components: - parent: 0 pos: 18,22.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 884 + - 883 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 884 + - load: 40 + type: PowerDevice +- uid: 883 type: LightTube components: - - parent: 883 + - parent: 882 type: Transform -- uid: 885 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 884 type: Poweredlight components: - parent: 0 pos: 18,27.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 886 + - 885 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 886 + - load: 40 + type: PowerDevice +- uid: 885 type: LightTube components: - - parent: 885 + - parent: 884 type: Transform -- uid: 887 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 886 type: PoweredSmallLight components: - parent: 0 pos: 18,17.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 888 + - 887 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 888 + - load: 40 + type: PowerDevice +- uid: 887 type: LightBulb components: - - parent: 887 + - parent: 886 type: Transform -- uid: 889 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 888 type: Poweredlight components: - parent: 0 pos: 2,17.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight + - containers: + light_bulb: + entities: + - 889 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer - load: 40 type: PowerDevice +- uid: 889 + type: LightTube + components: + - parent: 888 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 890 + type: LightTube + components: + - parent: 891 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 891 + type: Poweredlight + components: + - parent: 0 + pos: 2,23.5 + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable + - color: '#FFFFFFFF' + type: PointLight - containers: light_bulb: entities: - 890 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 890 - type: LightTube - components: - - parent: 889 - type: Transform -- uid: 891 - type: LightTube - components: - - parent: 892 - type: Transform -- uid: 892 - type: Poweredlight - components: - - parent: 0 - pos: 2,23.5 - type: Transform - - color: '#FFFFFFFF' - type: PointLight - load: 40 type: PowerDevice - - containers: - light_bulb: - entities: - - 891 - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 893 +- uid: 892 type: PoweredSmallLight components: - parent: 0 pos: 11,24.5 rot: 3.141592653589793 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 894 + - 893 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 894 + - load: 40 + type: PowerDevice +- uid: 893 type: LightBulb components: - - parent: 893 + - parent: 892 type: Transform -- uid: 895 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 894 type: Catwalk components: - parent: 0 pos: 13.5,24.5 rot: 3.141592653589793 rad type: Transform -- uid: 896 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 895 type: PoweredSmallLight components: - parent: 0 pos: 7.5,26 rot: 1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 897 + - 896 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 897 + - load: 40 + type: PowerDevice +- uid: 896 type: LightBulb components: - - parent: 896 + - parent: 895 type: Transform -- uid: 898 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 897 type: ResearchAndDevelopmentServer components: - parent: 0 pos: 11.5,24.5 rot: 1.5707963267948966 rad type: Transform - - points: 343000 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable + - points: 1064000 type: ResearchServer - technologies: [] type: TechnologyDatabase -- uid: 899 +- uid: 898 type: ComputerResearchAndDevelopment components: - parent: 0 pos: 8.5,18.5 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - technologies: [] type: TechnologyDatabase -- uid: 900 +- uid: 899 type: BaseResearchAndDevelopmentPointSource components: - parent: 0 pos: 13.5,16.5 type: Transform -- uid: 901 + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable +- uid: 900 type: Protolathe components: - parent: 0 pos: 8.5,17.5 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable - recipes: [] protolatherecipes: - Brutepack @@ -6955,12 +10548,41 @@ entities: type: ProtolatheDatabase - technologies: [] type: TechnologyDatabase -- uid: 902 +- uid: 901 type: Autolathe components: - parent: 0 pos: 13.5,18.5 type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable + - recipes: + - Brutepack + - Ointment + - LightTube + - LightBulb + - MetalStack + - GlassStack + - Wirecutter + - Screwdriver + - Welder + - Wrench + - CableStack + - Crowbar + - Multitool + type: LatheDatabase +- uid: 902 + type: Autolathe + components: + - parent: 0 + pos: -4.5,-5.5 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + type: Collidable - recipes: - Brutepack - Ointment @@ -6977,382 +10599,1745 @@ entities: - Multitool type: LatheDatabase - uid: 903 - type: Autolathe - components: - - parent: 0 - pos: -4.5,-5.5 - type: Transform - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 904 type: Table components: - parent: 0 pos: 8.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 905 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 904 type: Table components: - parent: 0 pos: 9.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 906 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 905 type: Table components: - parent: 0 pos: 10.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 907 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 906 type: Table components: - parent: 0 pos: 11.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 908 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 907 type: Table components: - parent: 0 pos: 13.5,17.5 rot: -1.5707963267948966 rad type: Transform -- uid: 909 + - shapes: + - !type:PhysShapeAabb + layer: 20 + type: Collidable +- uid: 908 type: Wire components: - parent: 0 pos: 2.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 910 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 909 type: Wire components: - parent: 0 pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 911 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 910 type: APC components: - parent: 0 pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform -- uid: 912 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 911 type: APC components: - parent: 0 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 913 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 912 type: APC components: - parent: 0 pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 914 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 913 type: Wire components: - parent: 0 pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 915 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 914 type: Wire components: - parent: 0 pos: 8.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 916 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 915 type: Wire components: - parent: 0 pos: 9.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 917 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 916 type: Wire components: - parent: 0 pos: 10.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 918 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 917 type: Wire components: - parent: 0 pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 919 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 918 type: Wire components: - parent: 0 pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 920 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 919 type: Wire components: - parent: 0 pos: 13.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 921 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 920 type: Wire components: - parent: 0 pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 922 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 921 type: Wire components: - parent: 0 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform -- uid: 923 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 922 type: Wire components: - parent: 0 pos: 15.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 924 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 923 type: Wire components: - parent: 0 pos: 16.5,20.5 rot: -1.5707963267948966 rad type: Transform -- uid: 925 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 924 type: Wire components: - parent: 0 pos: 16.5,21.5 rot: -1.5707963267948966 rad type: Transform -- uid: 926 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 925 type: Wire components: - parent: 0 pos: 16.5,22.5 rot: -1.5707963267948966 rad type: Transform -- uid: 927 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 926 type: Wire components: - parent: 0 pos: 16.5,23.5 rot: -1.5707963267948966 rad type: Transform -- uid: 928 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 927 type: Wire components: - parent: 0 pos: 16.5,24.5 rot: -1.5707963267948966 rad type: Transform -- uid: 929 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 928 type: Wire components: - parent: 0 pos: 16.5,25.5 rot: -1.5707963267948966 rad type: Transform -- uid: 930 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 929 type: Wire components: - parent: 0 pos: 16.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 931 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 930 type: Wire components: - parent: 0 pos: 16.5,27.5 rot: -1.5707963267948966 rad type: Transform -- uid: 932 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 931 type: Wire components: - parent: 0 pos: 17.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 933 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 932 type: Wire components: - parent: 0 pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform -- uid: 934 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 933 type: Generator components: - parent: 0 pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 935 + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable +- uid: 934 type: Generator components: - parent: 0 pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 936 + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable +- uid: 935 type: Generator components: - parent: 0 pos: 1.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 937 + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable +- uid: 936 type: Generator components: - parent: 0 pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 938 + - shapes: + - !type:PhysShapeAabb + layer: 31 + bounds: -0.5,-0.5,0.3,0.5 + type: Collidable +- uid: 937 type: Wire components: - parent: 0 pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform -- uid: 939 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 938 type: Poweredlight components: - parent: 0 pos: 8,16.5 type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable - color: '#FFFFFFFF' type: PointLight - - load: 40 - type: PowerDevice - containers: light_bulb: entities: - - 940 + - 939 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 940 + - load: 40 + type: PowerDevice +- uid: 939 type: LightTube components: - - parent: 939 + - parent: 938 type: Transform -- uid: 941 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 940 type: APC components: - parent: 0 pos: 7.5,18.5 type: Transform -- uid: 942 + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 941 type: Wire components: - parent: 0 pos: 7.5,18.5 type: Transform -- uid: 943 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 942 type: GlassStack components: - parent: 0 pos: 8.560405,21.456738 type: Transform -- uid: 944 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 943 type: GlassStack components: - parent: 0 pos: 8.57603,21.566113 type: Transform -- uid: 945 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 944 type: MetalStack components: - parent: 0 pos: 9.435405,21.503613 type: Transform -- uid: 946 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 945 type: MetalStack components: - parent: 0 pos: 9.654155,21.628613 type: Transform -- uid: 947 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 946 type: CableStack components: - parent: 0 pos: 10.561831,21.767809 type: Transform -- uid: 948 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 947 type: CableStack components: - parent: 0 pos: 10.577456,21.424059 type: Transform -- uid: 949 + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 948 type: ChairOfficeLight components: - parent: 0 pos: 9.5,18.5 rot: 3.141592653589793 rad type: Transform -- uid: 950 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 949 type: ChairOfficeLight components: - parent: 0 pos: 9.5,16.5 rot: -1.5707963267948966 rad type: Transform -- uid: 951 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 950 type: Chair components: - parent: 0 pos: 12.5,17.5 type: Transform -- uid: 952 + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 951 type: LockerScience components: - parent: 0 pos: 12.5,21.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer -- uid: 953 + - IsPlaceable: False + type: PlaceableSurface +- uid: 952 type: LockerScience components: - parent: 0 pos: 13.5,21.5 rot: -1.5707963267948966 rad type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 30 + bounds: -0.5,-0.25,0.5,0.25 + type: Collidable - containers: EntityStorageComponent: entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface +- uid: 953 + type: Brutepack + components: + - parent: 148 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 954 + type: Brutepack + components: + - parent: 148 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 955 + type: Brutepack + components: + - parent: 148 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 956 + type: Ointment + components: + - parent: 148 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 957 + type: Ointment + components: + - parent: 148 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 958 + type: Ointment + components: + - parent: 148 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 959 + type: Brutepack + components: + - parent: 149 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 960 + type: Brutepack + components: + - parent: 149 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 961 + type: Brutepack + components: + - parent: 149 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 962 + type: Ointment + components: + - parent: 149 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 963 + type: Ointment + components: + - parent: 149 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 964 + type: Ointment + components: + - parent: 149 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 965 + type: Screwdriver + components: + - parent: 253 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 966 + type: Crowbar + components: + - parent: 253 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 967 + type: Wirecutter + components: + - parent: 253 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 968 + type: CableStack + components: + - parent: 253 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 969 + type: CableStack + components: + - parent: 253 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 970 + type: CableStack + components: + - parent: 253 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 971 + type: Screwdriver + components: + - parent: 254 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 972 + type: Crowbar + components: + - parent: 254 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 973 + type: Wirecutter + components: + - parent: 254 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 974 + type: CableStack + components: + - parent: 254 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 975 + type: CableStack + components: + - parent: 254 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 976 + type: CableStack + components: + - parent: 254 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 977 + type: PowerCellSmallHyper + components: + - parent: 255 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable +- uid: 978 + type: PowerCellSmallHyper + components: + - parent: 256 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable +- uid: 979 + type: Crowbar + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 980 + type: Wrench + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 981 + type: Screwdriver + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 982 + type: Wirecutter + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 983 + type: Welder + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 984 + type: Multitool + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 985 + type: CableStack + components: + - parent: 261 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 986 + type: Crowbar + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 987 + type: Wrench + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 988 + type: Screwdriver + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 989 + type: Wirecutter + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 990 + type: Welder + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 991 + type: Multitool + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 992 + type: CableStack + components: + - parent: 262 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 993 + type: magazine_10mm_smg + components: + - parent: 269 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable + - containers: + magazine_bullet_container: + entities: [] + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - availableSpawnCount: 19 + type: BallisticMagazine +- uid: 994 + type: ammo_casing_10mm + components: + - parent: 269 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 995 + type: magazine_10mm_smg + components: + - parent: 270 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable + - containers: + magazine_bullet_container: + entities: [] + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - availableSpawnCount: 19 + type: BallisticMagazine +- uid: 996 + type: ammo_casing_10mm + components: + - parent: 270 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 997 + type: FlashlightLantern + components: + - parent: 363 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable + - containers: + flashlight_cell_container: + entities: + - 998 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 998 + type: PowerCellSmallHyper + components: + - parent: 997 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable +- uid: 999 + type: Screwdriver + components: + - parent: 363 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1000 + type: Wrench + components: + - parent: 363 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1001 + type: Welder + components: + - parent: 363 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1002 + type: Crowbar + components: + - parent: 363 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1003 + type: CableStack + components: + - parent: 363 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1004 + type: FlashlightLantern + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable + - containers: + flashlight_cell_container: + entities: + - 1005 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1005 + type: PowerCellSmallHyper + components: + - parent: 1004 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable +- uid: 1006 + type: Screwdriver + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1007 + type: Wrench + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1008 + type: Welder + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1009 + type: Crowbar + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1010 + type: Wirecutter + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1011 + type: HatHardhatRed + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1012 + type: CableStack + components: + - parent: 364 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1013 + type: Screwdriver + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1014 + type: Wrench + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1015 + type: Welder + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1016 + type: Crowbar + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1017 + type: Wirecutter + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1018 + type: Multitool + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1019 + type: CableStack + components: + - parent: 365 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1020 + type: Welder + components: + - parent: 366 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1021 + type: Wirecutter + components: + - parent: 366 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1022 + type: CableStack + components: + - parent: 366 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1023 + type: FlashlightLantern + components: + - parent: 367 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable + - containers: + flashlight_cell_container: + entities: + - 1024 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 1024 + type: PowerCellSmallHyper + components: + - parent: 1023 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + mask: 26 + bounds: -0.15,-0.3,0.2,0.3 + type: Collidable +- uid: 1025 + type: Wrench + components: + - parent: 367 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1026 + type: Welder + components: + - parent: 367 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1027 + type: Crowbar + components: + - parent: 367 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1028 + type: Wirecutter + components: + - parent: 367 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1029 + type: Brutepack + components: + - parent: 718 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1030 + type: Brutepack + components: + - parent: 718 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1031 + type: Brutepack + components: + - parent: 718 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1032 + type: Ointment + components: + - parent: 718 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1033 + type: Ointment + components: + - parent: 718 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1034 + type: Ointment + components: + - parent: 718 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1035 + type: Brutepack + components: + - parent: 719 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1036 + type: Brutepack + components: + - parent: 719 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1037 + type: Brutepack + components: + - parent: 719 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1038 + type: Ointment + components: + - parent: 719 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1039 + type: Ointment + components: + - parent: 719 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1040 + type: Ointment + components: + - parent: 719 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1041 + type: airlock_engineering + components: + - parent: 0 + pos: 4.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + mask: 4 + bounds: -0.49,-0.49,0.49,0.49 + type: Collidable +- uid: 1042 + type: GravityGenerator + components: + - parent: 0 + pos: 6.5,0.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 15 + bounds: -1.5,-1.5,1.5,1.5 + type: Collidable +- uid: 1043 + type: solid_wall + components: + - parent: 0 + pos: 8.5,2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1044 + type: solid_wall + components: + - parent: 0 + pos: 6.5,2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1045 + type: solid_wall + components: + - parent: 0 + pos: 5.5,2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1046 + type: solid_wall + components: + - parent: 0 + pos: 7.5,2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1047 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1048 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1049 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-1.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1050 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1051 + type: solid_wall + components: + - parent: 0 + pos: 8.5,0.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1052 + type: solid_wall + components: + - parent: 0 + pos: 8.5,1.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1053 + type: solid_wall + components: + - parent: 0 + pos: 8.5,2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1054 + type: solid_wall + components: + - parent: 0 + pos: 8.5,2.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1055 + type: solid_wall + components: + - parent: 0 + pos: 7.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1056 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-4.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1057 + type: Wire + components: + - parent: 0 + pos: 3.5,-0.5 + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 1058 + type: LightTube + components: + - parent: 1061 + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 32 + bounds: -0.25,-0.25,0.25,0.25 + type: Collidable +- uid: 1059 + type: Wire + components: + - parent: 0 + pos: 3.5,2.5 + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 1060 + type: Wire + components: + - parent: 0 + pos: 2.5,2.5 + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 1061 + type: Poweredlight + components: + - parent: 0 + pos: 6.5,-4 + rot: 1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable + - color: '#FFFFFFFF' + type: PointLight + - containers: + light_bulb: + entities: + - 1058 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer + - load: 40 + type: PowerDevice +- uid: 1062 + type: solid_wall + components: + - parent: 0 + pos: 4.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + layer: 31 + type: Collidable +- uid: 1063 + type: APC + components: + - parent: 0 + pos: 4.5,-0.5 + rot: -1.5707963267948966 rad + type: Transform + - shapes: + - !type:PhysShapeAabb + bounds: -0.25,-0.25,0.25,0.3 + type: Collidable +- uid: 1064 + type: Wire + components: + - parent: 0 + pos: 3.5,0.5 + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable +- uid: 1065 + type: Wire + components: + - parent: 0 + pos: 3.5,1.5 + type: Transform + - shapes: + - !type:PhysShapeAabb {} + type: Collidable ... diff --git a/Resources/Prototypes/Entities/Buildings/gravity_generator.yml b/Resources/Prototypes/Entities/Buildings/gravity_generator.yml new file mode 100644 index 0000000000..19fc4f3915 --- /dev/null +++ b/Resources/Prototypes/Entities/Buildings/gravity_generator.yml @@ -0,0 +1,36 @@ +- type: entity + id: GravityGenerator + name: Gravity Generator + description: It's what keeps you to the floor. + components: + - type: Sprite + sprite: Buildings/gravity_generator.rsi + layers: + - state: on + - sprite: Buildings/gravity_generator_core.rsi + state: activated + shader: unshaded + - type: Icon + sprite: Buildings/gravity_generator.rsi + state: on + - type: SnapGrid + offset: Center + - type: PowerDevice + load: 500 + - type: Collidable + shapes: + - !type:PhysShapeAabb + bounds: "-1.5,-1.5,1.5,1.5" + layer: 15 + - type: Clickable + - type: InteractionOutline + - type: Damageable + - type: Breakable + threshold: 150 + - type: GravityGenerator + - type: UserInterface + interfaces: + - key: enum.GravityGeneratorUiKey.Key + type: GravityGeneratorBoundUserInterface + placement: + mode: AlignTileAny diff --git a/Resources/Textures/Buildings/gravity_generator.rsi/broken.png b/Resources/Textures/Buildings/gravity_generator.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..0e02745bb8ddd2cd6aacee15353ea4a70996c975 GIT binary patch literal 21698 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Buildings/gravity_generator.rsi/on.png b/Resources/Textures/Buildings/gravity_generator.rsi/on.png new file mode 100755 index 0000000000000000000000000000000000000000..d887cea52a1fa43103ee48d86e14abe7fe7d9045 GIT binary patch literal 18219 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 S=R+m{0000 z?QP>Q42J2$4bcslm53>e+R z&5_U(37bTnw3OKh8sd zgo-g`UKG&w0<(O(yuRpY+y)F2hg{@j3!}5f&VzF7vr72(Cgq!8p+t~d!^V$R5f|X) zPb>x3m5|7TlM`klK`N@N3=uc}%WF^6Lq2Gi=m4sjAQ*5$Wr%DCW3JcYZ_Q{323j%i zYj(i=J0+x40rtIACuXI*+D2e0P@H|Wphf;&i!hb(Xl0QV?SyJ}>1fp%n*y35q&z+# zS7lR(3G0Mv`+!HF8PZ4MlvsV9P z7KO3O;3xXEF>#%Ul(zuaYJ$SgszwE`jtgE_FHPSw`0kZUav7pno2sQtSQE(wT9v7% z(vEielRSPd$YKRrTdtXR%+lSRbR^RY`+oj^qksBGH@&gxN}ufIkKr;*?%}?@9-f-| zxVszaO1GyhF85=&*dAHs_3=##RNenG0*lmVxS7sR1%;mfGFytU?VvW%-0<6Q8NTV) z1NeKJuUEk29%4k&@HNaoCAwr*Yb=aQ*Es`lcof!)4i`C`Atg z;%~{9{PR?9;TyhF4*P7C`VPN%sjpPlL&^dPGZs3@n0000KE8;rXHg0B{NDW(1YH$-bvu&gUcfmefaIg%9U<5M!-^|YLCJqQBB-ud_ z0RRTU+)Zl{#s!mqF*GPlgA4!w093eR0U3UkZm?@Y3eaF2pd$hXHJgVab2sA}qQU{r z=21-snvw4`+6M#0XO5ij!3^MnZcNmSJ8x~}Fx?|gS&?toZ z=KV$UgRW>bP~N8_hgHC0l_D*lul*sEZ!vcjv2YWUYbf0@xHTyZUE4D%;@#5-gGwmW z$NJkb`k95G=5tXUI~juQhhATNnK%mt67u-^+~onoQPc9D6Yf*;(jXah<=Xr`oHwWi zbH~x^a@(il)tnS^U|fDJoCDO>|r zp73D}X2?O)Zro!%9xfNPa$AGv+$@Z+0%dr*ZPcaW!HmGZR&yV|8+N%7 z?CurzWFQ*KPWkzKQ71Qw}blB#U_%@BRGrHLX86vLx;n z-YAzoR~@*l`XDw(r(to%8}|j1u;7ZX{j}1(Ev+1S*8hoB|A@-r2(ZgMrIRkF|7g4` zX$S!$+dY7hyahIQZ<5Co;3~@Zy>*y?l@uyq<=@!MYew7ytl(CkP2$lD#cF>2&}==LC1hz$(GEM0+ljE+e%gMwLm4OSL?d+Z8a*~|E0*v0al)? z{4Ws{-yH`JeY_>wyj&S{h`9%kV{yxtwN}o6v!vF+!vl Date: Sat, 2 May 2020 16:09:46 +0200 Subject: [PATCH 28/73] Fix lathe recipe texture references. Closes #860 --- Resources/Prototypes/LatheRecipes/tools.yml | 12 +++++++++--- .../Textures/Objects/Tools/autolathe_welder.png | Bin 330 -> 0 bytes 2 files changed, 9 insertions(+), 3 deletions(-) delete mode 100644 Resources/Textures/Objects/Tools/autolathe_welder.png diff --git a/Resources/Prototypes/LatheRecipes/tools.yml b/Resources/Prototypes/LatheRecipes/tools.yml index 0480b2cb24..38f0139b16 100644 --- a/Resources/Prototypes/LatheRecipes/tools.yml +++ b/Resources/Prototypes/LatheRecipes/tools.yml @@ -8,7 +8,9 @@ - type: latheRecipe id: Screwdriver - icon: Objects/Tools/screwdriver.png + icon: + sprite: Objects/Tools/screwdriver.rsi + state: screwdriver result: Screwdriver completetime: 500 materials: @@ -16,7 +18,9 @@ - type: latheRecipe id: Welder - icon: Objects/Tools/autolathe_welder.png + icon: + sprite: Objects/Tools/welder.rsi + state: welder result: Welder completetime: 500 materials: @@ -51,7 +55,9 @@ - type: latheRecipe id: Multitool - icon: Objects/Tools/multitool.png + icon: + sprite: Objects/Tools/multitool.rsi + state: multitool result: Multitool completetime: 500 materials: diff --git a/Resources/Textures/Objects/Tools/autolathe_welder.png b/Resources/Textures/Objects/Tools/autolathe_welder.png deleted file mode 100644 index 6b1ed2cf132edbe9026f0eb6048f35e7a243fe95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyP60k4uKyeUYiVkRgoGFx8lIoe zKeLR_-Q7JjI9Ng3!PeGRQc}{xj3Fz4(Z$J0TT81Zj>W^nBQrCzyu5s#q2W9sAvHC% z!#0s1YZyy{{DK)Ap4~_Ta<+N8IEGmC-ko$%=#T-2i?fhe?$p;=)0k!Q~pomuAYdvazz*O`koJ;!?j*{&Zt zv;DV~vzMjY;R9KsYQZy~|Fm{x;&%*PmZ|Uk{`T{hYq9lD-fWu|G)LZ;_4xH=O6 Date: Sat, 2 May 2020 17:16:36 +0200 Subject: [PATCH 29/73] Adds an acoustic guitar instrument (#881) --- Resources/Prototypes/Entities/Items/Instruments.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Resources/Prototypes/Entities/Items/Instruments.yml b/Resources/Prototypes/Entities/Items/Instruments.yml index ccfd97dd8d..08db84188f 100644 --- a/Resources/Prototypes/Entities/Items/Instruments.yml +++ b/Resources/Prototypes/Entities/Items/Instruments.yml @@ -23,6 +23,18 @@ - type: Icon texture: Objects/Instruments/musician.rsi/h_synthesizer.png +- type: entity + name: Acoustic Guitar + parent: BaseHandheldInstrument + id: AcousticGuitarInstrument + components: + - type: Instrument + program: 25 + - type: Sprite + texture: Objects/Instruments/musician.rsi/guitar.png + - type: Icon + texture: Objects/Instruments/musician.rsi/guitar.png + - type: entity name: Violin parent: BaseHandheldInstrument From eb547654f086034dae312bcf0847f43c9c12e6a0 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 2 May 2020 20:00:40 +0200 Subject: [PATCH 30/73] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index e78ac25680..4020f55f5f 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit e78ac256800451d76abef4af33e183c62b629efd +Subproject commit 4020f55f5fbb9f9a133f023b7446dbebdacd6f01 From cc1cf5e268b1914fd358979c0b68a195460d0b03 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 2 May 2020 20:01:06 +0200 Subject: [PATCH 31/73] Set current culture in shared entrypoint. --- Content.Shared/EntryPoint.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Content.Shared/EntryPoint.cs b/Content.Shared/EntryPoint.cs index a9df20ff2a..f2a1e7312e 100644 --- a/Content.Shared/EntryPoint.cs +++ b/Content.Shared/EntryPoint.cs @@ -1,23 +1,36 @@ using System; using System.Collections.Generic; + using System.Globalization; using Content.Shared.Maps; using Robust.Shared.ContentPack; using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; + using Robust.Shared.Localization; using Robust.Shared.Prototypes; namespace Content.Shared { public class EntryPoint : GameShared { + // If you want to change your codebase's language, do it here. + private const string Culture = "en-US"; + #pragma warning disable 649 [Dependency] private readonly IPrototypeManager _prototypeManager; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager; + [Dependency] private readonly ILocalizationManager _localizationManager; #pragma warning restore 649 + public override void PreInit() + { + IoCManager.InjectDependencies(this); + + // Default to en-US. + _localizationManager.LoadCulture(new CultureInfo(Culture)); + } + public override void Init() { - IoCManager.InjectDependencies(this); } public override void PostInit() From 2132c07401765aa3fac91b3e3a387ad771f5da4a Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 2 May 2020 20:05:09 +0200 Subject: [PATCH 32/73] Example Dutch translations for the localization system. --- Resources/Locale/nl-NL/tools.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Resources/Locale/nl-NL/tools.yml diff --git a/Resources/Locale/nl-NL/tools.yml b/Resources/Locale/nl-NL/tools.yml new file mode 100644 index 0000000000..6a9f974c3f --- /dev/null +++ b/Resources/Locale/nl-NL/tools.yml @@ -0,0 +1,19 @@ +# Example Dutch translations + +- msgid: Wrench + msgstr: Moersleutel + +- msgid: Welding Tool + msgstr: Lasapparaat + +- msgid: Crowbar + msgstr: Koevoet + +- msgid: Screwdriver + msgstr: Schroevendraaier + +- msgid: Wirecutters + msgstr: Draadtang + +- msgid: Multitool + msgstr: Multi Tool # This is what google translate gives me idk. From 4534181446deb83b9cfd523d06e069cfcf832827 Mon Sep 17 00:00:00 2001 From: Jackson Lewis Date: Sat, 2 May 2020 22:19:20 +0100 Subject: [PATCH 33/73] Clean up entity prototypes so that they don't define components twice (#866) --- Resources/Prototypes/Entities/Buildings/medical_scanner.yml | 1 - Resources/Prototypes/Entities/Weapons/Shotguns/shotguns.yml | 3 --- Resources/Prototypes/Entities/janitor.yml | 2 -- 3 files changed, 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Buildings/medical_scanner.yml b/Resources/Prototypes/Entities/Buildings/medical_scanner.yml index aae8cefd16..611fd803ed 100644 --- a/Resources/Prototypes/Entities/Buildings/medical_scanner.yml +++ b/Resources/Prototypes/Entities/Buildings/medical_scanner.yml @@ -36,7 +36,6 @@ - type: Appearance visuals: - type: MedicalScannerVisualizer2D - - type: PowerDevice - type: UserInterface interfaces: - key: enum.MedicalScannerUiKey.Key diff --git a/Resources/Prototypes/Entities/Weapons/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Weapons/Shotguns/shotguns.yml index 00552cf73c..e99f10a3b6 100644 --- a/Resources/Prototypes/Entities/Weapons/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Weapons/Shotguns/shotguns.yml @@ -42,6 +42,3 @@ - type: Item Size: 24 sprite: Objects/Guns/SMGs/c20r.rsi - - type: Item - Size: 24 - sprite: Objects/Guns/SMGs/wt550.rsi diff --git a/Resources/Prototypes/Entities/janitor.yml b/Resources/Prototypes/Entities/janitor.yml index 0cc504dd1f..ca1add7b83 100644 --- a/Resources/Prototypes/Entities/janitor.yml +++ b/Resources/Prototypes/Entities/janitor.yml @@ -34,7 +34,6 @@ drawdepth: Objects - type: Icon texture: Objects/Janitorial/mopbucket.png - - type: Clickable - type: InteractionOutline - type: Bucket - type: Sound @@ -51,7 +50,6 @@ - type: Physics mass: 5 Anchored: false - - type: Sound - type: entity parent: BaseItem From 0215092016f25b7f76d5bc3d5ebcb610f5c65cc1 Mon Sep 17 00:00:00 2001 From: Hugal31 Date: Sat, 2 May 2020 23:20:12 +0200 Subject: [PATCH 34/73] Add a style to the popup messages (#867) --- Content.Client/ClientNotifyManager.cs | 7 ++++++- Content.Client/UserInterface/Stylesheets/StyleNano.cs | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Content.Client/ClientNotifyManager.cs b/Content.Client/ClientNotifyManager.cs index 1370dcca16..867bee8144 100644 --- a/Content.Client/ClientNotifyManager.cs +++ b/Content.Client/ClientNotifyManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Content.Client.Interfaces; +using Content.Client.UserInterface.Stylesheets; using Content.Shared; using Robust.Client.Interfaces.Console; using Robust.Client.Interfaces.Graphics.ClientEye; @@ -57,7 +58,11 @@ namespace Content.Client public void PopupMessage(ScreenCoordinates coordinates, string message) { - var label = new PopupLabel {Text = message}; + var label = new PopupLabel + { + Text = message, + StyleClasses = { StyleNano.StyleClassPopupMessage }, + }; var minimumSize = label.CombinedMinimumSize; LayoutContainer.SetPosition(label, label.InitialPos = coordinates.Position - minimumSize / 2); _userInterfaceManager.PopupRoot.AddChild(label); diff --git a/Content.Client/UserInterface/Stylesheets/StyleNano.cs b/Content.Client/UserInterface/Stylesheets/StyleNano.cs index e182012a55..a96413b9d0 100644 --- a/Content.Client/UserInterface/Stylesheets/StyleNano.cs +++ b/Content.Client/UserInterface/Stylesheets/StyleNano.cs @@ -21,6 +21,7 @@ namespace Content.Client.UserInterface.Stylesheets public const string StyleClassLabelSecondaryColor = "LabelSecondaryColor"; public const string StyleClassLabelBig = "LabelBig"; public const string StyleClassButtonBig = "ButtonBig"; + public const string StyleClassPopupMessage = "PopupMessage"; public static readonly Color NanoGold = Color.FromHex("#A88B5E"); @@ -41,6 +42,7 @@ namespace Content.Client.UserInterface.Stylesheets public StyleNano(IResourceCache resCache) : base(resCache) { var notoSans10 = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 10); + var notoSansItalic10 = resCache.GetFont("/Nano/NotoSans/NotoSans-Italic.ttf", 10); var notoSans12 = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 12); var notoSansBold12 = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 12); var notoSansDisplayBold14 = resCache.GetFont("/Fonts/NotoSansDisplay/NotoSansDisplay-Bold.ttf", 14); @@ -552,6 +554,14 @@ namespace Content.Client.UserInterface.Stylesheets new StyleProperty("font", notoSans16) }), + // Popup messages + new StyleRule(new SelectorElement(typeof(Label), new[] {StyleClassPopupMessage}, null, null), + new[] + { + new StyleProperty("font", notoSansItalic10), + new StyleProperty("font-color", Color.LightGray), + }), + //APC and SMES power state label colors new StyleRule(new SelectorElement(typeof(Label), new[] {StyleClassPowerStateNone}, null, null), new[] { From 42f29767a30aed21de0e7f45eade7e7159959595 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 May 2020 00:03:38 +0200 Subject: [PATCH 35/73] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 4020f55f5f..3f73aebb52 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 4020f55f5fbb9f9a133f023b7446dbebdacd6f01 +Subproject commit 3f73aebb52b81e2e869bc740dad18654d5761a05 From 711bdc933a56c95dd0da7c69fd2c57d2fb26874d Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 May 2020 00:46:51 +0200 Subject: [PATCH 36/73] Fix map file --- Resources/Maps/stationstation.yml | 6780 ++++------------------------- 1 file changed, 919 insertions(+), 5861 deletions(-) diff --git a/Resources/Maps/stationstation.yml b/Resources/Maps/stationstation.yml index 63b317c907..3084a36a4e 100644 --- a/Resources/Maps/stationstation.yml +++ b/Resources/Maps/stationstation.yml @@ -62,8 +62,9 @@ tilemap: 55: floor_steel_dirty 56: floor_techmaint 57: floor_white - 58: plating - 59: underplating + 58: floor_wood + 59: plating + 60: underplating grids: - settings: chunksize: 16 @@ -71,29 +72,29 @@ grids: snapsize: 1 chunks: - ind: "-1,0" - tiles: NgAAADYAAAA2AAAANgAAADYAAAA7AAAAOwAAADsAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADsAAAA7AAAANgAAADYAAAA2AAAANgAAADsAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA7AAAAOwAAADsAAAA7AAAAOwAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAADsAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: NgAAADYAAAA2AAAANgAAADYAAAA8AAAAPAAAADwAAAA8AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAPAAAADgAAAA8AAAAPAAAADwAAAA8AAAANgAAADYAAAA2AAAANgAAADwAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA8AAAAPAAAADwAAAA8AAAAPAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAADwAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAA8AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "-1,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOwAAADsAAAA4AAAAOAAAADsAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADYAAAA2AAAANgAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA4AAAAOwAAADsAAAA7AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAADsAAAA4AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADYAAAA2AAAANgAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADsAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA2AAAANgAAADYAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA7AAAAOAAAADsAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA7AAAAOAAAADsAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAPAAAADgAAAA4AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAPAAAADwAAAA4AAAAOAAAADwAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAPAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADYAAAA2AAAANgAAADYAAAA2AAAAPAAAADwAAAA8AAAAPAAAADwAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADwAAAA4AAAAPAAAADwAAAA8AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADwAAAA8AAAAPAAAADwAAAA4AAAAPAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADYAAAA2AAAANgAAADYAAAA2AAAAPAAAADgAAAA8AAAAPAAAADwAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA2AAAANgAAADYAAAA2AAAANgAAADwAAAA4AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAANgAAADYAAAA2AAAANgAAADYAAAA8AAAAOAAAADwAAAA8AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAPAAAADgAAAA8AAAAPAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADwAAAA4AAAAPAAAADwAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA8AAAAOAAAADwAAAA8AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAA== - ind: "-1,1" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "0,1" - tiles: AAAAADsAAAA2AAAANgAAADsAAAA7AAAAOwAAADsAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAANgAAAAAAAAA7AAAANgAAADYAAAA7AAAAOAAAADsAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAAAAAAAOwAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA7AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAAAAAAAA7AAAANgAAADYAAAA7AAAAOAAAADsAAAA4AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAOwAAADYAAAA2AAAAOwAAADgAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA5AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOQAAAAAAAAA7AAAANgAAADYAAAA7AAAAOAAAADsAAAA4AAAAOAAAADgAAAA7AAAAOAAAADgAAAA7AAAAOwAAADkAAAAAAAAAOwAAADYAAAA2AAAAOwAAADgAAAA7AAAAOAAAADgAAAA4AAAAOwAAADgAAAA4AAAAOwAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAADsAAAA4AAAAOwAAADgAAAA4AAAAOAAAADsAAAA4AAAAOAAAADsAAAA7AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADgAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAAAAAAAAAAAAAAAAAAAAAADsAAAA4AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAADwAAAA2AAAANgAAADwAAAA8AAAAPAAAADwAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAANgAAAAAAAAA8AAAANgAAADYAAAA8AAAAOAAAADwAAAA8AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAADkAAAAAAAAAPAAAADYAAAA2AAAAPAAAADgAAAA8AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAA8AAAAAAAAADwAAAA2AAAANgAAADwAAAA4AAAAPAAAADwAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAOQAAAAAAAAA8AAAANgAAADYAAAA8AAAAOAAAADwAAAA4AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAPAAAADYAAAA2AAAAPAAAADgAAAA8AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAA5AAAAAAAAADwAAAA2AAAANgAAADwAAAA4AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAOQAAAAAAAAA8AAAANgAAADYAAAA8AAAAOAAAADwAAAA4AAAAOAAAADgAAAA8AAAAOAAAADgAAAA8AAAAPAAAADkAAAAAAAAAPAAAADYAAAA2AAAAPAAAADgAAAA8AAAAOAAAADgAAAA4AAAAPAAAADgAAAA4AAAAPAAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAADwAAAA4AAAAPAAAADgAAAA4AAAAOAAAADwAAAA4AAAAOAAAADwAAAA8AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAOAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADkAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADgAAAA8AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA5AAAAAAAAAAAAAAAAAAAAAAAAADwAAAA4AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "0,0" - tiles: NgAAADsAAAA2AAAANgAAADsAAAAzAAAAMwAAADMAAAAzAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAAOQAAADsAAAA7AAAANgAAADYAAAA7AAAAMwAAADMAAAAzAAAAMwAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAADMAAAAzAAAAMwAAADMAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA7AAAAOwAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOwAAADsAAAA2AAAANgAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA5AAAAOQAAADsAAAA4AAAANgAAADYAAAA4AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA4AAAAOQAAADkAAAA7AAAAOwAAADYAAAA2AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA2AAAAAAAAADsAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAA7AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAOwAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAADsAAAA2AAAANgAAADsAAAA4AAAAOwAAADsAAAA7AAAAOQAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAAA== + tiles: NgAAADwAAAA2AAAANgAAADwAAAA4AAAAOAAAADgAAAA8AAAAAAAAAAAAAAAAAAAAPAAAADkAAAA5AAAAOQAAADwAAAA8AAAANgAAADYAAAA8AAAAOAAAADgAAAA4AAAAPAAAAAAAAAAAAAAAAAAAADwAAAA5AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAPAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAOQAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAOQAAADYAAAA2AAAANgAAADYAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAOQAAADkAAAA8AAAAPAAAADYAAAA2AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADkAAAA5AAAAPAAAADwAAAA2AAAANgAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA5AAAAOQAAADwAAAA4AAAANgAAADYAAAA4AAAAPAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADwAAAA4AAAAOQAAADkAAAA8AAAAPAAAADYAAAA2AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA2AAAAAAAAADwAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAAAAAAAA8AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAPAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAADwAAAA2AAAANgAAADwAAAA4AAAAPAAAADwAAAA8AAAAOQAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAA== - ind: "0,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADsAAAA4AAAAOAAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAADgAAAA7AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA7AAAAOwAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA7AAAAOwAAADgAAAA4AAAAOwAAADsAAAA7AAAAMwAAADMAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADsAAAA2AAAANgAAADsAAAAzAAAAMwAAADMAAAAzAAAAAAAAAAAAAAAAAAAAAAAAADsAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA7AAAAMwAAADMAAAAzAAAAMwAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAOwAAADMAAAAzAAAAMwAAADMAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADMAAAAzAAAAMwAAADMAAAAzAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOQAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADwAAAA4AAAAOAAAADwAAAA8AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAADgAAAA8AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADgAAAA4AAAAOAAAADwAAAA8AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAPAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAOQAAADkAAAA8AAAAPAAAADgAAAA4AAAAPAAAADwAAAA8AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADkAAAA5AAAANgAAADwAAAA2AAAANgAAADwAAAA4AAAAOAAAADgAAAA8AAAAAAAAAAAAAAAAAAAAAAAAADwAAAA5AAAAOQAAADYAAAA2AAAANgAAADYAAAA8AAAAOAAAADgAAAA4AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAOQAAADkAAAA2AAAANgAAADYAAAA2AAAAPAAAADgAAAA4AAAAOAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADkAAAA5AAAANgAAADYAAAA2AAAANgAAADwAAAA4AAAAOAAAADgAAAA8AAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAOQAAAA== - ind: "1,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADkAAAA5AAAAOwAAADsAAAA7AAAAOQAAADsAAAA7AAAAOwAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADkAAAA5AAAAPAAAADwAAAA8AAAAOQAAADwAAAA8AAAAPAAAAA== - ind: "-2,0" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "-2,-1" tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAA== - ind: "1,0" - tiles: OQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAAAAAAAOQAAADsAAAA7AAAAOwAAADkAAAA7AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA7AAAAOQAAADsAAAA5AAAAOwAAADsAAAA7AAAAOwAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAADkAAAA5AAAAOQAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAA5AAAAOQAAADkAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAAAAAAAAAAAAAAAAAAA== + tiles: OQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAAAAAAAOQAAADwAAAA8AAAAPAAAADkAAAA8AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAA8AAAAOQAAADwAAAA5AAAAPAAAADwAAAA8AAAAPAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAADkAAAA5AAAAOQAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAA5AAAAOQAAADkAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAAAAAAAAAAAAAAAAAA== - ind: "2,-1" - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAADsAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - ind: "1,1" - tiles: NgAAADYAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOwAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: NgAAADYAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAPAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== entities: - uid: 0 components: @@ -108,11 +109,6 @@ entities: pos: -1.47174,4.550247 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - charge: 1200 type: HitscanWeaponCapacitor - uid: 2 @@ -122,11 +118,6 @@ entities: pos: -0.6748645,4.487747 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - charge: 1200 type: HitscanWeaponCapacitor - uid: 3 @@ -136,11 +127,6 @@ entities: pos: -2.106966,-1.457896 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 4 type: Ointment components: @@ -148,11 +134,6 @@ entities: pos: -1.481966,-1.317271 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 5 type: Spear components: @@ -160,11 +141,6 @@ entities: pos: -4.144312,7.499083 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 6 type: Spear components: @@ -172,11 +148,6 @@ entities: pos: -1.238062,7.436583 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 7 type: PowerCellSmallHigh components: @@ -184,12 +155,6 @@ entities: pos: -2.67511,-10.351 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable - uid: 8 type: PowerCellSmallHigh components: @@ -197,12 +162,6 @@ entities: pos: -2.55011,-10.6635 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable - uid: 9 type: OuterclothingVest components: @@ -210,11 +169,6 @@ entities: pos: 1.412994,7.507263 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 10 type: solid_wall components: @@ -222,10 +176,6 @@ entities: pos: -7.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 11 type: solid_wall components: @@ -233,10 +183,6 @@ entities: pos: -7.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 12 type: solid_wall components: @@ -244,10 +190,6 @@ entities: pos: -7.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 13 type: solid_wall components: @@ -255,10 +197,6 @@ entities: pos: -7.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 14 type: solid_wall components: @@ -266,10 +204,6 @@ entities: pos: -7.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 15 type: solid_wall components: @@ -277,10 +211,6 @@ entities: pos: 0.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 16 type: solid_wall components: @@ -288,10 +218,6 @@ entities: pos: -0.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 17 type: solid_wall components: @@ -299,10 +225,6 @@ entities: pos: 3.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 18 type: solid_wall components: @@ -310,10 +232,6 @@ entities: pos: 4.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 19 type: solid_wall components: @@ -321,10 +239,6 @@ entities: pos: -7.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 20 type: solid_wall components: @@ -332,10 +246,6 @@ entities: pos: -7.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 21 type: solid_wall components: @@ -343,10 +253,6 @@ entities: pos: -7.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 22 type: solid_wall components: @@ -354,10 +260,6 @@ entities: pos: -7.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 23 type: solid_wall components: @@ -365,10 +267,6 @@ entities: pos: 2.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 24 type: solid_wall components: @@ -376,10 +274,6 @@ entities: pos: 1.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 25 type: solid_wall components: @@ -387,10 +281,6 @@ entities: pos: -1.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 26 type: PoweredSmallLight components: @@ -398,9 +288,6 @@ entities: pos: -4.5,-5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: @@ -418,11 +305,6 @@ entities: pos: -15.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 28 type: Wire components: @@ -430,9 +312,6 @@ entities: pos: 8.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 29 type: PoweredSmallLight components: @@ -440,9 +319,6 @@ entities: pos: 0.5,-5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: @@ -458,11 +334,6 @@ entities: components: - parent: 26 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 31 type: Wire components: @@ -470,9 +341,6 @@ entities: pos: -6.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 32 type: solid_wall components: @@ -480,10 +348,6 @@ entities: pos: -7.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 33 type: solid_wall components: @@ -491,10 +355,6 @@ entities: pos: -10.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 34 type: airlock_engineering components: @@ -502,12 +362,6 @@ entities: pos: -12.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 35 type: solid_wall components: @@ -515,10 +369,6 @@ entities: pos: -10.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 36 type: solid_wall components: @@ -526,10 +376,6 @@ entities: pos: -10.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 37 type: solid_wall components: @@ -537,10 +383,6 @@ entities: pos: -10.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 38 type: solid_wall components: @@ -548,10 +390,6 @@ entities: pos: -10.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 39 type: solid_wall components: @@ -559,10 +397,6 @@ entities: pos: -10.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 40 type: solid_wall components: @@ -570,10 +404,6 @@ entities: pos: -3.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 41 type: solid_wall components: @@ -581,10 +411,6 @@ entities: pos: 1.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 42 type: solid_wall components: @@ -592,10 +418,6 @@ entities: pos: 0.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 43 type: solid_wall components: @@ -603,10 +425,6 @@ entities: pos: -0.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 44 type: solid_wall components: @@ -614,10 +432,6 @@ entities: pos: -1.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 45 type: solid_wall components: @@ -625,10 +439,6 @@ entities: pos: -2.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 46 type: solid_wall components: @@ -636,10 +446,6 @@ entities: pos: -3.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 47 type: solid_wall components: @@ -647,10 +453,6 @@ entities: pos: -4.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 48 type: solid_wall components: @@ -658,10 +460,6 @@ entities: pos: -5.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 49 type: solid_wall components: @@ -669,10 +467,6 @@ entities: pos: -6.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 50 type: solid_wall components: @@ -680,10 +474,6 @@ entities: pos: 4.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 51 type: solid_wall components: @@ -691,10 +481,6 @@ entities: pos: 5.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 52 type: solid_wall components: @@ -702,10 +488,6 @@ entities: pos: 6.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 53 type: solid_wall components: @@ -713,10 +495,6 @@ entities: pos: -7.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 54 type: solid_wall components: @@ -724,10 +502,6 @@ entities: pos: -2.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 55 type: solid_wall components: @@ -735,10 +509,6 @@ entities: pos: -6.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 56 type: solid_wall components: @@ -746,10 +516,6 @@ entities: pos: -5.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 57 type: solid_wall components: @@ -757,10 +523,6 @@ entities: pos: -4.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 58 type: solid_wall components: @@ -768,10 +530,6 @@ entities: pos: 6.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 59 type: solid_wall components: @@ -779,10 +537,6 @@ entities: pos: 6.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 60 type: solid_wall components: @@ -790,10 +544,6 @@ entities: pos: 6.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 61 type: solid_wall components: @@ -801,10 +551,6 @@ entities: pos: 6.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 62 type: solid_wall components: @@ -812,10 +558,6 @@ entities: pos: 6.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 63 type: solid_wall components: @@ -823,10 +565,6 @@ entities: pos: 5.5,-14.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 64 type: solid_wall components: @@ -834,10 +572,6 @@ entities: pos: -7.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 65 type: solid_wall components: @@ -845,10 +579,6 @@ entities: pos: -7.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 66 type: solid_wall components: @@ -856,10 +586,6 @@ entities: pos: -8.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 67 type: solid_wall components: @@ -867,10 +593,6 @@ entities: pos: -9.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 68 type: solid_wall components: @@ -878,10 +600,6 @@ entities: pos: -10.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 69 type: solid_wall components: @@ -889,10 +607,6 @@ entities: pos: -7.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 70 type: Catwalk components: @@ -900,9 +614,6 @@ entities: pos: -6.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 71 type: Catwalk components: @@ -910,9 +621,6 @@ entities: pos: -8.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 72 type: solid_wall components: @@ -920,10 +628,6 @@ entities: pos: 5.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 73 type: solid_wall components: @@ -931,10 +635,6 @@ entities: pos: 5.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 74 type: solid_wall components: @@ -942,10 +642,6 @@ entities: pos: 6.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 75 type: solid_wall components: @@ -953,10 +649,6 @@ entities: pos: 6.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 76 type: Catwalk components: @@ -964,9 +656,6 @@ entities: pos: 4.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 77 type: LargeBeaker components: @@ -974,11 +663,6 @@ entities: pos: 23.494947,7.0422435 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 78 type: solid_wall components: @@ -986,10 +670,6 @@ entities: pos: 7.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 79 type: airlock_external components: @@ -997,12 +677,6 @@ entities: pos: 7.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 80 type: airlock_external components: @@ -1010,12 +684,6 @@ entities: pos: 5.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 81 type: airlock_engineering components: @@ -1023,12 +691,6 @@ entities: pos: -7.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 82 type: airlock_engineering components: @@ -1036,12 +698,6 @@ entities: pos: 3.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 83 type: airlock_engineering components: @@ -1049,12 +705,6 @@ entities: pos: 2.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 84 type: solid_wall components: @@ -1062,10 +712,6 @@ entities: pos: 6.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 85 type: solid_wall components: @@ -1073,10 +719,6 @@ entities: pos: 6.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 86 type: Table components: @@ -1084,10 +726,6 @@ entities: pos: -3.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 87 type: Table components: @@ -1095,10 +733,6 @@ entities: pos: -2.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 88 type: Table components: @@ -1106,10 +740,6 @@ entities: pos: -1.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 89 type: Table components: @@ -1117,10 +747,6 @@ entities: pos: -0.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 90 type: WirelessMachine components: @@ -1128,11 +754,6 @@ entities: pos: 5.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - uid: 91 type: CrateGeneric components: @@ -1140,12 +761,6 @@ entities: pos: 5.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.4,-0.4,0.4,0.4 - type: Collidable - containers: storagebase: entities: [] @@ -1163,9 +778,6 @@ entities: pos: -6.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 93 type: Wire components: @@ -1173,9 +785,6 @@ entities: pos: -7.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 94 type: Wire components: @@ -1183,9 +792,6 @@ entities: pos: -8.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 95 type: Wire components: @@ -1193,9 +799,6 @@ entities: pos: -8.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 96 type: Wire components: @@ -1203,9 +806,6 @@ entities: pos: -8.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 97 type: Wire components: @@ -1213,9 +813,6 @@ entities: pos: -8.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 98 type: Wire components: @@ -1223,9 +820,6 @@ entities: pos: -8.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 99 type: Wire components: @@ -1233,9 +827,6 @@ entities: pos: -8.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 100 type: Wire components: @@ -1243,9 +834,6 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 101 type: Wire components: @@ -1253,9 +841,6 @@ entities: pos: -6.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 102 type: Wire components: @@ -1263,9 +848,6 @@ entities: pos: -6.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 103 type: Wire components: @@ -1273,9 +855,6 @@ entities: pos: -6.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 104 type: Wire components: @@ -1283,9 +862,6 @@ entities: pos: 4.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 105 type: Wire components: @@ -1293,9 +869,6 @@ entities: pos: 4.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 106 type: Wire components: @@ -1303,9 +876,6 @@ entities: pos: 4.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 107 type: Wire components: @@ -1313,9 +883,6 @@ entities: pos: 4.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 108 type: Wire components: @@ -1323,9 +890,6 @@ entities: pos: 5.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 109 type: Wire components: @@ -1333,9 +897,6 @@ entities: pos: 6.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 110 type: Wire components: @@ -1343,9 +904,6 @@ entities: pos: 7.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 111 type: Catwalk components: @@ -1353,9 +911,6 @@ entities: pos: 2.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 112 type: Catwalk components: @@ -1363,9 +918,6 @@ entities: pos: -4.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 113 type: Wire components: @@ -1373,9 +925,6 @@ entities: pos: 3.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 114 type: Wire components: @@ -1383,9 +932,6 @@ entities: pos: 2.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 115 type: Wire components: @@ -1393,9 +939,6 @@ entities: pos: 1.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 116 type: Wire components: @@ -1403,9 +946,6 @@ entities: pos: 0.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 117 type: Wire components: @@ -1413,9 +953,6 @@ entities: pos: -0.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 118 type: Wire components: @@ -1423,9 +960,6 @@ entities: pos: -1.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 119 type: Wire components: @@ -1433,9 +967,6 @@ entities: pos: -2.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 120 type: Wire components: @@ -1443,9 +974,6 @@ entities: pos: -3.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 121 type: Wire components: @@ -1453,9 +981,6 @@ entities: pos: -4.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 122 type: Wire components: @@ -1463,9 +988,6 @@ entities: pos: -5.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 123 type: Wire components: @@ -1473,9 +995,6 @@ entities: pos: 1.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 124 type: Wire components: @@ -1483,9 +1002,6 @@ entities: pos: 1.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 125 type: Wire components: @@ -1493,9 +1009,6 @@ entities: pos: 2.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 126 type: Wire components: @@ -1503,9 +1016,6 @@ entities: pos: -2.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 127 type: Wire components: @@ -1513,9 +1023,6 @@ entities: pos: -2.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 128 type: Wire components: @@ -1523,9 +1030,6 @@ entities: pos: -3.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 129 type: Wire components: @@ -1533,9 +1037,6 @@ entities: pos: -1.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 130 type: Generator components: @@ -1543,11 +1044,6 @@ entities: pos: 2.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable - uid: 131 type: Generator components: @@ -1555,11 +1051,6 @@ entities: pos: 1.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable - uid: 132 type: SmesDry components: @@ -1567,10 +1058,6 @@ entities: pos: -1.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - charge: 3000 type: PowerStorage - uid: 133 @@ -1580,10 +1067,6 @@ entities: pos: -2.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - charge: 3000 type: PowerStorage - uid: 134 @@ -1593,10 +1076,6 @@ entities: pos: -3.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - charge: 3000 type: PowerStorage - uid: 135 @@ -1606,11 +1085,6 @@ entities: pos: -1.249865,-10.43489 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 136 type: Catwalk components: @@ -1618,9 +1092,6 @@ entities: pos: -2.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 137 type: Catwalk components: @@ -1628,9 +1099,6 @@ entities: pos: 1.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 138 type: spawn_point_latejoin components: @@ -1652,10 +1120,6 @@ entities: pos: -3.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 141 type: Table components: @@ -1663,10 +1127,6 @@ entities: pos: -2.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 142 type: Table components: @@ -1674,10 +1134,6 @@ entities: pos: -1.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 143 type: Table components: @@ -1685,10 +1141,6 @@ entities: pos: -0.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 144 type: solid_wall components: @@ -1696,10 +1148,6 @@ entities: pos: -7.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 145 type: spawn_point_latejoin components: @@ -1714,11 +1162,6 @@ entities: pos: 0.5223687,7.507263 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 147 type: LockerGeneric components: @@ -1726,12 +1169,6 @@ entities: pos: 1.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: storagebase: entities: [] @@ -1752,24 +1189,11 @@ entities: pos: -3.209215,-1.486604 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 953 - - 954 - - 955 - - 956 - - 957 - - 958 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 30 - type: Storage - uid: 149 type: MedkitFilled components: @@ -1777,24 +1201,11 @@ entities: pos: -4.146715,-1.408479 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 959 - - 960 - - 961 - - 962 - - 963 - - 964 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 30 - type: Storage - uid: 150 type: LockerGeneric components: @@ -1802,12 +1213,6 @@ entities: pos: 0.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: storagebase: entities: [] @@ -1828,11 +1233,6 @@ entities: pos: -1.297692,-5.396082 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 152 type: spawn_point_latejoin components: @@ -1854,11 +1254,6 @@ entities: pos: 0.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - products: - cargo.dice - cargo.flashlight @@ -1871,11 +1266,6 @@ entities: pos: 0.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - products: - cargo.dice - cargo.flashlight @@ -1888,10 +1278,6 @@ entities: pos: -4.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 157 type: Table components: @@ -1899,10 +1285,6 @@ entities: pos: -1.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 158 type: Table components: @@ -1910,10 +1292,6 @@ entities: pos: -2.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 159 type: Table components: @@ -1921,10 +1299,6 @@ entities: pos: -3.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 160 type: WirelessMachine components: @@ -1932,11 +1306,6 @@ entities: pos: -6.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - uid: 161 type: Catwalk components: @@ -1944,9 +1313,6 @@ entities: pos: 4.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 162 type: Catwalk components: @@ -1954,9 +1320,6 @@ entities: pos: -5.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 163 type: Wire components: @@ -1964,9 +1327,6 @@ entities: pos: -6.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 164 type: Wire components: @@ -1974,9 +1334,6 @@ entities: pos: -6.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 165 type: Wire components: @@ -1984,9 +1341,6 @@ entities: pos: 5.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 166 type: Wire components: @@ -1994,9 +1348,6 @@ entities: pos: 5.5,-12.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 167 type: Wire components: @@ -2004,9 +1355,6 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 168 type: WiredMachine components: @@ -2014,11 +1362,6 @@ entities: pos: 5.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - uid: 169 type: WiredMachine components: @@ -2026,21 +1369,11 @@ entities: pos: -6.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - uid: 170 type: LightBulb components: - parent: 29 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 171 type: WallLight components: @@ -2048,9 +1381,6 @@ entities: pos: -0.5,-14 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 172 type: spawn_point_latejoin components: @@ -2093,9 +1423,6 @@ entities: pos: 9.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 178 type: Catwalk components: @@ -2103,9 +1430,6 @@ entities: pos: 9.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 179 type: Catwalk components: @@ -2113,9 +1437,6 @@ entities: pos: 9.5,2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 180 type: Catwalk components: @@ -2123,9 +1444,6 @@ entities: pos: 9.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 181 type: Catwalk components: @@ -2133,9 +1451,6 @@ entities: pos: 9.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 182 type: VendingMachineYouTool components: @@ -2143,11 +1458,6 @@ entities: pos: -11.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - sprite: Buildings/VendingMachines/youtool.rsi type: Sprite - uid: 183 @@ -2157,11 +1467,6 @@ entities: pos: 0.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable - uid: 184 type: Wire components: @@ -2169,9 +1474,6 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 185 type: Wire components: @@ -2179,9 +1481,6 @@ entities: pos: 0.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 186 type: Generator components: @@ -2189,11 +1488,6 @@ entities: pos: 3.5,-13.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable - uid: 187 type: Table components: @@ -2201,10 +1495,6 @@ entities: pos: -6.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 188 type: Table components: @@ -2212,10 +1502,6 @@ entities: pos: -5.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 189 type: Table components: @@ -2223,10 +1509,6 @@ entities: pos: -4.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 190 type: Table components: @@ -2234,10 +1516,6 @@ entities: pos: -3.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 191 type: Table components: @@ -2245,10 +1523,6 @@ entities: pos: -2.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 192 type: Table components: @@ -2256,10 +1530,6 @@ entities: pos: -1.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 193 type: Table components: @@ -2267,10 +1537,6 @@ entities: pos: -0.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 194 type: Table components: @@ -2278,10 +1544,6 @@ entities: pos: 0.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 195 type: Table components: @@ -2289,10 +1551,6 @@ entities: pos: 1.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 196 type: Table components: @@ -2300,10 +1558,6 @@ entities: pos: -4.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 197 type: Table components: @@ -2311,10 +1565,6 @@ entities: pos: -3.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 198 type: Table components: @@ -2322,10 +1572,6 @@ entities: pos: -2.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 199 type: Table components: @@ -2333,10 +1579,6 @@ entities: pos: -1.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 200 type: Table components: @@ -2344,10 +1586,6 @@ entities: pos: -0.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable - uid: 201 type: airlock_medical_glass components: @@ -2355,12 +1593,6 @@ entities: pos: 26.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 202 type: airlock_medical_glass components: @@ -2368,12 +1600,6 @@ entities: pos: 28.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 203 type: Catwalk components: @@ -2381,9 +1607,6 @@ entities: pos: -9.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 204 type: Wire components: @@ -2391,9 +1614,6 @@ entities: pos: -8.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 205 type: Wire components: @@ -2401,9 +1621,6 @@ entities: pos: -8.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 206 type: Wire components: @@ -2411,9 +1628,6 @@ entities: pos: -9.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 207 type: Wire components: @@ -2421,9 +1635,6 @@ entities: pos: -9.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 208 type: solid_wall components: @@ -2431,10 +1642,6 @@ entities: pos: -10.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 209 type: solid_wall components: @@ -2442,10 +1649,6 @@ entities: pos: -10.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 210 type: Airlock components: @@ -2453,22 +1656,11 @@ entities: pos: -9.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable - uid: 211 type: LightTube components: - parent: 212 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 212 type: Poweredlight components: @@ -2476,9 +1668,6 @@ entities: pos: 0.5,1 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: @@ -2496,9 +1685,6 @@ entities: pos: -3.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 214 type: ChairOfficeDark components: @@ -2506,9 +1692,6 @@ entities: pos: 0.5,-6.5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 215 type: Poweredlight components: @@ -2516,15 +1699,12 @@ entities: pos: -6.5,1 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 315 + - 316 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 @@ -2536,11 +1716,6 @@ entities: pos: -15.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 217 type: Stool components: @@ -2548,9 +1723,6 @@ entities: pos: -1.5,-9.5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 218 type: ChairOfficeLight components: @@ -2558,9 +1730,6 @@ entities: pos: -3.5,-2.5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 219 type: ChairOfficeLight components: @@ -2568,9 +1737,6 @@ entities: pos: -2.5,-2.5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 220 type: ChairOfficeLight components: @@ -2578,9 +1744,6 @@ entities: pos: -2.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 221 type: Stool components: @@ -2588,19 +1751,11 @@ entities: pos: -2.5,-6.5 rot: 1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 222 type: LightBulb components: - parent: 251 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 223 type: APC components: @@ -2608,10 +1763,6 @@ entities: pos: -6.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable - uid: 224 type: Wire components: @@ -2619,9 +1770,6 @@ entities: pos: -9.5,2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 225 type: Wire components: @@ -2629,9 +1777,6 @@ entities: pos: -9.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 226 type: Wire components: @@ -2639,9 +1784,6 @@ entities: pos: -8.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 227 type: Wire components: @@ -2649,9 +1791,6 @@ entities: pos: -7.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 228 type: Wire components: @@ -2659,9 +1798,6 @@ entities: pos: -6.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 229 type: Wire components: @@ -2669,9 +1805,6 @@ entities: pos: -5.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 230 type: Wire components: @@ -2679,9 +1812,6 @@ entities: pos: -4.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 231 type: Wire components: @@ -2689,9 +1819,6 @@ entities: pos: -3.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 232 type: Wire components: @@ -2699,9 +1826,6 @@ entities: pos: -2.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 233 type: Wire components: @@ -2709,9 +1833,6 @@ entities: pos: -1.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 234 type: Wire components: @@ -2719,9 +1840,6 @@ entities: pos: -0.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 235 type: Wire components: @@ -2729,9 +1847,6 @@ entities: pos: 0.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 236 type: LargeBeaker components: @@ -2739,11 +1854,6 @@ entities: pos: 23.510572,7.7141185 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 237 type: Catwalk components: @@ -2751,9 +1861,6 @@ entities: pos: 9.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 238 type: Catwalk components: @@ -2761,9 +1868,6 @@ entities: pos: 9.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 239 type: Catwalk components: @@ -2771,9 +1875,6 @@ entities: pos: 9.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 240 type: Catwalk components: @@ -2781,9 +1882,6 @@ entities: pos: 9.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 241 type: Catwalk components: @@ -2791,9 +1889,6 @@ entities: pos: 9.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 242 type: Catwalk components: @@ -2801,9 +1896,6 @@ entities: pos: 9.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 243 type: Catwalk components: @@ -2811,9 +1903,6 @@ entities: pos: 9.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 244 type: Catwalk components: @@ -2821,9 +1910,6 @@ entities: pos: 9.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 245 type: Catwalk components: @@ -2831,9 +1917,6 @@ entities: pos: 9.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 246 type: Catwalk components: @@ -2841,9 +1924,6 @@ entities: pos: 9.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 247 type: Catwalk components: @@ -2851,9 +1931,6 @@ entities: pos: 9.5,-10.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 248 type: Catwalk components: @@ -2861,9 +1938,6 @@ entities: pos: 9.5,-11.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 249 type: Catwalk components: @@ -2871,9 +1945,6 @@ entities: pos: 8.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - uid: 250 type: APC components: @@ -2881,19 +1952,12 @@ entities: pos: 4.5,-9.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable - uid: 251 type: PoweredSmallLight components: - parent: 0 pos: 5,-9.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: @@ -2911,10 +1975,6 @@ entities: pos: 7.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 253 type: YellowToolboxItemFilled components: @@ -2922,24 +1982,11 @@ entities: pos: -0.8099712,-5.21454 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 965 - - 966 - - 967 - - 968 - - 969 - - 970 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 30 - type: Storage - uid: 254 type: YellowToolboxItemFilled components: @@ -2947,24 +1994,11 @@ entities: pos: -0.5597038,-5.679647 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 971 - - 972 - - 973 - - 974 - - 975 - - 976 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 30 - type: Storage - uid: 255 type: FlashlightLantern components: @@ -2972,15 +2006,9 @@ entities: pos: -1.934832,-5.154238 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: flashlight_cell_container: - entities: - - 977 + entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 256 @@ -2990,15 +2018,9 @@ entities: pos: -2.017696,-5.71715 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: flashlight_cell_container: - entities: - - 978 + entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 257 @@ -3008,11 +2030,6 @@ entities: pos: -2.861032,-5.524786 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 258 type: UniformEngineering components: @@ -3020,11 +2037,6 @@ entities: pos: -0.6474335,-10.27245 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 259 type: GasMaskClothing components: @@ -3032,11 +2044,6 @@ entities: pos: -0.2880585,-10.69432 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 260 type: OuterclothingVest components: @@ -3044,11 +2051,6 @@ entities: pos: -0.9130585,-10.66307 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 261 type: UtilityBeltClothingFilled components: @@ -3056,25 +2058,11 @@ entities: pos: -1.895102,-10.33495 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 979 - - 980 - - 981 - - 982 - - 983 - - 984 - - 985 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 35 - type: Storage - uid: 262 type: UtilityBeltClothingFilled components: @@ -3082,25 +2070,11 @@ entities: pos: -1.770102,-10.63182 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 986 - - 987 - - 988 - - 989 - - 990 - - 991 - - 992 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 35 - type: Storage - uid: 263 type: magazine_10mm_smg components: @@ -3108,11 +2082,6 @@ entities: pos: -6.605512,7.638151 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: magazine_bullet_container: entities: [] @@ -3125,11 +2094,6 @@ entities: pos: -6.339887,7.669401 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: magazine_bullet_container: entities: [] @@ -3142,11 +2106,6 @@ entities: pos: -6.027387,7.622526 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: magazine_bullet_container: entities: [] @@ -3159,11 +2118,6 @@ entities: pos: -5.089887,7.591276 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: entities: [] @@ -3176,11 +2130,6 @@ entities: pos: -4.683637,7.606901 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: entities: [] @@ -3193,11 +2142,6 @@ entities: pos: -3.386762,7.466276 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 269 type: SmgC20r components: @@ -3205,24 +2149,14 @@ entities: pos: -2.524035,7.579326 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: ballistics_chamber_0: - entities: - - 994 + entities: [] type: Content.Server.GameObjects.ContainerSlot ballistic_gun_magazine: - entities: - - 993 + entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - magazines: - - A10mmSMG - type: BallisticMagazineWeapon - uid: 270 type: SmgC20r components: @@ -3230,24 +2164,14 @@ entities: pos: -1.94591,7.485576 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: ballistics_chamber_0: - entities: - - 996 + entities: [] type: Content.Server.GameObjects.ContainerSlot ballistic_gun_magazine: - entities: - - 995 + entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - - magazines: - - A10mmSMG - type: BallisticMagazineWeapon - uid: 271 type: solid_wall components: @@ -3255,10 +2179,6 @@ entities: pos: -10.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 272 type: solid_wall components: @@ -3266,10 +2186,6 @@ entities: pos: -11.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 273 type: solid_wall components: @@ -3277,10 +2193,6 @@ entities: pos: -10.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 274 type: solid_wall components: @@ -3288,10 +2200,6 @@ entities: pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 275 type: solid_wall components: @@ -3299,10 +2207,6 @@ entities: pos: -8.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 276 type: solid_wall components: @@ -3310,10 +2214,6 @@ entities: pos: -7.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 277 type: solid_wall components: @@ -3321,10 +2221,6 @@ entities: pos: -8.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 278 type: solid_wall components: @@ -3332,10 +2228,6 @@ entities: pos: -5.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 279 type: solid_wall components: @@ -3343,10 +2235,6 @@ entities: pos: -6.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 280 type: solid_wall components: @@ -3354,10 +2242,6 @@ entities: pos: -7.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 281 type: solid_wall components: @@ -3365,10 +2249,6 @@ entities: pos: -0.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 282 type: solid_wall components: @@ -3376,10 +2256,6 @@ entities: pos: 0.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 283 type: solid_wall components: @@ -3387,10 +2263,6 @@ entities: pos: 1.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 284 type: solid_wall components: @@ -3398,10 +2270,6 @@ entities: pos: 1.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 285 type: solid_wall components: @@ -3409,10 +2277,6 @@ entities: pos: 1.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 286 type: solid_wall components: @@ -3420,921 +2284,585 @@ entities: pos: 4.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable - uid: 287 + type: LockerScience + components: + - parent: 0 + pos: 13.5,21.5 + rot: -1.5707963267948966 rad + type: Transform + - containers: + EntityStorageComponent: + entities: [] + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface +- uid: 288 type: solid_wall components: - parent: 0 - pos: 4.5,-2.5 + pos: 4.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 288 - type: Wire +- uid: 289 + type: solid_wall components: - parent: 0 pos: 4.5,-0.5 + rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 289 +- uid: 290 type: solid_wall components: - parent: 0 pos: 4.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 290 +- uid: 291 type: solid_wall components: - parent: 0 pos: 4.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 291 +- uid: 292 type: solid_wall components: - parent: 0 pos: 4.5,2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 292 +- uid: 293 type: solid_wall components: - parent: 0 pos: 4.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 293 +- uid: 294 type: solid_wall components: - parent: 0 pos: 4.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 294 +- uid: 295 type: solid_wall components: - parent: 0 pos: 4.5,5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 295 +- uid: 296 type: solid_wall components: - parent: 0 pos: 4.5,6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 296 +- uid: 297 type: solid_wall components: - parent: 0 pos: 4.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 297 +- uid: 298 type: solid_wall components: - parent: 0 pos: 4.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 298 +- uid: 299 type: solid_wall components: - parent: 0 pos: 1.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 299 +- uid: 300 type: solid_wall components: - parent: 0 pos: 0.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 300 +- uid: 301 type: solid_wall components: - parent: 0 pos: -0.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 301 +- uid: 302 type: solid_wall components: - parent: 0 pos: -1.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 302 +- uid: 303 type: solid_wall components: - parent: 0 pos: -2.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 303 +- uid: 304 type: solid_wall components: - parent: 0 pos: -3.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 304 +- uid: 305 type: solid_wall components: - parent: 0 pos: -4.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 305 +- uid: 306 type: solid_wall components: - parent: 0 pos: -5.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 306 +- uid: 307 type: solid_wall components: - parent: 0 pos: -6.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 307 +- uid: 308 type: solid_wall components: - parent: 0 pos: -7.5,8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 308 +- uid: 309 type: solid_wall components: - parent: 0 pos: -7.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 309 +- uid: 310 type: solid_wall components: - parent: 0 pos: -7.5,6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 310 +- uid: 311 type: solid_wall components: - parent: 0 pos: -7.5,5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 311 +- uid: 312 type: GlovesLeather components: - parent: 0 pos: -4.332221,4.64238 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 312 +- uid: 313 type: GlovesLeather components: - parent: 0 pos: -3.519721,4.64238 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 313 +- uid: 314 type: GlovesLeather components: - parent: 0 pos: -2.597846,4.61113 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 314 +- uid: 315 type: LedLightTube components: - parent: 0 pos: -3.511025,-10.35149 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - color: '#EEEEFFFF' type: Sprite -- uid: 315 +- uid: 316 type: LightTube components: - parent: 215 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 316 +- uid: 317 type: Poweredlight components: - parent: 0 pos: -1.5,8 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 317 + - 318 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 317 +- uid: 318 type: LightTube components: - - parent: 316 + - parent: 317 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 318 +- uid: 319 type: Poweredlight components: - parent: 0 pos: 4,3.5 rot: 3.14159265358979 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 319 + - 320 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 319 +- uid: 320 type: LightTube components: - - parent: 318 + - parent: 319 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 320 +- uid: 321 type: WallLight components: - parent: 0 pos: -7,-10.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 321 +- uid: 322 type: PoweredSmallLight components: - parent: 0 pos: -10,-5.5 rot: 3.14159265358979 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 322 + - 323 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 322 +- uid: 323 type: LightBulb components: - - parent: 321 + - parent: 322 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 323 +- uid: 324 type: solid_wall components: - parent: 0 pos: -15.5,2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 324 +- uid: 325 type: solid_wall components: - parent: 0 pos: -15.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 325 +- uid: 326 type: solid_wall components: - parent: 0 pos: -15.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 326 +- uid: 327 type: solid_wall components: - parent: 0 pos: -14.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 327 +- uid: 328 type: solid_wall components: - parent: 0 pos: -12.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 328 +- uid: 329 type: solid_wall components: - parent: 0 pos: -15.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 329 +- uid: 330 type: solid_wall components: - parent: 0 pos: -14.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 330 +- uid: 331 type: solid_wall components: - parent: 0 pos: -11.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 331 +- uid: 332 type: solid_wall components: - parent: 0 pos: -14.5,5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 332 +- uid: 333 type: solid_wall components: - parent: 0 pos: -14.5,6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 333 +- uid: 334 type: solid_wall components: - parent: 0 pos: -12.5,6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 334 +- uid: 335 type: solid_wall components: - parent: 0 pos: -12.5,5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 335 +- uid: 336 type: solid_wall components: - parent: 0 pos: -16.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 336 +- uid: 337 type: solid_wall components: - parent: 0 pos: -16.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 337 +- uid: 338 type: solid_wall components: - parent: 0 pos: -16.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 338 +- uid: 339 type: solid_wall components: - parent: 0 pos: -16.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 339 +- uid: 340 type: solid_wall components: - parent: 0 pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 340 +- uid: 341 type: solid_wall components: - parent: 0 pos: -16.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 341 +- uid: 342 type: solid_wall components: - parent: 0 pos: -16.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 342 +- uid: 343 type: solid_wall components: - parent: 0 pos: -16.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 343 +- uid: 344 type: solid_wall components: - parent: 0 pos: -16.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 344 +- uid: 345 type: solid_wall components: - parent: 0 pos: -16.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 345 +- uid: 346 type: solid_wall components: - parent: 0 pos: -16.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 346 +- uid: 347 type: solid_wall components: - parent: 0 pos: -15.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 347 +- uid: 348 type: solid_wall components: - parent: 0 pos: -14.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 348 +- uid: 349 type: solid_wall components: - parent: 0 pos: -13.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 349 +- uid: 350 type: solid_wall components: - parent: 0 pos: -12.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 350 +- uid: 351 type: solid_wall components: - parent: 0 pos: -11.5,-8.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 351 +- uid: 352 type: airlock_external components: - parent: 0 pos: -13.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 352 +- uid: 353 type: airlock_external components: - parent: 0 pos: -13.5,6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 353 +- uid: 354 type: airlock_engineering components: - parent: 0 pos: -13.5,1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 354 +- uid: 355 type: Table components: - parent: 0 pos: -15.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 355 +- uid: 356 type: Table components: - parent: 0 pos: -15.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 356 +- uid: 357 type: Wire components: - parent: 0 pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 357 +- uid: 358 type: Wire components: - parent: 0 pos: -13.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 358 +- uid: 359 type: Wire components: - parent: 0 pos: -9.5,3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 359 +- uid: 360 type: Table components: - parent: 0 pos: -15.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 360 +- uid: 361 type: Catwalk components: - parent: 0 pos: -14.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 361 +- uid: 362 type: Catwalk components: - parent: 0 pos: -13.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 362 +- uid: 363 type: Catwalk components: - parent: 0 pos: -12.5,7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 363 +- uid: 364 type: LockerToolFilled components: - parent: 0 pos: -11.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: - entities: - - 997 - - 999 - - 1000 - - 1001 - - 1002 - - 1003 - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - - IsPlaceable: False - type: PlaceableSurface -- uid: 364 - type: LockerToolFilled - components: - - parent: 0 - pos: -11.5,-4.5 - rot: -1.5707963267949 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - - containers: - EntityStorageComponent: - entities: - - 1004 - - 1006 - - 1007 - - 1008 - - 1009 - - 1010 - - 1011 - - 1012 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -4343,25 +2871,12 @@ entities: type: LockerToolFilled components: - parent: 0 - pos: -11.5,-3.5 + pos: -11.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: - entities: - - 1013 - - 1014 - - 1015 - - 1016 - - 1017 - - 1018 - - 1019 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -4370,21 +2885,12 @@ entities: type: LockerToolFilled components: - parent: 0 - pos: -11.5,-2.5 + pos: -11.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: - entities: - - 1020 - - 1021 - - 1022 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False @@ -4393,319 +2899,194 @@ entities: type: LockerToolFilled components: - parent: 0 - pos: -11.5,-1.5 + pos: -11.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: - entities: - - 1023 - - 1025 - - 1026 - - 1027 - - 1028 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - IsPlaceable: False type: PlaceableSurface - uid: 368 + type: LockerToolFilled + components: + - parent: 0 + pos: -11.5,-1.5 + rot: -1.5707963267949 rad + type: Transform + - containers: + EntityStorageComponent: + entities: [] + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface +- uid: 369 type: GlassStack components: - parent: 0 pos: -15.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 369 +- uid: 370 type: airlock_engineering components: - parent: 0 pos: -10.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 370 +- uid: 371 type: Autolathe components: - parent: 0 pos: -14.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 371 +- uid: 372 type: Autolathe components: - parent: 0 pos: -13.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 372 +- uid: 373 type: Autolathe components: - parent: 0 pos: -12.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 373 +- uid: 374 type: Poweredlight components: - parent: 0 pos: -11,-5.5 rot: 3.14159265358979 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 374 + - 375 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 374 +- uid: 375 type: LightTube components: - - parent: 373 + - parent: 374 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 375 +- uid: 376 type: Poweredlight components: - parent: 0 pos: -11,-0.5 rot: 3.14159265358979 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 376 + - 377 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 376 +- uid: 377 type: LightTube components: - - parent: 375 + - parent: 376 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 377 +- uid: 378 type: Poweredlight components: - parent: 0 pos: -16,-0.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 378 + - 379 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 378 +- uid: 379 type: LightTube components: - - parent: 377 + - parent: 378 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 379 +- uid: 380 type: Poweredlight components: - parent: 0 pos: -16,-5.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 380 + - 381 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 380 +- uid: 381 type: LightTube components: - - parent: 379 + - parent: 380 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 381 +- uid: 382 type: Poweredlight components: - parent: 0 pos: -15,3.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 382 + - 383 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 382 +- uid: 383 type: LightTube components: - - parent: 381 + - parent: 382 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 383 +- uid: 384 type: PoweredSmallLight components: - parent: 0 pos: -14.5,7 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 384 + - 385 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 384 +- uid: 385 type: LightBulb components: - - parent: 383 + - parent: 384 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 385 - type: CableStack - components: - - parent: 0 - pos: -15.5,-0.5 - rot: -1.5707963267949 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 386 type: CableStack components: @@ -4713,93 +3094,63 @@ entities: pos: -15.5,-0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 387 + type: CableStack + components: + - parent: 0 + pos: -15.5,-0.5 + rot: -1.5707963267949 rad + type: Transform +- uid: 388 type: Wire components: - parent: 0 pos: -14.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 388 +- uid: 389 type: Wire components: - parent: 0 pos: -12.5,-7.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 389 +- uid: 390 type: Catwalk components: - parent: 0 pos: -11.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 390 +- uid: 391 type: Catwalk components: - parent: 0 pos: -9.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 391 +- uid: 392 type: Poweredlight components: - parent: 0 pos: -10.5,4 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 392 + - 393 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 392 +- uid: 393 type: LightTube components: - - parent: 391 + - parent: 392 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 393 - type: MetalStack - components: - - parent: 0 - pos: -15.5,-4.5 - rot: -1.5707963267949 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 394 type: MetalStack components: @@ -4807,198 +3158,132 @@ entities: pos: -15.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 395 + type: MetalStack + components: + - parent: 0 + pos: -15.5,-4.5 + rot: -1.5707963267949 rad + type: Transform +- uid: 396 type: APC components: - parent: 0 pos: -9.5,4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 396 +- uid: 397 type: APC components: - parent: 0 pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 397 +- uid: 398 type: Wire components: - parent: 0 pos: -16.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 398 +- uid: 399 type: Wire components: - parent: 0 pos: -15.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 399 +- uid: 400 type: Wire components: - parent: 0 pos: -14.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 400 +- uid: 401 type: Wire components: - parent: 0 pos: -13.5,-2.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 401 +- uid: 402 type: Wire components: - parent: 0 pos: -13.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 402 +- uid: 403 type: Wire components: - parent: 0 pos: -13.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 403 +- uid: 404 type: Wire components: - parent: 0 pos: -13.5,-5.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 404 +- uid: 405 type: Wire components: - parent: 0 pos: -13.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 405 +- uid: 406 type: Wire components: - parent: 0 pos: -12.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 406 +- uid: 407 type: Wire components: - parent: 0 pos: -11.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 407 +- uid: 408 type: Wire components: - parent: 0 pos: -10.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 408 +- uid: 409 type: Wire components: - parent: 0 pos: -9.5,-6.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 409 +- uid: 410 type: Table components: - parent: 0 pos: -15.5,-4.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 410 +- uid: 411 type: Table components: - parent: 0 pos: -15.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 411 +- uid: 412 type: Table components: - parent: 0 pos: -15.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 412 - type: CableStack - components: - - parent: 0 - pos: -15.5,0.5 - rot: -1.5707963267949 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 413 type: CableStack components: @@ -5006,23 +3291,13 @@ entities: pos: -15.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 414 - type: GlassStack + type: CableStack components: - parent: 0 - pos: -15.5,-1.5 + pos: -15.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 415 type: GlassStack components: @@ -5030,3672 +3305,2395 @@ entities: pos: -15.5,-1.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - uid: 416 + type: GlassStack + components: + - parent: 0 + pos: -15.5,-1.5 + rot: -1.5707963267949 rad + type: Transform +- uid: 417 type: GlassStack components: - parent: 0 pos: -15.5,-3.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 417 +- uid: 418 type: VendingMachineEngivend components: - parent: 0 pos: -11.5,0.5 rot: -1.5707963267949 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - sprite: Buildings/VendingMachines/engivend.rsi type: Sprite -- uid: 418 +- uid: 419 type: Table components: - parent: 0 pos: 18.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 419 +- uid: 420 type: Table components: - parent: 0 pos: 21.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 420 +- uid: 421 type: Table components: - parent: 0 pos: 20.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 421 +- uid: 422 type: Table components: - parent: 0 pos: 18.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 422 +- uid: 423 type: Table components: - parent: 0 pos: 19.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 423 +- uid: 424 type: Table components: - parent: 0 pos: 18.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 424 +- uid: 425 type: Table components: - parent: 0 pos: 22.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 425 +- uid: 426 type: Table components: - parent: 0 pos: 24.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 426 +- uid: 427 type: ChairOfficeLight components: - parent: 0 pos: 19.5,4.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 427 +- uid: 428 type: ChairOfficeLight components: - parent: 0 pos: 20.5,5.5 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 428 +- uid: 429 type: ChairOfficeLight components: - parent: 0 pos: 23.5,8.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 429 +- uid: 430 type: ChairOfficeLight components: - parent: 0 pos: 24.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 430 +- uid: 431 type: Chair components: - parent: 0 pos: 14.5,6.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 431 +- uid: 432 type: Chair components: - parent: 0 pos: 14.5,8.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 432 +- uid: 433 type: Chair components: - parent: 0 pos: 14.5,7.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 433 +- uid: 434 type: chem_dispenser components: - parent: 0 pos: 23.5,9.5 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.4,-0.25,0.4,0.25 - type: Collidable - containers: ReagentDispenser-reagentContainerContainer: entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer -- uid: 434 +- uid: 435 type: Table components: - parent: 0 pos: 23.5,7.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 435 +- uid: 436 type: Catwalk components: - parent: 0 pos: 0.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 436 +- uid: 437 type: Table components: - parent: 0 pos: 25.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 437 +- uid: 438 type: Table components: - parent: 0 pos: 23.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 438 +- uid: 439 type: Table components: - parent: 0 pos: 24.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 439 +- uid: 440 type: Table components: - parent: 0 pos: 26.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 440 +- uid: 441 type: Table components: - parent: 0 pos: 27.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 441 +- uid: 442 type: ComputerMedicalRecords components: - parent: 0 pos: 21.5,5.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable -- uid: 442 +- uid: 443 type: MedicalScanner components: - parent: 0 pos: 18.5,-1.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,0,0.5,1 - type: Collidable - - containers: - MedicalScanner-bodyContainer: - entities: [] - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 443 - type: MedicalScanner - components: - - parent: 0 - pos: 18.5,-5.5 - rot: 3.141592653589793 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,0,0.5,1 - type: Collidable - containers: MedicalScanner-bodyContainer: entities: [] type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - uid: 444 + type: MedicalScanner + components: + - parent: 0 + pos: 18.5,-5.5 + rot: 3.141592653589793 rad + type: Transform + - containers: + MedicalScanner-bodyContainer: + entities: [] + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer +- uid: 445 type: Table components: - parent: 0 pos: 13.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 445 +- uid: 446 type: Table components: - parent: 0 pos: 13.5,0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 446 +- uid: 447 type: Table components: - parent: 0 pos: 13.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 447 +- uid: 448 type: solid_wall components: - parent: 0 pos: 22.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 448 +- uid: 449 type: solid_wall components: - parent: 0 pos: 17.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 449 +- uid: 450 type: solid_wall components: - parent: 0 pos: 18.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 450 +- uid: 451 type: solid_wall components: - parent: 0 pos: 20.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 451 +- uid: 452 type: solid_wall components: - parent: 0 pos: 21.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 452 +- uid: 453 type: solid_wall components: - parent: 0 pos: 19.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 453 +- uid: 454 type: solid_wall components: - parent: 0 pos: 14.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 454 +- uid: 455 type: solid_wall components: - parent: 0 pos: 13.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 455 +- uid: 456 type: solid_wall components: - parent: 0 pos: 12.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 456 +- uid: 457 type: solid_wall components: - parent: 0 pos: 12.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 457 +- uid: 458 type: solid_wall components: - parent: 0 pos: 12.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 458 +- uid: 459 type: solid_wall components: - parent: 0 pos: 12.5,0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 459 +- uid: 460 type: solid_wall components: - parent: 0 pos: 12.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 460 +- uid: 461 type: solid_wall components: - parent: 0 pos: 13.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 461 +- uid: 462 type: solid_wall components: - parent: 0 pos: 14.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 462 +- uid: 463 type: solid_wall components: - parent: 0 pos: 13.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 463 +- uid: 464 type: solid_wall components: - parent: 0 pos: 13.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 464 +- uid: 465 type: solid_wall components: - parent: 0 pos: 13.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 465 +- uid: 466 type: solid_wall components: - parent: 0 pos: 13.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 466 +- uid: 467 type: solid_wall components: - parent: 0 pos: 13.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 467 +- uid: 468 type: solid_wall components: - parent: 0 pos: 13.5,-2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 468 +- uid: 469 type: solid_wall components: - parent: 0 pos: 14.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 469 +- uid: 470 type: solid_wall components: - parent: 0 pos: 15.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 470 +- uid: 471 type: solid_wall components: - parent: 0 pos: 16.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 471 +- uid: 472 type: solid_wall components: - parent: 0 pos: 17.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 472 +- uid: 473 type: solid_wall components: - parent: 0 pos: 18.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 473 +- uid: 474 type: solid_wall components: - parent: 0 pos: 19.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 474 +- uid: 475 type: solid_wall components: - parent: 0 pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 475 +- uid: 476 type: solid_wall components: - parent: 0 pos: 21.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 476 +- uid: 477 type: solid_wall components: - parent: 0 pos: 22.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 477 +- uid: 478 type: solid_wall components: - parent: 0 pos: 23.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 478 +- uid: 479 type: solid_wall components: - parent: 0 pos: 24.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 479 +- uid: 480 type: solid_wall components: - parent: 0 pos: 25.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 480 +- uid: 481 type: solid_wall components: - parent: 0 pos: 26.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 481 +- uid: 482 type: solid_wall components: - parent: 0 pos: 26.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 482 +- uid: 483 type: solid_wall components: - parent: 0 pos: 26.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 483 +- uid: 484 type: solid_wall components: - parent: 0 pos: 27.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 484 +- uid: 485 type: solid_wall components: - parent: 0 pos: 28.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 485 +- uid: 486 type: solid_wall components: - parent: 0 pos: 29.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 486 +- uid: 487 type: solid_wall components: - parent: 0 pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 487 +- uid: 488 type: solid_wall components: - parent: 0 pos: 31.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 488 +- uid: 489 type: solid_wall components: - parent: 0 pos: 32.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 489 +- uid: 490 type: solid_wall components: - parent: 0 pos: 33.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 490 +- uid: 491 type: solid_wall components: - parent: 0 pos: 34.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 491 +- uid: 492 type: solid_wall components: - parent: 0 pos: 34.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 492 +- uid: 493 type: solid_wall components: - parent: 0 pos: 34.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 493 +- uid: 494 type: solid_wall components: - parent: 0 pos: 34.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 494 +- uid: 495 type: solid_wall components: - parent: 0 pos: 34.5,-2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 495 +- uid: 496 type: solid_wall components: - parent: 0 pos: 34.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 496 +- uid: 497 type: solid_wall components: - parent: 0 pos: 34.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 497 +- uid: 498 type: solid_wall components: - parent: 0 pos: 33.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 498 +- uid: 499 type: solid_wall components: - parent: 0 pos: 32.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 499 +- uid: 500 type: solid_wall components: - parent: 0 pos: 31.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 500 +- uid: 501 type: solid_wall components: - parent: 0 pos: 30.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 501 +- uid: 502 type: solid_wall components: - parent: 0 pos: 29.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 502 +- uid: 503 type: solid_wall components: - parent: 0 pos: 30.5,0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 503 +- uid: 504 type: solid_wall components: - parent: 0 pos: 30.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 504 +- uid: 505 type: solid_wall components: - parent: 0 pos: 30.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 505 +- uid: 506 type: solid_wall components: - parent: 0 pos: 30.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 506 +- uid: 507 type: solid_wall components: - parent: 0 pos: 30.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 507 +- uid: 508 type: solid_wall components: - parent: 0 pos: 29.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 508 +- uid: 509 type: solid_wall components: - parent: 0 pos: 28.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 509 +- uid: 510 type: solid_wall components: - parent: 0 pos: 27.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 510 +- uid: 511 type: solid_wall components: - parent: 0 pos: 27.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 511 +- uid: 512 type: solid_wall components: - parent: 0 pos: 26.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 512 +- uid: 513 type: solid_wall components: - parent: 0 pos: 25.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 513 +- uid: 514 type: solid_wall components: - parent: 0 pos: 26.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 514 +- uid: 515 type: solid_wall components: - parent: 0 pos: 26.5,-2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 515 +- uid: 516 type: solid_wall components: - parent: 0 pos: 28.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 516 +- uid: 517 type: solid_wall components: - parent: 0 pos: 28.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 517 +- uid: 518 type: solid_wall components: - parent: 0 pos: 28.5,7.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 518 +- uid: 519 type: solid_wall components: - parent: 0 pos: 28.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 519 +- uid: 520 type: solid_wall components: - parent: 0 pos: 28.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 520 +- uid: 521 type: solid_wall components: - parent: 0 pos: 28.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 521 +- uid: 522 type: solid_wall components: - parent: 0 pos: 28.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 522 +- uid: 523 type: solid_wall components: - parent: 0 pos: 27.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 523 +- uid: 524 type: solid_wall components: - parent: 0 pos: 26.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 524 +- uid: 525 type: solid_wall components: - parent: 0 pos: 25.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 525 +- uid: 526 type: solid_wall components: - parent: 0 pos: 24.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 526 +- uid: 527 type: solid_wall components: - parent: 0 pos: 23.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 527 +- uid: 528 type: solid_wall components: - parent: 0 pos: 22.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 528 +- uid: 529 type: solid_wall components: - parent: 0 pos: 21.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 529 +- uid: 530 type: solid_wall components: - parent: 0 pos: 22.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 530 +- uid: 531 type: solid_wall components: - parent: 0 pos: 22.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 531 +- uid: 532 type: solid_wall components: - parent: 0 pos: 22.5,7.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 532 +- uid: 533 type: solid_wall components: - parent: 0 pos: 22.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 533 +- uid: 534 type: solid_wall components: - parent: 0 pos: 22.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 534 +- uid: 535 type: solid_wall components: - parent: 0 pos: 22.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 535 +- uid: 536 type: solid_wall components: - parent: 0 pos: 22.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 536 +- uid: 537 type: solid_wall components: - parent: 0 pos: 21.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 537 +- uid: 538 type: solid_wall components: - parent: 0 pos: 19.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 538 +- uid: 539 type: solid_wall components: - parent: 0 pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 539 +- uid: 540 type: solid_wall components: - parent: 0 pos: 17.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 540 +- uid: 541 type: solid_wall components: - parent: 0 pos: 23.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 541 +- uid: 542 type: solid_wall components: - parent: 0 pos: 25.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 542 +- uid: 543 type: solid_wall components: - parent: 0 pos: 13.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 543 +- uid: 544 type: solid_wall components: - parent: 0 pos: 13.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 544 +- uid: 545 type: solid_wall components: - parent: 0 pos: 13.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 545 +- uid: 546 type: solid_wall components: - parent: 0 pos: 13.5,7.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 546 +- uid: 547 type: solid_wall components: - parent: 0 pos: 13.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 547 +- uid: 548 type: solid_wall components: - parent: 0 pos: 13.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 548 +- uid: 549 type: solid_wall components: - parent: 0 pos: 14.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 549 +- uid: 550 type: solid_wall components: - parent: 0 pos: 13.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 550 +- uid: 551 type: solid_wall components: - parent: 0 pos: 12.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 551 +- uid: 552 type: solid_wall components: - parent: 0 pos: 11.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 552 +- uid: 553 type: solid_wall components: - parent: 0 pos: 10.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 553 +- uid: 554 type: solid_wall components: - parent: 0 pos: 9.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 554 +- uid: 555 type: solid_wall components: - parent: 0 pos: 8.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 555 +- uid: 556 type: solid_wall components: - parent: 0 pos: 7.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 556 +- uid: 557 type: solid_wall components: - parent: 0 pos: 6.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 557 +- uid: 558 type: solid_wall components: - parent: 0 pos: 5.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 558 +- uid: 559 type: solid_wall components: - parent: 0 pos: 4.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 559 +- uid: 560 type: solid_wall components: - parent: 0 pos: 5.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 560 +- uid: 561 type: solid_wall components: - parent: 0 pos: 6.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 561 +- uid: 562 type: solid_wall components: - parent: 0 pos: 7.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 562 +- uid: 563 type: solid_wall components: - parent: 0 pos: 8.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 563 +- uid: 564 type: solid_wall components: - parent: 0 pos: 9.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 564 +- uid: 565 type: solid_wall components: - parent: 0 pos: 10.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 565 +- uid: 566 type: solid_wall components: - parent: 0 pos: 11.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 566 +- uid: 567 type: solid_wall components: - parent: 0 pos: 12.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 567 +- uid: 568 type: solid_wall components: - parent: 0 pos: 4.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 568 +- uid: 569 type: solid_wall components: - parent: 0 pos: 1.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 569 +- uid: 570 type: solid_wall components: - parent: 0 pos: 1.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 570 +- uid: 571 type: solid_wall components: - parent: 0 pos: 0.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 571 +- uid: 572 type: solid_wall components: - parent: 0 pos: -0.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 572 +- uid: 573 type: solid_wall components: - parent: 0 pos: -1.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 573 +- uid: 574 type: solid_wall components: - parent: 0 pos: -2.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 574 +- uid: 575 type: solid_wall components: - parent: 0 pos: -3.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 575 +- uid: 576 type: solid_wall components: - parent: 0 pos: -4.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 576 +- uid: 577 type: solid_wall components: - parent: 0 pos: -5.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 577 +- uid: 578 type: solid_wall components: - parent: 0 pos: -6.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 578 +- uid: 579 type: solid_wall components: - parent: 0 pos: -7.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 579 +- uid: 580 type: solid_wall components: - parent: 0 pos: 1.5,12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 580 +- uid: 581 type: solid_wall components: - parent: 0 pos: 1.5,13.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 581 +- uid: 582 type: solid_wall components: - parent: 0 pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 582 +- uid: 583 type: Catwalk components: - parent: 0 pos: 5.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 583 +- uid: 584 type: Catwalk components: - parent: 0 pos: 12.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 584 +- uid: 585 type: Table components: - parent: 0 pos: 23.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 585 +- uid: 586 type: Table components: - parent: 0 pos: 23.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 586 +- uid: 587 type: airlock_medical_glass components: - parent: 0 pos: 15.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 587 +- uid: 588 type: airlock_medical_glass components: - parent: 0 pos: 16.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 588 +- uid: 589 type: airlock_medical_glass components: - parent: 0 pos: 20.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 589 +- uid: 590 type: airlock_medical_glass components: - parent: 0 pos: 26.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 590 +- uid: 591 type: Beaker components: - parent: 0 pos: 26.416822,10.651619 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 591 +- uid: 592 type: Beaker components: - parent: 0 pos: 24.541822,10.635994 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 592 +- uid: 593 type: Beaker components: - parent: 0 pos: 25.291822,10.667244 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 593 +- uid: 594 type: Wire components: - parent: 0 pos: 1.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 594 +- uid: 595 type: Wire components: - parent: 0 pos: 2.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 595 +- uid: 596 type: Wire components: - parent: 0 pos: 2.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 596 +- uid: 597 type: Wire components: - parent: 0 pos: 2.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 597 +- uid: 598 type: Wire components: - parent: 0 pos: 2.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 598 +- uid: 599 type: Wire components: - parent: 0 pos: 2.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 599 +- uid: 600 type: Wire components: - parent: 0 pos: 2.5,7.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 600 +- uid: 601 type: Wire components: - parent: 0 pos: 2.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 601 +- uid: 602 type: Wire components: - parent: 0 pos: 2.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 602 +- uid: 603 type: Wire components: - parent: 0 pos: 3.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 603 +- uid: 604 type: Wire components: - parent: 0 pos: 4.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 604 +- uid: 605 type: Wire components: - parent: 0 pos: 5.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 605 +- uid: 606 type: Wire components: - parent: 0 pos: 5.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 606 +- uid: 607 type: Wire components: - parent: 0 pos: 6.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 607 +- uid: 608 type: Wire components: - parent: 0 pos: 7.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 608 +- uid: 609 type: Wire components: - parent: 0 pos: 8.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 609 +- uid: 610 type: Wire components: - parent: 0 pos: 9.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 610 +- uid: 611 type: Wire components: - parent: 0 pos: 10.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 611 +- uid: 612 type: Wire components: - parent: 0 pos: 11.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 612 +- uid: 613 type: Wire components: - parent: 0 pos: 12.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 613 +- uid: 614 type: Wire components: - parent: 0 pos: 12.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 614 +- uid: 615 type: Wire components: - parent: 0 pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 615 +- uid: 616 type: Wire components: - parent: 0 pos: 14.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 616 +- uid: 617 type: Wire components: - parent: 0 pos: 15.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 617 +- uid: 618 type: Wire components: - parent: 0 pos: 16.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 618 +- uid: 619 type: Wire components: - parent: 0 pos: 16.5,9.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 619 +- uid: 620 type: Wire components: - parent: 0 pos: 16.5,8.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 620 +- uid: 621 type: Wire components: - parent: 0 pos: 16.5,7.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 621 +- uid: 622 type: Wire components: - parent: 0 pos: 16.5,6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 622 +- uid: 623 type: Wire components: - parent: 0 pos: 16.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 623 +- uid: 624 type: Wire components: - parent: 0 pos: 16.5,4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 624 +- uid: 625 type: Wire components: - parent: 0 pos: 16.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 625 +- uid: 626 type: Wire components: - parent: 0 pos: 16.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 626 +- uid: 627 type: Wire components: - parent: 0 pos: 17.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 627 +- uid: 628 type: Wire components: - parent: 0 pos: 18.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 628 +- uid: 629 type: Wire components: - parent: 0 pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 629 +- uid: 630 type: APC components: - parent: 0 pos: 18.5,3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 630 +- uid: 631 type: Wire components: - parent: 0 pos: 1.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 631 +- uid: 632 type: Wire components: - parent: 0 pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 632 +- uid: 633 type: APC components: - parent: 0 pos: 1.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 633 +- uid: 634 type: Airlock components: - parent: 0 pos: 1.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 634 +- uid: 635 type: Airlock components: - parent: 0 pos: 4.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 635 +- uid: 636 type: Airlock components: - parent: 0 pos: 13.5,10.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 636 +- uid: 637 type: APC components: - parent: 0 pos: 13.5,6.5 type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 637 +- uid: 638 type: Wire components: - parent: 0 pos: 13.5,6.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 638 +- uid: 639 type: APC components: - parent: 0 pos: 28.5,8.5 type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 639 +- uid: 640 type: Wire components: - parent: 0 pos: 25.5,4.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 640 +- uid: 641 type: Poweredlight components: - parent: 0 pos: 17.5,4 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 641 + - 642 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 641 +- uid: 642 type: LightTube components: - - parent: 640 + - parent: 641 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 642 +- uid: 643 type: Poweredlight components: - parent: 0 pos: 22.5,3 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 643 + - 644 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 643 +- uid: 644 type: LightTube components: - - parent: 642 + - parent: 643 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 644 +- uid: 645 type: Poweredlight components: - parent: 0 pos: 13.5,3 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 645 + - 646 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 645 +- uid: 646 type: LightTube components: - - parent: 644 + - parent: 645 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 646 +- uid: 647 type: Wire components: - parent: 0 pos: 27.5,8.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 647 +- uid: 648 type: Wire components: - parent: 0 pos: 26.5,8.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 648 +- uid: 649 type: Wire components: - parent: 0 pos: 15.5,8.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 649 +- uid: 650 type: Wire components: - parent: 0 pos: 14.5,8.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 650 +- uid: 651 type: Wire components: - parent: 0 pos: 13.5,8.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 651 +- uid: 652 type: Wire components: - parent: 0 pos: 15.5,6.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 652 +- uid: 653 type: Wire components: - parent: 0 pos: 14.5,6.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 653 +- uid: 654 type: APC components: - parent: 0 pos: 30.5,2.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 654 +- uid: 655 type: Wire components: - parent: 0 pos: 19.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 655 +- uid: 656 type: Wire components: - parent: 0 pos: 20.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 656 +- uid: 657 type: Wire components: - parent: 0 pos: 21.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 657 +- uid: 658 type: Wire components: - parent: 0 pos: 22.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 658 +- uid: 659 type: Wire components: - parent: 0 pos: 23.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 659 +- uid: 660 type: Wire components: - parent: 0 pos: 24.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 660 +- uid: 661 type: Wire components: - parent: 0 pos: 25.5,2.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 661 +- uid: 662 type: Wire components: - parent: 0 pos: 25.5,3.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 662 +- uid: 663 type: Poweredlight components: - parent: 0 pos: 14,9.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 663 + - 664 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 663 +- uid: 664 type: LightTube components: - - parent: 662 + - parent: 663 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 664 +- uid: 665 type: Poweredlight components: - parent: 0 pos: 22,9.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 665 + - 666 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 665 +- uid: 666 type: LightTube components: - - parent: 664 + - parent: 665 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 666 +- uid: 667 type: Wire components: - parent: 0 pos: 30.5,2.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 667 +- uid: 668 type: Wire components: - parent: 0 pos: 29.5,2.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 668 +- uid: 669 type: Poweredlight components: - parent: 0 pos: 16.5,-6 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 669 + - 670 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 669 +- uid: 670 type: LightTube components: - - parent: 668 + - parent: 669 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 670 +- uid: 671 type: Table components: - parent: 0 pos: 23.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 671 +- uid: 672 type: Table components: - parent: 0 pos: 24.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 672 +- uid: 673 type: APC components: - parent: 0 pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 673 +- uid: 674 type: Wire components: - parent: 0 pos: 16.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 674 +- uid: 675 type: Wire components: - parent: 0 pos: 16.5,0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 675 +- uid: 676 type: Wire components: - parent: 0 pos: 16.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 676 +- uid: 677 type: Wire components: - parent: 0 pos: 16.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 677 +- uid: 678 type: Wire components: - parent: 0 pos: 16.5,-2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 678 +- uid: 679 type: Wire components: - parent: 0 pos: 16.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 679 +- uid: 680 type: Wire components: - parent: 0 pos: 17.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 680 +- uid: 681 type: Wire components: - parent: 0 pos: 18.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 681 +- uid: 682 type: Wire components: - parent: 0 pos: 19.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 682 +- uid: 683 type: Wire components: - parent: 0 pos: 20.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 683 +- uid: 684 type: Wire components: - parent: 0 pos: 20.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 684 +- uid: 685 type: Wire components: - parent: 0 pos: 20.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 685 +- uid: 686 type: Wire components: - parent: 0 pos: 20.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 686 +- uid: 687 type: Wire components: - parent: 0 pos: 21.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 687 +- uid: 688 type: Wire components: - parent: 0 pos: 22.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 688 +- uid: 689 type: Wire components: - parent: 0 pos: 23.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 689 +- uid: 690 type: Wire components: - parent: 0 pos: 24.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 690 +- uid: 691 type: Wire components: - parent: 0 pos: 25.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 691 +- uid: 692 type: Wire components: - parent: 0 pos: 26.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 692 +- uid: 693 type: Wire components: - parent: 0 pos: 27.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 693 +- uid: 694 type: Wire components: - parent: 0 pos: 28.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 694 +- uid: 695 type: Wire components: - parent: 0 pos: 29.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 695 +- uid: 696 type: Wire components: - parent: 0 pos: 30.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 696 +- uid: 697 type: Wire components: - parent: 0 pos: 30.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 697 +- uid: 698 type: Wire components: - parent: 0 pos: 30.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 698 +- uid: 699 type: Wire components: - parent: 0 pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 699 +- uid: 700 type: APC components: - parent: 0 pos: 30.5,-6.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 700 +- uid: 701 type: Poweredlight components: - parent: 0 pos: 31.5,-6 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 701 + - 702 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 701 +- uid: 702 type: LightTube components: - - parent: 700 + - parent: 701 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 702 +- uid: 703 type: Poweredlight components: - parent: 0 pos: 30,1.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 703 + - 704 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 703 +- uid: 704 type: LightTube components: - - parent: 702 + - parent: 703 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 704 +- uid: 705 type: Wire components: - parent: 0 pos: 26.5,2.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 705 +- uid: 706 type: Wire components: - parent: 0 pos: 27.5,2.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 706 +- uid: 707 type: Wire components: - parent: 0 pos: 28.5,2.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 707 +- uid: 708 type: Wire components: - parent: 0 pos: 28.5,8.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 708 +- uid: 709 type: Wire components: - parent: 0 pos: 25.5,5.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 709 +- uid: 710 type: Wire components: - parent: 0 pos: 25.5,6.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 710 +- uid: 711 type: Wire components: - parent: 0 pos: 25.5,7.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 711 +- uid: 712 type: Wire components: - parent: 0 pos: 25.5,8.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 712 +- uid: 713 type: Poweredlight components: - parent: 0 pos: 28,7.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 713 + - 714 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 713 +- uid: 714 type: LightTube components: - - parent: 712 + - parent: 713 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 714 +- uid: 715 type: VendingMachineMedical components: - parent: 0 pos: 29.5,3.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - - sprite: Buildings/VendingMachines/medical.rsi - type: Sprite -- uid: 715 - type: VendingMachineMedical - components: - - parent: 0 - pos: 27.5,-5.5 - rot: 3.141592653589793 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - sprite: Buildings/VendingMachines/medical.rsi type: Sprite - uid: 716 type: VendingMachineMedical components: - parent: 0 - pos: 25.5,-5.5 + pos: 27.5,-5.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - sprite: Buildings/VendingMachines/medical.rsi type: Sprite - uid: 717 type: VendingMachineMedical components: + - parent: 0 + pos: 25.5,-5.5 + rot: 3.141592653589793 rad + type: Transform + - sprite: Buildings/VendingMachines/medical.rsi + type: Sprite +- uid: 718 + type: VendingMachineWallMedical + components: - parent: 0 pos: 1.5,-3.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - sprite: Buildings/VendingMachines/wallmed.rsi type: Sprite -- uid: 718 +- uid: 719 type: MedkitFilled components: - parent: 0 pos: 13.460339,0.6141751 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 1029 - - 1030 - - 1031 - - 1032 - - 1033 - - 1034 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 30 - type: Storage -- uid: 719 +- uid: 720 type: MedkitFilled components: - parent: 0 pos: 13.632214,1.5673001 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - containers: storagebase: - entities: - - 1035 - - 1036 - - 1037 - - 1038 - - 1039 - - 1040 + entities: [] type: Robust.Server.GameObjects.Components.Container.Container type: ContainerContainer - - used: 30 - type: Storage -- uid: 720 +- uid: 721 type: ComputerMedicalRecords components: - parent: 0 pos: 22.5,-5.5 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable -- uid: 721 +- uid: 722 type: Poweredlight components: - parent: 0 pos: 23.5,-6 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 722 + - 723 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 722 +- uid: 723 type: LightTube components: - - parent: 721 + - parent: 722 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 723 +- uid: 724 type: Brutepack components: - parent: 0 pos: 18.476385,4.841032 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 724 +- uid: 725 type: Brutepack components: - parent: 0 pos: 18.601385,5.512907 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 725 +- uid: 726 type: Ointment components: - parent: 0 pos: 18.49201,6.059782 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 726 +- uid: 727 type: Ointment components: - parent: 0 pos: 18.77326,6.653532 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 727 +- uid: 728 type: spawn_point_latejoin components: - parent: 0 pos: 17.5,8.5 rot: 1.5707963267948966 rad type: Transform -- uid: 728 +- uid: 729 type: spawn_point_latejoin components: - parent: 0 pos: 19.5,-3.5 rot: 1.5707963267948966 rad type: Transform -- uid: 729 +- uid: 730 type: Table components: - parent: 0 pos: 33.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 730 +- uid: 731 type: Table components: - parent: 0 pos: 33.5,-2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 731 +- uid: 732 type: Table components: - parent: 0 pos: 33.5,-3.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 732 +- uid: 733 type: Table components: - parent: 0 pos: 33.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 733 +- uid: 734 type: Table components: - parent: 0 pos: 33.5,-5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 734 +- uid: 735 type: LargeBeaker components: - parent: 0 pos: 33.18525,-5.681699 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 735 +- uid: 736 type: LargeBeaker components: - parent: 0 pos: 33.294624,-5.181699 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 736 +- uid: 737 type: LargeBeaker components: - parent: 0 pos: 33.544624,-5.572324 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 737 +- uid: 738 type: Beaker components: - parent: 0 pos: 33.357124,-4.837949 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 738 +- uid: 739 type: Beaker components: - parent: 0 pos: 33.357124,-4.166074 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 739 +- uid: 740 type: Beaker components: - parent: 0 pos: 33.388374,-4.431699 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 740 +- uid: 741 type: Beaker components: - parent: 0 pos: 33.62275,-4.228574 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 741 +- uid: 742 type: Beaker components: - parent: 0 pos: 33.62275,-4.634824 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 742 +- uid: 743 type: CrateMedical components: - parent: 0 pos: 32.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.4,-0.4,0.4,0.4 - type: Collidable - - containers: - EntityStorageComponent: - entities: [] - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - - IsPlaceable: False - type: PlaceableSurface -- uid: 743 - type: CrateMedical - components: - - parent: 0 - pos: 31.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.4,-0.4,0.4,0.4 - type: Collidable - containers: EntityStorageComponent: entities: [] @@ -8704,18 +5702,12 @@ entities: - IsPlaceable: False type: PlaceableSurface - uid: 744 - type: LockerMedical + type: CrateMedical components: - parent: 0 - pos: 30.5,-1.5 + pos: 31.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: entities: [] @@ -8727,15 +5719,9 @@ entities: type: LockerMedical components: - parent: 0 - pos: 29.5,-1.5 + pos: 30.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: entities: [] @@ -8747,15 +5733,9 @@ entities: type: LockerMedical components: - parent: 0 - pos: 27.5,5.5 + pos: 29.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: entities: [] @@ -8764,18 +5744,12 @@ entities: - IsPlaceable: False type: PlaceableSurface - uid: 747 - type: LockerChemistry + type: LockerMedical components: - parent: 0 - pos: 27.5,6.5 + pos: 27.5,5.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: entities: [] @@ -8784,1458 +5758,930 @@ entities: - IsPlaceable: False type: PlaceableSurface - uid: 748 + type: LockerChemistry + components: + - parent: 0 + pos: 27.5,6.5 + rot: -1.5707963267948966 rad + type: Transform + - containers: + EntityStorageComponent: + entities: [] + type: Robust.Server.GameObjects.Components.Container.Container + type: ContainerContainer + - IsPlaceable: False + type: PlaceableSurface +- uid: 749 type: solid_wall components: - parent: 0 pos: 4.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 749 +- uid: 750 type: solid_wall components: - parent: 0 pos: 4.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 750 +- uid: 751 type: solid_wall components: - parent: 0 pos: 4.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 751 +- uid: 752 type: solid_wall components: - parent: 0 pos: 4.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 752 +- uid: 753 type: solid_wall components: - parent: 0 pos: 4.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 753 +- uid: 754 type: solid_wall components: - parent: 0 pos: 4.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 754 +- uid: 755 type: solid_wall components: - parent: 0 pos: 4.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 755 +- uid: 756 type: solid_wall components: - parent: 0 pos: 4.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 756 +- uid: 757 type: solid_wall components: - parent: 0 pos: 4.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 757 +- uid: 758 type: solid_wall components: - parent: 0 pos: 4.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 758 +- uid: 759 type: solid_wall components: - parent: 0 pos: 7.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 759 +- uid: 760 type: solid_wall components: - parent: 0 pos: 7.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 760 +- uid: 761 type: solid_wall components: - parent: 0 pos: 7.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 761 +- uid: 762 type: solid_wall components: - parent: 0 pos: 7.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 762 +- uid: 763 type: solid_wall components: - parent: 0 pos: 7.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 763 +- uid: 764 type: solid_wall components: - parent: 0 pos: 8.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 764 +- uid: 765 type: solid_wall components: - parent: 0 pos: 10.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 765 +- uid: 766 type: solid_wall components: - parent: 0 pos: 11.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 766 +- uid: 767 type: solid_wall components: - parent: 0 pos: 12.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 767 +- uid: 768 type: solid_wall components: - parent: 0 pos: 13.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 768 +- uid: 769 type: solid_wall components: - parent: 0 pos: 14.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 769 +- uid: 770 type: solid_wall components: - parent: 0 pos: 15.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 770 +- uid: 771 type: solid_wall components: - parent: 0 pos: 14.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 771 +- uid: 772 type: solid_wall components: - parent: 0 pos: 14.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 772 +- uid: 773 type: solid_wall components: - parent: 0 pos: 14.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 773 +- uid: 774 type: solid_wall components: - parent: 0 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 774 +- uid: 775 type: solid_wall components: - parent: 0 pos: 15.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 775 +- uid: 776 type: solid_wall components: - parent: 0 pos: 17.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 776 +- uid: 777 type: solid_wall components: - parent: 0 pos: 17.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 777 +- uid: 778 type: solid_wall components: - parent: 0 pos: 18.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 778 +- uid: 779 type: solid_wall components: - parent: 0 pos: 18.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 779 +- uid: 780 type: solid_wall components: - parent: 0 pos: 18.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 780 +- uid: 781 type: solid_wall components: - parent: 0 pos: 18.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 781 +- uid: 782 type: solid_wall components: - parent: 0 pos: 18.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 782 +- uid: 783 type: solid_wall components: - parent: 0 pos: 18.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 783 +- uid: 784 type: solid_wall components: - parent: 0 pos: 18.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 784 +- uid: 785 type: solid_wall components: - parent: 0 pos: 18.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 785 +- uid: 786 type: solid_wall components: - parent: 0 pos: 19.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 786 +- uid: 787 type: solid_wall components: - parent: 0 pos: 20.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 787 +- uid: 788 type: solid_wall components: - parent: 0 pos: 21.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 788 +- uid: 789 type: solid_wall components: - parent: 0 pos: 22.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 789 +- uid: 790 type: solid_wall components: - parent: 0 pos: 23.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 790 +- uid: 791 type: solid_wall components: - parent: 0 pos: 24.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 791 +- uid: 792 type: solid_wall components: - parent: 0 pos: 25.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 792 +- uid: 793 type: solid_wall components: - parent: 0 pos: 26.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 793 +- uid: 794 type: solid_wall components: - parent: 0 pos: 27.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 794 +- uid: 795 type: solid_wall components: - parent: 0 pos: 28.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 795 +- uid: 796 type: solid_wall components: - parent: 0 pos: 6.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 796 +- uid: 797 type: solid_wall components: - parent: 0 pos: 7.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 797 +- uid: 798 type: solid_wall components: - parent: 0 pos: 14.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 798 +- uid: 799 type: solid_wall components: - parent: 0 pos: 14.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 799 +- uid: 800 type: solid_wall components: - parent: 0 pos: 8.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 800 +- uid: 801 type: solid_wall components: - parent: 0 pos: 9.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 801 +- uid: 802 type: solid_wall components: - parent: 0 pos: 10.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 802 +- uid: 803 type: solid_wall components: - parent: 0 pos: 11.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 803 +- uid: 804 type: solid_wall components: - parent: 0 pos: 12.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 804 +- uid: 805 type: solid_wall components: - parent: 0 pos: 13.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 805 +- uid: 806 type: solid_wall components: - parent: 0 pos: 14.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 806 +- uid: 807 type: solid_wall components: - parent: 0 pos: 14.5,25.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 807 +- uid: 808 type: solid_wall components: - parent: 0 pos: 14.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 808 +- uid: 809 type: solid_wall components: - parent: 0 pos: 14.5,27.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 809 +- uid: 810 type: solid_wall components: - parent: 0 pos: 14.5,28.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 810 +- uid: 811 type: solid_wall components: - parent: 0 pos: 18.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 811 +- uid: 812 type: solid_wall components: - parent: 0 pos: 18.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 812 +- uid: 813 type: solid_wall components: - parent: 0 pos: 18.5,25.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 813 +- uid: 814 type: solid_wall components: - parent: 0 pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 814 +- uid: 815 type: solid_wall components: - parent: 0 pos: 18.5,27.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 815 +- uid: 816 type: solid_wall components: - parent: 0 pos: 18.5,28.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 816 +- uid: 817 type: solid_wall components: - parent: 0 pos: 13.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 817 +- uid: 818 type: solid_wall components: - parent: 0 pos: 12.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 818 +- uid: 819 type: solid_wall components: - parent: 0 pos: 11.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 819 +- uid: 820 type: solid_wall components: - parent: 0 pos: 10.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 820 +- uid: 821 type: solid_wall components: - parent: 0 pos: 9.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 821 +- uid: 822 type: solid_wall components: - parent: 0 pos: 8.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 822 +- uid: 823 type: solid_wall components: - parent: 0 pos: 4.5,28.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 823 +- uid: 824 type: solid_wall components: - parent: 0 pos: 10.5,25.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 824 +- uid: 825 type: solid_wall components: - parent: 0 pos: 10.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 825 +- uid: 826 type: solid_wall components: - parent: 0 pos: 10.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 826 +- uid: 827 type: solid_wall components: - parent: 0 pos: 4.5,25.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 827 +- uid: 828 type: solid_wall components: - parent: 0 pos: 4.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 828 +- uid: 829 type: solid_wall components: - parent: 0 pos: 4.5,27.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 829 +- uid: 830 type: solid_wall components: - parent: 0 pos: 7.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 830 +- uid: 831 type: solid_wall components: - parent: 0 pos: 7.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 831 +- uid: 832 type: solid_wall components: - parent: 0 pos: 7.5,27.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 832 +- uid: 833 type: solid_wall components: - parent: 0 pos: 7.5,28.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 833 +- uid: 834 type: Catwalk components: - parent: 0 pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 834 +- uid: 835 type: Catwalk components: - parent: 0 pos: 6.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 835 +- uid: 836 type: Catwalk components: - parent: 0 pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 836 +- uid: 837 type: solid_wall components: - parent: 0 pos: 1.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 837 +- uid: 838 type: solid_wall components: - parent: 0 pos: 1.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 838 +- uid: 839 type: solid_wall components: - parent: 0 pos: 1.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 839 +- uid: 840 type: solid_wall components: - parent: 0 pos: 1.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 840 +- uid: 841 type: solid_wall components: - parent: 0 pos: 1.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 841 +- uid: 842 type: solid_wall components: - parent: 0 pos: 1.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 842 +- uid: 843 type: solid_wall components: - parent: 0 pos: 1.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 843 +- uid: 844 type: solid_wall components: - parent: 0 pos: 1.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 844 +- uid: 845 type: solid_wall components: - parent: 0 pos: 1.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 845 +- uid: 846 type: Wire components: - parent: 0 pos: 2.5,11.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 846 +- uid: 847 type: Wire components: - parent: 0 pos: 2.5,12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 847 +- uid: 848 type: Wire components: - parent: 0 pos: 2.5,13.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 848 +- uid: 849 type: Wire components: - parent: 0 pos: 3.5,13.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 849 +- uid: 850 type: Wire components: - parent: 0 pos: 4.5,13.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 850 +- uid: 851 type: Wire components: - parent: 0 pos: 6.5,27.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 851 +- uid: 852 type: Wire components: - parent: 0 pos: 6.5,28.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 852 +- uid: 853 type: Wire components: - parent: 0 pos: 5.5,14.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 853 +- uid: 854 type: Wire components: - parent: 0 pos: 5.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 854 +- uid: 855 type: Wire components: - parent: 0 pos: 5.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 855 +- uid: 856 type: Wire components: - parent: 0 pos: 6.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 856 +- uid: 857 type: Wire components: - parent: 0 pos: 6.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 857 +- uid: 858 type: Wire components: - parent: 0 pos: 6.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 858 +- uid: 859 type: Wire components: - parent: 0 pos: 6.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 859 +- uid: 860 type: Wire components: - parent: 0 pos: 6.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 860 +- uid: 861 type: Wire components: - parent: 0 pos: 6.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 861 +- uid: 862 type: Wire components: - parent: 0 pos: 6.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 862 +- uid: 863 type: Wire components: - parent: 0 pos: 6.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 863 +- uid: 864 type: Wire components: - parent: 0 pos: 6.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 864 +- uid: 865 type: Wire components: - parent: 0 pos: 6.5,25.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 865 +- uid: 866 type: Wire components: - parent: 0 pos: 6.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 866 +- uid: 867 type: Wire components: - parent: 0 pos: 5.5,13.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 867 +- uid: 868 type: airlock_science_glass components: - parent: 0 pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 868 +- uid: 869 type: airlock_science components: - parent: 0 pos: 14.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 869 +- uid: 870 type: airlock_science components: - parent: 0 pos: 16.5,18.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 870 +- uid: 871 type: airlock_science components: - parent: 0 pos: 16.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 871 +- uid: 872 type: Airlock components: - parent: 0 pos: 5.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 872 +- uid: 873 type: Airlock components: - parent: 0 pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 873 +- uid: 874 type: Table components: - parent: 0 pos: 9.5,15.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 874 +- uid: 875 type: Poweredlight components: - parent: 0 pos: 6.5,12 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 875 + - 876 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 875 +- uid: 876 type: LightTube components: - - parent: 874 + - parent: 875 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 876 +- uid: 877 type: Poweredlight components: - parent: 0 pos: 12.5,12 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - - color: '#FFFFFFFF' - type: PointLight - - containers: - light_bulb: - entities: - - 877 - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - - load: 40 - type: PowerDevice -- uid: 877 - type: LightTube - components: - - parent: 876 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 878 - type: LightTube - components: - - parent: 879 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 879 - type: Poweredlight - components: - - parent: 0 - pos: 14,18.5 - rot: 3.141592653589793 rad - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: @@ -10246,163 +6692,118 @@ entities: type: ContainerContainer - load: 40 type: PowerDevice +- uid: 878 + type: LightTube + components: + - parent: 877 + type: Transform +- uid: 879 + type: LightTube + components: + - parent: 880 + type: Transform - uid: 880 + type: Poweredlight + components: + - parent: 0 + pos: 14,18.5 + rot: 3.141592653589793 rad + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - containers: + light_bulb: + entities: + - 879 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer + - load: 40 + type: PowerDevice +- uid: 881 type: Wire components: - parent: 0 pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 881 +- uid: 882 type: Wire components: - parent: 0 pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 882 +- uid: 883 type: Poweredlight components: - parent: 0 pos: 18,22.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 883 + - 884 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 883 +- uid: 884 type: LightTube components: - - parent: 882 + - parent: 883 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 884 +- uid: 885 type: Poweredlight components: - parent: 0 pos: 18,27.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 885 + - 886 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 885 +- uid: 886 type: LightTube components: - - parent: 884 + - parent: 885 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 886 +- uid: 887 type: PoweredSmallLight components: - parent: 0 pos: 18,17.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 887 + - 888 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 887 +- uid: 888 type: LightBulb components: - - parent: 886 + - parent: 887 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 888 +- uid: 889 type: Poweredlight components: - parent: 0 pos: 2,17.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - - color: '#FFFFFFFF' - type: PointLight - - containers: - light_bulb: - entities: - - 889 - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer - - load: 40 - type: PowerDevice -- uid: 889 - type: LightTube - components: - - parent: 888 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 890 - type: LightTube - components: - - parent: 891 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 891 - type: Poweredlight - components: - - parent: 0 - pos: 2,23.5 - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: @@ -10413,733 +6814,463 @@ entities: type: ContainerContainer - load: 40 type: PowerDevice +- uid: 890 + type: LightTube + components: + - parent: 889 + type: Transform +- uid: 891 + type: LightTube + components: + - parent: 892 + type: Transform - uid: 892 + type: Poweredlight + components: + - parent: 0 + pos: 2,23.5 + type: Transform + - color: '#FFFFFFFF' + type: PointLight + - containers: + light_bulb: + entities: + - 891 + type: Content.Server.GameObjects.ContainerSlot + type: ContainerContainer + - load: 40 + type: PowerDevice +- uid: 893 type: PoweredSmallLight components: - parent: 0 pos: 11,24.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 893 + - 894 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 893 +- uid: 894 type: LightBulb components: - - parent: 892 + - parent: 893 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 894 +- uid: 895 type: Catwalk components: - parent: 0 pos: 13.5,24.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 895 +- uid: 896 type: PoweredSmallLight components: - parent: 0 pos: 7.5,26 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 896 + - 897 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 896 +- uid: 897 type: LightBulb components: - - parent: 895 + - parent: 896 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 897 +- uid: 898 type: ResearchAndDevelopmentServer components: - parent: 0 pos: 11.5,24.5 rot: 1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - - points: 1064000 + - points: 343000 type: ResearchServer - - technologies: [] - type: TechnologyDatabase -- uid: 898 +- uid: 899 type: ComputerResearchAndDevelopment components: - parent: 0 pos: 8.5,18.5 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - - technologies: [] - type: TechnologyDatabase -- uid: 899 +- uid: 900 type: BaseResearchAndDevelopmentPointSource components: - parent: 0 pos: 13.5,16.5 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable -- uid: 900 +- uid: 901 type: Protolathe components: - parent: 0 pos: 8.5,17.5 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable - - recipes: [] - protolatherecipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: ProtolatheDatabase - - technologies: [] - type: TechnologyDatabase -- uid: 901 +- uid: 902 type: Autolathe components: - parent: 0 pos: 13.5,18.5 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 902 +- uid: 903 type: Autolathe components: - parent: 0 pos: -4.5,-5.5 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - type: Collidable - - recipes: - - Brutepack - - Ointment - - LightTube - - LightBulb - - MetalStack - - GlassStack - - Wirecutter - - Screwdriver - - Welder - - Wrench - - CableStack - - Crowbar - - Multitool - type: LatheDatabase -- uid: 903 +- uid: 904 type: Table components: - parent: 0 pos: 8.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 904 +- uid: 905 type: Table components: - parent: 0 pos: 9.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 905 +- uid: 906 type: Table components: - parent: 0 pos: 10.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 906 +- uid: 907 type: Table components: - parent: 0 pos: 11.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 907 +- uid: 908 type: Table components: - parent: 0 pos: 13.5,17.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 20 - type: Collidable -- uid: 908 +- uid: 909 type: Wire components: - parent: 0 pos: 2.5,14.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 909 +- uid: 910 type: Wire components: - parent: 0 pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 910 +- uid: 911 type: APC components: - parent: 0 pos: 1.5,14.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 911 +- uid: 912 type: APC components: - parent: 0 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 912 +- uid: 913 type: APC components: - parent: 0 pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 913 +- uid: 914 type: Wire components: - parent: 0 pos: 7.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 914 +- uid: 915 type: Wire components: - parent: 0 pos: 8.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 915 +- uid: 916 type: Wire components: - parent: 0 pos: 9.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 916 +- uid: 917 type: Wire components: - parent: 0 pos: 10.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 917 +- uid: 918 type: Wire components: - parent: 0 pos: 11.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 918 +- uid: 919 type: Wire components: - parent: 0 pos: 12.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 919 +- uid: 920 type: Wire components: - parent: 0 pos: 13.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 920 +- uid: 921 type: Wire components: - parent: 0 pos: 14.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 921 +- uid: 922 type: Wire components: - parent: 0 pos: 14.5,19.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 922 +- uid: 923 type: Wire components: - parent: 0 pos: 15.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 923 +- uid: 924 type: Wire components: - parent: 0 pos: 16.5,20.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 924 +- uid: 925 type: Wire components: - parent: 0 pos: 16.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 925 +- uid: 926 type: Wire components: - parent: 0 pos: 16.5,22.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 926 +- uid: 927 type: Wire components: - parent: 0 pos: 16.5,23.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 927 +- uid: 928 type: Wire components: - parent: 0 pos: 16.5,24.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 928 +- uid: 929 type: Wire components: - parent: 0 pos: 16.5,25.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 929 +- uid: 930 type: Wire components: - parent: 0 pos: 16.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 930 +- uid: 931 type: Wire components: - parent: 0 pos: 16.5,27.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 931 +- uid: 932 type: Wire components: - parent: 0 pos: 17.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 932 +- uid: 933 type: Wire components: - parent: 0 pos: 18.5,26.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 933 +- uid: 934 type: Generator components: - parent: 0 pos: 3.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable -- uid: 934 +- uid: 935 type: Generator components: - parent: 0 pos: 2.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable -- uid: 935 +- uid: 936 type: Generator components: - parent: 0 pos: 1.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable -- uid: 936 +- uid: 937 type: Generator components: - parent: 0 pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - bounds: -0.5,-0.5,0.3,0.5 - type: Collidable -- uid: 937 +- uid: 938 type: Wire components: - parent: 0 pos: 0.5,-12.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 938 +- uid: 939 type: Poweredlight components: - parent: 0 pos: 8,16.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 939 + - 940 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 939 +- uid: 940 type: LightTube components: - - parent: 938 + - parent: 939 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 940 +- uid: 941 type: APC components: - parent: 0 pos: 7.5,18.5 type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 941 +- uid: 942 type: Wire components: - parent: 0 pos: 7.5,18.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 942 +- uid: 943 type: GlassStack components: - parent: 0 pos: 8.560405,21.456738 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 943 +- uid: 944 type: GlassStack components: - parent: 0 pos: 8.57603,21.566113 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 944 +- uid: 945 type: MetalStack components: - parent: 0 pos: 9.435405,21.503613 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 945 +- uid: 946 type: MetalStack components: - parent: 0 pos: 9.654155,21.628613 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 946 +- uid: 947 type: CableStack components: - parent: 0 pos: 10.561831,21.767809 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 947 +- uid: 948 type: CableStack components: - parent: 0 pos: 10.577456,21.424059 type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 948 +- uid: 949 type: ChairOfficeLight components: - parent: 0 pos: 9.5,18.5 rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 949 +- uid: 950 type: ChairOfficeLight components: - parent: 0 pos: 9.5,16.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 950 +- uid: 951 type: Chair components: - parent: 0 pos: 12.5,17.5 type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 951 +- uid: 952 type: LockerScience components: - parent: 0 pos: 12.5,21.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - - containers: - EntityStorageComponent: - entities: [] - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - - IsPlaceable: False - type: PlaceableSurface -- uid: 952 - type: LockerScience - components: - - parent: 0 - pos: 13.5,21.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 30 - bounds: -0.5,-0.25,0.5,0.25 - type: Collidable - containers: EntityStorageComponent: entities: [] @@ -11148,1196 +7279,123 @@ entities: - IsPlaceable: False type: PlaceableSurface - uid: 953 - type: Brutepack - components: - - parent: 148 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 954 - type: Brutepack - components: - - parent: 148 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 955 - type: Brutepack - components: - - parent: 148 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 956 - type: Ointment - components: - - parent: 148 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 957 - type: Ointment - components: - - parent: 148 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 958 - type: Ointment - components: - - parent: 148 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 959 - type: Brutepack - components: - - parent: 149 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 960 - type: Brutepack - components: - - parent: 149 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 961 - type: Brutepack - components: - - parent: 149 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 962 - type: Ointment - components: - - parent: 149 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 963 - type: Ointment - components: - - parent: 149 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 964 - type: Ointment - components: - - parent: 149 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 965 - type: Screwdriver - components: - - parent: 253 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 966 - type: Crowbar - components: - - parent: 253 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 967 - type: Wirecutter - components: - - parent: 253 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 968 - type: CableStack - components: - - parent: 253 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 969 - type: CableStack - components: - - parent: 253 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 970 - type: CableStack - components: - - parent: 253 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 971 - type: Screwdriver - components: - - parent: 254 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 972 - type: Crowbar - components: - - parent: 254 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 973 - type: Wirecutter - components: - - parent: 254 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 974 - type: CableStack - components: - - parent: 254 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 975 - type: CableStack - components: - - parent: 254 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 976 - type: CableStack - components: - - parent: 254 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 977 - type: PowerCellSmallHyper - components: - - parent: 255 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable -- uid: 978 - type: PowerCellSmallHyper - components: - - parent: 256 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable -- uid: 979 - type: Crowbar - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 980 - type: Wrench - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 981 - type: Screwdriver - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 982 - type: Wirecutter - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 983 - type: Welder - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 984 - type: Multitool - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 985 - type: CableStack - components: - - parent: 261 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 986 - type: Crowbar - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 987 - type: Wrench - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 988 - type: Screwdriver - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 989 - type: Wirecutter - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 990 - type: Welder - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 991 - type: Multitool - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 992 - type: CableStack - components: - - parent: 262 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 993 - type: magazine_10mm_smg - components: - - parent: 269 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - - containers: - magazine_bullet_container: - entities: [] - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - - availableSpawnCount: 19 - type: BallisticMagazine -- uid: 994 - type: ammo_casing_10mm - components: - - parent: 269 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 995 - type: magazine_10mm_smg - components: - - parent: 270 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - - containers: - magazine_bullet_container: - entities: [] - type: Robust.Server.GameObjects.Components.Container.Container - type: ContainerContainer - - availableSpawnCount: 19 - type: BallisticMagazine -- uid: 996 - type: ammo_casing_10mm - components: - - parent: 270 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 997 - type: FlashlightLantern - components: - - parent: 363 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - - containers: - flashlight_cell_container: - entities: - - 998 - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 998 - type: PowerCellSmallHyper - components: - - parent: 997 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable -- uid: 999 - type: Screwdriver - components: - - parent: 363 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1000 - type: Wrench - components: - - parent: 363 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1001 - type: Welder - components: - - parent: 363 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1002 - type: Crowbar - components: - - parent: 363 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1003 - type: CableStack - components: - - parent: 363 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1004 - type: FlashlightLantern - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - - containers: - flashlight_cell_container: - entities: - - 1005 - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1005 - type: PowerCellSmallHyper - components: - - parent: 1004 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable -- uid: 1006 - type: Screwdriver - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1007 - type: Wrench - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1008 - type: Welder - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1009 - type: Crowbar - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1010 - type: Wirecutter - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1011 - type: HatHardhatRed - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1012 - type: CableStack - components: - - parent: 364 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1013 - type: Screwdriver - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1014 - type: Wrench - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1015 - type: Welder - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1016 - type: Crowbar - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1017 - type: Wirecutter - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1018 - type: Multitool - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1019 - type: CableStack - components: - - parent: 365 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1020 - type: Welder - components: - - parent: 366 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1021 - type: Wirecutter - components: - - parent: 366 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1022 - type: CableStack - components: - - parent: 366 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1023 - type: FlashlightLantern - components: - - parent: 367 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable - - containers: - flashlight_cell_container: - entities: - - 1024 - type: Content.Server.GameObjects.ContainerSlot - type: ContainerContainer -- uid: 1024 - type: PowerCellSmallHyper - components: - - parent: 1023 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - mask: 26 - bounds: -0.15,-0.3,0.2,0.3 - type: Collidable -- uid: 1025 - type: Wrench - components: - - parent: 367 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1026 - type: Welder - components: - - parent: 367 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1027 - type: Crowbar - components: - - parent: 367 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1028 - type: Wirecutter - components: - - parent: 367 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1029 - type: Brutepack - components: - - parent: 718 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1030 - type: Brutepack - components: - - parent: 718 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1031 - type: Brutepack - components: - - parent: 718 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1032 - type: Ointment - components: - - parent: 718 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1033 - type: Ointment - components: - - parent: 718 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1034 - type: Ointment - components: - - parent: 718 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1035 - type: Brutepack - components: - - parent: 719 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1036 - type: Brutepack - components: - - parent: 719 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1037 - type: Brutepack - components: - - parent: 719 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1038 - type: Ointment - components: - - parent: 719 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1039 - type: Ointment - components: - - parent: 719 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1040 - type: Ointment - components: - - parent: 719 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1041 - type: airlock_engineering - components: - - parent: 0 - pos: 4.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - mask: 4 - bounds: -0.49,-0.49,0.49,0.49 - type: Collidable -- uid: 1042 - type: GravityGenerator - components: - - parent: 0 - pos: 6.5,0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 15 - bounds: -1.5,-1.5,1.5,1.5 - type: Collidable -- uid: 1043 - type: solid_wall - components: - - parent: 0 - pos: 8.5,2.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1044 - type: solid_wall - components: - - parent: 0 - pos: 6.5,2.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1045 type: solid_wall components: - parent: 0 pos: 5.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1046 +- uid: 954 + type: solid_wall + components: + - parent: 0 + pos: 6.5,2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 955 type: solid_wall components: - parent: 0 pos: 7.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1047 +- uid: 956 type: solid_wall components: - parent: 0 - pos: 8.5,-3.5 + pos: 8.5,2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1048 - type: solid_wall - components: - - parent: 0 - pos: 8.5,-2.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1049 - type: solid_wall - components: - - parent: 0 - pos: 8.5,-1.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1050 - type: solid_wall - components: - - parent: 0 - pos: 8.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1051 - type: solid_wall - components: - - parent: 0 - pos: 8.5,0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1052 +- uid: 957 type: solid_wall components: - parent: 0 pos: 8.5,1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1053 +- uid: 958 type: solid_wall components: - parent: 0 - pos: 8.5,2.5 + pos: 8.5,0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1054 +- uid: 959 type: solid_wall components: - parent: 0 - pos: 8.5,2.5 + pos: 8.5,-0.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1055 +- uid: 960 type: solid_wall components: - parent: 0 - pos: 7.5,-4.5 + pos: 8.5,-1.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1056 +- uid: 961 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-2.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 962 + type: solid_wall + components: + - parent: 0 + pos: 8.5,-3.5 + rot: -1.5707963267948966 rad + type: Transform +- uid: 963 type: solid_wall components: - parent: 0 pos: 8.5,-4.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1057 - type: Wire +- uid: 964 + type: solid_wall components: - parent: 0 - pos: 3.5,-0.5 + pos: 7.5,-4.5 + rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 1058 - type: LightTube - components: - - parent: 1061 - type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 32 - bounds: -0.25,-0.25,0.25,0.25 - type: Collidable -- uid: 1059 - type: Wire +- uid: 965 + type: GravityGenerator components: - parent: 0 - pos: 3.5,2.5 + pos: 6.5,0.5 + rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 1060 - type: Wire - components: - - parent: 0 - pos: 2.5,2.5 - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 1061 +- uid: 966 type: Poweredlight components: - parent: 0 - pos: 6.5,-4 - rot: 1.5707963267948966 rad + pos: 8,-1.5 + rot: 3.141592653589793 rad type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable - color: '#FFFFFFFF' type: PointLight - containers: light_bulb: entities: - - 1058 + - 967 type: Content.Server.GameObjects.ContainerSlot type: ContainerContainer - load: 40 type: PowerDevice -- uid: 1062 - type: solid_wall +- uid: 967 + type: LightTube + components: + - parent: 966 + type: Transform +- uid: 968 + type: airlock_engineering components: - parent: 0 - pos: 4.5,-0.5 + pos: 4.5,-2.5 rot: -1.5707963267948966 rad type: Transform - - shapes: - - !type:PhysShapeAabb - layer: 31 - type: Collidable -- uid: 1063 - type: APC - components: - - parent: 0 - pos: 4.5,-0.5 - rot: -1.5707963267948966 rad - type: Transform - - shapes: - - !type:PhysShapeAabb - bounds: -0.25,-0.25,0.25,0.3 - type: Collidable -- uid: 1064 - type: Wire - components: - - parent: 0 - pos: 3.5,0.5 - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable -- uid: 1065 - type: Wire - components: - - parent: 0 - pos: 3.5,1.5 - type: Transform - - shapes: - - !type:PhysShapeAabb {} - type: Collidable ... From 20352ba546314393181628bfdc32a9651604e391 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 May 2020 00:53:19 +0200 Subject: [PATCH 37/73] Remove outdated Setup.bat --- Setup.bat | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 Setup.bat diff --git a/Setup.bat b/Setup.bat deleted file mode 100644 index 1da212630f..0000000000 --- a/Setup.bat +++ /dev/null @@ -1,6 +0,0 @@ -cd %CD% -python RUN_THIS.py -pause -cd %CD%\engine\Resources -python buildResourcePack.py -pause \ No newline at end of file From 0f61c2fadf4c01d35e93af5fbbcc293d38c2530e Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 3 May 2020 01:34:00 -0500 Subject: [PATCH 38/73] Microwave UI + solids implemented. --- .../Kitchen/MicrowaveBoundUserInterface.cs | 13 +- .../Components/Kitchen/MicrowaveMenu.cs | 38 +--- .../Components/Kitchen/MicrowaveVisualizer.cs | 2 - .../Kitchen/KitchenMicrowaveComponent.cs | 207 +++++++++++------- Content.Shared/Kitchen/RecipeManager.cs | 4 +- .../Kitchen/SharedMicrowaveComponent.cs | 18 +- .../Kitchen/MicrowaveMealRecipePrototype.cs | 29 +-- Resources/Prototypes/Kitchen/meal_recipes.yml | 4 +- 8 files changed, 186 insertions(+), 129 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 6a07143798..bb70363912 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -1,8 +1,4 @@ using Robust.Client.GameObjects.Components.UserInterface; -using System; -using System.Collections.Generic; -using System.Text; -using Content.Client.GameObjects.Components.Mobs; using Content.Shared.Kitchen; using Robust.Shared.GameObjects.Components.UserInterface; @@ -28,9 +24,9 @@ namespace Content.Client.GameObjects.Components.Kitchen protected override void UpdateState(BoundUserInterfaceState state) { base.UpdateState(state); - if (!(state is MicrowaveUserInterfaceState cstate)) + if (!(state is MicrowaveUpdateUserInterfaceState cstate)) return; - _menu.RefreshContents(cstate.ReagentsReagents, cstate.ContainedSolids); + _menu.RefreshContentsDisplay(cstate.ReagentsReagents, cstate.ContainedSolids); } @@ -43,5 +39,10 @@ namespace Content.Client.GameObjects.Components.Kitchen { SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); } + + public void EjectSolidWithIndex(int index) + { + SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(index)); + } } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index 83a4a84552..828b06ad25 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -1,11 +1,9 @@ using System.Collections.Generic; using Content.Shared.Chemistry; -using Content.Shared.GameObjects; -using Content.Shared.Kitchen; -using Robust.Client.ResourceManagement; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; @@ -17,7 +15,7 @@ namespace Content.Client.GameObjects.Components.Kitchen { protected override Vector2? CustomSize => (512, 256); - public MicrowaveBoundUserInterface Owner { get; set; } + private MicrowaveBoundUserInterface Owner { get; set; } private List _heldReagents; @@ -35,11 +33,11 @@ namespace Content.Client.GameObjects.Components.Kitchen var startButton = new Button() { - Label = { Text = Loc.GetString("START")} + Label = { Text = Loc.GetString("START"), FontColorOverride = Color.Green} }; var ejectButton = new Button() { - Label = { Text = Loc.GetString("EJECT REAGENTS")} + Label = { Text = Loc.GetString("EJECT REAGENTS"),FontColorOverride = Color.Red} }; var scrollContainer = new ScrollContainer() { @@ -56,24 +54,12 @@ namespace Content.Client.GameObjects.Components.Kitchen vbox.AddChild(ejectButton); vbox.AddChild(scrollContainer); Contents.AddChild(vbox); - startButton.OnPressed += OnCookButtonPressed; - ejectButton.OnPressed += OnEjectButtonPressed; + startButton.OnPressed += args => Owner.Cook(); + ejectButton.OnPressed += args => Owner.Eject(); } - private void OnEjectButtonPressed(BaseButton.ButtonEventArgs obj) - { - Owner.Eject(); - } - - private void OnCookButtonPressed(BaseButton.ButtonEventArgs args) - { - Owner.Cook(); - - } - - - public void RefreshContents(List reagents, Dictionary solids) + public void RefreshContentsDisplay(List reagents, List solids) { InnerScrollContainer.RemoveAllChildren(); foreach (var item in reagents) @@ -82,20 +68,20 @@ namespace Content.Client.GameObjects.Components.Kitchen InnerScrollContainer.AddChild(new Label() { - Text = $"{item.Quantity} {proto.Name}" }); } foreach (var item in solids) { - IoCManager.Resolve().TryIndex(item.Key, out EntityPrototype proto); - var solidLabel = new Button() + var name = IoCManager.Resolve().GetEntity(item).Prototype.Name; + var solidButton = new Button() { - Text = $"{item.Value} {proto.Name}" + Text = $"{name}" }; - InnerScrollContainer.AddChild(solidLabel); + solidButton.OnPressed += args => Owner.EjectSolidWithIndex(solids.IndexOf(item)); + InnerScrollContainer.AddChild(solidButton); } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs index e7c443074c..2c38876680 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs @@ -20,8 +20,6 @@ namespace Content.Client.GameObjects.Components.Kitchen public override void LoadData(YamlMappingNode node) { base.LoadData(node); - //_audioSystem = IoCManager.Resolve().GetEntitySystem(); - } public override void OnChangeData(AppearanceComponent component) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 8f7fc05429..7b72081d1c 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -20,6 +20,8 @@ using Content.Server.GameObjects.Components.Power; using Robust.Server.GameObjects.Components.UserInterface; using Robust.Server.Interfaces.GameObjects; using Robust.Shared.Prototypes; +using Robust.Shared.Localization; +using Content.Server.Interfaces; namespace Content.Server.GameObjects.Components.Kitchen { @@ -32,20 +34,23 @@ namespace Content.Server.GameObjects.Components.Kitchen [Dependency] private readonly IEntityManager _entityManager; [Dependency] private readonly RecipeManager _recipeManager; [Dependency] private readonly IPrototypeManager _prototypeManager; + [Dependency] private readonly IServerNotifyManager _notifyManager; #pragma warning restore 649 private int _cookTimeDefault; private int _cookTimeMultiplier; //For upgrades and stuff I guess? private string _badRecipeName; + private string _startCookingSound; + private string _cookingCompleteSound; [ViewVariables] - private SolutionComponent _contents; + private SolutionComponent _solution; [ViewVariables] - public bool _busy = false; + private bool _busy = false; private bool Powered => _powerDevice.Powered; - private bool HasContents => _contents.ReagentList.Count > 0 || _entityContents.Count > 0; + private bool HasContents => _solution.ReagentList.Count > 0 || _storage.ContainedEntities.Count > 0; private AppearanceComponent _appearance; @@ -55,7 +60,8 @@ namespace Content.Server.GameObjects.Components.Kitchen private Container _storage; - private Dictionary _entityContents; + private Dictionary _solids; + private List _solidsVisualList; private BoundUserInterface _userInterface; void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) => UpdateUserInterface(); @@ -65,12 +71,14 @@ namespace Content.Server.GameObjects.Components.Kitchen serializer.DataField(ref _badRecipeName, "failureResult", "FoodBadRecipe"); serializer.DataField(ref _cookTimeDefault, "cookTime", 5); serializer.DataField(ref _cookTimeMultiplier, "cookTimeMultiplier", 1000); + serializer.DataField(ref _startCookingSound, "beginCookingSound","/Audio/machines/microwave_start_beep.ogg" ); + serializer.DataField(ref _cookingCompleteSound, "foodDoneSound","/Audio/machines/microwave_done_beep.ogg" ); } public override void Initialize() { base.Initialize(); - _contents ??= Owner.TryGetComponent(out SolutionComponent solutionComponent) + _solution ??= Owner.TryGetComponent(out SolutionComponent solutionComponent) ? solutionComponent : Owner.AddComponent(); @@ -80,33 +88,53 @@ namespace Content.Server.GameObjects.Components.Kitchen _audioSystem = _entitySystemManager.GetEntitySystem(); _userInterface = Owner.GetComponent() .GetBoundUserInterface(MicrowaveUiKey.Key); - _entityContents = new Dictionary(); + + _solids = new Dictionary(); + _solidsVisualList = new List(); _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; } private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message) { - if (!Powered || _busy) return; + if (!Powered || _busy || !HasContents) return; switch (message.Message) { case MicrowaveStartCookMessage msg : - if (!HasContents) return; - UpdateUserInterface(); wzhzhzh(); break; case MicrowaveEjectMessage msg : - if (!HasContents) return; - DestroyReagents(); + VaporizeReagents(); EjectSolids(); UpdateUserInterface(); break; + + case MicrowaveEjectSolidIndexedMessage msg: + EjectIndexedSolid(msg.index); + UpdateUserInterface(); + break; } } + private void SetAppearance(MicrowaveVisualState state) + { + if (_appearance != null || Owner.TryGetComponent(out _appearance)) + _appearance.SetData(PowerDeviceVisuals.VisualState, state); + } + + private void UpdateUserInterface() + { + _solidsVisualList.Clear(); + foreach(var item in _storage.ContainedEntities.ToList()) + { + _solidsVisualList.Add(item.Uid); + } + + _userInterface.SetState(new MicrowaveUpdateUserInterfaceState(_solution.Solution.Contents.ToList(), _solidsVisualList)); + } void IActivate.Activate(ActivateEventArgs eventArgs) { @@ -121,25 +149,51 @@ namespace Content.Server.GameObjects.Components.Kitchen public bool AttackBy(AttackByEventArgs eventArgs) { var itemEntity = eventArgs.User.GetComponent().GetActiveHand.Owner; - if (itemEntity.TryGetComponent(typeof(FoodComponent), out var food)) + + if(itemEntity.TryGetComponent(out var attackPourable)) { - if (_entityContents.TryGetValue(itemEntity.Prototype.ID, out var quantity) && quantity > 0) + //Get target and check if it can be poured into + if (!Owner.TryGetComponent(out var mySolution) + || !mySolution.CanPourIn) { - quantity++; - food.Owner.Delete(); - UpdateUserInterface(); - return true; - } - else - { - _storage.Insert(food.Owner); + return false; } - _entityContents.Add(itemEntity.Prototype.ID, 1); - UpdateUserInterface(); + if (!itemEntity.TryGetComponent(out var attackSolution) + || !attackSolution.CanPourOut) + { + return false; + } + + //Get transfer amount. May be smaller than _transferAmount if not enough room + var realTransferAmount = ReagentUnit.Min(attackPourable.TransferAmount, mySolution.EmptyVolume); + if (realTransferAmount <= 0) //Special message if container is full + { + _notifyManager.PopupMessage(Owner.Transform.GridPosition, eventArgs.User, + Loc.GetString("Container is full")); + return false; + } + + //Move units from attackSolution to targetSolution + var removedSolution = attackSolution.SplitSolution(realTransferAmount); + if (!mySolution.TryAddSolution(removedSolution)) + return false; + + _notifyManager.PopupMessage(Owner.Transform.GridPosition, eventArgs.User, + Loc.GetString("Transferred {0}u", removedSolution.TotalVolume)); return true; } + if (itemEntity.TryGetComponent(typeof(FoodComponent), out var food)) + { + var ent = food.Owner; //Get the entity of the ItemComponent. + + _storage.Insert(ent); + + UpdateUserInterface(); + return true; + } + return false; } @@ -147,13 +201,28 @@ namespace Content.Server.GameObjects.Components.Kitchen private void wzhzhzh() { _busy = true; + // Convert storage into Dictionary of ingredients + _solids.Clear(); + foreach(var item in _storage.ContainedEntities.ToList()) + { + if(_solids.ContainsKey(item.Prototype.ID)) + { + _solids[item.Prototype.ID]++; + } + else + { + _solids.Add(item.Prototype.ID, 1); + } + } + + // Check recipes foreach(var r in _recipeManager.Recipes) { var success = CanSatisfyRecipe(r); SetAppearance(MicrowaveVisualState.Cooking); - _audioSystem.Play("/Audio/machines/microwave_start_beep.ogg"); - var time = success ? r._cookTime : _cookTimeDefault; + _audioSystem.Play(_startCookingSound); + var time = success ? r.CookTime : _cookTimeDefault; Timer.Spawn(time * _cookTimeMultiplier, () => { @@ -163,28 +232,33 @@ namespace Content.Server.GameObjects.Components.Kitchen } else { - DestroyReagents(); - EjectSolids(); + VaporizeReagents(); + VaporizeSolids(); } - var entityToSpawn = success ? r._result : _badRecipeName; + var entityToSpawn = success ? r.Result : _badRecipeName; _entityManager.SpawnEntity(entityToSpawn, Owner.Transform.GridPosition); - _audioSystem.Play("/Audio/machines/microwave_done_beep.ogg"); + _audioSystem.Play(_cookingCompleteSound); SetAppearance(MicrowaveVisualState.Idle); _busy = false; }); - _busy = false; UpdateUserInterface(); return; } } - /// - /// This actually deletes all the reagents. - /// - private void DestroyReagents() + private void VaporizeReagents() { - _contents.RemoveAllSolution(); + _solution.RemoveAllSolution(); + + } + + private void VaporizeSolids() + { + foreach (var item in _storage.ContainedEntities.ToList()) + { + item.Delete(); + } } private void EjectSolids() @@ -195,23 +269,34 @@ namespace Content.Server.GameObjects.Components.Kitchen _storage.Remove(item); } - foreach (var kvp in _entityContents) - { - if (kvp.Value > 1 && _prototypeManager.TryIndex(kvp.Key, out EntityPrototype proto)) - { - for(int i = 0; i <= kvp.Value - 1; i++) - _entityManager.SpawnEntity(proto.Name, Owner.Transform.GridPosition); + _solids.Clear(); + } - } + private void EjectIndexedSolid(int index) + { + var entityToRemove = _storage.ContainedEntities.ToArray()[index]; + _storage.Remove(entityToRemove); + } + + + private void SubtractContents(FoodRecipePrototype recipe) + { + foreach(var kvp in recipe.IngredientsReagents) + { + _solution.TryRemoveReagent(kvp.Key, ReagentUnit.New(kvp.Value)); } - _entityContents.Clear(); + foreach (var solid in recipe.IngredientsSolids) + { + _solids[solid.Key] -= solid.Value; + } } + private bool CanSatisfyRecipe(FoodRecipePrototype recipe) { - foreach (var reagent in recipe._ingReagents) + foreach (var reagent in recipe.IngredientsReagents) { - if (!_contents.ContainsReagent(reagent.Key, out var amount)) + if (!_solution.ContainsReagent(reagent.Key, out var amount)) { return false; } @@ -222,14 +307,14 @@ namespace Content.Server.GameObjects.Components.Kitchen } } - foreach (var solid in recipe._ingSolids) + foreach (var solid in recipe.IngredientsSolids) { - if (!_entityContents.TryGetValue(solid.Key, out var amount)) + if (!_solids.ContainsKey(solid.Key)) { return false; } - if (amount < solid.Value) + if (_solids[solid.Key] < solid.Value) { return false; } @@ -238,31 +323,5 @@ namespace Content.Server.GameObjects.Components.Kitchen return true; } - private void SubtractContents(FoodRecipePrototype recipe) - { - foreach(var item in recipe._ingReagents) - { - _contents.TryRemoveReagent(item.Key, ReagentUnit.New(item.Value)); - } - - foreach(var item in recipe._ingSolids) - { - _entityContents.TryGetValue(item.Key, out var value); - value -= item.Value; - } - } - - private void SetAppearance(MicrowaveVisualState state) - { - if (_appearance != null || Owner.TryGetComponent(out _appearance)) - _appearance.SetData(PowerDeviceVisuals.VisualState, state); - } - - private void UpdateUserInterface() - { - _userInterface.SetState(new MicrowaveUserInterfaceState(_contents.Solution.Contents.ToList(), solids:_entityContents)); - } - - } } diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs index 72772f2434..454c21a440 100644 --- a/Content.Shared/Kitchen/RecipeManager.cs +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -33,12 +33,12 @@ namespace Content.Shared.Kitchen return 0; } - if (x._ingReagents.Count < y._ingReagents.Count) + if (x.IngredientsReagents.Count < y.IngredientsReagents.Count) { return 1; } - if (x._ingReagents.Count > y._ingReagents.Count) + if (x.IngredientsReagents.Count > y.IngredientsReagents.Count) { return -1; } diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index fa506fd107..bbe20d244b 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -6,6 +6,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Interfaces.GameObjects; namespace Content.Shared.Kitchen @@ -32,14 +33,25 @@ namespace Content.Shared.Kitchen { } } + + [Serializable, NetSerializable] + public class MicrowaveEjectSolidIndexedMessage : BoundUserInterfaceMessage + { + + public int index; + public MicrowaveEjectSolidIndexedMessage(int i) + { + index = i; + } + } } [NetSerializable, Serializable] - public class MicrowaveUserInterfaceState : BoundUserInterfaceState + public class MicrowaveUpdateUserInterfaceState : BoundUserInterfaceState { public readonly List ReagentsReagents; - public readonly Dictionary ContainedSolids; - public MicrowaveUserInterfaceState(List reagents, Dictionary solids) + public readonly List ContainedSolids; + public MicrowaveUpdateUserInterfaceState(List reagents, List solids) { ReagentsReagents = reagents; ContainedSolids = solids; diff --git a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs index f54a1ac86c..abae3d5eb1 100644 --- a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs @@ -18,16 +18,17 @@ namespace Content.Shared.Prototypes.Kitchen public class FoodRecipePrototype : IPrototype, IIndexedPrototype { - public string _id; - public string _name => Loc.GetString(Name); - private string Name; - public string _result; - public IReadOnlyDictionary _ingReagents => IngredientsReagents; - public IReadOnlyDictionary _ingSolids => IngredientsSolids; + private string _id; + public string Name => Loc.GetString(Name); + private string _name; + public string Result; + public int CookTime; + public IReadOnlyDictionary IngredientsReagents => _ingsReagents; + public IReadOnlyDictionary IngredientsSolids => _ingsSolids; + + private Dictionary _ingsReagents; + private Dictionary _ingsSolids; - private Dictionary IngredientsReagents; - private Dictionary IngredientsSolids; - public int _cookTime; public string ID => _id; @@ -36,11 +37,11 @@ namespace Content.Shared.Prototypes.Kitchen var serializer = YamlObjectSerializer.NewReader(mapping); serializer.DataField(ref _id, "id", string.Empty); - serializer.DataField(ref Name, "name", string.Empty); - serializer.DataField(ref _result, "result", string.Empty); - serializer.DataField(ref IngredientsReagents, "reagents", new Dictionary()); - serializer.DataField(ref IngredientsSolids, "solids", new Dictionary()); - serializer.DataField(ref _cookTime, "time", 5); + serializer.DataField(ref _name, "name", string.Empty); + serializer.DataField(ref Result, "result", string.Empty); + serializer.DataField(ref _ingsReagents, "reagents", new Dictionary()); + serializer.DataField(ref _ingsSolids, "solids", new Dictionary()); + serializer.DataField(ref CookTime, "time", 5); } } diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index a1c3fc51ba..356f254188 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -2,10 +2,10 @@ id: RecipeCheeseburger name: Cheeseburger Recipe result: FoodCheeseburger - time: 10 + time: 1 reagents: chem.H2O: 15 chem.Nutriment: 5 solids: - FoodMeatBreadSlice: 1 + Food4NoRaisins: 2 From 4f7deb8452c6b6522e1f423ade801244d69c1571 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 3 May 2020 03:09:54 -0500 Subject: [PATCH 39/73] Next up timer buttons --- .../Kitchen/MicrowaveBoundUserInterface.cs | 70 +++++++++++--- .../Components/Kitchen/MicrowaveMenu.cs | 94 +++++++++---------- .../Kitchen/KitchenMicrowaveComponent.cs | 7 +- .../Kitchen/SharedMicrowaveComponent.cs | 6 +- 4 files changed, 109 insertions(+), 68 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index bb70363912..a9f676fc48 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -1,6 +1,14 @@ using Robust.Client.GameObjects.Components.UserInterface; using Content.Shared.Kitchen; using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; +using Content.Shared.Chemistry; +using Robust.Shared.GameObjects; +using System.Collections.Generic; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Client.UserInterface.Controls; +using Robust.Client.GameObjects; namespace Content.Client.GameObjects.Components.Kitchen { @@ -8,6 +16,8 @@ namespace Content.Client.GameObjects.Components.Kitchen { private MicrowaveMenu _menu; + private Dictionary _solids = new Dictionary(); + public MicrowaveBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner,uiKey) { @@ -17,32 +27,70 @@ namespace Content.Client.GameObjects.Components.Kitchen { base.Open(); _menu = new MicrowaveMenu(this); + _menu.OpenCentered(); _menu.OnClose += Close; + _menu.StartButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); + _menu.EjectButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); + _menu.IngredientsList.OnItemSelected += args => EjectSolidWithIndex(args.ItemIndex); } + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) + { + return; + } + _solids?.Clear(); + _menu?.Dispose(); + } + + protected override void UpdateState(BoundUserInterfaceState state) { base.UpdateState(state); if (!(state is MicrowaveUpdateUserInterfaceState cstate)) + { return; - _menu.RefreshContentsDisplay(cstate.ReagentsReagents, cstate.ContainedSolids); + } + + RefreshContentsDisplay(cstate.ReagentsReagents, cstate.ContainedSolids); } - public void Cook() - { - SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); - } - - public void Eject() - { - SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); - } public void EjectSolidWithIndex(int index) { - SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(index)); + SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[index])); + } + + public void RefreshContentsDisplay(List reagents, List solids) + { + _menu.IngredientsList.Clear(); + foreach (var item in reagents) + { + IoCManager.Resolve().TryIndex(item.ReagentId, out ReagentPrototype proto); + + _menu.IngredientsList.AddItem($"{item.Quantity} {proto.Name}"); + } + + _solids.Clear(); + foreach (var entityID in solids) + { + var entity = IoCManager.Resolve().GetEntity(entityID); + + if (entity.TryGetComponent(out IconComponent icon)) + { + var itemItem = _menu.IngredientsList.AddItem(entity.Name, icon.Icon.Default); + + var index = _menu.IngredientsList.IndexOf(itemItem); + _solids.Add(index, entityID); + } + + + } + } } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index 828b06ad25..1c43d5cdac 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -17,79 +17,73 @@ namespace Content.Client.GameObjects.Components.Kitchen private MicrowaveBoundUserInterface Owner { get; set; } - private List _heldReagents; + public Button StartButton { get;} + public Button EjectButton { get;} - private VBoxContainer InnerScrollContainer { get; set; } + public GridContainer TimerButtons { get; } + + public ItemList IngredientsList { get;} public MicrowaveMenu(MicrowaveBoundUserInterface owner = null) { Owner = owner; - _heldReagents = new List(); Title = Loc.GetString("Microwave"); - var vbox = new VBoxContainer() + var hSplit = new HSplitContainer { + SizeFlagsHorizontal = SizeFlags.Fill, SizeFlagsVertical = SizeFlags.Fill }; - var startButton = new Button() + + IngredientsList = new ItemList { - Label = { Text = Loc.GetString("START"), FontColorOverride = Color.Green} - }; - var ejectButton = new Button() - { - Label = { Text = Loc.GetString("EJECT REAGENTS"),FontColorOverride = Color.Red} - }; - var scrollContainer = new ScrollContainer() - { - SizeFlagsVertical = SizeFlags.FillExpand + SizeFlagsVertical = SizeFlags.Expand, + SelectMode = ItemList.ItemListSelectMode.Button, + SizeFlagsStretchRatio = 8, + CustomMinimumSize = (100,100) }; - InnerScrollContainer = new VBoxContainer() + hSplit.AddChild(IngredientsList); + + var vSplit = new VSplitContainer(); + hSplit.AddChild(vSplit); + + var buttonGridContainer = new GridContainer { - SizeFlagsVertical = SizeFlags.FillExpand + Columns = 2, + }; + StartButton = new Button + { + Text = Loc.GetString("START"), + }; + EjectButton = new Button + { + Text = Loc.GetString("EJECT CONTENTS"), + }; + buttonGridContainer.AddChild(StartButton); + buttonGridContainer.AddChild(EjectButton); + vSplit.AddChild(buttonGridContainer); + + + TimerButtons = new GridContainer + { + Columns = 5, + }; - scrollContainer.AddChild(InnerScrollContainer); - vbox.AddChild(startButton); - vbox.AddChild(ejectButton); - vbox.AddChild(scrollContainer); - Contents.AddChild(vbox); - startButton.OnPressed += args => Owner.Cook(); - ejectButton.OnPressed += args => Owner.Eject(); + vSplit.AddChild(TimerButtons); + + + Contents.AddChild(hSplit); + } - public void RefreshContentsDisplay(List reagents, List solids) - { - InnerScrollContainer.RemoveAllChildren(); - foreach (var item in reagents) - { - IoCManager.Resolve().TryIndex(item.ReagentId, out ReagentPrototype proto); - - InnerScrollContainer.AddChild(new Label() - { - Text = $"{item.Quantity} {proto.Name}" - }); - } - - foreach (var item in solids) - { - var name = IoCManager.Resolve().GetEntity(item).Prototype.Name; - var solidButton = new Button() - { - Text = $"{name}" - }; - - solidButton.OnPressed += args => Owner.EjectSolidWithIndex(solids.IndexOf(item)); - InnerScrollContainer.AddChild(solidButton); - } - - } + protected override void Dispose(bool disposing) { base.Dispose(disposing); - InnerScrollContainer.Dispose(); } } } diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 7b72081d1c..d678c7f7e6 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -112,7 +112,7 @@ namespace Content.Server.GameObjects.Components.Kitchen break; case MicrowaveEjectSolidIndexedMessage msg: - EjectIndexedSolid(msg.index); + EjectIndexedSolid(msg.EntityID); UpdateUserInterface(); break; } @@ -272,10 +272,9 @@ namespace Content.Server.GameObjects.Components.Kitchen _solids.Clear(); } - private void EjectIndexedSolid(int index) + private void EjectIndexedSolid(EntityUid entityID) { - var entityToRemove = _storage.ContainedEntities.ToArray()[index]; - _storage.Remove(entityToRemove); + _storage.Remove(_entityManager.GetEntity(entityID)); } diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index bbe20d244b..4c9860dc43 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -38,10 +38,10 @@ namespace Content.Shared.Kitchen public class MicrowaveEjectSolidIndexedMessage : BoundUserInterfaceMessage { - public int index; - public MicrowaveEjectSolidIndexedMessage(int i) + public EntityUid EntityID; + public MicrowaveEjectSolidIndexedMessage(EntityUid entityID) { - index = i; + EntityID = entityID; } } } From ccbe4bc23f57df0bfe914b64361f17cf4169d32e Mon Sep 17 00:00:00 2001 From: Fouin Date: Sun, 3 May 2020 11:20:03 +0200 Subject: [PATCH 40/73] Add pitch variations (#874) --- ...mponent].cs => EmitSoundOnUseComponent.cs} | 10 ++++++++- Content.Shared/Audio/AudioHelpers.cs | 22 +++++++++++++++++++ .../Prototypes/Entities/Items/bike_horn.yml | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) rename Content.Server/GameObjects/Components/Sound/{EmitSoundOnUseComponent].cs => EmitSoundOnUseComponent.cs} (68%) create mode 100644 Content.Shared/Audio/AudioHelpers.cs diff --git a/Content.Server/GameObjects/Components/Sound/EmitSoundOnUseComponent].cs b/Content.Server/GameObjects/Components/Sound/EmitSoundOnUseComponent.cs similarity index 68% rename from Content.Server/GameObjects/Components/Sound/EmitSoundOnUseComponent].cs rename to Content.Server/GameObjects/Components/Sound/EmitSoundOnUseComponent.cs index 96059435a7..0d01ce2bb9 100644 --- a/Content.Server/GameObjects/Components/Sound/EmitSoundOnUseComponent].cs +++ b/Content.Server/GameObjects/Components/Sound/EmitSoundOnUseComponent.cs @@ -1,4 +1,5 @@ using Content.Server.GameObjects.EntitySystems; +using Content.Shared.Audio; using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; @@ -16,17 +17,24 @@ namespace Content.Server.GameObjects.Components.Sound public override string Name => "EmitSoundOnUse"; public string _soundName; + public float _pitchVariation; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _soundName, "sound", ""); + serializer.DataField(ref _soundName, "sound", string.Empty); + serializer.DataField(ref _pitchVariation, "variation", 0.0f); } bool IUse.UseEntity(UseEntityEventArgs eventArgs) { if (!string.IsNullOrWhiteSpace(_soundName)) { + if (_pitchVariation > 0.0) + { + Owner.GetComponent().Play(_soundName, AudioHelpers.WithVariation(_pitchVariation).WithVolume(-2f)); + return true; + } Owner.GetComponent().Play(_soundName, AudioParams.Default.WithVolume(-2f)); return true; } diff --git a/Content.Shared/Audio/AudioHelpers.cs b/Content.Shared/Audio/AudioHelpers.cs new file mode 100644 index 0000000000..f6a920f479 --- /dev/null +++ b/Content.Shared/Audio/AudioHelpers.cs @@ -0,0 +1,22 @@ +using System; +using Content.Shared.GameObjects.Components.Sound; +using Robust.Shared.Audio; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Random; + +namespace Content.Shared.Audio +{ + public static class AudioHelpers{ + /// + /// Returns a random pitch. + /// + public static AudioParams WithVariation(float amplitude) + { + var scale = (float)(IoCManager.Resolve().NextGaussian(1, amplitude)); + return AudioParams.Default.WithPitchScale(scale); + } + } +} diff --git a/Resources/Prototypes/Entities/Items/bike_horn.yml b/Resources/Prototypes/Entities/Items/bike_horn.yml index 51d72315ae..8314634c1c 100644 --- a/Resources/Prototypes/Entities/Items/bike_horn.yml +++ b/Resources/Prototypes/Entities/Items/bike_horn.yml @@ -20,6 +20,7 @@ - type: Sound - type: EmitSoundOnUse sound: /Audio/items/bikehorn.ogg + variation: 0.2 - type: UseDelay delay: 0.5 From 5d7514674e574eeb5054a68469e1f4a9ea9deaed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Aguilera=20Puerto?= <6766154+Zumorica@users.noreply.github.com> Date: Sun, 3 May 2020 11:25:39 +0200 Subject: [PATCH 41/73] Suspicion on the Space Station gamemode (#849) --- .../Components/Mobs/MindComponent.cs | 10 +- .../Components/Mobs/SpeciesComponent.cs | 2 +- Content.Server/GameTicking/GamePreset.cs | 7 +- .../GamePresets/PresetDeathMatch.cs | 7 +- .../GameTicking/GamePresets/PresetSandbox.cs | 7 +- .../GamePresets/PresetSuspicion.cs | 63 +++++++++ .../GameTicking/GameRules/RuleSuspicion.cs | 122 ++++++++++++++++++ Content.Server/GameTicking/GameTicker.cs | 34 +++-- Content.Server/Mobs/Mind.cs | 10 ++ Content.Server/Mobs/Role.cs | 8 ++ Content.Server/Mobs/Roles/Job.cs | 7 +- .../Mobs/Roles/SuspicionInnocentRole.cs | 25 ++++ .../Mobs/Roles/SuspicionTraitorRole.cs | 25 ++++ Content.Server/Mobs/Roles/Traitor.cs | 24 ---- Content.Shared/SharedGameTicker.cs | 2 +- 15 files changed, 305 insertions(+), 48 deletions(-) create mode 100644 Content.Server/GameTicking/GamePresets/PresetSuspicion.cs create mode 100644 Content.Server/GameTicking/GameRules/RuleSuspicion.cs create mode 100644 Content.Server/Mobs/Roles/SuspicionInnocentRole.cs create mode 100644 Content.Server/Mobs/Roles/SuspicionTraitorRole.cs delete mode 100644 Content.Server/Mobs/Roles/Traitor.cs diff --git a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs index 1cfc3d9991..8138dfb5d6 100644 --- a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs @@ -118,9 +118,17 @@ namespace Content.Server.GameObjects.Components.Mobs if (!ShowExamineInfo) return; + var dead = false; + + if(Owner.TryGetComponent(out var species)) + if (species.CurrentDamageState is DeadState) + dead = true; + // TODO: Use gendered pronouns depending on the entity if(!HasMind) - message.AddMarkup($"[color=red]They are totally catatonic. The stresses of life in deep-space must have been too much for them. Any recovery is unlikely.[/color]"); + message.AddMarkup(!dead + ? $"[color=red]They are totally catatonic. The stresses of life in deep-space must have been too much for them. Any recovery is unlikely.[/color]" + : $"[color=purple]Their soul has departed.[/color]"); else if(Mind.Session == null) message.AddMarkup("[color=yellow]They have a blank, absent-minded stare and appears completely unresponsive to anything. They may snap out of it soon.[/color]"); } diff --git a/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs b/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs index c26c109d70..14df66475a 100644 --- a/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs @@ -177,7 +177,7 @@ namespace Content.Server.GameObjects currentstate = threshold; - EntityEventArgs toRaise = new MobDamageStateChangedMessage(this); + var toRaise = new MobDamageStateChangedMessage(this); Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, toRaise); } diff --git a/Content.Server/GameTicking/GamePreset.cs b/Content.Server/GameTicking/GamePreset.cs index b880b162a0..0075f7ae1b 100644 --- a/Content.Server/GameTicking/GamePreset.cs +++ b/Content.Server/GameTicking/GamePreset.cs @@ -1,11 +1,14 @@ -namespace Content.Server.GameTicking +using System.Collections.Generic; +using Robust.Server.Interfaces.Player; + +namespace Content.Server.GameTicking { /// /// A round-start setup preset, such as which antagonists to spawn. /// public abstract class GamePreset { - public abstract void Start(); + public abstract bool Start(IReadOnlyList players); public virtual string ModeTitle => "Sandbox"; public virtual string Description => "Secret!"; } diff --git a/Content.Server/GameTicking/GamePresets/PresetDeathMatch.cs b/Content.Server/GameTicking/GamePresets/PresetDeathMatch.cs index 5b866dc8fa..f45fa125b3 100644 --- a/Content.Server/GameTicking/GamePresets/PresetDeathMatch.cs +++ b/Content.Server/GameTicking/GamePresets/PresetDeathMatch.cs @@ -1,5 +1,7 @@ -using Content.Server.GameTicking.GameRules; +using System.Collections.Generic; +using Content.Server.GameTicking.GameRules; using Content.Server.Interfaces.GameTicking; +using Robust.Server.Interfaces.Player; using Robust.Shared.IoC; namespace Content.Server.GameTicking.GamePresets @@ -10,9 +12,10 @@ namespace Content.Server.GameTicking.GamePresets [Dependency] private readonly IGameTicker _gameTicker; #pragma warning restore 649 - public override void Start() + public override bool Start(IReadOnlyList readyPlayers) { _gameTicker.AddGameRule(); + return true; } public override string ModeTitle => "Deathmatch"; diff --git a/Content.Server/GameTicking/GamePresets/PresetSandbox.cs b/Content.Server/GameTicking/GamePresets/PresetSandbox.cs index 05f15c6972..2eeab4a049 100644 --- a/Content.Server/GameTicking/GamePresets/PresetSandbox.cs +++ b/Content.Server/GameTicking/GamePresets/PresetSandbox.cs @@ -1,4 +1,6 @@ -using Content.Server.Sandbox; +using System.Collections.Generic; +using Content.Server.Sandbox; +using Robust.Server.Interfaces.Player; using Robust.Shared.IoC; namespace Content.Server.GameTicking.GamePresets @@ -9,9 +11,10 @@ namespace Content.Server.GameTicking.GamePresets [Dependency] private readonly ISandboxManager _sandboxManager; #pragma warning restore 649 - public override void Start() + public override bool Start(IReadOnlyList readyPlayers) { _sandboxManager.IsSandboxEnabled = true; + return true; } public override string ModeTitle => "Sandbox"; diff --git a/Content.Server/GameTicking/GamePresets/PresetSuspicion.cs b/Content.Server/GameTicking/GamePresets/PresetSuspicion.cs new file mode 100644 index 0000000000..d4692cecf8 --- /dev/null +++ b/Content.Server/GameTicking/GamePresets/PresetSuspicion.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Content.Server.GameTicking.GameRules; +using Content.Server.Interfaces.Chat; +using Content.Server.Interfaces.GameTicking; +using Content.Server.Mobs.Roles; +using Content.Server.Players; +using Content.Server.Sandbox; +using NFluidsynth; +using Robust.Server.Interfaces.Player; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Random; +using Logger = Robust.Shared.Log.Logger; + +namespace Content.Server.GameTicking.GamePresets +{ + public class PresetSuspicion : GamePreset + { +#pragma warning disable 649 + [Dependency] private readonly ISandboxManager _sandboxManager; + [Dependency] private readonly IChatManager _chatManager; + [Dependency] private readonly IGameTicker _gameTicker; + [Dependency] private readonly IRobustRandom _random; +#pragma warning restore 649 + + public int MinPlayers { get; set; } = 5; + public int MinTraitors { get; set; } = 2; + public int PlayersPerTraitor { get; set; } = 5; + + public override bool Start(IReadOnlyList readyPlayers) + { + if (readyPlayers.Count < MinPlayers) + { + _chatManager.DispatchServerAnnouncement($"Not enough players readied up for the game! There were {readyPlayers.Count} players readied up out of {MinPlayers} needed."); + return false; + } + + var list = new List(readyPlayers); + var numTraitors = Math.Max(readyPlayers.Count() % PlayersPerTraitor, MinTraitors); + + for (var i = 0; i < numTraitors; i++) + { + var traitor = _random.PickAndTake(list); + var mind = traitor.Data.ContentData().Mind; + mind.AddRole(new SuspicionTraitorRole(mind)); + } + + foreach (var player in list) + { + var mind = player.Data.ContentData().Mind; + mind.AddRole(new SuspicionInnocentRole(mind)); + } + + _gameTicker.AddGameRule(); + return true; + } + + public override string ModeTitle => "Suspicion"; + public override string Description => "Suspicion on the Space Station. There are traitors on board... Can you kill them before they kill you?"; + } +} diff --git a/Content.Server/GameTicking/GameRules/RuleSuspicion.cs b/Content.Server/GameTicking/GameRules/RuleSuspicion.cs new file mode 100644 index 0000000000..91b16f3aaf --- /dev/null +++ b/Content.Server/GameTicking/GameRules/RuleSuspicion.cs @@ -0,0 +1,122 @@ +using System; +using System.Threading; +using Content.Server.GameObjects; +using Content.Server.GameObjects.Components.Mobs; +using Content.Server.GameObjects.Components.Observer; +using Content.Server.Interfaces.Chat; +using Content.Server.Interfaces.GameTicking; +using Content.Server.Mobs.Roles; +using Content.Server.Players; +using NFluidsynth; +using Robust.Server.Interfaces.Player; +using Robust.Server.Player; +using Robust.Shared.Enums; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Logger = Robust.Shared.Log.Logger; +using Timer = Robust.Shared.Timers.Timer; + +namespace Content.Server.GameTicking.GameRules +{ + /// + /// Simple GameRule that will do a free-for-all death match. + /// Kill everybody else to win. + /// + public sealed class RuleSuspicion : GameRule, IEntityEventSubscriber + { + private static readonly TimeSpan DeadCheckDelay = TimeSpan.FromSeconds(1); + +#pragma warning disable 649 + [Dependency] private readonly IPlayerManager _playerManager; + [Dependency] private readonly IChatManager _chatManager; + [Dependency] private readonly IEntityManager _entityManager; + [Dependency] private readonly IGameTicker _gameTicker; +#pragma warning restore 649 + + private readonly CancellationTokenSource _checkTimerCancel = new CancellationTokenSource(); + + public override void Added() + { + _chatManager.DispatchServerAnnouncement("There are traitors on the station! Find them, and kill them!"); + + _entityManager.EventBus.SubscribeEvent(EventSource.Local, this, _onMobDamageStateChanged); + + Timer.SpawnRepeating(DeadCheckDelay, _checkWinConditions, _checkTimerCancel.Token); + } + + private void _onMobDamageStateChanged(MobDamageStateChangedMessage message) + { + var owner = message.Species.Owner; + + if (!(message.Species.CurrentDamageState is DeadState)) + return; + + if (!owner.TryGetComponent(out var mind)) + return; + + if (!mind.HasMind) + return; + + message.Species.Owner.Description += + mind.Mind.HasRole() ? "\nThey were a traitor!" : "\nThey were an innocent!"; + } + + public override void Removed() + { + base.Removed(); + + _checkTimerCancel.Cancel(); + } + + private void _checkWinConditions() + { + var traitorsAlive = 0; + var innocentsAlive = 0; + + foreach (var playerSession in _playerManager.GetAllPlayers()) + { + if (playerSession.AttachedEntity == null + || !playerSession.AttachedEntity.TryGetComponent(out SpeciesComponent species)) + { + continue; + } + + if (!species.CurrentDamageState.IsConscious) + { + continue; + } + + if (playerSession.ContentData().Mind.HasRole()) + traitorsAlive++; + else + innocentsAlive++; + } + + if ((innocentsAlive + traitorsAlive) == 0) + { + _chatManager.DispatchServerAnnouncement("Everybody is dead, it's a stalemate!"); + EndRound(); + } + + else if (traitorsAlive == 0) + { + _chatManager.DispatchServerAnnouncement("The traitors are dead! The innocents win."); + EndRound(); + } + else if (innocentsAlive == 0) + { + _chatManager.DispatchServerAnnouncement("The innocents are dead! The traitors win."); + EndRound(); + } + } + + private void EndRound() + { + _gameTicker.EndRound(); + _chatManager.DispatchServerAnnouncement($"Restarting in 10 seconds."); + _checkTimerCancel.Cancel(); + Timer.Spawn(TimeSpan.FromSeconds(10), () => _gameTicker.RestartRound()); + } + } +} diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index 764c65633a..c95211205d 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -104,7 +104,8 @@ namespace Content.Server.GameTicking _configurationManager.RegisterCVar("game.lobbyenabled", false, CVar.ARCHIVE); _configurationManager.RegisterCVar("game.lobbyduration", 20, CVar.ARCHIVE); - _configurationManager.RegisterCVar("game.defaultpreset", "Sandbox", CVar.ARCHIVE); + _configurationManager.RegisterCVar("game.defaultpreset", "Suspicion", CVar.ARCHIVE); + _configurationManager.RegisterCVar("game.fallbackpreset", "Sandbox", CVar.ARCHIVE); _playerManager.PlayerStatusChanged += _handlePlayerStatusChanged; @@ -181,11 +182,6 @@ namespace Content.Server.GameTicking SendServerMessage("The round is starting now..."); - RunLevel = GameRunLevel.InRound; - - var preset = MakeGamePreset(); - preset.Start(); - List readyPlayers; if (LobbyEnabled) { @@ -196,6 +192,8 @@ namespace Content.Server.GameTicking readyPlayers = _playersInLobby.Keys.ToList(); } + RunLevel = GameRunLevel.InRound; + // Get the profiles for each player for easier lookup. var profiles = readyPlayers.ToDictionary(p => p, GetPlayerProfile); @@ -222,6 +220,18 @@ namespace Content.Server.GameTicking SpawnPlayer(player, job, false); } + // Time to start the preset. + var preset = MakeGamePreset(); + + if (!preset.Start(assignedJobs.Keys.ToList())) + { + SetStartPreset(_configurationManager.GetCVar("game.fallbackpreset")); + var newPreset = MakeGamePreset(); + _chatManager.DispatchServerAnnouncement($"Failed to start {preset.ModeTitle} mode! Defaulting to {newPreset.ModeTitle}..."); + if(!newPreset.Start(readyPlayers)) + throw new ApplicationException("Fallback preset failed to start!"); + } + _roundStartTimeSpan = IoCManager.Resolve().RealTime; _sendStatusToAll(); } @@ -255,15 +265,16 @@ namespace Content.Server.GameTicking var listOfPlayerInfo = new List(); foreach(var ply in _playerManager.GetAllPlayers().OrderBy(p => p.Name)) { - if(ply.AttachedEntity.TryGetComponent(out var mindComponent) - && mindComponent.HasMind) + var mind = ply.ContentData().Mind; + if(mind != null) { + var antag = mind.AllRoles.Any(role => role.Antag); var playerEndRoundInfo = new RoundEndPlayerInfo() { PlayerOOCName = ply.Name, - PlayerICName = mindComponent.Mind.CurrentEntity.Name, - Role = mindComponent.Mind.AllRoles.FirstOrDefault()?.Name ?? Loc.GetString("Unkown"), - Antag = false + PlayerICName = mind.CurrentEntity.Name, + Role = antag ? mind.AllRoles.First(role => role.Antag).Name : mind.AllRoles.FirstOrDefault()?.Name ?? Loc.GetString("Unkown"), + Antag = antag }; listOfPlayerInfo.Add(playerEndRoundInfo); } @@ -339,6 +350,7 @@ namespace Content.Server.GameTicking { "Sandbox" => typeof(PresetSandbox), "DeathMatch" => typeof(PresetDeathMatch), + "Suspicion" => typeof(PresetSuspicion), _ => throw new NotSupportedException() }); diff --git a/Content.Server/Mobs/Mind.cs b/Content.Server/Mobs/Mind.cs index e931b80fbc..5e631f68ec 100644 --- a/Content.Server/Mobs/Mind.cs +++ b/Content.Server/Mobs/Mind.cs @@ -1,12 +1,15 @@ using System; using System.Collections.Generic; +using System.Linq; using Content.Server.GameObjects.Components.Mobs; +using Content.Server.GameObjects.EntitySystems; using Content.Server.Players; using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.Player; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Network; +using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.Mobs @@ -130,6 +133,13 @@ namespace Content.Server.Mobs _roles.Remove(role); } + public bool HasRole() where T : Role + { + var t = typeof(T); + + return _roles.Any(role => role.GetType() == t); + } + /// /// Transfer this mind's control over to a new entity. /// diff --git a/Content.Server/Mobs/Role.cs b/Content.Server/Mobs/Role.cs index c7f0c617a7..f78b579f11 100644 --- a/Content.Server/Mobs/Role.cs +++ b/Content.Server/Mobs/Role.cs @@ -1,6 +1,9 @@ // Hey look, // Antag Datums. +using Content.Server.GameObjects.EntitySystems; +using Robust.Shared.Utility; + namespace Content.Server.Mobs { /// @@ -20,6 +23,11 @@ namespace Content.Server.Mobs /// public abstract string Name { get; } + /// + /// Whether this role should be considered antagonistic or not. + /// + public abstract bool Antag { get; } + protected Role(Mind mind) { Mind = mind; diff --git a/Content.Server/Mobs/Roles/Job.cs b/Content.Server/Mobs/Roles/Job.cs index 53c7ca721c..680a91ff20 100644 --- a/Content.Server/Mobs/Roles/Job.cs +++ b/Content.Server/Mobs/Roles/Job.cs @@ -11,8 +11,9 @@ namespace Content.Server.Mobs.Roles public JobPrototype Prototype { get; } public override string Name { get; } + public override bool Antag => false; - public String StartingGear => Prototype.StartingGear; + public string StartingGear => Prototype.StartingGear; public Job(Mind mind, JobPrototype jobPrototype) : base(mind) { @@ -25,9 +26,7 @@ namespace Content.Server.Mobs.Roles base.Greet(); var chat = IoCManager.Resolve(); - chat.DispatchServerMessage( - Mind.Session, - String.Format("You're a new {0}. Do your best!", Name)); + chat.DispatchServerMessage(Mind.Session, $"You're a new {Name}. Do your best!"); } } diff --git a/Content.Server/Mobs/Roles/SuspicionInnocentRole.cs b/Content.Server/Mobs/Roles/SuspicionInnocentRole.cs new file mode 100644 index 0000000000..177a8d3bbd --- /dev/null +++ b/Content.Server/Mobs/Roles/SuspicionInnocentRole.cs @@ -0,0 +1,25 @@ +using Content.Server.GameObjects; +using Content.Server.Interfaces.Chat; +using Robust.Shared.IoC; +using Robust.Shared.Utility; + +namespace Content.Server.Mobs.Roles +{ + public class SuspicionInnocentRole : Role + { + public SuspicionInnocentRole(Mind mind) : base(mind) + { + } + + public override string Name => "Innocent"; + public override bool Antag => false; + + public override void Greet() + { + base.Greet(); + + var chat = IoCManager.Resolve(); + chat.DispatchServerMessage(Mind.Session, "You're an innocent!"); + } + } +} diff --git a/Content.Server/Mobs/Roles/SuspicionTraitorRole.cs b/Content.Server/Mobs/Roles/SuspicionTraitorRole.cs new file mode 100644 index 0000000000..65c1e10306 --- /dev/null +++ b/Content.Server/Mobs/Roles/SuspicionTraitorRole.cs @@ -0,0 +1,25 @@ +using Content.Server.GameObjects; +using Content.Server.Interfaces.Chat; +using Robust.Shared.IoC; +using Robust.Shared.Utility; + +namespace Content.Server.Mobs.Roles +{ + public sealed class SuspicionTraitorRole : Role + { + public SuspicionTraitorRole(Mind mind) : base(mind) + { + } + + public override string Name => "Traitor"; + public override bool Antag => true; + + public override void Greet() + { + base.Greet(); + + var chat = IoCManager.Resolve(); + chat.DispatchServerMessage(Mind.Session, "You're a traitor!"); + } + } +} diff --git a/Content.Server/Mobs/Roles/Traitor.cs b/Content.Server/Mobs/Roles/Traitor.cs deleted file mode 100644 index 16804d497f..0000000000 --- a/Content.Server/Mobs/Roles/Traitor.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Server.Interfaces.Chat; -using Robust.Shared.IoC; - -namespace Content.Server.Mobs.Roles -{ - public sealed class Traitor : Role - { - public Traitor(Mind mind) : base(mind) - { - } - - public override string Name => "Traitor"; - - public override void Greet() - { - base.Greet(); - - var chat = IoCManager.Resolve(); - chat.DispatchServerMessage( - Mind.Session, - "You're a traitor. Go fuck something up. Or something. I don't care to be honest."); - } - } -} diff --git a/Content.Shared/SharedGameTicker.cs b/Content.Shared/SharedGameTicker.cs index 38d3e0985e..565a39ee70 100644 --- a/Content.Shared/SharedGameTicker.cs +++ b/Content.Shared/SharedGameTicker.cs @@ -138,7 +138,7 @@ namespace Content.Shared public string GamemodeTitle; public TimeSpan RoundDuration; - + public uint PlayerCount; From e2677bab51e702ca26aa7c46b2db1ff0546c3727 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 May 2020 14:26:49 +0200 Subject: [PATCH 42/73] Wide attacks on space, remove UseOrAttack. --- .../EntitySystems/CombatModeSystem.cs | 117 +----------------- .../EntitySystems/RangedWeaponSystem.cs | 4 +- Content.Client/Input/ContentContexts.cs | 3 +- .../UserInterface/TutorialWindow.cs | 14 ++- .../EntitySystems/Click/InteractionSystem.cs | 6 +- Content.Shared/Input/ContentKeyFunctions.cs | 3 +- Resources/keybinds.yml | 5 +- 7 files changed, 21 insertions(+), 131 deletions(-) diff --git a/Content.Client/GameObjects/EntitySystems/CombatModeSystem.cs b/Content.Client/GameObjects/EntitySystems/CombatModeSystem.cs index bdc5bc0a44..60ecdcd3fe 100644 --- a/Content.Client/GameObjects/EntitySystems/CombatModeSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/CombatModeSystem.cs @@ -25,8 +25,6 @@ namespace Content.Client.GameObjects.EntitySystems [UsedImplicitly] public sealed class CombatModeSystem : SharedCombatModeSystem { - private const float AttackTimeThreshold = 0.15f; - #pragma warning disable 649 [Dependency] private readonly IGameHud _gameHud; [Dependency] private readonly IPlayerManager _playerManager; @@ -37,9 +35,6 @@ namespace Content.Client.GameObjects.EntitySystems private InputSystem _inputSystem; - public bool UseOrAttackIsDown { get; private set; } - private float _timeHeld; - public override void Initialize() { base.Initialize(); @@ -48,10 +43,8 @@ namespace Content.Client.GameObjects.EntitySystems _gameHud.OnTargetingZoneChanged = OnTargetingZoneChanged; _inputSystem = EntitySystemManager.GetEntitySystem(); - _inputSystem.BindMap.BindFunction(ContentKeyFunctions.UseOrAttack, new InputHandler(this)); _inputSystem.BindMap.BindFunction(ContentKeyFunctions.ToggleCombatMode, InputCmdHandler.FromDelegate(CombatModeToggled)); - _overlayManager.AddOverlay(new CombatModeOverlay(this)); } private void CombatModeToggled(ICommonSession session) @@ -60,20 +53,10 @@ namespace Content.Client.GameObjects.EntitySystems { EntityManager.RaisePredictiveEvent( new CombatModeSystemMessages.SetCombatModeActiveMessage(!IsInCombatMode())); - - // Just in case. - UseOrAttackIsDown = false; } } - public override void Shutdown() - { - base.Shutdown(); - - _overlayManager.RemoveOverlay(nameof(CombatModeOverlay)); - } - - private bool IsInCombatMode() + public bool IsInCombatMode() { var entity = _playerManager.LocalPlayer.ControlledEntity; if (entity == null || !entity.TryGetComponent(out CombatModeComponent combatMode)) @@ -92,104 +75,6 @@ namespace Content.Client.GameObjects.EntitySystems private void OnCombatModeChanged(bool obj) { EntityManager.RaisePredictiveEvent(new CombatModeSystemMessages.SetCombatModeActiveMessage(obj)); - - // Just in case. - UseOrAttackIsDown = false; - } - - private bool HandleInputMessage(ICommonSession session, InputCmdMessage message) - { - if (!(message is FullInputCmdMessage msg)) - return false; - - void SendMsg(BoundKeyFunction function, BoundKeyState state) - { - var functionId = _inputManager.NetworkBindMap.KeyFunctionID(function); - - var sendMsg = new FullInputCmdMessage(msg.Tick, functionId, state, - msg.Coordinates, msg.ScreenCoordinates, msg.Uid); - _inputSystem.HandleInputCommand(session, function, sendMsg); - } - - // If we are not in combat mode, relay it as a regular Use instead. - if (!IsInCombatMode()) - { - SendMsg(EngineKeyFunctions.Use, msg.State); - return true; - } - - if (msg.State == BoundKeyState.Down) - { - UseOrAttackIsDown = true; - _timeHeld = 0; - return true; - } - - // Up. - if (UseOrAttackIsDown && _timeHeld >= AttackTimeThreshold) - { - // Attack. - SendMsg(ContentKeyFunctions.Attack, BoundKeyState.Down); - SendMsg(ContentKeyFunctions.Attack, BoundKeyState.Up); - } - else - { - // Use. - SendMsg(EngineKeyFunctions.Use, BoundKeyState.Down); - SendMsg(EngineKeyFunctions.Use, BoundKeyState.Up); - } - - UseOrAttackIsDown = false; - - return true; - } - - public override void FrameUpdate(float frameTime) - { - if (UseOrAttackIsDown) - { - _timeHeld += frameTime; - } - } - - // Custom input handler type so we get the ENTIRE InputCmdMessage. - private sealed class InputHandler : InputCmdHandler - { - private readonly CombatModeSystem _combatModeSystem; - - public InputHandler(CombatModeSystem combatModeSystem) - { - _combatModeSystem = combatModeSystem; - } - - public override bool HandleCmdMessage(ICommonSession session, InputCmdMessage message) - { - return _combatModeSystem.HandleInputMessage(session, message); - } - } - - private sealed class CombatModeOverlay : Overlay - { - private readonly CombatModeSystem _system; - - public CombatModeOverlay(CombatModeSystem system) : base(nameof(CombatModeOverlay)) - { - _system = system; - } - - protected override void Draw(DrawingHandleBase handle) - { - var screenHandle = (DrawingHandleScreen) handle; - - var mousePos = IoCManager.Resolve().MouseScreenPosition; - - if (_system.UseOrAttackIsDown && _system._timeHeld > AttackTimeThreshold) - { - var tex = ResC.GetTexture($"/Textures/Objects/Tools/toolbox_r.png"); - - screenHandle.DrawTextureRect(tex, UIBox2.FromDimensions(mousePos, tex.Size * 2)); - } - } } } } diff --git a/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs b/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs index d34001cb27..8a0c991055 100644 --- a/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs @@ -39,8 +39,8 @@ namespace Content.Client.GameObjects.EntitySystems base.Update(frameTime); var canFireSemi = _isFirstShot; - var state = _inputSystem.CmdStates.GetState(ContentKeyFunctions.Attack); - if (!_combatModeSystem.UseOrAttackIsDown && state != BoundKeyState.Down) + var state = _inputSystem.CmdStates.GetState(EngineKeyFunctions.Use); + if (!_combatModeSystem.IsInCombatMode() && state != BoundKeyState.Down) { _isFirstShot = true; _blocked = false; diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs index 5301d8ba4f..4249ef2704 100644 --- a/Content.Client/Input/ContentContexts.cs +++ b/Content.Client/Input/ContentContexts.cs @@ -15,7 +15,6 @@ namespace Content.Client.Input common.AddFunction(ContentKeyFunctions.FocusChat); common.AddFunction(ContentKeyFunctions.ExamineEntity); common.AddFunction(ContentKeyFunctions.OpenTutorial); - common.AddFunction(ContentKeyFunctions.UseOrAttack); common.AddFunction(ContentKeyFunctions.TakeScreenshot); common.AddFunction(ContentKeyFunctions.TakeScreenshotNoUI); @@ -31,7 +30,7 @@ namespace Content.Client.Input human.AddFunction(ContentKeyFunctions.OpenInventoryMenu); human.AddFunction(ContentKeyFunctions.MouseMiddle); human.AddFunction(ContentKeyFunctions.ToggleCombatMode); - human.AddFunction(ContentKeyFunctions.Attack); + human.AddFunction(ContentKeyFunctions.WideAttack); var ghost = contexts.New("ghost", "common"); ghost.AddFunction(EngineKeyFunctions.MoveUp); diff --git a/Content.Client/UserInterface/TutorialWindow.cs b/Content.Client/UserInterface/TutorialWindow.cs index cc81193dbf..ffdfc2a2b0 100644 --- a/Content.Client/UserInterface/TutorialWindow.cs +++ b/Content.Client/UserInterface/TutorialWindow.cs @@ -73,6 +73,8 @@ Open inventory: [color=#a4885c]{7}[/color] Open character window: [color=#a4885c]{8}[/color] Open crafting window: [color=#a4885c]{9}[/color] Focus chat: [color=#a4885c]{10}[/color] +Use hand/object in hand: [color=#a4885c]{22}[/color] +Do wide attack: [color=#a4885c]{23}[/color] Use targeted entity: [color=#a4885c]{11}[/color] Throw held item: [color=#a4885c]{12}[/color] Examine entity: [color=#a4885c]{13}[/color] @@ -102,16 +104,18 @@ Toggle sandbox window: [color=#a4885c]{21}[/color]", Key(ShowDebugMonitors), Key(OpenEntitySpawnWindow), Key(OpenTileSpawnWindow), - Key(OpenSandboxWindow))); - - //Gameplay - VBox.AddChild(new Label { FontOverride = headerFont, Text = Loc.GetString("\nSandbox spawner", Key(OpenSandboxWindow)) }); - AddFormattedText(SandboxSpawnerContents); + Key(OpenSandboxWindow), + Key(Use), + Key(WideAttack))); //Gameplay VBox.AddChild(new Label { FontOverride = headerFont, Text = "\nGameplay" }); AddFormattedText(GameplayContents); + //Gameplay + VBox.AddChild(new Label { FontOverride = headerFont, Text = Loc.GetString("\nSandbox spawner", Key(OpenSandboxWindow)) }); + AddFormattedText(SandboxSpawnerContents); + //Feedback VBox.AddChild(new Label { FontOverride = headerFont, Text = "\nFeedback" }); AddFormattedText(FeedbackContents); diff --git a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs index e42c37978c..1dcf645020 100644 --- a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs @@ -302,8 +302,8 @@ namespace Content.Server.GameObjects.EntitySystems var inputSys = EntitySystemManager.GetEntitySystem(); inputSys.BindMap.BindFunction(EngineKeyFunctions.Use, new PointerInputCmdHandler(HandleUseItemInHand)); - inputSys.BindMap.BindFunction(ContentKeyFunctions.Attack, - new PointerInputCmdHandler(HandleAttack)); + inputSys.BindMap.BindFunction(ContentKeyFunctions.WideAttack, + new PointerInputCmdHandler(HandleWideAttack)); inputSys.BindMap.BindFunction(ContentKeyFunctions.ActivateItemInWorld, new PointerInputCmdHandler(HandleActivateItemInWorld)); } @@ -362,7 +362,7 @@ namespace Content.Server.GameObjects.EntitySystems activateComp.Activate(new ActivateEventArgs {User = user}); } - private bool HandleAttack(ICommonSession session, GridCoordinates coords, EntityUid uid) + private bool HandleWideAttack(ICommonSession session, GridCoordinates coords, EntityUid uid) { // client sanitization if (!_mapManager.GridExists(coords.GridID)) diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index a713c7db54..f2a17daa5d 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -5,8 +5,7 @@ namespace Content.Shared.Input [KeyFunctions] public static class ContentKeyFunctions { - public static readonly BoundKeyFunction UseOrAttack = "UseOrAttack"; - public static readonly BoundKeyFunction Attack = "Attack"; + public static readonly BoundKeyFunction WideAttack = "WideAttack"; public static readonly BoundKeyFunction ActivateItemInHand = "ActivateItemInHand"; public static readonly BoundKeyFunction ActivateItemInWorld = "ActivateItemInWorld"; // default action on world entity public static readonly BoundKeyFunction Drop = "Drop"; diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 29eeb8fbc7..18e7cfc951 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -1,9 +1,12 @@ version: 1 # Not used right now, whatever. binds: -- function: UseOrAttack +- function: Use type: state key: MouseLeft canFocus: true +- function: WideAttack + type: state + key: Space - function: ShowDebugMonitors type: Toggle key: F3 From 9eb15c03b9738790c25a75e41edeab1de0b8d0cf Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 May 2020 15:59:24 +0200 Subject: [PATCH 43/73] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 3f73aebb52..1f6bd2481f 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 3f73aebb52b81e2e869bc740dad18654d5761a05 +Subproject commit 1f6bd2481f88f3827b9163444fc09c82fa146001 From d0b4ba7099724f2bc84dbccdd9701999ecc8f288 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 3 May 2020 16:03:42 +0200 Subject: [PATCH 44/73] Fixes command processing running over chat input. Fixes #875 --- Content.Client/Chat/ChatManager.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Client/Chat/ChatManager.cs b/Content.Client/Chat/ChatManager.cs index 8a0fcdeabd..8592028d11 100644 --- a/Content.Client/Chat/ChatManager.cs +++ b/Content.Client/Chat/ChatManager.cs @@ -211,19 +211,19 @@ namespace Content.Client.Chat case OOCAlias: { var conInput = text.Substring(1); - _console.ProcessCommand($"ooc \"{conInput}\""); + _console.ProcessCommand($"ooc \"{CommandParsing.Escape(conInput)}\""); break; } case MeAlias: { var conInput = text.Substring(1); - _console.ProcessCommand($"me \"{conInput}\""); + _console.ProcessCommand($"me \"{CommandParsing.Escape(conInput)}\""); break; } default: { var conInput = _currentChatBox.DefaultChatFormat != null - ? string.Format(_currentChatBox.DefaultChatFormat, text) + ? string.Format(_currentChatBox.DefaultChatFormat, CommandParsing.Escape(text)) : text; _console.ProcessCommand(conInput); break; From d7d0bc71f9b69dad5fb0541fe4f0587e210dab89 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 3 May 2020 23:58:29 -0500 Subject: [PATCH 45/73] Microwave is done. Added an easter egg recipe and made the cheeseburger recipe more sensible. --- .../Kitchen/MicrowaveBoundUserInterface.cs | 23 ++- .../Components/Kitchen/MicrowaveMenu.cs | 140 ++++++++++++--- .../Components/Kitchen/MicrowaveVisualizer.cs | 23 ++- .../Kitchen/KitchenMicrowaveComponent.cs | 169 ++++++++++++------ .../Kitchen/SharedMicrowaveComponent.cs | 14 +- .../Entities/Items/Consumables/food.yml | 17 ++ Resources/Prototypes/Kitchen/meal_recipes.yml | 18 +- 7 files changed, 295 insertions(+), 109 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index a9f676fc48..94fa205bb2 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -7,8 +7,10 @@ using Content.Shared.Chemistry; using Robust.Shared.GameObjects; using System.Collections.Generic; using Robust.Shared.Interfaces.GameObjects; -using Robust.Client.UserInterface.Controls; + + using Robust.Client.GameObjects; +using Robust.Client.UserInterface.Controls; namespace Content.Client.GameObjects.Components.Kitchen { @@ -32,7 +34,15 @@ namespace Content.Client.GameObjects.Components.Kitchen _menu.OnClose += Close; _menu.StartButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); _menu.EjectButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); - _menu.IngredientsList.OnItemSelected += args => EjectSolidWithIndex(args.ItemIndex); + _menu.IngredientsList.OnItemSelected += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[args.ItemIndex])); + _menu.OnCookTimeSelected += args => + { + var actualButton = args.Button as Button; + var newTime = (byte) int.Parse(actualButton.Text); + _menu.VisualCookTime = newTime; + SendMessage(new SharedMicrowaveComponent.MicrowaveSelectCookTimeMessage(newTime)); + }; + } protected override void Dispose(bool disposing) @@ -60,12 +70,7 @@ namespace Content.Client.GameObjects.Components.Kitchen } - public void EjectSolidWithIndex(int index) - { - SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[index])); - } - - public void RefreshContentsDisplay(List reagents, List solids) + private void RefreshContentsDisplay(List reagents, List solids) { _menu.IngredientsList.Clear(); foreach (var item in reagents) @@ -88,7 +93,7 @@ namespace Content.Client.GameObjects.Components.Kitchen _solids.Add(index, entityID); } - + } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index 1c43d5cdac..1c7e2e8ce9 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -1,13 +1,9 @@ -using System.Collections.Generic; -using Content.Shared.Chemistry; +using System; +using Robust.Client.Graphics.Drawing; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; -using Robust.Shared.Prototypes; namespace Content.Client.GameObjects.Components.Kitchen { @@ -17,18 +13,26 @@ namespace Content.Client.GameObjects.Components.Kitchen private MicrowaveBoundUserInterface Owner { get; set; } + public event Action OnCookTimeSelected; + + public byte VisualCookTime { get; set; } + public Button StartButton { get;} public Button EjectButton { get;} - public GridContainer TimerButtons { get; } + public PanelContainer TimerFacePlate { get; } + + public ButtonGroup CookTimeButtonGroup { get; } + private VBoxContainer CookTimeButtonVbox { get; } public ItemList IngredientsList { get;} + private Label _cookTimeInfoLabel { get; } public MicrowaveMenu(MicrowaveBoundUserInterface owner = null) { Owner = owner; Title = Loc.GetString("Microwave"); - var hSplit = new HSplitContainer + var hSplit = new HBoxContainer { SizeFlagsHorizontal = SizeFlags.Fill, SizeFlagsVertical = SizeFlags.Fill @@ -37,53 +41,135 @@ namespace Content.Client.GameObjects.Components.Kitchen IngredientsList = new ItemList { - SizeFlagsVertical = SizeFlags.Expand, + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand, SelectMode = ItemList.ItemListSelectMode.Button, SizeFlagsStretchRatio = 8, - CustomMinimumSize = (100,100) + CustomMinimumSize = (200,256) }; hSplit.AddChild(IngredientsList); - var vSplit = new VSplitContainer(); + var vSplit = new VBoxContainer + { + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand, + }; + hSplit.AddChild(vSplit); - var buttonGridContainer = new GridContainer + var buttonGridContainer = new VBoxContainer { - Columns = 2, + Align = BoxContainer.AlignMode.Center, + SizeFlagsStretchRatio = 3 }; + StartButton = new Button { - Text = Loc.GetString("START"), + Text = Loc.GetString("Start"), + TextAlign = Label.AlignMode.Center, + }; + EjectButton = new Button { - Text = Loc.GetString("EJECT CONTENTS"), + Text = Loc.GetString("Eject All Contents"), + ToolTip = Loc.GetString("This vaporizes all reagents, but ejects any solids."), + TextAlign = Label.AlignMode.Center, }; + buttonGridContainer.AddChild(StartButton); buttonGridContainer.AddChild(EjectButton); vSplit.AddChild(buttonGridContainer); - - TimerButtons = new GridContainer + CookTimeButtonGroup = new ButtonGroup(); + CookTimeButtonVbox = new VBoxContainer { - Columns = 5, - + SizeFlagsVertical = SizeFlags.FillExpand, + Align = BoxContainer.AlignMode.Center, }; - vSplit.AddChild(TimerButtons); + var index = 0; + for (var i = 0; i <= 12; i++) + { + var newButton = new Button + { + Text = (index <= 0 ? 1 : index).ToString(), + TextAlign = Label.AlignMode.Center, + Group = CookTimeButtonGroup, + }; + CookTimeButtonVbox.AddChild(newButton); + newButton.OnPressed += args => + { + OnCookTimeSelected?.Invoke(args); + _cookTimeInfoLabel.Text = $"{Loc.GetString("COOK TIME")}: {VisualCookTime}"; + }; + index+=5; + } + + _cookTimeInfoLabel = new Label + { + Text = Loc.GetString("COOK TIME:"), + Align = Label.AlignMode.Center, + Modulate = Color.White, + SizeFlagsVertical = SizeFlags.ShrinkCenter + }; + + var innerTimerPanel = new PanelContainer + { + SizeFlagsVertical = SizeFlags.FillExpand, + ModulateSelfOverride = Color.Red, + CustomMinimumSize = (100, 128), + PanelOverride = new StyleBoxFlat {BackgroundColor = Color.Black}, + + Children = + { + new VBoxContainer + { + + Children = + { + new PanelContainer + { + PanelOverride = new StyleBoxFlat(){BackgroundColor = Color.Red.WithAlpha(0.2f)}, + + Children = + { + _cookTimeInfoLabel + } + }, + + new ScrollContainer() + { + SizeFlagsVertical = SizeFlags.FillExpand, + + Children = + { + CookTimeButtonVbox, + } + }, + + } + } + } + }; + + TimerFacePlate = new PanelContainer() + { + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand, + Children = + { + innerTimerPanel + }, + }; + + vSplit.AddChild(TimerFacePlate); Contents.AddChild(hSplit); - } - - - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - } } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs index 2c38876680..1591670f16 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveVisualizer.cs @@ -1,26 +1,19 @@ -using System; -using System.Reflection.Metadata.Ecma335; -using Content.Client.GameObjects.Components.Sound; +using Content.Client.GameObjects.Components.Sound; using Content.Shared.GameObjects.Components.Power; using Content.Shared.GameObjects.Components.Sound; using Content.Shared.Kitchen; using Robust.Client.GameObjects; using Robust.Client.Interfaces.GameObjects.Components; using Robust.Shared.Audio; -using Robust.Shared.GameObjects.Components.UserInterface; -using Robust.Shared.Serialization; -using YamlDotNet.RepresentationModel; +using Robust.Shared.Log; + namespace Content.Client.GameObjects.Components.Kitchen { public sealed class MicrowaveVisualizer : AppearanceVisualizer { private SoundComponent _soundComponent; - private const string _microwaveSoundLoop = "/Audio/machines/microwave_loop.ogg"; - public override void LoadData(YamlMappingNode node) - { - base.LoadData(node); - } + private const string MicrowaveSoundLoop = "/Audio/machines/microwave_loop.ogg"; public override void OnChangeData(AppearanceComponent component) { @@ -45,11 +38,15 @@ namespace Content.Client.GameObjects.Components.Kitchen var audioParams = AudioParams.Default; audioParams.Loop = true; var schedSound = new ScheduledSound(); - schedSound.Filename = _microwaveSoundLoop; + schedSound.Filename = MicrowaveSoundLoop; schedSound.AudioParams = audioParams; _soundComponent.AddScheduledSound(schedSound); break; + default: + Logger.Debug($"Something terrible happened in {this}"); + break; + } var glowingPartsVisible = !(component.TryGetData(PowerDeviceVisuals.Powered, out bool powered) && !powered); @@ -59,7 +56,7 @@ namespace Content.Client.GameObjects.Components.Kitchen } - public enum MicrowaveVisualizerLayers + private enum MicrowaveVisualizerLayers { Base, BaseUnlit diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index d678c7f7e6..db31904525 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -33,38 +33,55 @@ namespace Content.Server.GameObjects.Components.Kitchen [Dependency] private readonly IEntitySystemManager _entitySystemManager; [Dependency] private readonly IEntityManager _entityManager; [Dependency] private readonly RecipeManager _recipeManager; - [Dependency] private readonly IPrototypeManager _prototypeManager; [Dependency] private readonly IServerNotifyManager _notifyManager; #pragma warning restore 649 +#region YAMLSERIALIZE private int _cookTimeDefault; private int _cookTimeMultiplier; //For upgrades and stuff I guess? private string _badRecipeName; private string _startCookingSound; private string _cookingCompleteSound; +#endregion + +#region VIEWVARIABLES [ViewVariables] private SolutionComponent _solution; [ViewVariables] private bool _busy = false; + /// + /// This is a fixed offset of 5. + /// The cook times for all recipes should be divisible by 5,with a minimum of 1 second. + /// For right now, I don't think any recipe cook time should be greater than 60 seconds. + /// + [ViewVariables] + private byte _currentCookTimerTime { get; set; } +#endregion + private bool Powered => _powerDevice.Powered; private bool HasContents => _solution.ReagentList.Count > 0 || _storage.ContainedEntities.Count > 0; - private AppearanceComponent _appearance; + void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) => UpdateUserInterface(); private AudioSystem _audioSystem; + private AppearanceComponent _appearance; private PowerDeviceComponent _powerDevice; - private Container _storage; + private BoundUserInterface _userInterface; + private Container _storage; + /// + /// A dictionary of PrototypeIDs and integers representing quantity. + /// private Dictionary _solids; private List _solidsVisualList; - private BoundUserInterface _userInterface; - void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) => UpdateUserInterface(); + + public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); @@ -97,22 +114,40 @@ namespace Content.Server.GameObjects.Components.Kitchen private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message) { - if (!Powered || _busy || !HasContents) return; + if (!Powered || _busy) + { + return; + } switch (message.Message) { case MicrowaveStartCookMessage msg : - wzhzhzh(); + if (HasContents) + { + wzhzhzh(); + } break; case MicrowaveEjectMessage msg : - VaporizeReagents(); - EjectSolids(); - UpdateUserInterface(); + if (HasContents) + { + VaporizeReagents(); + EjectSolids(); + UpdateUserInterface(); + } + break; case MicrowaveEjectSolidIndexedMessage msg: - EjectIndexedSolid(msg.EntityID); + if (HasContents) + { + EjectSolidWithIndex(msg.EntityID); + UpdateUserInterface(); + } + break; + + case MicrowaveSelectCookTimeMessage msg: + _currentCookTimerTime = msg.newCookTime; UpdateUserInterface(); break; } @@ -122,7 +157,10 @@ namespace Content.Server.GameObjects.Components.Kitchen private void SetAppearance(MicrowaveVisualState state) { if (_appearance != null || Owner.TryGetComponent(out _appearance)) + { _appearance.SetData(PowerDeviceVisuals.VisualState, state); + } + } private void UpdateUserInterface() @@ -138,9 +176,10 @@ namespace Content.Server.GameObjects.Components.Kitchen void IActivate.Activate(ActivateEventArgs eventArgs) { - if (!eventArgs.User.TryGetComponent(out IActorComponent actor)) + if (!eventArgs.User.TryGetComponent(out IActorComponent actor) || !Powered) + { return; - if (!Powered) return; + } UpdateUserInterface(); _userInterface.Open(actor.playerSession); @@ -177,33 +216,34 @@ namespace Content.Server.GameObjects.Components.Kitchen //Move units from attackSolution to targetSolution var removedSolution = attackSolution.SplitSolution(realTransferAmount); if (!mySolution.TryAddSolution(removedSolution)) + { return false; + } _notifyManager.PopupMessage(Owner.Transform.GridPosition, eventArgs.User, Loc.GetString("Transferred {0}u", removedSolution.TotalVolume)); return true; } - if (itemEntity.TryGetComponent(typeof(FoodComponent), out var food)) + if (!itemEntity.TryGetComponent(typeof(FoodComponent), out var food)) { - var ent = food.Owner; //Get the entity of the ItemComponent. - - _storage.Insert(ent); - - UpdateUserInterface(); - return true; + return false; } - - return false; + + var ent = food.Owner; //Get the entity of the ItemComponent. + _storage.Insert(ent); + UpdateUserInterface(); + return true; + } - //This is required. + //This is required. It's 'cook'. private void wzhzhzh() { _busy = true; // Convert storage into Dictionary of ingredients _solids.Clear(); - foreach(var item in _storage.ContainedEntities.ToList()) + foreach(var item in _storage.ContainedEntities) { if(_solids.ContainsKey(item.Prototype.ID)) { @@ -216,35 +256,44 @@ namespace Content.Server.GameObjects.Components.Kitchen } // Check recipes + FoodRecipePrototype recipeToCook = null; foreach(var r in _recipeManager.Recipes) { - - var success = CanSatisfyRecipe(r); - SetAppearance(MicrowaveVisualState.Cooking); - _audioSystem.Play(_startCookingSound); - var time = success ? r.CookTime : _cookTimeDefault; - Timer.Spawn(time * _cookTimeMultiplier, () => + if (!CanSatisfyRecipe(r)) { + continue; + } - if (success) - { - SubtractContents(r); - } - else - { - VaporizeReagents(); - VaporizeSolids(); - } - - var entityToSpawn = success ? r.Result : _badRecipeName; - _entityManager.SpawnEntity(entityToSpawn, Owner.Transform.GridPosition); - _audioSystem.Play(_cookingCompleteSound); - SetAppearance(MicrowaveVisualState.Idle); - _busy = false; - }); - UpdateUserInterface(); - return; + recipeToCook = r; } + + var goodMeal = (recipeToCook != null) + && + (_currentCookTimerTime == (byte)recipeToCook.CookTime) ? true : false; + + SetAppearance(MicrowaveVisualState.Cooking); + _audioSystem.Play(_startCookingSound); + Timer.Spawn(_currentCookTimerTime * _cookTimeMultiplier, () => + { + + if (goodMeal) + { + SubtractContents(recipeToCook); + } + else + { + VaporizeReagents(); + VaporizeSolids(); + } + + var entityToSpawn = goodMeal ? recipeToCook.Result : _badRecipeName; + _entityManager.SpawnEntity(entityToSpawn, Owner.Transform.GridPosition); + _audioSystem.Play(_cookingCompleteSound); + SetAppearance(MicrowaveVisualState.Idle); + _busy = false; + }); + UpdateUserInterface(); + return; } private void VaporizeReagents() @@ -257,8 +306,10 @@ namespace Content.Server.GameObjects.Components.Kitchen { foreach (var item in _storage.ContainedEntities.ToList()) { + _storage.Remove(item); item.Delete(); } + _solids.Clear(); } private void EjectSolids() @@ -272,7 +323,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _solids.Clear(); } - private void EjectIndexedSolid(EntityUid entityID) + private void EjectSolidWithIndex(EntityUid entityID) { _storage.Remove(_entityManager.GetEntity(entityID)); } @@ -280,15 +331,27 @@ namespace Content.Server.GameObjects.Components.Kitchen private void SubtractContents(FoodRecipePrototype recipe) { - foreach(var kvp in recipe.IngredientsReagents) + foreach(var recipeReagent in recipe.IngredientsReagents) { - _solution.TryRemoveReagent(kvp.Key, ReagentUnit.New(kvp.Value)); + _solution.TryRemoveReagent(recipeReagent.Key, ReagentUnit.New(recipeReagent.Value)); } - foreach (var solid in recipe.IngredientsSolids) + foreach (var recipeSolid in recipe.IngredientsSolids) { - _solids[solid.Key] -= solid.Value; + for (var i = 0; i < recipeSolid.Value; i++) + { + foreach (var item in _storage.ContainedEntities.ToList()) + { + if (item.Prototype.ID == recipeSolid.Key) + { + _storage.Remove(item); + item.Delete(); + break; + } + } + } } + } private bool CanSatisfyRecipe(FoodRecipePrototype recipe) diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index 4c9860dc43..d0615c7a75 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -4,10 +4,7 @@ using Content.Shared.Chemistry; using Content.Shared.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; -using Robust.Shared.GameObjects.Components; using Robust.Shared.GameObjects.Components.UserInterface; -using Robust.Shared.Interfaces.GameObjects; - namespace Content.Shared.Kitchen { @@ -44,8 +41,19 @@ namespace Content.Shared.Kitchen EntityID = entityID; } } + [Serializable, NetSerializable] + public class MicrowaveSelectCookTimeMessage : BoundUserInterfaceMessage + { + public byte newCookTime; + public MicrowaveSelectCookTimeMessage(byte newTime) + { + newCookTime = newTime; + } + } } + + [NetSerializable, Serializable] public class MicrowaveUpdateUserInterfaceState : BoundUserInterfaceState { diff --git a/Resources/Prototypes/Entities/Items/Consumables/food.yml b/Resources/Prototypes/Entities/Items/Consumables/food.yml index 7ab00d754b..d07c9a4fe9 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/food.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/food.yml @@ -2865,3 +2865,20 @@ sprite: Objects/Food/xenomeatpie.rsi - type: Icon sprite: Objects/Food/xenomeatpie.rsi + +- type: entity + parent: FoodBase + id: DisgustingSweptSoup + name: Salty Sweet Miso Cola Soup + description: Jesus christ. + components: + - type: Food + contents: + reagents: + - ReagentId: chem.Bleach + Quantity: 15 + spawn_on_finish: TrashSnackBowl + - type: Sprite + sprite: Objects/Food/stew.rsi + - type: Icon + sprite: Objects/Food/stew.rsi diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 356f254188..7d936bc846 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -2,10 +2,20 @@ id: RecipeCheeseburger name: Cheeseburger Recipe result: FoodCheeseburger - time: 1 + time: 5 reagents: - chem.H2O: 15 - chem.Nutriment: 5 + chem.Nutriment: 10 solids: - Food4NoRaisins: 2 + FoodBreadSlice: 2 + + +- type: microwaveMealRecipe + id: RecipeMisoColaSoup + name: Salty Sweet MisoCola Soup Recipe + result: DisgustingSweptSoup + time: 15 + reagents: + chem.Cola: 5 + solids: + FoodMiloSoup: 1 From 46ef79af60c87aa1c94d8a29e7ce7803b13501d9 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Mon, 4 May 2020 00:16:05 -0500 Subject: [PATCH 46/73] Delete microwave.dmi, unneeded. Revert accidently changes to Shared EntryPoint.cs --- Content.Shared/EntryPoint.cs | 18 +++++++++++++++--- .../Textures/Objects/Kitchen/microwave.dmi | Bin 2180 -> 0 bytes 2 files changed, 15 insertions(+), 3 deletions(-) delete mode 100644 Resources/Textures/Objects/Kitchen/microwave.dmi diff --git a/Content.Shared/EntryPoint.cs b/Content.Shared/EntryPoint.cs index 8975f3fbb4..f2a1e7312e 100644 --- a/Content.Shared/EntryPoint.cs +++ b/Content.Shared/EntryPoint.cs @@ -1,23 +1,36 @@ using System; using System.Collections.Generic; + using System.Globalization; using Content.Shared.Maps; using Robust.Shared.ContentPack; using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; + using Robust.Shared.Localization; using Robust.Shared.Prototypes; -namespace Content.Shared + namespace Content.Shared { public class EntryPoint : GameShared { + // If you want to change your codebase's language, do it here. + private const string Culture = "en-US"; + #pragma warning disable 649 [Dependency] private readonly IPrototypeManager _prototypeManager; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager; + [Dependency] private readonly ILocalizationManager _localizationManager; #pragma warning restore 649 + public override void PreInit() + { + IoCManager.InjectDependencies(this); + + // Default to en-US. + _localizationManager.LoadCulture(new CultureInfo(Culture)); + } + public override void Init() { - IoCManager.InjectDependencies(this); } public override void PostInit() @@ -55,6 +68,5 @@ namespace Content.Shared _tileDefinitionManager.Initialize(); } - } } diff --git a/Resources/Textures/Objects/Kitchen/microwave.dmi b/Resources/Textures/Objects/Kitchen/microwave.dmi deleted file mode 100644 index a3cb98f9c14d5fd5fe9bb2c191c860815381f929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2180 zcmV-~2z&R5P)HubEQfX;Wb#zQ^upVvP9?!#0)W}WV&r00ZaNO2!e3C9^rw{4LXX@gF=;4HA zWl?c&O=i;%VPjN@fHIMZLd>8Zf`yfdjGMEpZL6eRsGwTW$4>e5r2h4~fQF~1p<|+) zN}-!dqMS{ThdG##Nn>P2WM)Nqdx)c(REB>#j)zI0prDtRmu6^vj*+6GqJyXa0M!5h zBTXZ!s zXH%P)Y?G00kBw_@Zcvkzq@A6ohlg#HlyKq8FUPeauBck&+i};>cGApt*wT00)pXm` zb=S~!*}_BP+Hcm+bj!6o(!gpdVq-nm9S@fw6VV3;YP87Y00001bW%=J z06^y0W&i*HmwHrKbVOxyV{&P5bZKvH004NLQ&w9TW`)L>QVxjGCPM{FF+f6%u7FSS1c$Y6>Ex(B0io9yAH+rPbYZ(cVEZ8M7X@yRcc(tg{V-#xhr+{4Lap1JxC zWl@J>!WVOWJ>Z#~)ZZ^<^U^CZN%?FKIKH7!U~eeIh+>}`poEz*V8YFSUKO{%fXho`p$r58W@g@XG7uOji3VL> zj>tFQo#TsDJy2D@7@Y$xGcY?h=VZVzG=mBEqoXliE^C2A1M`9TtW-p@TUX=OG86Tj)9PT10G)pXCMeLJA0W0xUy_4 zntXWXqOrXEVVrAj63S(PV~Pg`+Fyn)zp@-s5a6S$JjE;5Rt&U&GK`gL*H-rAeE1=b zBOG8OY<(kgIUXRS757FWOIO(li^I{+C*+yj^`)ij?QXRlxGY`1{4oaDFV76-nD+i< zGnjzO(kC}=6pHeGdDoKJSnzJYUw#kmSh(N{f4dbm1v46GK2;sjRMzLy3H3UZe8ezs>e2pUjG?+mOej1vs2 z;MqqL3QGe~dQ=}EoMU*5jo+(mk5Uxnd8!ZWpC_yj41B6cY}C%!36ThUnz(+@h9|5K z41Ct6K9H!s(26Io52!cY$T!^|6%yh)RCTIXDcf*u2hq>B;B5IlKHk1QFus;0pR4Nn z#x17xjg5`E)tv~@`a%mX7-(4^SVR7Ws!ra%gW&F$cW&RsN6`SU zAFw4gt=A~E>UeypM(YbLxL}|~ePC@3`Bz`7>N#}q&E&UtZgYdGN=T@FPz4=yN^ywz zfImj-3oUrk`T%A?uWoKN?ltb|_ZwS!73V-9e2#HclmZ0{C=D^-OL4AOb`RsS! zt7^5;*xcOw;m1Zp*SB=cK)8N@^Qwk(30agc!yJZXJ^sA_{5+uFRpd7nM{r@;F> zpXC&QMG)se2cEP(K%7gkA>0T^xPHLqm<|?oMi^WL9eC3E0ErtUq546m`aMy|NrhENXUi$05GAgwzK1NJUs6YXqsSJrfJ!>O`B%Z zjPeIRgN=}L?U!F4#QF!|j6pTFerFDZ284iD0$!<9y#I_A-TnXo(>Cj-X;QS&H0?Oo zY`f0FTekMFX^RHj{(#+WZ~d-KK`FYv$CwqLSHL$QU7)}MG=BpN9ayGCn`j22+-BUa zTed}QfZv4*$%NY<0K1?$>vzn6V8G=V)8iE?8UWz^0ZqX1TV|bFP0MWhr@-enXmvaR z$Zac>fuKJCw!QWHF8KWcKCfUcFQCQFcoYhW;=+-BVNxgDzyl*XW@ z{lVAo8XXNX;Bhoi!;|3fPzEUF=lCH;r_{uwQ=9}4=LX{jCFpQ|9r^(%@csb!%c}7i z!V>(qV4yu0`vb%RiQgZPq<;Wdf577>08WCyvYz}i9O1_z{P6+y4*+%h1OD9yKY;!L z+M$1-J?~nqKcLv5f1n*d00YGi{R8d!0XRte2U4Z#O8)_FNW^vJT(nLA0000 Date: Mon, 4 May 2020 00:18:46 -0500 Subject: [PATCH 47/73] trying that again --- Content.Shared/EntryPoint.cs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/Content.Shared/EntryPoint.cs b/Content.Shared/EntryPoint.cs index f2a1e7312e..8975f3fbb4 100644 --- a/Content.Shared/EntryPoint.cs +++ b/Content.Shared/EntryPoint.cs @@ -1,36 +1,23 @@ using System; using System.Collections.Generic; - using System.Globalization; using Content.Shared.Maps; using Robust.Shared.ContentPack; using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; - using Robust.Shared.Localization; using Robust.Shared.Prototypes; - namespace Content.Shared +namespace Content.Shared { public class EntryPoint : GameShared { - // If you want to change your codebase's language, do it here. - private const string Culture = "en-US"; - #pragma warning disable 649 [Dependency] private readonly IPrototypeManager _prototypeManager; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager; - [Dependency] private readonly ILocalizationManager _localizationManager; #pragma warning restore 649 - public override void PreInit() - { - IoCManager.InjectDependencies(this); - - // Default to en-US. - _localizationManager.LoadCulture(new CultureInfo(Culture)); - } - public override void Init() { + IoCManager.InjectDependencies(this); } public override void PostInit() @@ -68,5 +55,6 @@ _tileDefinitionManager.Initialize(); } + } } From d1376bcc3e856d04781e9dddc4d2bcad28cc6d87 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Mon, 4 May 2020 00:19:58 -0500 Subject: [PATCH 48/73] Remove unused 'ding.ogg' --- Resources/Audio/machines/ding.ogg | Bin 16007 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Resources/Audio/machines/ding.ogg diff --git a/Resources/Audio/machines/ding.ogg b/Resources/Audio/machines/ding.ogg deleted file mode 100644 index ff1e3ebbc9990da3a7492abad96bf32ea5760941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16007 zcmd6Oby$_px9@Bkq@)B1LFrPu8>G8II;0y>$}Np_r-*d7q=X>d-62YM34*|V@%uaX zocr8!?s@KW|GD$Ld-mk#U9)DbHEU+iR(|zg(!l55|lk6v@i`aAJ2;NF|1q#5{)58=RqI$gS+Od+yri_VHr4uz zPAN;t{)~;u2aAMKC~Yror$$MQuzjl*Bcj z?Rko6tXybr0Fk)N2Ui01LcZyA+meRQlmWO8)m0dfQ`92WtVztG?^3w(vNUdZ{B$48 zaP?)sP9@uhiPe$?V5O=lFno(wdoPYgq8`rB8LuWMj!NT(&A(2j9w|pJR-f)#{5dhv zEUeHiR&ImZTtQrhAuv`BHCJ6pT!t%gN{xZsRZY!CY!iB=cr9fBmfuLU<{h1FqPP#M zFn|gGxbHs^zeflNDnS7303c=3N3POGKH-ZslO_7w1e!2h0NR`gWMc?=E2-tjnB~VM zRW*GkxivL^xf@L1J(Qg0gm2Jwr#n`#-=Ja@SUDkndeLdZEh>tGKwTpKn-SxeTC7Tu0F5MN+-;&{ zJLIfi>v|6251^DVNxqk>_+8n*xBG`Z(0Ij&xr3bZDP=xpzay3kvF^!1UCi#Fw!(D5 zD3s35j#1mDjMwOrW%%&V$k70x3LsFEp$hz06hak5Y}&(+pYDgjSeTRbp1qH`dVszE zF50Q69^&79_6=78v$O_JUh(s!j#+8LM!GHbn4Wd%=P5acTxgaV{_+nFO%EE0d9>K` zJLC|mymXg7hJs9lzwCr6@5ENH*Hu#5?cbknS3&7`Nm=NrQRtsgP$txzOfb-&vRM3O zZ}Q;P;<@|sx%-dlKoi|Wi~r^MXXwyK;JD&w{|qFT*ld7pBQs7#{NIL23B9mQm8{d5 zTH1xWHP zZwwhE;IdEx_LsYmE+7CW%Yk(VNT6SC=1z+L@CWl`*C;o zc{k0)MEm)31AU@bs+#tT8V2(`n$y1wW`FtUPPv;M3u>MzjJpesyID-S+v~d<7@RAp zCn`=SSd6>d&nH+Icv#GybB((hjB8rVx*5#Ave2$G(Ea5z?jE?DU}2tMi}IO^_Wl3@Q`$3mCS_q$Hw;(3Av1f^p?ORS|!6l8SqVeOaC zkJs)7Bo2!k1C0lm-3K{WedCk%W+^_4x|T*Bk>82=TMvH}7L})!F=6I2-)r65>8ieJ zsR}RKxhjIPjPvc4J1r-FS}K^ccQ4y*`r9k!YS|WA9GF|3$og$}`q*|_RBPS6jb3AP zoVd9gyssO51Lxo-PGduiGHGDLV)waKooUombq>gy>24?`@GG@EUU({ z9P7M7>kMnX)R(Dw)==AaLfiyrRCujg%q?c{?=2_Aj!{T#6ntNv*|qsBxWz z{xA3G1b3rppC8i}i|dV5d;L|VS4G8_wfk4?PCI3X7yuAE0f6@G6DGmKDm)MZS%q+u za5l6EwIM##PpW-<8ttLm6 z8;=K>>lJ8OH5MnK=QNiBxO5OhBp7n;*4)1f@Bbdj{8ttKX^+DH6V!j&Oc_YX!d2xMy3+k|+1828Mr7$3Ob7V7$RJT%BMZP)vu3I5 zgJd*kLd`zKRZTApYQ(XTlS80C$QP`p7FM~QYP+9Pqh(vhwV|h1%r%|vI@nM{WLpM# z;jaB`Pz3pX#Q$>skiiNkFMw0bRPeXUj_Mfyn@A&&IwUFcFip~Gm*+wOYJZ?y1?o=rNSB@TvpxOXj{=4XJ>Ml}~`nTOmwH5kP8AQOUzUo3J{AFi^3A?Q{})CSKu2>F;%kRAXJa$ z!~NifM`9y3Ysh{Nvfh+{vJDBBn3DcN94&+ma$-XUaM1%bE7~$KACj%Z+7KlJBtdj? zrc6^koE7oKNT&g+IGQ-FpAMNQ44s$vdl22yVE}1*rn<&9<(+2*Fu@9>R+-@OD-P3i1B*gx={wlKkS;-MYXpg;Z&<&?oAF0-5p<^=Z>qyX z-BaigCkC=Hwrto%b3XspH+WWbt)@h7(O+#^ITI#)0{hk{rM!=r=MS@F4ki8>P~FXQ zwcgHreu8T++{Mc!#di@-VCRWPJ>Uu#jd+=0p={B-llIB2Mm=o z%}VlZiD6pFjfrE4`J)Qwd5UV3hbe=amEo#_(H)eFBEyfq*d*e(3L2iUP@n*vzCtq1 zE{Z5z-UDsC)q`c;H`^qFiWKT;8CXX%PY`J6a$8!ozHHmniS%^V3rogjV9`vUxywi{ z$*pM8d+~8f+fUsi!8ZTgu<<2VQC#tyLC~02Om+!jSCtU_=4vCyj?|KP`MvunI~io8 zAZO4ha6FYn{Mlb3*|u3?fvrtGIL95E&(&R~{6hLz=;IJ!_4Y)^=MzqPXDng0((t_u z|MbEn17UJ2Liqe2-ob^I;hniQN0v02ugumyiYD7fR(qx-x!CZ4QjH|LVdDp13++QB zx-|oaXnA)!MotL3%7Vy6Ms^W}AG4x?jD|_6pzkAEdR?V&Ul1^?M~-l>=fHGq)V1ut z;lwtHoZz%NOh<5Zr&@*HLoyhvET4bxK_)BpXC)@1L0|vf4^=fgtP&}%YFrWe7f+PJ zp2lsrL`Hupu71n(4!wFibD6~Wr)?cv!-@2vb+Owkv^o+$lpR?2r7GN1*`*5A zJ#y!|{>l9O1CJ+&KZ~2vf4L894A`ohhB>Flmg=5OzK+)%jlvI7$LUYpcV7ICpw~B! zAw2rBFtcLIo`#b;J(_^-qtP*9xZlav89*8&+Wloz**0epAsW3miM&4?{lR%XY|Rtw z4xo02Fheyc@B7(6w)Ii72$f=9U=D(E9dMuFz+BF**fBzEk`2)hUuaVAS?duH~ zZHA(s8MG*tmL4`&;c5I%DL|r_ll8L(#mhrvfr{B4WDGD z)rY<4ChI7;IWp~$%@6srbzJ%gJy}V7jmo_t!_9kO=urcENyM)~>--@6pZ0~{r?OPf z9&!4;tJHdfKo~C3`WVFt^Afe94|g1qO93Tx8)WplmuU|mt1_vU?yVZY_dj@K(3zOPYT_DwchcZrkI8d<2Y5$kjO{yzu37YP(K&JVhi{RGwhu- zj_S`HQ8*O1AGgvbzy3J{uLq{o7t$M+@7xo`+w}c}bxBxV0)tP@P9RMCIhrZmGpkCJ zqh5^Mqk8fq3ZGn$q|6EI{DK9O2n({Od)U71*c!yn!FW^)T!zgMxM8p$ zS!~6}z_6FgnbiCpS!{j>_xi>}rC&oWDGNH-t}SI|B&b+lsylJCTZ*LX_O)a43S}Xb z+FA7eS+#}lcb3!8J2{3u?^)Go%&qP-&rgvuUU53$HosZrXmDUXVfHLSR@rVP=;zEn zD*~C~pUw|06ngJcy_f3sf2=UGnPl~~p`<~4j@VaFRaj-NB|bmBCrMqo*zgcelTd|$ zT;jl(Bbjkaal61persDxJIRn7pMlwfW(G5V&PbYQQ6>^GV7e;CN0%VHe`Gzn6O8Vi zz@{M6E!?2CT%2|g@yJsDm0@1-@gw9J!FSH#hT`)tGC@)5VRP@5h^(T5S{QTG|(<@nTtAO;a zc16ayPv?RVeIAzfz&zyxny&2aZyhPZ$VWkT#c0;`(qrwj&+uUUVSJ>o2L{Dq`sftB z38tijsd2=*?~8A3ugUIr(U$rzpgc25%$me<`h39FD$UQ`YmrKAHl^Ouxk(O^KJgW3 z6fg`wJ4Hz1Z%3Gf=yF@tcI8 zOQLNtXB}tEg4xH$ly8nW#T3`mr5HX;j#?*5a`;TbR1Ma0@fi5_TDZ)+3cQmoTiI?d zcmvhp4LatygvIhlI_i2YPjFl>23OM7m7nlxy z%ZR?c3C9_+oxAaP_6FCF`d*kWQAap{0;%^Ya&TLneAHPN(p8I->t$VCF3W5`_m4j` zu)3^2wkumUsqm(}%i!nKb;HGEHG6q}%iC(-g!~}Q+|g+6?F8vq1>XnMul{+}E(CR_ z+A1DB5>k&gGIq0p3VNLNac^F^=%5(HZ^BEwn&fyQW@0b4zJY-Sdv3)J8^k|N(yy}~ z+13b=1)sP2Y8{nSJv&z<=q*asa-W#~N$^znrG3sYPhFm{4W08R0{8O3kI1ecJ--p| ze^xMUA(EmaEe;6NP&)cOM3U2d+x89heedc+pdo7F6!~U_7SRpd^bj70NB8H1;(hnJ zoKy(P&~{_hfoGBRF_Kj*Rp1$&Pg9>ZY|K2f%#UZ(uung$uVHu};4-NB`OTPdnQlzd zlLky}mLZGxxjl6c$enIJTN&VM6E{jO#nJIz-;Fo8;ug zjG*x$Fie47>^j3atL5!oFG-s+6M#}Np{h@~BBsuKCB*2+QE2umbh=*al{ z&jgv)q$K~ZQ;9;p52dfX7XlU!i3sC-$I=P}F*vU%opIZ4oT%q7MN@$?JPs>uXP4BJuUPS_v zJ5$F5DdTi((L02i(W%PgrQCm*jc(ZM!&s?yyr}H?3+s!sdv(5K%~xE59|& znnJTMd#uYNlU%yLAhkB(T94u4_t-}}y}R)K^R~QqqQ_2SycDo~6ye^4OFYRq;>Q<4 zuVTNXy;HakW~|yF8*)2UWP0|w`NIuO&BGa$B~7&I&0zj*MKg65N^B0IfUglh1q2=a zm)@pKf7yBRVdH(a`C{zH!M)7a?0L424b1}^ilsgGOVF)w3hc$rVlR;BRo0O72wXD(!3Z{VSnbzhjn0GixG{7??c=XYu)!U^czY7SQ~mU%@ER2yum%dK?6}?M(j_cOxP~ovghWjujMt)oy|{1ix%&l4|J9%K z!TgLJXN}SiNK$0-L&z90BVO#En|BJ9U;E{rbMTXAoE+7^w_J#3{$Lhso_`RcV@qJ2 zJ>H~VC()!Vx>{(C5}ry)att^3k5E2*hwa-txgSgWusJLBXsJTi#zTiM+^?S_0Tf@U zi=8>6b0^PT*S~1FUggFN(iGOUk8env6W-c49e-KAQ^#DTL5Pswbep-fvDskT+&EBy zxx|A~o!Foh9W0Qbm09r}Lzq_EQM;0hC=nJ(NI~$hUSTtx=Rw103Mi=Q*ane5>Ex~=&!e~Z1lQQAq$a0oq8*HlHcSf?2Xipn_J_?K zhkLOyek5^rUlX>{*3003nhi{SGDFNJA@N=1qX7)-N%>f|{|HGSDpzP13NM4Gkf}g2 z(o`~lRt7gxonN?e8wx8@)7>A$PH`j5VeRr?i&h4r_WyL{C1jM(s~DT=O-e}>;I~wt zO*JSQeNfsJ7Imv}cdZyB~`v*+T z69Yf)edO6l7r0H9+%Anc;E}$%)=-K<%TOXpa5+mQv19lXAlTA6n`hp%D%_B&3dYYy z?Q(tD@fWJQsnu3!UQC$>+`M7U78&{UD_D@g7$nb&z zkMQ&JFFgT8%hXZ1mqjB@G4dU}#f6I2!?&d6uXVK}%fnG}J8v+=sl&8wg+I;=PBz{N%jdvyOhzX6?4Bt9F z<}LXhaLFySt*|^5$T)tGWVR~z?HyH^V1gs918u2hH)d`Vx_kB>S<=+yD0^9>rxIp} zEtYw|b`A99EGL8Z%#>yGn%7cq?d1a<1d^pVFr#~jlm!p-4V#pQ>wME^A#yZOA+S`f*wG20D{~ z!rk!%BJ{n*aXZc673l5j6Xfgd_0t4G!40c52^Ik7l%#If{axG=;hqpf2`e*5F1wMP}wE2E}aEe5~{QJ#MY7Ubu zlgM6GI0rJ<3I#bv7!mz}MX~Xp*U)w^B8hUzobC+Y7~?bXiFv9R@KJ&a9u07Xha>9ND9 z6R+x6!DNh=YiiY6;yP>WgOhLu%K`l$Ija#9(=Sd4=bTdCk;oN_Hcw%gGkNiD0x#xJSy?Nj*fUNUbC!H<2xn?}%5~UJHC)?; z&W#uzs;^RDf;RoEI<5N$jRp*|%d3LO<1Uo`!C~Ij&b78x8?q5aBf=ehe9LEE*CGeE z904pDjnAI^+Mu=wA$jw1Zy(=MPL8yW#A5cN(!!>&)-e0`_eqOrDK(#MlDQA%n0-Gk z8l<#TJhFAQ?Ol5W0?s7GCVp3%{E^7=>ppG3K(tC8KL{>mu=`X2gV@itA8yr|2NOK5 zWJ$GnLW6&JTQo*aXHin{bJDZ)q68f|&O<4$U6xmc z=#D(0BFltT`icm7Gke)DjkaD_JCG+WnB=or(;E6myIJQybwSLa`J|XlV z-QKty^48=RjJwC}>_muaWHUMiWA?~tcos?$#BHx%{Yc1lVjuMeV5z6m4af9ryqLGZ zL^prw4pkD3NfwgL;w?pjxnlfLK-$sGLC={dAC}_o{fHz?)VVW3a*DOR_Lp3evC&E+53Z~QmQj*J4)wZ7vXV`@geF802~}u` z+iP4K-;SR-^AMwEKrTUu7Kat1%tvl(3y(}JT+q+1T#R%%?Nf7pl6f}YG~Z+vpe|OF z?Y$kNSu>*1xg!z$=lK+_rzl$KLPlg!l*w5TFOp8AgU9l$QREvW%iNHCCWTPDH$<0B z!C}692vMYoJ3%N9VhNBP5Ua$bH<&QW8s*%v@GX&{cUzL4=drmF)#qk(U`W)aztlA$ zq~f_W?tA@<`((#^iGPvB&AlgCjljPqv+oLtZ;Ii*aW9=ro1Q4!TpA+l0-^m&~^y&R7#+ z3G({rzmU_4ap99aZLH{uw6iblH`dfXXqepgxH7Hi5PqvJ7_p@Ot}vO+XzRO_lC>-k z=hQ=T=hN3`KaSszV*4 z3qHiGIBcZ!8Oq5jREEb}ocG&NsIkCJulpIMvy~l*_&AST8Z`@cG|=7B(D329x-F^y z-DS0-m>;Sdlebi`{=6}1`A52cd)URNEt-^7?`W3-v$xc)!P)jfA;o@Gr{DF6UpTLm z5K#^|n0X5?dH2P7R>KMqTl${h!kCjO-Gx7y&2ON~oN05*c&ovnbt2a@>dKtMG+6so zYl4L1hspt~7zk%h`IJ>v+j{h9{2+(vE%YM#C;_RxzorR`-z`emu;dYIFTi^Ns!YqMs|V#IJ|C*5yV zVIDR$pZwy!2zL`xw#uB>h*gi-Ffs*T@+M=RfoxCe94Z|*kV-Gm1tBg3x;)zMet*BX zlRTAmA19Vn2**^3$zB6_hF-}_{oZ;?Uc36&i?wGZ=r8GR_6JvIa05NgH)toAwJLnj zk7Npp1-s@lUm>`%wZ%^j9HLH3@i|TB?2xNEADz(RF(X4Nt;{ptM;DJ%KtqyV z(Uo~6z2;-n6x9Tj{&JvH{i!F5WE>CY$DWpL^Mh)RGr>>ceHd3UtsVOx^P-Q#9Ytu? zPt(p($JA+pA{mb34@&cXdu!~a`qV_eH#rN;5J~&}Gw^a(YnNb%z50uahvvaM%4K_{ z)j7+F(88gg12}F3Aqd6b+cqcRCYr`^X1*61Z;7#H$Pb||Dm;A1T}kl8TK9{sdMCgu zoYhvaXJ?2G1~vqV_jnDazJGlfNzX#IsnhqcKsu)VQmf-@w4%C4RJML~u~Xy*Z9m6; zgsjNm;-${S($GxG>p7FOpnkX7(a}R6BmRdiRbA2@I-b-LW(x?SYdV$`ukX(~X{w;- z0d9dAKgp=@A7hcKLTw(x&i9~gfrV*gTEEGz-B0Fa>g6qOS(maTX5?&)hUX%$_FW_0 zmJgCW7(Kpy{X?wnXg>d;BxUYkV1;5V%_T@aaW-|ae=rv>xAv3c;}tfwz!>_9@5cuV z`}*m!C9+~8Li43*G2ugojKOqbsAXYN17D@N60;>0cG;|O_;srjj&oExg+6}76z}9y2b*6FS)7pK$3hu{1^dxS%PVrC9SLK^LYNLg4d19Ze}A5l}Mm} zB~TMGzDu>|S5n#bw<2|E{2v-uv5wM}wMOWX3>Z`7xNoMKZ>(6v&c}7~gGE}SPrNbT zergdXc%LGDCU)VLzUi6ZC1P)5W*clG{@W8vQIQIZqHm=@4hT;elZ?n@&@NoY?-NBs zvd48C(r;n;DxP2%<*9;=|D>6Kd@?|z66w5k`gOG^peKL1VYNQuyT$K`lW@yBZIi)x^oLZOkNuF6Z(j=N(uP&H_z=J6{5;=Wc|vTm;_&H{F(`V+ zNPwjfB&tl9j*|dO>vmy_R!U>2b(OtY-u+ivHwPnrMsf~ zc^1o2m*`ymGnYaN?!%!Bd63Ce&F$j-l&9Ow-k8EQqSX(vv*5?jsBwtQy&A9!tt}qWU)@{~7Qz)%p_L#{Y|XE$?mj~;8hxtVj{caJ{K5p4P~d&ujcMjS67WAJTmi{EEK z0e85MLzPhWEoopFCf%C72wYT8-5VH9zs7_&A?YfFn((sHre4^#?U6Gh4JsK^Nd7=7 zBT1FK&Xck1-hL5=+lWhzf+>%tbt{aJe5~evUkSfi{X(C-SpV|+TEGm3B>PllH!2Dt zp7-OyE@AYadHO?&{S5L25`zXQVJ6Qg4~1!@-RD}Hs0KaGQwYR~gWQ=FNxwPgjv9)} zG7hMxDpz+K4%`vQG%HF7^#r%!K?@}1!?s&rX*jQTpVuubZ(_dVKWnTDf=Oy0=3G2? zHg51@x_e@nt8=(f$O9fbN8gIe?OwBJJnwa2-8uJK#Xguz+p(rSxiK7mr- z6w8jk61e<5C_4~lK)KKv%QcIClyKIKGe7Ri=HuM#;?ivRGL|I}8JtFvbg{+Y+HLAz zhF&qteI=b(+~tZ)Z*XdiwNO_?jNK0F)w9adq`Ac@ttk9yOddyXFhRW&wknEsAuh|jO>Qu4Qneif>(37d# zj5m*zDPa;bl2{9|ZF+0|^PX+@+oBo0ZGhocC!8*orQcBSl?+7=^ImgcxAf?W?aB%g z*ko(tFiuoM2AL{4GY^4^UY`WIPkjK@hJoo`to6dXMFv=>HY%L53>z6d%QS>;(AAa` zg&LF4 zhO-vpfn^_#4xNL1NQ-Jb!W^~F#l5gUY_h?T7#}S{cLHI|^Z>kG7tv|v;v%mGa0>vx zLRZa%f%_R$1fWfD@LV&3aGzkEg8T7PrKD~r(%VS^oHnWMG6$Lk=X}u?o;nyYQ`1@a zxHTf03zy+^BEl33C$;ZPCodAAK-%&xmOh8Mef##~7J(X2Y)#U>C{q!+*juh}q@DfJT8~$Uc6O@f%sFZ0h~;>-B{m6 z%Sbca3V{A+^bp+45Hf`D=b&9o3-&9-+Mf<9RWNjg0xVE%21guul5lqppav}37yX6{ z#>-9$4ElsvNIXD#Dp8RxzZCP(rEiSZJ zsQ)=sKtdk7qxzpi1tjP@=DJgs%T(V;LrYsN6h086GgU`ybHQ}N8_Axg zhQQ&}@SDy^pAN%GBdqhA)yf=^)m&syVhxOi-ov2_TXsS**D;m7twKaV^yrgu9JX*$ zDIy39O$xOC1zp3vsgGbItb4Uv@9I57X5`u>~;uR=+NFaYs z1w=U!fHy7`0*L?6Y}lBB;T*edYMJx!)!A$X(~UaLhlfP87@O#Av6p=2K98&cMWK6V zO91sX?qTa2r6yeaEusA|^Ru>4L2*z}3_}r>ue-yKMxs0zwKVf~@Z#-Hr|mCiQPS2% z2HR+WQr2n&0KGWww@oa$Nmr2=D+&mLw3{%%#*CIYJo!b8rfNe>qRQ^@E0aYR^ktOZ~VUbJ(d3`~krD01=F!V;QGw z9e5OOp2^KoS5YV@fdme*K!`{hPdMjvaAeuT6$%|us`7wti}?z;J|Uo}=i-l(xgDVy zY|ZeR6vZ;^A~W@8o>QBFodQZgwqo|DzvIh%#&XkgdeO)8-Pf_I=Os!9!-YxN=2Myc zz?%XYn!90&xbD#fIUTSMvy+*A0-Zr*^hETQncrf?c71dj#+j6HPpZw?jlXZkC5i}6 zWuSXRxNyMu=%vDQ{_hTaFhIxw;%#*?Fo4|J7dJsuyXxf8^~T?VzESBNW;A}NfKsRn zKN4n_W|V*q?d@4uLMm^`o1S0YZv0l|TKL?LVtYQplC2H>ssudm6rWyd{p%s~!7F+o z+6SEWUrhElKJC_xstjuQnEWy*61#d5fdIfQsh7JOK@8vrg~rmN(Ei08V7h4dZU5R2G;qF^hYkVP*qM)WjiYy}zOx^Ry@tNQlE@(h*GW!>ZBpjpihi+a{~3hp02$4mm~l9^T# z1d6L7%KLdXX4}zmpcsHU6i`MFkO5{n3t8ljYp#kN?ei0Dy;?q(-;WUh9~I;+_t>kl zRNf|Y32i=k{B-Wpp{+mK*ln!&p)q8k86gu%3EK2|YtC34D|27L;FkhmGY{L336Sv# zU-O-{>?!5(uMa&$N$X-o2d0|T;HFz~DWm76BhltoMC$bSr-wLO7GeW0?aE1ZfgFHC zm*WL%QkF~XGIA&H8x=iz^GcWl0}<(^b}wTDM^6|kxRN800nrJ;Z8Ux;prywEe_H6a z($(hAIoipQ0awen;b_^qxZa=MRi_907=aY(Z{$7%C=qtLx148lO@EI(6qO2Rz?@UNwd?uU@Iz$Rj3kPqb z;y0ux-Fk+1kwQqyk)lT`Bt)UhtDwR>YS$|i-Q(VTwLbh&Mj;XBLh00|#3qM)|)G!LZ2MBGM?JrO~^S=3TYg0b!x zbGRuQ2g4H`?hGt&dK)R!S=o8T!o~y%30PQ|a^$;-Vfz+;@zyb_&-G-o!W*pMSpX|R zpaC7?_K-I{Ou4Zd^QXx0@}U>94j}LfCiDkwc90RH%&g#sqy&JHX=#Fvt&eFPbHxd{ zwMv{S$lwC{7gHJ|0HS6g?*+t87ZQ=Ij1feIT6%=ufA;#-UAC2%|KOnLyP9Xv%gr8{ z`B3D$S!maTz;HpuTs6;;N7E0^t5}EWnaATz_ZJ)~p&H{2oCo3zionP^ z`4IPc?gDj7@vWD`s}r@x0Mrx;cJ>uWC*bh*Ij9dDfX0fT(~T6DO913xa0~=!=}A($ z&R*+sB7cS8Rma3y6ycDD5^a+V4i6!_x|rk?bBj7g+RQZE{Lp9)KQEMGa4sbXvVRbL zkj;j|lq*MuYioYl8b!ud!<8L-nkvQ}8!mqZ#l8HB#|d6HqXA@cfYH*k*u>9y>zq?} z{k_3xN4_alb|yOcD>f_;5kUV*yE2xaKZ1G>Qo|}F*TD;}XGQF0-IlW4!uy>(UEaTq$A?XT37K66Jj%+*zl%Md{X*zeoeoMOGfv!Zq+Kmbi)Gt1ZB!{GRq zU-SCA*{KI}G-6#{GP4!;{<3}ga$LS6ts8sm=8V2Zd^tS&b)T1fZ~g;2kl9KH67_Y$ za6n%ngv1YVYw>}=<0~=G`9~R#F0-3{))Hpz$740A+$qx5RazDj`W^?Px|HU}{393n zy!ay1*}U-NH}`-qKG4bQ&BMZh|IQdnl&P3##!*mZcp@QVEf?{(uz%9xG23fG?s9%~LQTeCO zJvKKC?L8JJ(Ul6G(3GR-h)PhQLpI%fJUVDRj1ju{>v$FttvTMSM??|kXI7=@O;bmD6 zCv2ggEV`RDg|}8mZ*t3S`PSP3Tm3K?P!40!X-748NFHF*wqH@Yo>% zM*K;ulD!NMWZZ+3&`yXU1iOJUM`-{u<00Fy$ZGfC_qW!Gi;WvSkJ;W48pNL`^hhR- zkc-*_qqN6gX?WScH`+aTVV^ESj<7;p8idsL5kV9#X^-Y_-qQ>Hr*8K!`-u)H@p%YM zVsrXYY~JD1)tiHIizM+8qs2^D-{jmoFXq$T50ihA-y=;n2}%J-aJ&uoEC0;g2fGpI zvC8lyw~3XThi$&g>(){IDiG53{vX2!sC4eXjapo%%s011agV}@EAV^1Log$*Jn64K zyj(Eh$CJRW+ko5&z;hprSO6*1FwI`wEr5ACIuGp%x_z{1X4k&o$hKB^9i+|9u6%~2 z22-N$BDv`NHBxOg7GLHK)e3$b*bGmUYIz6sJZ&Hzg)Fe}P|7yh~&h8R~qqJeZ z#|JCJNCjd&Fz-$86(LRlP0}@Ai8Lnale6Piujh)RE1j{mu1c|X;*dZCILC7m1j2~k zV%QBWNK39_0*9;!ZDu{~pne759P~lz12L0};h+!a`S#^o&tGvS51xoFfvxA6(U7wT z&KBops&0ttbaz&y5xQ(;=DuMv=e6@)L=wq`)fp65`-h4ls%(K4nz7^b1 z^Ki~Yr~IeyVYv8jstR@G>waE9DH2gRj}Q3efs-jt%8bN>F|dKVLVoNW_gqsQNrH(t z=3Srm78n9@C(r6TDOhQ~PdtNg{O0-$33z`aZ9oPsC}2~6D^V4jZ5yAf2419uc*6(r z7c!fFWQ=&;6LffA_6a({Yq_D`HVO0@D*0yt<6as{qTY5(4(d@+vU zy-V3Xy}yk+=2qMWfNM;^FU(I`fu06e1OjE4cSAd%H%f&k&FjJF ktzbD2S#1dAY(TgTF=85aSIcbF2pk}n9IAoj85{OL0A6q?8UO$Q From 0abd0d87842d5e9f43372dd49dd6485e64911912 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Mon, 4 May 2020 00:24:19 -0500 Subject: [PATCH 49/73] revert entrypoint to master --- Content.Shared/EntryPoint.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Content.Shared/EntryPoint.cs b/Content.Shared/EntryPoint.cs index 8975f3fbb4..a9df20ff2a 100644 --- a/Content.Shared/EntryPoint.cs +++ b/Content.Shared/EntryPoint.cs @@ -6,7 +6,7 @@ using Robust.Shared.IoC; using Robust.Shared.Prototypes; -namespace Content.Shared + namespace Content.Shared { public class EntryPoint : GameShared { @@ -55,6 +55,5 @@ namespace Content.Shared _tileDefinitionManager.Initialize(); } - } } From c34081c514383e561b06b59ea697e31142361f2d Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Mon, 4 May 2020 00:25:41 -0500 Subject: [PATCH 50/73] revert sharedlathecomponent to master --- .../GameObjects/Components/Research/SharedLatheComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs b/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs index 6b290d551d..dabae088fb 100644 --- a/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs +++ b/Content.Shared/GameObjects/Components/Research/SharedLatheComponent.cs @@ -1,4 +1,4 @@ -// Only unused on .NET Core due to KeyValuePair.Deconstruct +// Only unused on .NET Core due to KeyValuePair.Deconstruct // ReSharper disable once RedundantUsingDirective using Robust.Shared.Utility; using System; From 5348e719e20dcc7c0eb8712177a96eca50b6ff1b Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 4 May 2020 17:30:19 +0200 Subject: [PATCH 51/73] Update submodule --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 1f6bd2481f..51b87513ed 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 1f6bd2481f88f3827b9163444fc09c82fa146001 +Subproject commit 51b87513ed7867b97a0c5d3bb4146a9e40a5da1d From 8e516038fc65a160d11264554de87edb1f287208 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 4 May 2020 17:46:28 +0200 Subject: [PATCH 52/73] Keybinds for the LineEdit improvements. --- Resources/keybinds.yml | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 18e7cfc951..10ed5a7826 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -68,6 +68,14 @@ binds: - function: OpenCharacterMenu type: State key: C +- function: TextCursorSelect + # TextCursorSelect HAS to be above ExamineEntity + # So that LineEdit receives it correctly. + # TODO: Make it so that UI keybinds are somehow prioritized so this ordering stuff isn't necessary. + type: state + key: MouseLeft + mod1: Shift + canFocus: true - function: ExamineEntity type: State key: MouseLeft @@ -112,6 +120,16 @@ binds: type: state key: Right canRepeat: true +- function: TextCursorWordLeft + type: state + key: Left + mod1: Control + canRepeat: true +- function: TextCursorWordRight + type: state + key: Right + mod1: Control + canRepeat: true - function: TextCursorBegin type: state key: Home @@ -119,6 +137,37 @@ binds: type: state key: End canRepeat: true +- function: TextCursorSelectLeft + type: state + key: Left + mod1: Shift + canRepeat: true +- function: TextCursorSelectRight + type: state + key: Right + mod1: Shift + canRepeat: true +- function: TextCursorSelectWordLeft + type: state + key: Left + mod1: Shift + mod2: Control + canRepeat: true +- function: TextCursorSelectWordRight + type: state + key: Right + mod1: Shift + mod2: Control + canRepeat: true +- function: TextCursorSelectBegin + type: state + mod1: Shift + key: Home +- function: TextCursorSelectEnd + type: state + mod1: Shift + key: End + canRepeat: true - function: TextBackspace type: state key: BackSpace @@ -129,6 +178,18 @@ binds: - function: TextSubmit type: state key: NumpadEnter +- function: TextSelectAll + type: state + key: A + mod1: Control +- function: TextCopy + type: state + key: C + mod1: Control +- function: TextCut + type: state + key: X + mod1: Control - function: TextPaste type: state key: V From 4034458d26d7cfb384eb410c565cd92f45e03be1 Mon Sep 17 00:00:00 2001 From: FLOZ Date: Mon, 4 May 2020 13:54:54 -0400 Subject: [PATCH 53/73] Pretty up the microwave menu, add click sounds. Remove some unnecessary ToList() calls. Remove unnecessary IoC resolves. --- .../Kitchen/MicrowaveBoundUserInterface.cs | 10 ++++-- .../Components/Kitchen/MicrowaveMenu.cs | 22 ++++++++++--- .../Kitchen/KitchenMicrowaveComponent.cs | 33 +++++++++++++------ Content.Shared/Kitchen/RecipeManager.cs | 20 +++-------- .../Kitchen/SharedMicrowaveComponent.cs | 6 ++-- 5 files changed, 55 insertions(+), 36 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 94fa205bb2..68ebf1b5e7 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -16,6 +16,10 @@ namespace Content.Client.GameObjects.Components.Kitchen { public class MicrowaveBoundUserInterface : BoundUserInterface { +#pragma warning disable 649 + [Dependency] private readonly IEntityManager _entityManager; + [Dependency] private readonly IPrototypeManager _prototypeManager; +#pragma warning restore 649 private MicrowaveMenu _menu; private Dictionary _solids = new Dictionary(); @@ -38,7 +42,7 @@ namespace Content.Client.GameObjects.Components.Kitchen _menu.OnCookTimeSelected += args => { var actualButton = args.Button as Button; - var newTime = (byte) int.Parse(actualButton.Text); + var newTime = (uint) int.Parse(actualButton.Text); _menu.VisualCookTime = newTime; SendMessage(new SharedMicrowaveComponent.MicrowaveSelectCookTimeMessage(newTime)); }; @@ -75,7 +79,7 @@ namespace Content.Client.GameObjects.Components.Kitchen _menu.IngredientsList.Clear(); foreach (var item in reagents) { - IoCManager.Resolve().TryIndex(item.ReagentId, out ReagentPrototype proto); + _prototypeManager.TryIndex(item.ReagentId, out ReagentPrototype proto); _menu.IngredientsList.AddItem($"{item.Quantity} {proto.Name}"); } @@ -83,7 +87,7 @@ namespace Content.Client.GameObjects.Components.Kitchen _solids.Clear(); foreach (var entityID in solids) { - var entity = IoCManager.Resolve().GetEntity(entityID); + var entity = _entityManager.GetEntity(entityID); if (entity.TryGetComponent(out IconComponent icon)) { diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index 1c7e2e8ce9..f267c30371 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -1,5 +1,6 @@ using System; using Robust.Client.Graphics.Drawing; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Localization; @@ -15,7 +16,7 @@ namespace Content.Client.GameObjects.Components.Kitchen public event Action OnCookTimeSelected; - public byte VisualCookTime { get; set; } + public uint VisualCookTime = 1; public Button StartButton { get;} public Button EjectButton { get;} @@ -81,6 +82,13 @@ namespace Content.Client.GameObjects.Components.Kitchen buttonGridContainer.AddChild(StartButton); buttonGridContainer.AddChild(EjectButton); vSplit.AddChild(buttonGridContainer); + + //Padding + vSplit.AddChild(new Control + { + CustomMinimumSize = (0, 15), + SizeFlagsVertical = SizeFlags.Fill, + }); CookTimeButtonGroup = new ButtonGroup(); CookTimeButtonVbox = new VBoxContainer @@ -107,9 +115,12 @@ namespace Content.Client.GameObjects.Components.Kitchen index+=5; } + var cookTimeOneSecondButton = (Button)CookTimeButtonVbox.GetChild(0); + cookTimeOneSecondButton.Pressed = true; + _cookTimeInfoLabel = new Label { - Text = Loc.GetString("COOK TIME:"), + Text = Loc.GetString($"COOK TIME: {VisualCookTime}"), Align = Label.AlignMode.Center, Modulate = Color.White, SizeFlagsVertical = SizeFlags.ShrinkCenter @@ -120,18 +131,20 @@ namespace Content.Client.GameObjects.Components.Kitchen SizeFlagsVertical = SizeFlags.FillExpand, ModulateSelfOverride = Color.Red, CustomMinimumSize = (100, 128), - PanelOverride = new StyleBoxFlat {BackgroundColor = Color.Black}, + PanelOverride = new StyleBoxFlat {BackgroundColor = Color.Black.WithAlpha(0.5f)}, Children = { + new VBoxContainer { Children = { + new PanelContainer { - PanelOverride = new StyleBoxFlat(){BackgroundColor = Color.Red.WithAlpha(0.2f)}, + PanelOverride = new StyleBoxFlat(){BackgroundColor = Color.Gray.WithAlpha(0.2f)}, Children = { @@ -162,6 +175,7 @@ namespace Content.Client.GameObjects.Components.Kitchen SizeFlagsHorizontal = SizeFlags.FillExpand, Children = { + innerTimerPanel }, }; diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index db31904525..419c44dc30 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -22,6 +22,8 @@ using Robust.Server.Interfaces.GameObjects; using Robust.Shared.Prototypes; using Robust.Shared.Localization; using Content.Server.Interfaces; +using Robust.Shared.Audio; +using YamlDotNet.Serialization.NodeTypeResolvers; namespace Content.Server.GameObjects.Components.Kitchen { @@ -57,7 +59,7 @@ namespace Content.Server.GameObjects.Components.Kitchen /// For right now, I don't think any recipe cook time should be greater than 60 seconds. /// [ViewVariables] - private byte _currentCookTimerTime { get; set; } + private uint _currentCookTimerTime { get; set; } = 1; #endregion private bool Powered => _powerDevice.Powered; @@ -109,7 +111,6 @@ namespace Content.Server.GameObjects.Components.Kitchen _solids = new Dictionary(); _solidsVisualList = new List(); _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; - } private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message) @@ -122,10 +123,7 @@ namespace Content.Server.GameObjects.Components.Kitchen switch (message.Message) { case MicrowaveStartCookMessage msg : - if (HasContents) - { - wzhzhzh(); - } + wzhzhzh(); break; case MicrowaveEjectMessage msg : @@ -133,6 +131,7 @@ namespace Content.Server.GameObjects.Components.Kitchen { VaporizeReagents(); EjectSolids(); + ClickSound(); UpdateUserInterface(); } @@ -142,12 +141,14 @@ namespace Content.Server.GameObjects.Components.Kitchen if (HasContents) { EjectSolidWithIndex(msg.EntityID); + ClickSound(); UpdateUserInterface(); } break; case MicrowaveSelectCookTimeMessage msg: _currentCookTimerTime = msg.newCookTime; + ClickSound(); UpdateUserInterface(); break; } @@ -166,7 +167,7 @@ namespace Content.Server.GameObjects.Components.Kitchen private void UpdateUserInterface() { _solidsVisualList.Clear(); - foreach(var item in _storage.ContainedEntities.ToList()) + foreach(var item in _storage.ContainedEntities) { _solidsVisualList.Add(item.Uid); } @@ -240,6 +241,11 @@ namespace Content.Server.GameObjects.Components.Kitchen //This is required. It's 'cook'. private void wzhzhzh() { + if (!HasContents) + { + return; + } + _busy = true; // Convert storage into Dictionary of ingredients _solids.Clear(); @@ -269,11 +275,11 @@ namespace Content.Server.GameObjects.Components.Kitchen var goodMeal = (recipeToCook != null) && - (_currentCookTimerTime == (byte)recipeToCook.CookTime) ? true : false; + (_currentCookTimerTime == (uint)recipeToCook.CookTime) ? true : false; SetAppearance(MicrowaveVisualState.Cooking); _audioSystem.Play(_startCookingSound); - Timer.Spawn(_currentCookTimerTime * _cookTimeMultiplier, () => + Timer.Spawn((int)(_currentCookTimerTime * _cookTimeMultiplier), () => { if (goodMeal) @@ -340,7 +346,7 @@ namespace Content.Server.GameObjects.Components.Kitchen { for (var i = 0; i < recipeSolid.Value; i++) { - foreach (var item in _storage.ContainedEntities.ToList()) + foreach (var item in _storage.ContainedEntities) { if (item.Prototype.ID == recipeSolid.Key) { @@ -384,6 +390,13 @@ namespace Content.Server.GameObjects.Components.Kitchen return true; } + + private void ClickSound() + { + + _audioSystem.Play("/Audio/machines/machine_switch.ogg", AudioParams.Default.WithVolume(-2f)); + + } } } diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs index 454c21a440..5ac01ad64f 100644 --- a/Content.Shared/Kitchen/RecipeManager.cs +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -24,29 +24,17 @@ namespace Content.Shared.Kitchen Recipes.Sort(new RecipeComparer()); } - private class RecipeComparer : IComparer + private class RecipeComparer : Comparer { - int IComparer.Compare(FoodRecipePrototype x, FoodRecipePrototype y) + public override int Compare(FoodRecipePrototype x, FoodRecipePrototype y) { if (x == null || y == null) { return 0; } - - if (x.IngredientsReagents.Count < y.IngredientsReagents.Count) - { - return 1; - } - - if (x.IngredientsReagents.Count > y.IngredientsReagents.Count) - { - return -1; - } - - return 0; + + return -x.IngredientsReagents.Count.CompareTo(y.IngredientsReagents.Count); } - - } } } diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index d0615c7a75..5707172db1 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -44,10 +44,10 @@ namespace Content.Shared.Kitchen [Serializable, NetSerializable] public class MicrowaveSelectCookTimeMessage : BoundUserInterfaceMessage { - public byte newCookTime; - public MicrowaveSelectCookTimeMessage(byte newTime) + public uint newCookTime; + public MicrowaveSelectCookTimeMessage(uint inputTime) { - newCookTime = newTime; + newCookTime = inputTime; } } } From 108bd36b8c2d3191519fe7963a0264ce2b688ae2 Mon Sep 17 00:00:00 2001 From: FLOZ Date: Mon, 4 May 2020 14:39:33 -0500 Subject: [PATCH 54/73] And not a single "ToList()" went home to their family that day..... --- .../Components/Kitchen/MicrowaveBoundUserInterface.cs | 2 +- .../Components/Kitchen/KitchenMicrowaveComponent.cs | 9 +++++---- Content.Shared/Kitchen/SharedMicrowaveComponent.cs | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 68ebf1b5e7..1d025efc28 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -74,7 +74,7 @@ namespace Content.Client.GameObjects.Components.Kitchen } - private void RefreshContentsDisplay(List reagents, List solids) + private void RefreshContentsDisplay(IReadOnlyList reagents, List solids) { _menu.IngredientsList.Clear(); foreach (var item in reagents) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 419c44dc30..6fcd84c124 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -172,7 +172,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _solidsVisualList.Add(item.Uid); } - _userInterface.SetState(new MicrowaveUpdateUserInterfaceState(_solution.Solution.Contents.ToList(), _solidsVisualList)); + _userInterface.SetState(new MicrowaveUpdateUserInterfaceState(_solution.Solution.Contents, _solidsVisualList)); } void IActivate.Activate(ActivateEventArgs eventArgs) @@ -310,8 +310,9 @@ namespace Content.Server.GameObjects.Components.Kitchen private void VaporizeSolids() { - foreach (var item in _storage.ContainedEntities.ToList()) + for(var i = _storage.ContainedEntities.Count-1; i>=0; i--) { + var item = _storage.ContainedEntities.ElementAt(i); _storage.Remove(item); item.Delete(); } @@ -321,9 +322,9 @@ namespace Content.Server.GameObjects.Components.Kitchen private void EjectSolids() { - foreach (var item in _storage.ContainedEntities.ToList()) + for(var i = _storage.ContainedEntities.Count-1; i>=0; i--) { - _storage.Remove(item); + _storage.Remove(_storage.ContainedEntities.ElementAt(i)); } _solids.Clear(); diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index 5707172db1..253e9302d4 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -57,9 +57,9 @@ namespace Content.Shared.Kitchen [NetSerializable, Serializable] public class MicrowaveUpdateUserInterfaceState : BoundUserInterfaceState { - public readonly List ReagentsReagents; + public readonly IReadOnlyList ReagentsReagents; public readonly List ContainedSolids; - public MicrowaveUpdateUserInterfaceState(List reagents, List solids) + public MicrowaveUpdateUserInterfaceState(IReadOnlyList reagents, List solids) { ReagentsReagents = reagents; ContainedSolids = solids; From 69b34e74ce08f21cef627b837cc85fb0ed7b20d0 Mon Sep 17 00:00:00 2001 From: FLOZ Date: Mon, 4 May 2020 15:16:16 -0500 Subject: [PATCH 55/73] Seperated Reagent item list and Solid item list to allow for vaporizing particular reagents at will. (also fixes a really nasty null reference exception because they shared the same list before D: ) --- .../Kitchen/MicrowaveBoundUserInterface.cs | 36 +++++++++++++------ .../Components/Kitchen/MicrowaveMenu.cs | 23 ++++++++++-- .../Kitchen/KitchenMicrowaveComponent.cs | 15 +++++++- .../Kitchen/SharedMicrowaveComponent.cs | 11 ++++++ 4 files changed, 70 insertions(+), 15 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 1d025efc28..e93d016806 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -23,22 +23,33 @@ namespace Content.Client.GameObjects.Components.Kitchen private MicrowaveMenu _menu; private Dictionary _solids = new Dictionary(); + private Dictionary _reagents =new Dictionary(); public MicrowaveBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner,uiKey) { - + } protected override void Open() { base.Open(); _menu = new MicrowaveMenu(this); - _menu.OpenCentered(); _menu.OnClose += Close; _menu.StartButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); _menu.EjectButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); - _menu.IngredientsList.OnItemSelected += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[args.ItemIndex])); + _menu.IngredientsList.OnItemSelected += args => + { + SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[args.ItemIndex])); + + }; + + _menu.IngredientsListReagents.OnItemSelected += args => + { + SendMessage( + new SharedMicrowaveComponent.MicrowaveVaporizeReagentIndexedMessage(_reagents[args.ItemIndex])); + }; + _menu.OnCookTimeSelected += args => { var actualButton = args.Button as Button; @@ -76,25 +87,28 @@ namespace Content.Client.GameObjects.Components.Kitchen private void RefreshContentsDisplay(IReadOnlyList reagents, List solids) { - _menu.IngredientsList.Clear(); - foreach (var item in reagents) + _reagents.Clear(); + _menu.IngredientsListReagents.Clear(); + foreach (var reagent in reagents) { - _prototypeManager.TryIndex(item.ReagentId, out ReagentPrototype proto); - - _menu.IngredientsList.AddItem($"{item.Quantity} {proto.Name}"); + _prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype proto); + var reagentAdded = _menu.IngredientsListReagents.AddItem($"{reagent.Quantity} {proto.Name}"); + var reagentIndex = _menu.IngredientsListReagents.IndexOf(reagentAdded); + _reagents.Add(reagentIndex, reagent); } _solids.Clear(); + _menu.IngredientsList.Clear(); foreach (var entityID in solids) { var entity = _entityManager.GetEntity(entityID); if (entity.TryGetComponent(out IconComponent icon)) { - var itemItem = _menu.IngredientsList.AddItem(entity.Name, icon.Icon.Default); + var solidItem = _menu.IngredientsList.AddItem(entity.Name, icon.Icon.Default); - var index = _menu.IngredientsList.IndexOf(itemItem); - _solids.Add(index, entityID); + var solidIndex = _menu.IngredientsList.IndexOf(solidItem); + _solids.Add(solidIndex, entityID); } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index f267c30371..a2a9e02625 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -27,6 +27,8 @@ namespace Content.Client.GameObjects.Components.Kitchen private VBoxContainer CookTimeButtonVbox { get; } public ItemList IngredientsList { get;} + + public ItemList IngredientsListReagents { get; } private Label _cookTimeInfoLabel { get; } public MicrowaveMenu(MicrowaveBoundUserInterface owner = null) @@ -39,16 +41,31 @@ namespace Content.Client.GameObjects.Components.Kitchen SizeFlagsVertical = SizeFlags.Fill }; + IngredientsListReagents = new ItemList + { + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand, + SelectMode = ItemList.ItemListSelectMode.Button, + SizeFlagsStretchRatio = 2, + CustomMinimumSize = (100,128) + }; IngredientsList = new ItemList { SizeFlagsVertical = SizeFlags.FillExpand, SizeFlagsHorizontal = SizeFlags.FillExpand, SelectMode = ItemList.ItemListSelectMode.Button, - SizeFlagsStretchRatio = 8, - CustomMinimumSize = (200,256) + SizeFlagsStretchRatio = 2, + CustomMinimumSize = (100,128) }; - + + hSplit.AddChild(IngredientsListReagents); + //Padding between the lists. + hSplit.AddChild(new Control + { + CustomMinimumSize = (0,5), + }); + hSplit.AddChild(IngredientsList); var vSplit = new VBoxContainer diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 6fcd84c124..14723c806d 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -145,7 +145,16 @@ namespace Content.Server.GameObjects.Components.Kitchen UpdateUserInterface(); } break; - + + case MicrowaveVaporizeReagentIndexedMessage msg: + if (HasContents) + { + _solution.TryRemoveReagent(msg.ReagentQuantity.ReagentId, msg.ReagentQuantity.Quantity); + ClickSound(); + UpdateUserInterface(); + } + break; + case MicrowaveSelectCookTimeMessage msg: _currentCookTimerTime = msg.newCookTime; ClickSound(); @@ -305,7 +314,11 @@ namespace Content.Server.GameObjects.Components.Kitchen private void VaporizeReagents() { _solution.RemoveAllSolution(); + } + private void VaporizeReagentWithIndex() + { + } private void VaporizeSolids() diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index 253e9302d4..31349c86b5 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -41,6 +41,17 @@ namespace Content.Shared.Kitchen EntityID = entityID; } } + + [Serializable, NetSerializable] + public class MicrowaveVaporizeReagentIndexedMessage : BoundUserInterfaceMessage + { + + public Solution.ReagentQuantity ReagentQuantity; + public MicrowaveVaporizeReagentIndexedMessage(Solution.ReagentQuantity reagentQuantity) + { + ReagentQuantity = reagentQuantity; + } + } [Serializable, NetSerializable] public class MicrowaveSelectCookTimeMessage : BoundUserInterfaceMessage { From fbaafa8366f9be09b8bb44ed017c32794f2ac99e Mon Sep 17 00:00:00 2001 From: Hugal31 Date: Tue, 5 May 2020 00:39:15 +0200 Subject: [PATCH 56/73] Add smart equip shortcuts (#873) --- Content.Client/Input/ContentContexts.cs | 2 + .../UserInterface/TutorialWindow.cs | 6 +- .../Components/GUI/ServerHandsComponent.cs | 6 ++ .../Items/Storage/ServerStorageComponent.cs | 7 ++- .../GameObjects/EntitySystems/HandsSystem.cs | 57 +++++++++++++++++++ Content.Shared/Input/ContentKeyFunctions.cs | 2 + .../Entities/Items/Clothing/belts.yml | 1 + Resources/keybinds.yml | 8 +++ 8 files changed, 86 insertions(+), 3 deletions(-) diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs index 4249ef2704..279b238217 100644 --- a/Content.Client/Input/ContentContexts.cs +++ b/Content.Client/Input/ContentContexts.cs @@ -28,6 +28,8 @@ namespace Content.Client.Input human.AddFunction(ContentKeyFunctions.OpenContextMenu); human.AddFunction(ContentKeyFunctions.OpenCraftingMenu); human.AddFunction(ContentKeyFunctions.OpenInventoryMenu); + human.AddFunction(ContentKeyFunctions.SmartEquipBackpack); + human.AddFunction(ContentKeyFunctions.SmartEquipBelt); human.AddFunction(ContentKeyFunctions.MouseMiddle); human.AddFunction(ContentKeyFunctions.ToggleCombatMode); human.AddFunction(ContentKeyFunctions.WideAttack); diff --git a/Content.Client/UserInterface/TutorialWindow.cs b/Content.Client/UserInterface/TutorialWindow.cs index ffdfc2a2b0..af54907d57 100644 --- a/Content.Client/UserInterface/TutorialWindow.cs +++ b/Content.Client/UserInterface/TutorialWindow.cs @@ -69,6 +69,8 @@ namespace Content.Client.UserInterface Switch hands: [color=#a4885c]{4}[/color] Use held item: [color=#a4885c]{5}[/color] Drop held item: [color=#a4885c]{6}[/color] +Smart equip from backpack: [color=#a4885c]{24}[/color] +Smart equip from belt: [color=#a4885c]{25}[/color] Open inventory: [color=#a4885c]{7}[/color] Open character window: [color=#a4885c]{8}[/color] Open crafting window: [color=#a4885c]{9}[/color] @@ -106,7 +108,9 @@ Toggle sandbox window: [color=#a4885c]{21}[/color]", Key(OpenTileSpawnWindow), Key(OpenSandboxWindow), Key(Use), - Key(WideAttack))); + Key(WideAttack), + Key(SmartEquipBackpack), + Key(SmartEquipBelt))); //Gameplay VBox.AddChild(new Label { FontOverride = headerFont, Text = "\nGameplay" }); diff --git a/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs b/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs index 5375c3b783..ab265e3693 100644 --- a/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs @@ -151,6 +151,12 @@ namespace Content.Server.GameObjects return success; } + public void PutInHandOrDrop(ItemComponent item) + { + if (!PutInHand(item)) + item.Owner.Transform.GridPosition = Owner.Transform.GridPosition; + } + public bool CanPutInHand(ItemComponent item) { foreach (var hand in ActivePriorityEnumerable()) diff --git a/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs index 3f451a2ce4..f0bdb1a615 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/ServerStorageComponent.cs @@ -45,6 +45,8 @@ namespace Content.Server.GameObjects private int StorageCapacityMax = 10000; public HashSet SubscribedSessions = new HashSet(); + public IReadOnlyCollection StoredEntities => storage.ContainedEntities; + public override void Initialize() { base.Initialize(); @@ -140,7 +142,6 @@ namespace Content.Server.GameObjects /// public bool AttackBy(AttackByEventArgs eventArgs) { - _ensureInitialCalculated(); Logger.DebugS("Storage", "Storage (UID {0}) attacked by user (UID {1}) with entity (UID {2}).", Owner.Uid, eventArgs.User.Uid, eventArgs.AttackWith.Uid); if(Owner.TryGetComponent(out var placeableSurfaceComponent)) @@ -363,8 +364,10 @@ namespace Content.Server.GameObjects /// /// Inserts an entity into the storage component from the players active hand. /// - private bool PlayerInsertEntity(IEntity player) + public bool PlayerInsertEntity(IEntity player) { + _ensureInitialCalculated(); + if (!player.TryGetComponent(out IHandsComponent hands) || hands.GetActiveHand == null) return false; diff --git a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs index cc70bc6d07..855084abba 100644 --- a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs @@ -1,9 +1,14 @@ using System; +using System.Linq; +using Content.Server.GameObjects; using Content.Server.GameObjects.Components; using Content.Server.GameObjects.Components.Stack; +using Content.Server.Interfaces; using Content.Server.Interfaces.GameObjects; using Content.Server.Throw; +using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.Input; +using Content.Shared.Interfaces; using Content.Shared.Physics; using JetBrains.Annotations; using Robust.Server.GameObjects; @@ -19,6 +24,7 @@ using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Physics; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.Log; using Robust.Shared.Map; using Robust.Shared.Maths; @@ -33,6 +39,7 @@ namespace Content.Server.GameObjects.EntitySystems #pragma warning disable 649 [Dependency] private readonly IMapManager _mapManager; [Dependency] private readonly IEntitySystemManager _entitySystemManager; + [Dependency] private readonly IServerNotifyManager _notifyManager; #pragma warning restore 649 private const float ThrowForce = 1.5f; // Throwing force of mobs in Newtons @@ -50,6 +57,8 @@ namespace Content.Server.GameObjects.EntitySystems input.BindMap.BindFunction(ContentKeyFunctions.Drop, new PointerInputCmdHandler(HandleDrop)); input.BindMap.BindFunction(ContentKeyFunctions.ActivateItemInHand, InputCmdHandler.FromDelegate(HandleActivateItem)); input.BindMap.BindFunction(ContentKeyFunctions.ThrowItemInHand, new PointerInputCmdHandler(HandleThrowItem)); + input.BindMap.BindFunction(ContentKeyFunctions.SmartEquipBackpack, InputCmdHandler.FromDelegate(HandleSmartEquipBackpack)); + input.BindMap.BindFunction(ContentKeyFunctions.SmartEquipBelt, InputCmdHandler.FromDelegate(HandleSmartEquipBelt)); } /// @@ -190,5 +199,53 @@ namespace Content.Server.GameObjects.EntitySystems return true; } + + private void HandleSmartEquipBackpack(ICommonSession session) + { + HandleSmartEquip(session, EquipmentSlotDefines.Slots.BACKPACK); + } + + private void HandleSmartEquipBelt(ICommonSession session) + { + HandleSmartEquip(session, EquipmentSlotDefines.Slots.BELT); + } + + private void HandleSmartEquip(ICommonSession session, EquipmentSlotDefines.Slots equipementSlot) + { + var plyEnt = ((IPlayerSession) session).AttachedEntity; + + if (plyEnt == null || !plyEnt.IsValid()) + return; + + if (!plyEnt.TryGetComponent(out HandsComponent handsComp) || !plyEnt.TryGetComponent(out InventoryComponent inventoryComp)) + return; + + if (!inventoryComp.TryGetSlotItem(equipementSlot, out ItemComponent equipmentItem) + || !equipmentItem.Owner.TryGetComponent(out var storageComponent)) + { + _notifyManager.PopupMessage(plyEnt, plyEnt, Loc.GetString("You have no {0} to take something out of!", EquipmentSlotDefines.SlotNames[equipementSlot].ToLower())); + return; + } + + var heldItem = handsComp.GetHand(handsComp.ActiveIndex)?.Owner; + + if (heldItem != null) + { + storageComponent.PlayerInsertEntity(plyEnt); + } + else + { + if (storageComponent.StoredEntities.Count == 0) + { + _notifyManager.PopupMessage(plyEnt, plyEnt, Loc.GetString("There's nothing in your {0} to take out!", EquipmentSlotDefines.SlotNames[equipementSlot].ToLower())); + } + else + { + var lastStoredEntity = Enumerable.Last(storageComponent.StoredEntities); + if (storageComponent.Remove(lastStoredEntity)) + handsComp.PutInHandOrDrop(lastStoredEntity.GetComponent()); + } + } + } } } diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index f2a17daa5d..d44cb1d64d 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -15,6 +15,8 @@ namespace Content.Shared.Input public static readonly BoundKeyFunction OpenContextMenu = "OpenContextMenu"; public static readonly BoundKeyFunction OpenCraftingMenu = "OpenCraftingMenu"; public static readonly BoundKeyFunction OpenInventoryMenu = "OpenInventoryMenu"; + public static readonly BoundKeyFunction SmartEquipBackpack = "SmartEquipBackpack"; + public static readonly BoundKeyFunction SmartEquipBelt = "SmartEquipBelt"; public static readonly BoundKeyFunction OpenTutorial = "OpenTutorial"; public static readonly BoundKeyFunction SwapHands = "SwapHands"; public static readonly BoundKeyFunction ThrowItemInHand = "ThrowItemInHand"; diff --git a/Resources/Prototypes/Entities/Items/Clothing/belts.yml b/Resources/Prototypes/Entities/Items/Clothing/belts.yml index b2423d740e..2994275e00 100644 --- a/Resources/Prototypes/Entities/Items/Clothing/belts.yml +++ b/Resources/Prototypes/Entities/Items/Clothing/belts.yml @@ -21,6 +21,7 @@ state: utilitybelt - type: Clothing Size: 50 + QuickEquip: false sprite: Clothing/belt_utility.rsi - type: Storage Capacity: 40 # Full tool loadout is 35, plus an extra diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 10ed5a7826..05cf30d140 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -105,6 +105,14 @@ binds: - function: OpenInventoryMenu type: state key: I +- function: SmartEquipBackpack + type: State + key: B + mod1: Shift +- function: SmartEquipBelt + type: State + key: E + mod1: Shift - function: ShowDebugConsole type: state key: Tilde From b803bee2c0a98dd3ac3903828a5ec13a5ef61813 Mon Sep 17 00:00:00 2001 From: FLOZ Date: Mon, 4 May 2020 18:35:36 -0500 Subject: [PATCH 57/73] Remove unncessary class dictionary and list. Fix meal prototype properties. --- .../Kitchen/KitchenMicrowaveComponent.cs | 50 ++++++++----------- .../Kitchen/MicrowaveMealRecipePrototype.cs | 24 +++++---- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 14723c806d..bf23b5134b 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -76,13 +76,7 @@ namespace Content.Server.GameObjects.Components.Kitchen private BoundUserInterface _userInterface; private Container _storage; - /// - /// A dictionary of PrototypeIDs and integers representing quantity. - /// - private Dictionary _solids; - private List _solidsVisualList; - - + public override void ExposeData(ObjectSerializer serializer) { @@ -107,9 +101,7 @@ namespace Content.Server.GameObjects.Components.Kitchen _audioSystem = _entitySystemManager.GetEntitySystem(); _userInterface = Owner.GetComponent() .GetBoundUserInterface(MicrowaveUiKey.Key); - - _solids = new Dictionary(); - _solidsVisualList = new List(); + _userInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; } @@ -149,7 +141,7 @@ namespace Content.Server.GameObjects.Components.Kitchen case MicrowaveVaporizeReagentIndexedMessage msg: if (HasContents) { - _solution.TryRemoveReagent(msg.ReagentQuantity.ReagentId, msg.ReagentQuantity.Quantity); + VaporizeReagentWithReagentQuantity(msg.ReagentQuantity); ClickSound(); UpdateUserInterface(); } @@ -175,13 +167,14 @@ namespace Content.Server.GameObjects.Components.Kitchen private void UpdateUserInterface() { - _solidsVisualList.Clear(); + var solidsVisualList = new List(); + solidsVisualList.Clear(); foreach(var item in _storage.ContainedEntities) { - _solidsVisualList.Add(item.Uid); + solidsVisualList.Add(item.Uid); } - _userInterface.SetState(new MicrowaveUpdateUserInterfaceState(_solution.Solution.Contents, _solidsVisualList)); + _userInterface.SetState(new MicrowaveUpdateUserInterfaceState(_solution.Solution.Contents, solidsVisualList)); } void IActivate.Activate(ActivateEventArgs eventArgs) @@ -257,16 +250,17 @@ namespace Content.Server.GameObjects.Components.Kitchen _busy = true; // Convert storage into Dictionary of ingredients - _solids.Clear(); + var solidsDict = new Dictionary(); + solidsDict.Clear(); foreach(var item in _storage.ContainedEntities) { - if(_solids.ContainsKey(item.Prototype.ID)) + if(solidsDict.ContainsKey(item.Prototype.ID)) { - _solids[item.Prototype.ID]++; + solidsDict[item.Prototype.ID]++; } else { - _solids.Add(item.Prototype.ID, 1); + solidsDict.Add(item.Prototype.ID, 1); } } @@ -274,7 +268,7 @@ namespace Content.Server.GameObjects.Components.Kitchen FoodRecipePrototype recipeToCook = null; foreach(var r in _recipeManager.Recipes) { - if (!CanSatisfyRecipe(r)) + if (!CanSatisfyRecipe(r, solidsDict)) { continue; } @@ -316,9 +310,9 @@ namespace Content.Server.GameObjects.Components.Kitchen _solution.RemoveAllSolution(); } - private void VaporizeReagentWithIndex() + private void VaporizeReagentWithReagentQuantity(Solution.ReagentQuantity reagentQuantity) { - + _solution.TryRemoveReagent(reagentQuantity.ReagentId, reagentQuantity.Quantity); } private void VaporizeSolids() @@ -329,7 +323,6 @@ namespace Content.Server.GameObjects.Components.Kitchen _storage.Remove(item); item.Delete(); } - _solids.Clear(); } private void EjectSolids() @@ -339,13 +332,14 @@ namespace Content.Server.GameObjects.Components.Kitchen { _storage.Remove(_storage.ContainedEntities.ElementAt(i)); } - - _solids.Clear(); } private void EjectSolidWithIndex(EntityUid entityID) { - _storage.Remove(_entityManager.GetEntity(entityID)); + if (_entityManager.EntityExists(entityID)) + { + _storage.Remove(_entityManager.GetEntity(entityID)); + } } @@ -374,7 +368,7 @@ namespace Content.Server.GameObjects.Components.Kitchen } - private bool CanSatisfyRecipe(FoodRecipePrototype recipe) + private bool CanSatisfyRecipe(FoodRecipePrototype recipe, Dictionary solids) { foreach (var reagent in recipe.IngredientsReagents) { @@ -391,12 +385,12 @@ namespace Content.Server.GameObjects.Components.Kitchen foreach (var solid in recipe.IngredientsSolids) { - if (!_solids.ContainsKey(solid.Key)) + if (!solids.ContainsKey(solid.Key)) { return false; } - if (_solids[solid.Key] < solid.Value) + if (solids[solid.Key] < solid.Value) { return false; } diff --git a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs index abae3d5eb1..0d64a7d073 100644 --- a/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Prototypes/Kitchen/MicrowaveMealRecipePrototype.cs @@ -19,29 +19,31 @@ namespace Content.Shared.Prototypes.Kitchen { private string _id; - public string Name => Loc.GetString(Name); private string _name; - public string Result; - public int CookTime; + private string _result; + private int _cookTime; + + private Dictionary _ingsReagents; + private Dictionary _ingsSolids; + + public string Name => Loc.GetString(_name); + public string ID => _id; + public string Result => _result; + public int CookTime => _cookTime; public IReadOnlyDictionary IngredientsReagents => _ingsReagents; public IReadOnlyDictionary IngredientsSolids => _ingsSolids; - private Dictionary _ingsReagents; - private Dictionary _ingsSolids; - - - public string ID => _id; - + public void LoadFrom(YamlMappingNode mapping) { var serializer = YamlObjectSerializer.NewReader(mapping); serializer.DataField(ref _id, "id", string.Empty); serializer.DataField(ref _name, "name", string.Empty); - serializer.DataField(ref Result, "result", string.Empty); + serializer.DataField(ref _result, "result", string.Empty); serializer.DataField(ref _ingsReagents, "reagents", new Dictionary()); serializer.DataField(ref _ingsSolids, "solids", new Dictionary()); - serializer.DataField(ref CookTime, "time", 5); + serializer.DataField(ref _cookTime, "time", 5); } } From c8e2624390b6a096f3bf0c5534c0508671a2f59c Mon Sep 17 00:00:00 2001 From: FLOZ Date: Mon, 4 May 2020 19:59:43 -0500 Subject: [PATCH 58/73] lol --- .../GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index bf23b5134b..ac6ab14c65 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -168,7 +168,6 @@ namespace Content.Server.GameObjects.Components.Kitchen private void UpdateUserInterface() { var solidsVisualList = new List(); - solidsVisualList.Clear(); foreach(var item in _storage.ContainedEntities) { solidsVisualList.Add(item.Uid); @@ -251,7 +250,6 @@ namespace Content.Server.GameObjects.Components.Kitchen _busy = true; // Convert storage into Dictionary of ingredients var solidsDict = new Dictionary(); - solidsDict.Clear(); foreach(var item in _storage.ContainedEntities) { if(solidsDict.ContainsKey(item.Prototype.ID)) From 453cecccd070bd89730ba4eb9250aca8ef546466 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 5 May 2020 11:43:41 +0200 Subject: [PATCH 59/73] Make client side verbs correctly respect visibility. --- Content.Client/GameObjects/EntitySystems/VerbSystem.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Content.Client/GameObjects/EntitySystems/VerbSystem.cs b/Content.Client/GameObjects/EntitySystems/VerbSystem.cs index c88bf50150..7b91aaedaa 100644 --- a/Content.Client/GameObjects/EntitySystems/VerbSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/VerbSystem.cs @@ -150,7 +150,10 @@ namespace Content.Client.GameObjects.EntitySystems if (verb.RequireInteractionRange && !VerbUtility.InVerbUseRange(user, entity)) continue; - var disabled = verb.GetVisibility(user, component) != VerbVisibility.Visible; + if (VerbUtility.IsVerbInvisible(verb, user, component, out var vis)) + continue; + + var disabled = vis != VerbVisibility.Visible; var category = verb.GetCategory(user, component); @@ -166,7 +169,10 @@ namespace Content.Client.GameObjects.EntitySystems if (globalVerb.RequireInteractionRange && !VerbUtility.InVerbUseRange(user, entity)) continue; - var disabled = globalVerb.GetVisibility(user, entity) != VerbVisibility.Visible; + if (VerbUtility.IsVerbInvisible(globalVerb, user, entity, out var vis)) + continue; + + var disabled = vis != VerbVisibility.Visible; var category = globalVerb.GetCategory(user, entity); if(!buttons.ContainsKey(category)) From b9e59fc8d457975e9edf7fd0e39b6b1305f90f95 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 5 May 2020 23:58:56 +0200 Subject: [PATCH 60/73] Audio processing benchmarks. --- Content.Benchmarks/Program.cs | 2 +- Content.Benchmarks/StereoToMonoBenchmark.cs | 70 +++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 Content.Benchmarks/StereoToMonoBenchmark.cs diff --git a/Content.Benchmarks/Program.cs b/Content.Benchmarks/Program.cs index 741a4efb33..7eb128092d 100644 --- a/Content.Benchmarks/Program.cs +++ b/Content.Benchmarks/Program.cs @@ -6,7 +6,7 @@ namespace Content.Benchmarks { public static void Main(string[] args) { - BenchmarkRunner.Run(); + BenchmarkRunner.Run(); } } } diff --git a/Content.Benchmarks/StereoToMonoBenchmark.cs b/Content.Benchmarks/StereoToMonoBenchmark.cs new file mode 100644 index 0000000000..89dec8a3dd --- /dev/null +++ b/Content.Benchmarks/StereoToMonoBenchmark.cs @@ -0,0 +1,70 @@ +using System.Runtime.Intrinsics.X86; +using BenchmarkDotNet.Attributes; + +namespace Content.Benchmarks +{ + public class StereoToMonoBenchmark + { + [Params(128, 256, 512)] + public int N { get; set; } + + private short[] _input; + private short[] _output; + + [GlobalSetup] + public void Setup() + { + _input = new short[N * 2]; + _output = new short[N]; + } + + [Benchmark] + public void BenchSimple() + { + var l = N; + for (var j = 0; j < l; j++) + { + var k = j + l; + _output[j] = (short) ((_input[k] + _input[j]) / 2); + } + } + + [Benchmark] + public unsafe void BenchSse() + { + var l = N; + fixed (short* iPtr = _input) + fixed (short* oPtr = _output) + { + for (var j = 0; j < l; j += 8) + { + var k = j + l; + + var jV = Sse2.ShiftRightArithmetic(Sse2.LoadVector128(iPtr + j), 1); + var kV = Sse2.ShiftRightArithmetic(Sse2.LoadVector128(iPtr + k), 1); + + Sse2.Store(j + oPtr, Sse2.Add(jV, kV)); + } + } + } + + [Benchmark] + public unsafe void BenchAvx2() + { + var l = N; + fixed (short* iPtr = _input) + fixed (short* oPtr = _output) + { + for (var j = 0; j < l; j += 16) + { + var k = j + l; + + var jV = Avx2.ShiftRightArithmetic(Avx.LoadVector256(iPtr + j), 1); + var kV = Avx2.ShiftRightArithmetic(Avx.LoadVector256(iPtr + k), 1); + + Avx.Store(j + oPtr, Avx2.Add(jV, kV)); + } + } + } + } +} From cf9edddf2fabcbf9bdc4970a6327de72bb7910ca Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 5 May 2020 23:59:31 +0200 Subject: [PATCH 61/73] Update submodule, UI fixes. --- .../HumanInventoryInterfaceController.cs | 4 +-- .../Inventory/InventoryInterfaceController.cs | 23 ++++++------ Content.Client/UserInterface/HandsGui.cs | 8 ++--- .../UserInterface/ItemSlotButton.cs | 35 ++++++++++++------- Resources/keybinds.yml | 5 +++ RobustToolbox | 2 +- 6 files changed, 44 insertions(+), 33 deletions(-) diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs b/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs index f824ac1f6c..2410ca7c26 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs @@ -114,13 +114,13 @@ namespace Content.Client.GameObjects } } - protected override void HandleInventoryKeybind(BaseButton.ButtonEventArgs args, Slots slot) + protected override void HandleInventoryKeybind(GUIBoundKeyEventArgs args, Slots slot) { if (!_inventoryButtons.TryGetValue(slot, out var buttons)) return; if (!Owner.TryGetSlot(slot, out var item)) return; - if (_itemSlotManager.OnButtonPressed(args.Event, item)) + if (_itemSlotManager.OnButtonPressed(args, item)) return; base.HandleInventoryKeybind(args, slot); diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/InventoryInterfaceController.cs b/Content.Client/GameObjects/Components/HUD/Inventory/InventoryInterfaceController.cs index da6fa94b5c..62237e09cf 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/InventoryInterfaceController.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/InventoryInterfaceController.cs @@ -2,8 +2,9 @@ using Content.Client.UserInterface; using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.Input; -using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.Input; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -62,39 +63,35 @@ namespace Content.Client.GameObjects { } - protected virtual void HandleInventoryKeybind(BaseButton.ButtonEventArgs args, EquipmentSlotDefines.Slots slot) + protected virtual void HandleInventoryKeybind(GUIBoundKeyEventArgs args, EquipmentSlotDefines.Slots slot) { - if (args.Event.CanFocus) + if (args.Function == EngineKeyFunctions.UIClick) { - UseItemOnInventory(args, slot); + UseItemOnInventory(slot); } } - protected void AddToInventory(BaseButton.ButtonEventArgs args, EquipmentSlotDefines.Slots slot) + protected void AddToInventory(GUIBoundKeyEventArgs args, EquipmentSlotDefines.Slots slot) { - if (!args.Event.CanFocus) + if (args.Function != EngineKeyFunctions.UIClick) { return; } - args.Button.Pressed = false; Owner.SendEquipMessage(slot); } - protected void UseItemOnInventory(BaseButton.ButtonEventArgs args, EquipmentSlotDefines.Slots slot) + protected void UseItemOnInventory(EquipmentSlotDefines.Slots slot) { - args.Button.Pressed = false; - Owner.SendUseMessage(slot); } - protected void OpenStorage(BaseButton.ButtonEventArgs args, EquipmentSlotDefines.Slots slot) + protected void OpenStorage(GUIBoundKeyEventArgs args, EquipmentSlotDefines.Slots slot) { - if (!args.Event.CanFocus && args.Event.Function != ContentKeyFunctions.ActivateItemInWorld) + if (args.Function != EngineKeyFunctions.UIClick && args.Function != ContentKeyFunctions.ActivateItemInWorld) { return; } - args.Button.Pressed = false; Owner.SendOpenStorageUIMessage(slot); } diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index 2356d7e24e..bf20579a28 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -57,10 +57,10 @@ namespace Content.Client.UserInterface AddChild(hBox); - _leftButton.OnPressed += args => HandKeyBindDown(args.Event, HandNameLeft); - _leftButton.OnStoragePressed += args => _OnStoragePressed(args.Event, HandNameLeft); - _rightButton.OnPressed += args => HandKeyBindDown(args.Event, HandNameRight); - _rightButton.OnStoragePressed += args => _OnStoragePressed(args.Event, HandNameRight); + _leftButton.OnPressed += args => HandKeyBindDown(args, HandNameLeft); + _leftButton.OnStoragePressed += args => _OnStoragePressed(args, HandNameLeft); + _rightButton.OnPressed += args => HandKeyBindDown(args, HandNameRight); + _rightButton.OnStoragePressed += args => _OnStoragePressed(args, HandNameRight); // Active hand _leftButton.AddChild(ActiveHandRect = new TextureRect diff --git a/Content.Client/UserInterface/ItemSlotButton.cs b/Content.Client/UserInterface/ItemSlotButton.cs index f27583f737..54bc4c027c 100644 --- a/Content.Client/UserInterface/ItemSlotButton.cs +++ b/Content.Client/UserInterface/ItemSlotButton.cs @@ -1,5 +1,7 @@ using System; +using Content.Shared.Input; using Robust.Client.Graphics; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Input; using Robust.Shared.Maths; @@ -8,26 +10,26 @@ namespace Content.Client.GameObjects { public sealed class ItemSlotButton : MarginContainer { - public BaseButton Button { get; } + public TextureRect Button { get; } public SpriteView SpriteView { get; } public BaseButton StorageButton { get; } public TextureRect CooldownCircle { get; } - public Action OnPressed { get; set; } - public Action OnStoragePressed { get; set; } + public Action OnPressed { get; set; } + public Action OnStoragePressed { get; set; } public ItemSlotButton(Texture texture, Texture storageTexture) { CustomMinimumSize = (64, 64); - AddChild(Button = new TextureButton + AddChild(Button = new TextureRect { - TextureNormal = texture, - Scale = (2, 2), - EnableAllKeybinds = true + Texture = texture, + TextureScale = (2, 2), + MouseFilter = MouseFilterMode.Stop }); - Button.OnPressed += OnButtonPressed; + Button.OnKeyBindDown += OnButtonPressed; AddChild(SpriteView = new SpriteView { @@ -42,9 +44,16 @@ namespace Content.Client.GameObjects SizeFlagsHorizontal = SizeFlags.ShrinkEnd, SizeFlagsVertical = SizeFlags.ShrinkEnd, Visible = false, - EnableAllKeybinds = true }); + StorageButton.OnKeyBindDown += args => + { + if (args.Function != EngineKeyFunctions.UIClick) + { + OnButtonPressed(args); + } + }; + StorageButton.OnPressed += OnStorageButtonPressed; AddChild(CooldownCircle = new TextureRect @@ -57,20 +66,20 @@ namespace Content.Client.GameObjects }); } - private void OnButtonPressed(BaseButton.ButtonEventArgs args) + private void OnButtonPressed(GUIBoundKeyEventArgs args) { OnPressed?.Invoke(args); } private void OnStorageButtonPressed(BaseButton.ButtonEventArgs args) { - if (args.Event.Function == EngineKeyFunctions.Use) + if (args.Event.Function == EngineKeyFunctions.UIClick) { - OnStoragePressed?.Invoke(args); + OnStoragePressed?.Invoke(args.Event); } else { - OnPressed?.Invoke(args); + OnPressed?.Invoke(args.Event); } } } diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 05cf30d140..38db90e8b7 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -1,5 +1,9 @@ version: 1 # Not used right now, whatever. binds: +- function: UIClick + type: state + key: MouseLeft + canFocus: true - function: Use type: state key: MouseLeft @@ -84,6 +88,7 @@ binds: - function: ActivateItemInWorld type: state key: E + canFocus: true - function: ThrowItemInHand type: state key: MouseLeft diff --git a/RobustToolbox b/RobustToolbox index 51b87513ed..f54f4ffe52 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 51b87513ed7867b97a0c5d3bb4146a9e40a5da1d +Subproject commit f54f4ffe52b79ed8ade6154f7b42e7375a3a22c9 From c7aeec0f6c06305dda6b3b3390bde50b9fdaaacf Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 6 May 2020 22:42:55 +0200 Subject: [PATCH 62/73] Fix compile. --- Content.Client/GameObjects/Components/Sound/SoundComponent.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Content.Client/GameObjects/Components/Sound/SoundComponent.cs b/Content.Client/GameObjects/Components/Sound/SoundComponent.cs index 076ac902a6..03b5f088d3 100644 --- a/Content.Client/GameObjects/Components/Sound/SoundComponent.cs +++ b/Content.Client/GameObjects/Components/Sound/SoundComponent.cs @@ -1,7 +1,5 @@ using System.Collections.Generic; -using System.Linq; using Content.Shared.GameObjects.Components.Sound; -using Microsoft.DiaSymReader; using Robust.Client.GameObjects.EntitySystems; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; From b1f30bf3969a18ebb4236cb926859f6a8c9d4edc Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Thu, 7 May 2020 10:58:30 -0500 Subject: [PATCH 63/73] Supplemental PR for microwave. Reagent containers/ recipes/ reagents etc... --- .../Entities/Items/Consumables/food.yml | 56 ++++++------ .../kitchen_reagent_containers.yml | 22 +++++ Resources/Prototypes/Kitchen/meal_recipes.yml | 88 ++++++++++++++++++- .../Reagents/{food.yml => food_reagents.yml} | 0 4 files changed, 139 insertions(+), 27 deletions(-) create mode 100644 Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml rename Resources/Prototypes/Reagents/{food.yml => food_reagents.yml} (100%) diff --git a/Resources/Prototypes/Entities/Items/Consumables/food.yml b/Resources/Prototypes/Entities/Items/Consumables/food.yml index d07c9a4fe9..6a597b9141 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/food.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/food.yml @@ -1482,19 +1482,21 @@ - type: Icon sprite: Objects/Food/loadedbakedpotato.rsi -# - type: entity -# parent: FoodBase -# id: FoodMeat -# name: Meat -# description: A slab of meat. -# components: -# - type: Food -# uses: 1 -# restore_amount: 1 -# - type: Sprite -# sprite: Objects/Food/meat.rsi -# - type: Icon -# sprite: Objects/Food/meat.rsi +- type: entity + parent: FoodBase + id: FoodMeat + name: Meat + description: A slab of meat. + components: + - type: Food + contents: + reagents: + - ReagentId: chem.Nutriment + Quantity: 5 + - type: Sprite + sprite: Objects/Food/meat.rsi + - type: Icon + sprite: Objects/Food/meat.rsi - type: entity parent: FoodBase @@ -2835,19 +2837,21 @@ - type: Icon sprite: Objects/Food/xenobreadslice.rsi -#- type: entity -# parent: FoodBase -# id: FoodXenomeat -# name: Xenomeat -# description: '' -# components: -# - type: Food -# uses: 1 -# restore_amount: 1 -# - type: Sprite -# sprite: Objects/Food/xenomeat.rsi -# - type: Icon -# sprite: Objects/Food/xenomeat.rsi +- type: entity + parent: FoodBase + id: FoodXenomeat + name: Xenomeat + description: Yum. + components: + - type: Food + contents: + reagents: + - ReagentId: chem.Nutriment + Quantity: 20 + - type: Sprite + sprite: Objects/Food/xenomeat.rsi + - type: Icon + sprite: Objects/Food/xenomeat.rsi - type: entity parent: FoodBase diff --git a/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml b/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml new file mode 100644 index 0000000000..2d009d083e --- /dev/null +++ b/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml @@ -0,0 +1,22 @@ +- type: entity + parent: BaseItem + id: ReagentContainerFlour + name: Flour + description: Not to be confused with flower. + components: + - type: Solution + maxVol: 50 + contents: + reagents: + - ReagentId: chem.Flour + Quantity: 50 + - type: Pourable + transferAmount: 5 + - type: Drink + despawn_empty: true + - type: Sprite + sprite: Objects/Food/flour.rsi + state: icon + - type: Icon + sprite: Objects/Food/flour.rsi + state: icon diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 7d936bc846..10140ecbe0 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -1,13 +1,99 @@ + +#Burgers - type: microwaveMealRecipe id: RecipeCheeseburger name: Cheeseburger Recipe result: FoodCheeseburger time: 5 reagents: - chem.Nutriment: 10 + chem.Flour: 5 + solids: + FoodMeat: 1 + +- type: microwaveMealRecipe + id: RecipeTofuBurger + name: Tofu Burger Recipe + result: FoodTofuBurger + time: 5 + reagents: + chem.Flour: 15 + solids: + Tofu: 1 + +- type: microwaveMealRecipe + id: RecipeXenoburger + name: Xenoburger Recipe + result: FoodXenoburger + time: 5 + reagents: + chem.Flour: 5 + solids: + FoodXenomeat: 1 + +- type: microwaveMealRecipe + id: RecipeSuperBiteBurger + name: Super Bite Burger Recipe + result: FoodSuperBiteBurger + time: 20 + reagents: + chem.Flour: 15 + chem.Salt: 5 + chem.Pepper: 5 + solids: + FoodMeat: 5 + FoodCheeseWedge: 3 + FoodTomato: 4 + FoodEgg: 2 + +#Breads & Sandwiches +- type: microwaveMealRecipe + id: RecipeBread + name: Bread Recipe + result: DrinkFoodContainerBread + time: 15 + reagents: + chem.Flour: 15 + +- type: microwaveMealRecipe + id: RecipeSandwich + name: Sandwich Recipe + result: FoodSandwich + time: 10 solids: FoodBreadSlice: 2 + FoodMeatSteak: 1 + FoodCheeseWedge: 1 +- type: microwaveMealRecipe + id: RecipeToastedSandwich + name: Toasted Sandwich Recipe + result: FoodToastedSandwich + time: 5 + solids: + FoodSandwich: 1 + +- type: microwaveMealRecipe + id: RecipeGrilledCheese + name: Grilled Cheese Recipe + result: FoodGrilledCheese + time: 5 + solids: + FoodBreadSlice: 2 + FoodCheeseWedge: 1 + + + +#Other +- type: microwaveMealRecipe + id: RecipeMeatSteak + name: Meat Steak Recipe + result: FoodMeatSteak + time: 10 + reagents: + chem.Salt: 1 + chem.Pepper: 1 + solids: + FoodMeat: 1 - type: microwaveMealRecipe id: RecipeMisoColaSoup diff --git a/Resources/Prototypes/Reagents/food.yml b/Resources/Prototypes/Reagents/food_reagents.yml similarity index 100% rename from Resources/Prototypes/Reagents/food.yml rename to Resources/Prototypes/Reagents/food_reagents.yml From 046834129f36d06fdd01161a45058115c38ed694 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 8 May 2020 11:55:19 +0200 Subject: [PATCH 64/73] Fix ranged weapons getting stuck down. Thanks ShadowCommander for figuring this one out. --- Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs b/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs index 8a0c991055..f606e932c3 100644 --- a/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/RangedWeaponSystem.cs @@ -40,7 +40,7 @@ namespace Content.Client.GameObjects.EntitySystems var canFireSemi = _isFirstShot; var state = _inputSystem.CmdStates.GetState(EngineKeyFunctions.Use); - if (!_combatModeSystem.IsInCombatMode() && state != BoundKeyState.Down) + if (!_combatModeSystem.IsInCombatMode() || state != BoundKeyState.Down) { _isFirstShot = true; _blocked = false; From 531278ced16b8f913e47bdd382d31f6172692e2d Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 8 May 2020 14:01:33 +0200 Subject: [PATCH 65/73] added InRangeUnobstructed call to wire component --- Content.Server/GameObjects/Components/WiresComponent.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Content.Server/GameObjects/Components/WiresComponent.cs b/Content.Server/GameObjects/Components/WiresComponent.cs index 18510e6908..d8c7a5b119 100644 --- a/Content.Server/GameObjects/Components/WiresComponent.cs +++ b/Content.Server/GameObjects/Components/WiresComponent.cs @@ -234,6 +234,14 @@ namespace Content.Server.GameObjects.Components _notifyManager.PopupMessage(Owner.Transform.GridPosition, player, _localizationManager.GetString("You have no hands.")); return; } + + var interactionSystem = IoCManager.Resolve().GetEntitySystem(); + if (!interactionSystem.InRangeUnobstructed(player.Transform.MapPosition, Owner.Transform.WorldPosition, ignoredEnt: Owner)) + { + _notifyManager.PopupMessage(Owner.Transform.GridPosition, player, _localizationManager.GetString("You can't reach there!")); + return; + } + var activeHandEntity = handsComponent.GetActiveHand?.Owner; switch (msg.Action) { From 329e5bca53f3f4c8e248ef2a576ca212d1ea843a Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 8 May 2020 22:55:27 +0200 Subject: [PATCH 66/73] Update submodule. --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index f54f4ffe52..65abe671aa 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit f54f4ffe52b79ed8ade6154f7b42e7375a3a22c9 +Subproject commit 65abe671aa7cabffceafe430d992c72b9566c652 From 6ff691c33812bb890adae9869d1888c3238e4030 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 8 May 2020 22:55:40 +0200 Subject: [PATCH 67/73] Make ActivateItemInWorld not canfocus. --- Resources/keybinds.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 38db90e8b7..a97aa89769 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -88,7 +88,6 @@ binds: - function: ActivateItemInWorld type: state key: E - canFocus: true - function: ThrowItemInHand type: state key: MouseLeft From 584f3a2240ac94ace9a766dd394b869375a80bde Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Fri, 8 May 2020 18:12:54 -0500 Subject: [PATCH 68/73] moar recipes 1 --- Resources/Prototypes/Kitchen/meal_recipes.yml | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 10140ecbe0..f66e298755 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -81,6 +81,88 @@ FoodBreadSlice: 2 FoodCheeseWedge: 1 +- type: microwaveMealRecipe + id: RecipeBaguette + name: Baguette Recipe + result: FoodBaguette + time: 10 + reagents: + chem.Flour: 15 + chem.Salt: 1 + chem.Pepper: 1 + +- type: microwaveMealRecipe + id: RecipeCreamCheeseBread + name: Cream Cheese Bread Recipe + result: DrinkFoodContainerCreamCheeseBread + time: 20 + reagents: + chem.Flour: 15 + solids: + FoodCheeseWedge: 2 + +- type: microwaveMealRecipe + id: RecipeBananaBread + name: Banana Bread Recipe + result: DrinkFoodContainerBananaBread + time: 25 + reagents: + chem.Flour: 15 + chem.Milk: 5 + solids: + FoodEgg: 3 + FoodBanana: 1 + + + +#Pizzas +- type: microwaveMealRecipe + id: MargheritaPizzaRecipe + name: Margherita Pizza Recipe + result: DrinkFoodContainerMargheritaPizza + time: 30 + reagents: + chem.Flour: 10 + solids: + FoodCheeseWedge: 4 + FoodTomato: 1 + +- type: microwaveMealRecipe + id: MushroomPizzaRecipe + name: Mushroom Pizza Recipe + result: DrinkFoodContainerMushroomPizza + time: 25 + reagents: + chem.Flour: 10 + solids: + FoodMushroom: 5 + +- type: microwaveMealRecipe + id: MeatPizzaRecipe + name: Meat Pizza Recipe + result: DrinkFoodContainerMeatPizza + time: 30 + reagents: + chem.Flour: 10 + solids: + FoodMeat: 3 + FoodCheeseWedge: 1 + FoodTomato: 1 + +- type: microwaveMealRecipe + id: VegetablePizzaRecipe + name: Vegetable Pizza Recipe + result: DrinkFoodContainerVegetablePizza + time: 30 + reagents: + chem.Flour: 10 + solids: + FoodEggplant: 1 + FoodCarrot: 1 + FoodCorn: 1 + FoodTomato: 1 + +#Italian #Other From a34983b095f7a82fd6e28d5a8e5a473aea2b65ea Mon Sep 17 00:00:00 2001 From: Hugo Laloge Date: Thu, 30 Apr 2020 18:09:09 +0200 Subject: [PATCH 69/73] Add emotes as borderless speech "bubbles" --- Content.Client/Chat/ChatManager.cs | 55 ++++++++--- Content.Client/Chat/SpeechBubble.cs | 98 ++++++++++++++++--- .../UserInterface/Stylesheets/StyleNano.cs | 14 +++ 3 files changed, 137 insertions(+), 30 deletions(-) diff --git a/Content.Client/Chat/ChatManager.cs b/Content.Client/Chat/ChatManager.cs index 8592028d11..61d1d4ae03 100644 --- a/Content.Client/Chat/ChatManager.cs +++ b/Content.Client/Chat/ChatManager.cs @@ -19,6 +19,12 @@ namespace Content.Client.Chat { internal sealed class ChatManager : IChatManager { + private struct SpeechBubbleData + { + public string Message; + public SpeechBubble.SpeechType Type; + } + /// /// The max amount of chars allowed to fit in a single speech bubble. /// @@ -117,7 +123,7 @@ namespace Content.Client.Chat var msg = queueData.MessageQueue.Dequeue(); - queueData.TimeLeft += BubbleDelayBase + msg.Length * BubbleDelayFactor; + queueData.TimeLeft += BubbleDelayBase + msg.Message.Length * BubbleDelayFactor; // We keep the queue around while it has 0 items. This allows us to keep the timer. // When the timer hits 0 and there's no messages left, THEN we can clear it up. @@ -291,13 +297,23 @@ namespace Content.Client.Chat WriteChatMessage(storedMessage); // Local messages that have an entity attached get a speech bubble. - if ((msg.Channel == ChatChannel.Local || msg.Channel == ChatChannel.Dead) && msg.SenderEntity != default) + if (msg.SenderEntity == default) + return; + + switch (msg.Channel) { - AddSpeechBubble(msg); + case ChatChannel.Local: + case ChatChannel.Dead: + AddSpeechBubble(msg, SpeechBubble.SpeechType.Say); + break; + + case ChatChannel.Emotes: + AddSpeechBubble(msg, SpeechBubble.SpeechType.Emote); + break; } } - private void AddSpeechBubble(MsgChatMessage msg) + private void AddSpeechBubble(MsgChatMessage msg, SpeechBubble.SpeechType speechType) { if (!_entityManager.TryGetEntity(msg.SenderEntity, out var entity)) { @@ -305,8 +321,18 @@ namespace Content.Client.Chat return; } + var messages = SplitMessage(msg.Message); + + foreach (var message in messages) + { + EnqueueSpeechBubble(entity, message, speechType); + } + } + + private List SplitMessage(string msg) + { // Split message into words separated by spaces. - var words = msg.Message.Split(' '); + var words = msg.Split(' '); var messages = new List(); var currentBuffer = new List(); @@ -346,13 +372,10 @@ namespace Content.Client.Chat messages.Add(string.Join(" ", currentBuffer)); } - foreach (var message in messages) - { - EnqueueSpeechBubble(entity, message); - } + return messages; } - private void EnqueueSpeechBubble(IEntity entity, string contents) + private void EnqueueSpeechBubble(IEntity entity, string contents, SpeechBubble.SpeechType speechType) { if (!_queuedSpeechBubbles.TryGetValue(entity.Uid, out var queueData)) { @@ -360,12 +383,16 @@ namespace Content.Client.Chat _queuedSpeechBubbles.Add(entity.Uid, queueData); } - queueData.MessageQueue.Enqueue(contents); + queueData.MessageQueue.Enqueue(new SpeechBubbleData + { + Message = contents, + Type = speechType, + }); } - private void CreateSpeechBubble(IEntity entity, string contents) + private void CreateSpeechBubble(IEntity entity, SpeechBubbleData speechData) { - var bubble = new SpeechBubble(contents, entity, _eyeManager, this); + var bubble = SpeechBubble.CreateSpeechBubble(speechData.Type, speechData.Message, entity, _eyeManager, this); if (_activeSpeechBubbles.TryGetValue(entity.Uid, out var existing)) { @@ -405,7 +432,7 @@ namespace Content.Client.Chat /// public float TimeLeft { get; set; } - public Queue MessageQueue { get; } = new Queue(); + public Queue MessageQueue { get; } = new Queue(); } } } diff --git a/Content.Client/Chat/SpeechBubble.cs b/Content.Client/Chat/SpeechBubble.cs index 2766ab1b0b..147c3a8d5a 100644 --- a/Content.Client/Chat/SpeechBubble.cs +++ b/Content.Client/Chat/SpeechBubble.cs @@ -1,4 +1,5 @@ -using Content.Client.Interfaces.Chat; +using System; +using Content.Client.Interfaces.Chat; using Robust.Client.Interfaces.Graphics.ClientEye; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; @@ -9,8 +10,14 @@ using Robust.Shared.Timing; namespace Content.Client.Chat { - public class SpeechBubble : Control + public abstract class SpeechBubble : Control { + public enum SpeechType + { + Emote, + Say + } + /// /// The total time a speech bubble stays on screen. /// @@ -38,6 +45,21 @@ namespace Content.Client.Chat public float ContentHeight { get; private set; } + public static SpeechBubble CreateSpeechBubble(SpeechType type, string text, IEntity senderEntity, IEyeManager eyeManager, IChatManager chatManager) + { + switch (type) + { + case SpeechType.Emote: + return new EmoteSpeechBubble(text, senderEntity, eyeManager, chatManager); + + case SpeechType.Say: + return new SaySpeechBubble(text, senderEntity, eyeManager, chatManager); + + default: + throw new ArgumentOutOfRangeException(); + } + } + public SpeechBubble(string text, IEntity senderEntity, IEyeManager eyeManager, IChatManager chatManager) { _chatManager = chatManager; @@ -47,27 +69,18 @@ namespace Content.Client.Chat // Use text clipping so new messages don't overlap old ones being pushed up. RectClipContent = true; - var label = new RichTextLabel - { - MaxWidth = 256, - }; - label.SetMessage(text); + var bubble = BuildBubble(text); - var panel = new PanelContainer - { - StyleClasses = { "tooltipBox" }, - Children = { label }, - ModulateSelfOverride = Color.White.WithAlpha(0.75f) - }; - - AddChild(panel); + AddChild(bubble); ForceRunStyleUpdate(); - ContentHeight = panel.CombinedMinimumSize.Y; + ContentHeight = bubble.CombinedMinimumSize.Y; _verticalOffsetAchieved = -ContentHeight; } + protected abstract Control BuildBubble(string text); + protected override Vector2 CalculateMinimumSize() { return (base.CalculateMinimumSize().X, 0); @@ -134,4 +147,57 @@ namespace Content.Client.Chat } } } + + public class EmoteSpeechBubble : SpeechBubble + + { + public EmoteSpeechBubble(string text, IEntity senderEntity, IEyeManager eyeManager, IChatManager chatManager) + : base(text, senderEntity, eyeManager, chatManager) + { + } + + protected override Control BuildBubble(string text) + { + var label = new RichTextLabel + { + MaxWidth = 256, + }; + label.SetMessage(text); + + var panel = new PanelContainer + { + StyleClasses = { "speechBox", "emoteBox" }, + Children = { label }, + ModulateSelfOverride = Color.White.WithAlpha(0.75f) + }; + + return panel; + } + } + + public class SaySpeechBubble : SpeechBubble + { + public SaySpeechBubble(string text, IEntity senderEntity, IEyeManager eyeManager, IChatManager chatManager) + : base(text, senderEntity, eyeManager, chatManager) + { + } + + protected override Control BuildBubble(string text) + { + var label = new RichTextLabel + { + MaxWidth = 256, + }; + label.SetMessage(text); + + var panel = new PanelContainer + { + StyleClasses = { "speechBox", "sayBox" }, + Children = { label }, + ModulateSelfOverride = Color.White.WithAlpha(0.75f) + }; + + return panel; + } + } } diff --git a/Content.Client/UserInterface/Stylesheets/StyleNano.cs b/Content.Client/UserInterface/Stylesheets/StyleNano.cs index a96413b9d0..d2d9941eb8 100644 --- a/Content.Client/UserInterface/Stylesheets/StyleNano.cs +++ b/Content.Client/UserInterface/Stylesheets/StyleNano.cs @@ -44,6 +44,7 @@ namespace Content.Client.UserInterface.Stylesheets var notoSans10 = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 10); var notoSansItalic10 = resCache.GetFont("/Nano/NotoSans/NotoSans-Italic.ttf", 10); var notoSans12 = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 12); + var notoSansItalic12 = resCache.GetFont("/Nano/NotoSans/NotoSans-Italic.ttf", 12); var notoSansBold12 = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 12); var notoSansDisplayBold14 = resCache.GetFont("/Fonts/NotoSansDisplay/NotoSansDisplay-Bold.ttf", 14); var notoSans16 = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 16); @@ -451,6 +452,19 @@ namespace Content.Client.UserInterface.Stylesheets new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox) }), + new StyleRule(new SelectorElement(typeof(PanelContainer), new[] {"speechBox", "sayBox"}, null, null), new[] + { + new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox) + }), + + new StyleRule(new SelectorChild( + new SelectorElement(typeof(PanelContainer), new[] {"speechBox", "emoteBox"}, null, null), + new SelectorElement(typeof(RichTextLabel), null, null, null)), + new[] + { + new StyleProperty("font", notoSansItalic12), + }), + // Entity tooltip new StyleRule( new SelectorElement(typeof(PanelContainer), new[] {ExamineSystem.StyleClassEntityTooltip}, null, From c9c1d0dfd7a0e57ba71cb3ede33ad100dde2c226 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 10 May 2020 00:38:41 -0500 Subject: [PATCH 70/73] moar recipes --- Resources/Prototypes/Kitchen/meal_recipes.yml | 159 +++++++++++++++++- 1 file changed, 154 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index f66e298755..707a4c3b47 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -117,7 +117,7 @@ #Pizzas - type: microwaveMealRecipe - id: MargheritaPizzaRecipe + id: RecipeMargheritaPizza name: Margherita Pizza Recipe result: DrinkFoodContainerMargheritaPizza time: 30 @@ -128,7 +128,7 @@ FoodTomato: 1 - type: microwaveMealRecipe - id: MushroomPizzaRecipe + id: RecipeMushroomPizza name: Mushroom Pizza Recipe result: DrinkFoodContainerMushroomPizza time: 25 @@ -138,7 +138,7 @@ FoodMushroom: 5 - type: microwaveMealRecipe - id: MeatPizzaRecipe + id: RecipeMeatPizza name: Meat Pizza Recipe result: DrinkFoodContainerMeatPizza time: 30 @@ -150,7 +150,7 @@ FoodTomato: 1 - type: microwaveMealRecipe - id: VegetablePizzaRecipe + id: RecipeVegetablePizza name: Vegetable Pizza Recipe result: DrinkFoodContainerVegetablePizza time: 30 @@ -163,7 +163,145 @@ FoodTomato: 1 #Italian +- type: microwaveMealRecipe + id: RecipeSpaghetti + name: Spaghetti Recipe + result: FoodSpaghetti + time: 1 + reagents: + chem.Flour: 5 +- type: microwaveMealRecipe + id: RecipeBoiledSpaghetti + name: Boiled Spaghetti Recipe + result: FoodSpagettiBoiled + time: 5 + reagents: + chem.H2O: 5 + solids: + FoodSpagetti: 1 + +- type: microwaveMealRecipe + id: RecipePastaTomato + name: Pasta Tomato Recipe + result: FoodPastaTomato + time: 10 + reagents: + chem.H2O: 5 + solids: + FoodSpagetti: 1 + FoodTomato: 2 + +- type: microwaveMealRecipe + id: RecipeMeatballSpaghetti + name: Spaghetti & Meatballs Recipe + result: FoodMeatballSpaghetti + time: 10 + reagents: + chem.H2O: 5 + solids: + FoodSpagetti: 1 + FoodMeatball: 2 + +- type: microwaveMealRecipe + id: RecipeCrabSpaghetti + name: Crab Spaghetti Recipe + result: FoodCrabSpaghetti + time: 10 + reagents: + chem.H2O: 5 + solids: + FoodCrabMeat: 2 + +- type: microwaveMealRecipe + id: RecipeCopypasta + name: Copypasta Recipe + result: FoodCopypasta + time: 10 + solids: + FoodPastaTomato: 2 + +# - type: microwaveMealRecipe +# id: RecipeMoMMISpaghetti +# name: MoMMI Spaghetti Recipe +# result: FoodMoMMISpaghetti +# time: 10 +# reagents: +# chem.Flour: 5 +# solids: + +- type: microwaveMealRecipe + id: RecipeRisotto + name: Risotto Recipe + result: FoodRisotto + time: 10 + reagents: + chem.Flour: 10 #This should be 10 units of rice. + chem.Wine: 5 + solids: + FoodCheeseWedge: 1 + +- type: microwaveMealRecipe + id: RecipeBruschetta + name: Bruschetta Recipe + result: FoodBruschetta + time: 10 + reagents: + chem.Flour: 10 + chem.Salt: 2 + solids: + FoodGarlic: 1 + FoodCheeseWedge: 1 + FoodTomato: 1 + +- type: microwaveMealRecipe + id: RecipeQuiche + name: Quiche Recipe + result: FoodQuiche + time: 10 + solids: + FoodBlueTomato: 1 + FoodGarlic: 1 + FoodEgg: 1 + FoodCheeseWedge: 1 + +- type: microwaveMealRecipe + id: RecipeLasagna + name: Lasagna Recipe + result: FoodLasagna + time: 15 + # reagents: + # chem.TomatoJuice: 15 + solids: + FoodFlatDough: 2 + FoodMeat: 2 + FoodEggPlant: 1 + FoodCheeseWedge: 1 + +#Soups & Stew +- type: microwaveMealRecipe + id: RecipeMeatballSoup + name: Meatball Soup Recipe + result: FoodMeatballSoup + time: 10 + reagents: + chem.H2O: 10 + solids: + FoodMeatball: 1 + FoodCarrot: 1 + FoodPotato: 1 + +- type: microwaveMealRecipe + id: RecipeNettleSoup + name: Nettle Soup Recipe + result: FoodNettleSoup + time: 10 + reagents: + chem.H2O: 10 + solids: + FoodNettle: 1 + FoodEgg: 1 + FoodPotato: 1 #Other - type: microwaveMealRecipe @@ -179,7 +317,7 @@ - type: microwaveMealRecipe id: RecipeMisoColaSoup - name: Salty Sweet MisoCola Soup Recipe + name: Salty Sweet MiloCola Soup Recipe result: DisgustingSweptSoup time: 15 reagents: @@ -187,3 +325,14 @@ solids: FoodMiloSoup: 1 + + +#Handy template for copy **pasta**. Get it? Pasta? Aw whatever fuck you. +# - type: microwaveMealRecipe +# id: +# name: +# result: +# time: 5 +# reagents: + +# solids: From 28c50261ac08b1d50c876dbb975e2f6ce4902c1b Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 10 May 2020 01:47:26 -0500 Subject: [PATCH 71/73] Fix a null reference exception (InteractionSystem) that crashed the hell out of the client. --- .../EntitySystems/SharedInteractionSystem.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs b/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs index 91947c35c0..aa2f88c01a 100644 --- a/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs +++ b/Content.Shared/GameObjects/EntitySystems/SharedInteractionSystem.cs @@ -51,13 +51,17 @@ namespace Content.Server.GameObjects.EntitySystems var rayResults = _physicsManager.IntersectRayWithPredicate(coords.MapId, ray, dir.Length, predicate, true); if(!rayResults.DidHitObject || (insideBlockerValid && rayResults.DidHitObject && (rayResults.HitPos - otherCoords).Length < 1f)) { - _mapManager.TryFindGridAt(coords, out var mapGrid); - var srcPos = mapGrid.MapToGrid(coords); - var destPos = new GridCoordinates(otherCoords, mapGrid); - if (srcPos.InRange(_mapManager, destPos, range)) + + if (_mapManager.TryFindGridAt(coords, out var mapGrid) && mapGrid != null) { - return true; + var srcPos = mapGrid.MapToGrid(coords); + var destPos = new GridCoordinates(otherCoords, mapGrid); + if (srcPos.InRange(_mapManager, destPos, range)) + { + return true; + } } + } return false; } From 04ffe032dc7aadde41f6cffaaf42536c0a58f9a1 Mon Sep 17 00:00:00 2001 From: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Date: Sun, 10 May 2020 22:48:14 -0700 Subject: [PATCH 72/73] Fixes hand double click from CanFocus --- Content.Client/UserInterface/HandsGui.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index bf20579a28..eae011f008 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -7,6 +7,7 @@ using Robust.Client.Interfaces.ResourceManagement; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Input; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Timing; @@ -132,7 +133,7 @@ namespace Content.Client.UserInterface var entity = hands.GetEntity(handIndex); if (entity == null) { - if (args.CanFocus && hands.ActiveIndex != handIndex) + if (args.Function == EngineKeyFunctions.UIClick && hands.ActiveIndex != handIndex) { hands.SendChangeHand(handIndex); } @@ -142,7 +143,7 @@ namespace Content.Client.UserInterface if (_itemSlotManager.OnButtonPressed(args, entity)) return; - if (args.CanFocus) + if (args.Function == EngineKeyFunctions.UIClick) { if (hands.ActiveIndex == handIndex) { @@ -158,7 +159,7 @@ namespace Content.Client.UserInterface private void _OnStoragePressed(GUIBoundKeyEventArgs args, string handIndex) { - if (!args.CanFocus) + if (args.Function != EngineKeyFunctions.UIClick) return; if (!TryGetHands(out var hands)) return; From 63b0df5ba2e652bfebb8c29e02db0fe307b83de0 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 11 May 2020 11:19:41 +0200 Subject: [PATCH 73/73] Fix ItemSlotButton and HandsGui handling all input. Fixes #904 --- Content.Client/UserInterface/HandsGui.cs | 8 ++++++-- Content.Client/UserInterface/ItemSlotManager.cs | 3 +-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index eae011f008..88915e620e 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -119,14 +119,13 @@ namespace Content.Client.UserInterface private void HandKeyBindDown(GUIBoundKeyEventArgs args, string handIndex) { - args.Handle(); - if (!TryGetHands(out var hands)) return; if (args.Function == ContentKeyFunctions.MouseMiddle) { hands.SendChangeHand(handIndex); + args.Handle(); return; } @@ -136,12 +135,16 @@ namespace Content.Client.UserInterface if (args.Function == EngineKeyFunctions.UIClick && hands.ActiveIndex != handIndex) { hands.SendChangeHand(handIndex); + args.Handle(); } return; } if (_itemSlotManager.OnButtonPressed(args, entity)) + { + args.Handle(); return; + } if (args.Function == EngineKeyFunctions.UIClick) { @@ -153,6 +156,7 @@ namespace Content.Client.UserInterface { hands.AttackByInHand(handIndex); } + args.Handle(); return; } } diff --git a/Content.Client/UserInterface/ItemSlotManager.cs b/Content.Client/UserInterface/ItemSlotManager.cs index 768ddd30af..5c07cd5f57 100644 --- a/Content.Client/UserInterface/ItemSlotManager.cs +++ b/Content.Client/UserInterface/ItemSlotManager.cs @@ -65,8 +65,6 @@ namespace Content.Client.UserInterface public bool OnButtonPressed(GUIBoundKeyEventArgs args, IEntity item) { - args.Handle(); - if (item == null) return false; @@ -99,6 +97,7 @@ namespace Content.Client.UserInterface { return false; } + args.Handle(); return true; }