diff --git a/Content.Server/Nyanotrasen/GameTicking/Rules/Components/ShipwreckedRuleComponent.cs b/Content.Server/Nyanotrasen/GameTicking/Rules/Components/ShipwreckedRuleComponent.cs
index 21b3be94ade..5e5a0bfec0c 100644
--- a/Content.Server/Nyanotrasen/GameTicking/Rules/Components/ShipwreckedRuleComponent.cs
+++ b/Content.Server/Nyanotrasen/GameTicking/Rules/Components/ShipwreckedRuleComponent.cs
@@ -127,10 +127,10 @@ public sealed class ShipwreckedRuleComponent : Component
public int OriginalThrusterCount;
///
- /// The original power supply of the generator on the shuttle.
+ /// The original power demand on the shuttle's generator(s).
///
[ViewVariables]
- public float OriginalPowerSupply;
+ public float OriginalPowerDemand;
///
/// A dictionary of vital shuttle pieces and their eventual destinations once the shuttle decouples the engine.
diff --git a/Content.Server/Nyanotrasen/GameTicking/Rules/ShipwreckedRuleSystem.cs b/Content.Server/Nyanotrasen/GameTicking/Rules/ShipwreckedRuleSystem.cs
index cdbe66d3130..0a0ed5697e3 100644
--- a/Content.Server/Nyanotrasen/GameTicking/Rules/ShipwreckedRuleSystem.cs
+++ b/Content.Server/Nyanotrasen/GameTicking/Rules/ShipwreckedRuleSystem.cs
@@ -557,18 +557,27 @@ private void DamageShuttleMidflight(ShipwreckedRuleComponent component)
}
// Ensure that all generators on the shuttle will decay.
+ // Get the total power supply so we know how much to damage the generators by.
+ var totalPowerSupply = 0f;
var generatorQuery = EntityQueryEnumerator();
- while (generatorQuery.MoveNext(out var uid, out var powerSupplier, out var xform))
+ while (generatorQuery.MoveNext(out _, out var powerSupplier, out var xform))
{
if (xform.GridUid != component.Shuttle)
continue;
- component.OriginalPowerSupply += powerSupplier.MaxSupply;
+ totalPowerSupply += powerSupplier.MaxSupply;
+ }
+
+ generatorQuery = EntityQueryEnumerator();
+ while (generatorQuery.MoveNext(out var uid, out var powerSupplier, out var xform))
+ {
+ if (xform.GridUid != component.Shuttle)
+ continue;
EnsureComp(uid);
// Hit it right away.
- powerSupplier.MaxSupply *= 0.8f;
+ powerSupplier.MaxSupply *= (component.OriginalPowerDemand / totalPowerSupply) * 0.96f;
}
}
@@ -628,7 +637,7 @@ private bool TryGetRandomStructureSpot(ShipwreckedRuleComponent component,
// of sorts.
structure = _random.Pick(component.Structures);
- var offset = _random.NextVector2(-11, 11);
+ var offset = _random.NextVector2(-13, 13);
var xy = _random.Pick(structure.Rooms).Center + offset;
coordinates = new EntityCoordinates(component.PlanetMap.Value, xy);
@@ -668,37 +677,60 @@ private void PrepareVitalShuttlePieces(ShipwreckedRuleComponent component)
component.VitalPieces.Add(uid, (spot, structure));
}
+ // Part of the escape objective requires the shuttle to have enough
+ // power for liftoff, but due to luck of the draw with dungeon generation,
+ // it's possible that not enough generators are spawned in.
var planetGeneratorCount = 0;
+ var planetGeneratorPower = 0f;
var generatorQuery = EntityQueryEnumerator();
- while (generatorQuery.MoveNext(out var uid, out var powerSupplier, out var xform))
+ while (generatorQuery.MoveNext(out _, out var powerSupplier, out var xform))
{
- if (xform.GridUid == component.PlanetMap)
- ++planetGeneratorCount;
+ if (xform.GridUid != component.PlanetMap)
+ continue;
+
+ planetGeneratorPower += powerSupplier.MaxSupply;
+ ++planetGeneratorCount;
}
- if (planetGeneratorCount < 2)
+ _sawmill.Info($"Shipwreck destination has {planetGeneratorPower} W worth of {planetGeneratorCount} scavengeable generators.");
+
+ if (planetGeneratorPower < component.OriginalPowerDemand)
{
- // Yes, it's possible. There's a very slim chance, but it's possible.
- // Give the survivors a free generator, because they're going to need it.
+ // It's impossible to find enough generators to supply the shuttle's
+ // original power demand, assuming the players let the generator
+ // completely fail, therefore, we must spawn some generators,
+ // Deus Ex Machina.
- var somewhere = new EntityCoordinates(component.PlanetMap.Value, 200f, 200f);
- var uid = Spawn("GeneratorUranium", somewhere);
+ // This is all very cheesy that there would be generators just lying around,
+ // but I'd rather players be able to win than be hard-locked into losing.
- TryGetRandomStructureSpot(component, out var spot, out var structure);
- _sawmill.Info($"Heaven generator! {ToPrettyString(uid)} will go to {spot}");
+ // How many will we need?
+ const float UraniumPower = 15000f;
+ var generatorsNeeded = Math.Max(1, component.OriginalPowerDemand / UraniumPower);
- MakeCrater(component.PlanetGrid, spot);
+ for (int i = 0; i < generatorsNeeded; ++i)
+ {
+ // Just need a temporary spawn point away from everything.
+ var somewhere = new EntityCoordinates(component.PlanetMap.Value, 200f + i, 200f + i);
+ var uid = Spawn("GeneratorUranium", somewhere);
- component.VitalPieces.Add(uid, (spot, structure));
- }
- else
- {
- _sawmill.Info($"Planet has {planetGeneratorCount} scavengeable generators.");
+ TryGetRandomStructureSpot(component, out var spot, out var structure);
+ _sawmill.Info($"Heaven generator! {ToPrettyString(uid)} will go to {spot}");
+
+ MakeCrater(component.PlanetGrid, spot);
+ component.VitalPieces.Add(uid, (spot, structure));
+ }
}
}
private void DecoupleShuttleEngine(ShipwreckedRuleComponent component)
{
+ if (component.Shuttle == null)
+ return;
+
+ // Stop thrusters from burning anyone when re-anchored.
+ _thrusterSystem.DisableLinearThrusters(Comp(component.Shuttle.Value));
+
// Move the vital pieces of the shuttle down to the planet.
foreach (var (uid, (destination, _)) in component.VitalPieces)
{
@@ -764,10 +796,10 @@ private void SpawnFaction(ShipwreckedRuleComponent component, string id, IEnumer
}
foreach (var room in structure.Rooms)
+ {
SpawnFactionMobs(component, faction.Active, room);
-
- foreach (var room in structure.Rooms)
SpawnFactionMobs(component, faction.Inactive, room);
+ }
}
}
@@ -1144,7 +1176,17 @@ protected override void Started(EntityUid uid, ShipwreckedRuleComponent componen
return;
_mapManager.SetMapPaused(component.PlanetMapId.Value, false);
- /* EntityManager.InitializeAndStartEntity(component.PlanetMap.Value); */
+
+ var loadQuery = EntityQueryEnumerator();
+ while (loadQuery.MoveNext(out _, out var apcPowerReceiver, out var xform))
+ {
+ if (xform.GridUid != component.Shuttle)
+ continue;
+
+ component.OriginalPowerDemand += apcPowerReceiver.Load;
+ }
+
+ _sawmill.Info($"The original power demand for the shuttle is {component.OriginalPowerDemand} W");
var shuttle = component.Shuttle.Value;
@@ -1455,7 +1497,7 @@ private bool GetLaunchConditionGenerator(ShipwreckedRuleComponent component)
totalSupply += powerSupplier.MaxSupply;
}
- return totalSupply >= component.OriginalPowerSupply;
+ return totalSupply >= component.OriginalPowerDemand;
}
private bool GetLaunchConditionThrusters(ShipwreckedRuleComponent component, out int goodThrusters)
diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs
index d06a835278e..ea770d68939 100644
--- a/Content.Shared/CCVar/CCVars.cs
+++ b/Content.Shared/CCVar/CCVars.cs
@@ -428,7 +428,7 @@ public static readonly CVarDef
*/
public static readonly CVarDef ShipwreckedMaxPlayers =
- CVarDef.Create("shipwrecked.max_players", 8);
+ CVarDef.Create("shipwrecked.max_players", 7);
/*
* Tips
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 2953c70283b..5375e16c18e 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,18 +1,4 @@
Entries:
-- author: Rane
- changes:
- - message: Reenabled the non-social objective groups. Woops.
- type: Fix
- - message: All animals are now eligible for awakening.
- type: Tweak
- id: 65
- time: '2022-11-01T23:24:09.0000000+00:00'
-- author: Kromabae
- changes:
- - message: additional pebble fixes and qol
- type: Add
- id: 66
- time: '2022-11-03T02:27:53.0000000+00:00'
- author: Rane
changes:
- message: Doubled glimmer production from probers and drains (per advice of one
@@ -3800,7 +3786,13 @@ Entries:
time: '2023-06-25T22:16:26.668452+00:00'
- author: Rane
changes:
- - message: 'There is something in the vents...'
+ - message: There is something in the vents...
type: Add
id: 563
time: '2023-06-26T22:16:26.668452+00:00'
+- author: Vordenburg
+ changes:
+ - message: Adjusted a few things for Shipwrecked.
+ type: Tweak
+ id: 564
+ time: '2023-07-02T23:21:31.772767+00:00'
diff --git a/Resources/Maps/Dungeon/ruined_dwellings.yml b/Resources/Maps/Dungeon/ruined_dwellings.yml
index 7905c30b5e5..673dbe7903f 100644
--- a/Resources/Maps/Dungeon/ruined_dwellings.yml
+++ b/Resources/Maps/Dungeon/ruined_dwellings.yml
@@ -2126,7 +2126,7 @@ entities:
- pos: 12.5,13.5
parent: 1
type: Transform
-- proto: SMESBasicEmpty
+- proto: SMESBasic
entities:
- uid: 151
components:
diff --git a/Resources/Maps/Dungeon/ruined_hospital.yml b/Resources/Maps/Dungeon/ruined_hospital.yml
index 1a351026c17..dc88ce2e816 100644
--- a/Resources/Maps/Dungeon/ruined_hospital.yml
+++ b/Resources/Maps/Dungeon/ruined_hospital.yml
@@ -5036,7 +5036,7 @@ entities:
pos: 10.5,21.5
parent: 1
type: Transform
-- proto: SMESBasicEmpty
+- proto: SMESBasic
entities:
- uid: 648
components:
diff --git a/Resources/Maps/Dungeon/ruined_shops.yml b/Resources/Maps/Dungeon/ruined_shops.yml
index ac6c67d4e9e..d7b1045e73e 100644
--- a/Resources/Maps/Dungeon/ruined_shops.yml
+++ b/Resources/Maps/Dungeon/ruined_shops.yml
@@ -7,9 +7,12 @@ tilemap:
18: FloorBrokenWood
25: FloorDarkDiagonal
33: FloorDarkPlastic
+ 35: FloorDirt
39: FloorFreezer
+ 43: FloorGrassDark
53: FloorMetalDiamond
59: FloorPlastic
+ 62: FloorRockVault
63: FloorShowroom
74: FloorSteelDirty
81: FloorTechMaint
@@ -41,7 +44,11 @@ entities:
3,0:
ind: 3,0
tiles:
- YQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAAAAAAAAAAAAAAAAAAwAAAMMAAADYQAAAFEAAAAZAAAAGQAAAhkAAAEZAAACGQAAABkAAAEZAAAAUQAAAGEAAAAAAAAAAAAAAAAAAAAMAAADDAAAAWEAAAAZAAACGQAAABkAAAIZAAABGQAAAj8AAAA1AAAAGQAAAxkAAABhAAAAAAAAAAAAAAAAAAAADAAAAAwAAAFhAAAAGQAAABkAAAIZAAAAGQAAABkAAAE/AAAAPwAAABkAAAMZAAAAYQAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAYQAAABkAAAEZAAABGQAAAhkAAAMZAAABPwAAADUAAAAZAAABGQAAAGEAAAAAAAAAAAAAAAAAAAAMAAAADAAAA2EAAAAZAAABGQAAAxkAAAMZAAABGQAAAz8AAAA/AAAAGQAAABkAAAJhAAAAAAAAAAAAAAAAAAAASgAAAAwAAANhAAAAGQAAAxkAAAAZAAADGQAAARkAAAA/AAAANQAAABkAAAIZAAADYQAAAAAAAAAAAAAAAAAAAEoAAAAMAAABYQAAABkAAAEZAAACGQAAABkAAAMZAAADPwAAAD8AAAAZAAABGQAAAWEAAAAAAAAAAAAAAAAAAABKAAAADAAAAWEAAAAZAAADGQAAAhkAAAEZAAABGQAAAz8AAAA1AAAAGQAAAxkAAAJhAAAAAAAAAAAAAAAAAAAADAAAAAwAAANhAAAAUQAAABkAAAAZAAABGQAAAhkAAAEZAAADGQAAARkAAAJRAAAAYQAAAAAAAAAAAAAAAAAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+ YQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAAwAAAMMAAADYQAAAFEAAAAZAAAAGQAAAhkAAAEZAAACGQAAABkAAAEZAAAAUQAAAGEAAAA+AAAAXgAAAF4AAAAMAAADDAAAAWEAAAAZAAACGQAAABkAAAIZAAABGQAAAj8AAAA1AAAAGQAAAxkAAABhAAAAXgAAAF4AAAASAAAADAAAAAwAAAFhAAAAGQAAABkAAAIZAAAAGQAAABkAAAE/AAAAPwAAABkAAAMZAAAAYQAAABIAAABeAAAAXQAAAAwAAAAMAAAAYQAAABkAAAEZAAABGQAAAhkAAAMZAAABPwAAADUAAAAZAAABGQAAAGEAAABeAAAAXgAAAF0AAAAMAAAADAAAA2EAAAAZAAABGQAAAxkAAAMZAAABGQAAAz8AAAA/AAAAGQAAABkAAAJhAAAAXgAAAF4AAAASAAAASgAAAAwAAANhAAAAGQAAAxkAAAAZAAADGQAAARkAAAA/AAAANQAAABkAAAIZAAADYQAAAF4AAAArAAAAKwAAAEoAAAAMAAABYQAAABkAAAEZAAACGQAAABkAAAMZAAADPwAAAD8AAAAZAAABGQAAAWEAAABeAAAAKwAAACsAAABKAAAADAAAAWEAAAAZAAADGQAAAhkAAAEZAAABGQAAAz8AAAA1AAAAGQAAAxkAAAJhAAAAXgAAACsAAAArAAAADAAAAAwAAANhAAAAUQAAABkAAAAZAAABGQAAAhkAAAEZAAADGQAAARkAAAJRAAAAYQAAAD4AAABeAAAAXgAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+ 4,0:
+ ind: 4,0
+ tiles:
+ YQAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAAASAAAAXgAAAF4AAABeAAAAPgAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeAAAAXgAAAF4AAABeAAAAXgAAAF4AAABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXgAAAF4AAABeAAAAEgAAAF4AAAASAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAABeAAAAXgAAACMAAABeAAAAXgAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeAAAAXgAAACMAAAAjAAAAIwAAAF4AAABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAACsAAAAjAAAAIwAAACMAAABeAAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAjAAAAIwAAACMAAAAjAAAAXgAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAAXgAAACMAAAASAAAAEgAAAF4AAABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXgAAABIAAABeAAAAXgAAAF4AAAA+AAAAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEAAABhAAAAYQAAAGEAAABhAAAAYQAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
type: MapGrid
- type: Broadphase
- angularDamping: 0.05
@@ -395,6 +402,26 @@ entities:
289: 56,3
290: 56,2
291: 56,7
+ - node:
+ color: '#FFFFFFFF'
+ id: FlowersBRThree
+ decals:
+ 339: 62,8
+ - node:
+ color: '#FFFFFFFF'
+ id: Flowerspv3
+ decals:
+ 341: 64,8
+ - node:
+ color: '#FFFFFFFF'
+ id: Flowersy2
+ decals:
+ 340: 62,6
+ - node:
+ color: '#FFFFFFFF'
+ id: Grassc4
+ decals:
+ 338: 62,8
- node:
color: '#B02E26C4'
id: QuarterTileOverlayGreyscale
@@ -488,6 +515,32 @@ entities:
277: 57,4
278: 57,2
279: 57,6
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinInnerNe
+ decals:
+ 328: 61,5
+ 334: 66,3
+ 335: 65,4
+ 336: 65,5
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinInnerNw
+ decals:
+ 329: 69,4
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinInnerSe
+ decals:
+ 330: 65,9
+ 331: 61,9
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinInnerSw
+ decals:
+ 332: 67,9
+ 333: 69,8
+ 337: 65,9
- node:
color: '#FFFFFFFF'
id: WoodTrimThinLineE
@@ -498,6 +551,44 @@ entities:
283: 55,3
284: 55,2
285: 55,8
+ 319: 61,8
+ 320: 61,7
+ 321: 61,6
+ 322: 65,5
+ 323: 66,4
+ 324: 65,8
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinLineN
+ decals:
+ 308: 65,5
+ 309: 66,4
+ 310: 67,3
+ 311: 68,4
+ 312: 64,5
+ 313: 63,5
+ 314: 62,5
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinLineS
+ decals:
+ 302: 65,8
+ 303: 66,9
+ 304: 67,8
+ 305: 64,9
+ 306: 63,9
+ 307: 62,9
+ 327: 68,8
+ - node:
+ color: '#FFFFFFFF'
+ id: WoodTrimThinLineW
+ decals:
+ 315: 69,5
+ 316: 69,6
+ 317: 69,7
+ 318: 65,8
+ 325: 68,4
+ 326: 67,8
- node:
angle: 0.5759586531581288 rad
color: '#2A2D387C'
@@ -670,6 +761,196 @@ entities:
- pos: 35.5,6.5
parent: 1
type: Transform
+- proto: APCBasic
+ entities:
+ - uid: 270
+ components:
+ - pos: 63.5,3.5
+ parent: 1
+ type: Transform
+- proto: BoxLethalshot
+ entities:
+ - uid: 258
+ components:
+ - pos: 13.544577,7.4024796
+ parent: 1
+ type: Transform
+- proto: CableApcExtension
+ entities:
+ - uid: 280
+ components:
+ - pos: 63.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 281
+ components:
+ - pos: 64.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 282
+ components:
+ - pos: 65.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 283
+ components:
+ - pos: 69.5,5.5
+ parent: 1
+ type: Transform
+ - uid: 284
+ components:
+ - pos: 66.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 285
+ components:
+ - pos: 69.5,4.5
+ parent: 1
+ type: Transform
+ - uid: 286
+ components:
+ - pos: 66.5,2.5
+ parent: 1
+ type: Transform
+ - uid: 287
+ components:
+ - pos: 68.5,4.5
+ parent: 1
+ type: Transform
+ - uid: 288
+ components:
+ - pos: 68.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 289
+ components:
+ - pos: 68.5,2.5
+ parent: 1
+ type: Transform
+ - uid: 290
+ components:
+ - pos: 67.5,2.5
+ parent: 1
+ type: Transform
+ - uid: 303
+ components:
+ - pos: 69.5,6.5
+ parent: 1
+ type: Transform
+ - uid: 304
+ components:
+ - pos: 69.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 305
+ components:
+ - pos: 69.5,8.5
+ parent: 1
+ type: Transform
+ - uid: 308
+ components:
+ - pos: 62.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 309
+ components:
+ - pos: 62.5,4.5
+ parent: 1
+ type: Transform
+ - uid: 310
+ components:
+ - pos: 62.5,5.5
+ parent: 1
+ type: Transform
+ - uid: 311
+ components:
+ - pos: 61.5,5.5
+ parent: 1
+ type: Transform
+ - uid: 312
+ components:
+ - pos: 61.5,6.5
+ parent: 1
+ type: Transform
+ - uid: 313
+ components:
+ - pos: 61.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 314
+ components:
+ - pos: 67.5,1.5
+ parent: 1
+ type: Transform
+ - uid: 315
+ components:
+ - pos: 62.5,2.5
+ parent: 1
+ type: Transform
+ - uid: 316
+ components:
+ - pos: 66.5,4.5
+ parent: 1
+ type: Transform
+- proto: CableHV
+ entities:
+ - uid: 265
+ components:
+ - pos: 63.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 266
+ components:
+ - pos: 64.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 267
+ components:
+ - pos: 63.5,8.5
+ parent: 1
+ type: Transform
+ - uid: 268
+ components:
+ - pos: 63.5,6.5
+ parent: 1
+ type: Transform
+ - uid: 269
+ components:
+ - pos: 62.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 274
+ components:
+ - pos: 63.5,5.5
+ parent: 1
+ type: Transform
+ - uid: 275
+ components:
+ - pos: 63.5,4.5
+ parent: 1
+ type: Transform
+- proto: CableMV
+ entities:
+ - uid: 276
+ components:
+ - pos: 62.5,4.5
+ parent: 1
+ type: Transform
+ - uid: 277
+ components:
+ - pos: 62.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 278
+ components:
+ - pos: 63.5,4.5
+ parent: 1
+ type: Transform
+ - uid: 279
+ components:
+ - pos: 63.5,3.5
+ parent: 1
+ type: Transform
- proto: CarpetPurple
entities:
- uid: 3
@@ -791,6 +1072,20 @@ entities:
pos: 37.5,5.5
parent: 1
type: Transform
+- proto: ChairFolding
+ entities:
+ - uid: 300
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 64.785095,2.8399796
+ parent: 1
+ type: Transform
+ - uid: 301
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 64.847595,4.0743546
+ parent: 1
+ type: Transform
- proto: ChairOfficeDark
entities:
- uid: 26
@@ -962,11 +1257,12 @@ entities:
pos: 45.440926,3.4191005
parent: 1
type: Transform
-- proto: Cigarette
+- proto: CheapLighter
entities:
- - uid: 53
+ - uid: 322
components:
- - pos: 13.794839,7.98541
+ - rot: -1.5707963267948966 rad
+ pos: 68.27786,8.525252
parent: 1
type: Transform
- proto: CigaretteSpent
@@ -1012,6 +1308,20 @@ entities:
- pos: 51.5,9.5
parent: 1
type: Transform
+- proto: ClothingHandsGlovesLeather
+ entities:
+ - uid: 299
+ components:
+ - pos: 64.57365,6.4337296
+ parent: 1
+ type: Transform
+- proto: ComputerSolarControl
+ entities:
+ - uid: 264
+ components:
+ - pos: 68.5,8.5
+ parent: 1
+ type: Transform
- proto: ComputerTelevision
entities:
- uid: 253
@@ -1019,27 +1329,33 @@ entities:
- pos: 52.5,8.5
parent: 1
type: Transform
-- proto: GunSafe
+- proto: hydroponicsSoil
entities:
- - uid: 251
+ - uid: 293
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 66.5,5.5
+ parent: 1
+ type: Transform
+ - uid: 294
components:
- - desc: A roughed-up gun safe covered in dirt.
- type: MetaData
- - pos: 13.5,7.5
- parent: 1
- type: Transform
- - contents:
- - orGroup: gun
- id: WeaponShotgunSawn
- - orGroup: gun
- id: WeaponShotgunDoubleBarreled
- - orGroup: gun
- id: WeaponPistolMk58
- - orGroup: ammo
- id: MagazinePistolHighCapacityHighVelocity
- - orGroup: ammo
- id: MagazineShotgun
- type: StorageFill
+ - rot: 1.5707963267948966 rad
+ pos: 66.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 302
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 68.5,6.5
+ parent: 1
+ type: Transform
+- proto: Joint
+ entities:
+ - uid: 318
+ components:
+ - pos: 65.6414,3.6901536
+ parent: 1
+ type: Transform
- proto: KitchenMicrowave
entities:
- uid: 61
@@ -1106,6 +1422,16 @@ entities:
- pos: 2.5,2.5
parent: 1
type: Transform
+ - uid: 332
+ components:
+ - pos: 8.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 333
+ components:
+ - pos: 4.5,3.5
+ parent: 1
+ type: Transform
- proto: MaintenanceWeaponSpawner
entities:
- uid: 71
@@ -1135,6 +1461,30 @@ entities:
- pos: 55.95446,4.7658687
parent: 1
type: Transform
+- proto: Mousetrap
+ entities:
+ - uid: 255
+ components:
+ - pos: 47.72073,8.607357
+ parent: 1
+ type: Transform
+ - uid: 329
+ components:
+ - rot: -1.5707963267948966 rad
+ pos: 47.522972,6.451107
+ parent: 1
+ type: Transform
+ - uid: 330
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 45.126354,6.857357
+ parent: 1
+ type: Transform
+ - uid: 331
+ components:
+ - pos: 43.82948,8.357357
+ parent: 1
+ type: Transform
- proto: PaintingSkeletonCigarette
entities:
- uid: 74
@@ -1187,6 +1537,11 @@ entities:
pos: 53.434082,6.4730086
parent: 1
type: Transform
+ - uid: 256
+ components:
+ - pos: 13.66864,7.1681046
+ parent: 1
+ type: Transform
- proto: Pen
entities:
- uid: 78
@@ -1207,6 +1562,13 @@ entities:
- pos: 15.5,6.5
parent: 1
type: Transform
+- proto: PosterLegitFruitBowl
+ entities:
+ - uid: 321
+ components:
+ - pos: 63.5,2.5
+ parent: 1
+ type: Transform
- proto: PottedPlantRandom
entities:
- uid: 80
@@ -1224,6 +1586,34 @@ entities:
- pos: 39.5,1.5
parent: 1
type: Transform
+ - uid: 292
+ components:
+ - pos: 69.5,9.5
+ parent: 1
+ type: Transform
+ - uid: 296
+ components:
+ - pos: 61.5,9.5
+ parent: 1
+ type: Transform
+ - uid: 297
+ components:
+ - pos: 61.5,1.5
+ parent: 1
+ type: Transform
+ - uid: 298
+ components:
+ - pos: 69.5,1.5
+ parent: 1
+ type: Transform
+- proto: PoweredlightLED
+ entities:
+ - uid: 291
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 64.5,3.5
+ parent: 1
+ type: Transform
- proto: Rack
entities:
- uid: 83
@@ -1403,6 +1793,11 @@ entities:
- pos: 43.5,6.5
parent: 1
type: Transform
+ - uid: 317
+ components:
+ - pos: 35.5,6.5
+ parent: 1
+ type: Transform
- proto: RandomFoodMeal
entities:
- uid: 116
@@ -1463,6 +1858,21 @@ entities:
- pos: 52.5,5.5
parent: 1
type: Transform
+ - uid: 323
+ components:
+ - pos: 65.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 324
+ components:
+ - pos: 65.5,2.5
+ parent: 1
+ type: Transform
+ - uid: 325
+ components:
+ - pos: 61.5,9.5
+ parent: 1
+ type: Transform
- proto: RandomSpawner
entities:
- uid: 123
@@ -1510,6 +1920,18 @@ entities:
- pos: 9.5,9.5
parent: 1
type: Transform
+- proto: SalvageSeedSpawnerLow
+ entities:
+ - uid: 306
+ components:
+ - pos: 64.5,8.5
+ parent: 1
+ type: Transform
+ - uid: 307
+ components:
+ - pos: 65.5,6.5
+ parent: 1
+ type: Transform
- proto: SheetSteel1
entities:
- uid: 59
@@ -1524,6 +1946,11 @@ entities:
type: Transform
- proto: ShellShotgun
entities:
+ - uid: 53
+ components:
+ - pos: 13.217628,7.2149796
+ parent: 1
+ type: Transform
- uid: 60
components:
- pos: 14.293311,7.4541
@@ -1539,6 +1966,26 @@ entities:
- pos: 14.074561,3.5634751
parent: 1
type: Transform
+ - uid: 251
+ components:
+ - pos: 13.702003,7.7462296
+ parent: 1
+ type: Transform
+ - uid: 257
+ components:
+ - pos: 17.951921,2.4806046
+ parent: 1
+ type: Transform
+ - uid: 326
+ components:
+ - pos: 13.954571,4.5408773
+ parent: 1
+ type: Transform
+ - uid: 327
+ components:
+ - pos: 16.595196,7.7440023
+ parent: 1
+ type: Transform
- proto: SinkStemless
entities:
- uid: 132
@@ -1546,6 +1993,38 @@ entities:
- pos: 48.5,7.5
parent: 1
type: Transform
+- proto: SolarPanel
+ entities:
+ - uid: 259
+ components:
+ - pos: 63.5,6.5
+ parent: 1
+ type: Transform
+ - uid: 260
+ components:
+ - rot: -1.5707963267948966 rad
+ pos: 62.5,7.5
+ parent: 1
+ type: Transform
+ - uid: 261
+ components:
+ - rot: 3.141592653589793 rad
+ pos: 63.5,8.5
+ parent: 1
+ type: Transform
+ - uid: 262
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 64.5,7.5
+ parent: 1
+ type: Transform
+- proto: SolarTracker
+ entities:
+ - uid: 263
+ components:
+ - pos: 63.5,7.5
+ parent: 1
+ type: Transform
- proto: SpaceCash10
entities:
- uid: 133
@@ -1563,6 +2042,11 @@ entities:
- pos: 27.696236,8.594199
parent: 1
type: Transform
+ - uid: 319
+ components:
+ - pos: 65.43828,3.8464036
+ parent: 1
+ type: Transform
- proto: SpaceCash100
entities:
- uid: 239
@@ -1600,6 +2084,14 @@ entities:
- pos: 57.5,6.5
parent: 1
type: Transform
+- proto: SubstationWallBasic
+ entities:
+ - uid: 273
+ components:
+ - rot: -1.5707963267948966 rad
+ pos: 63.5,4.5
+ parent: 1
+ type: Transform
- proto: TableCounterMetal
entities:
- uid: 136
@@ -1779,6 +2271,12 @@ entities:
- pos: 47.5,3.5
parent: 1
type: Transform
+ - uid: 295
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: 65.5,3.5
+ parent: 1
+ type: Transform
- proto: ToySpawner
entities:
- uid: 163
@@ -2006,6 +2504,29 @@ entities:
- pos: 48.5,8.5
parent: 1
type: Transform
+ - uid: 271
+ components:
+ - pos: 63.5,3.5
+ parent: 1
+ type: Transform
+ - uid: 272
+ components:
+ - pos: 63.5,4.5
+ parent: 1
+ type: Transform
+ - uid: 320
+ components:
+ - pos: 63.5,2.5
+ parent: 1
+ type: Transform
+- proto: WeaponShotgunSawn
+ entities:
+ - uid: 328
+ components:
+ - rot: -1.5707963267948966 rad
+ pos: 13.67644,7.4002523
+ parent: 1
+ type: Transform
- proto: WeldingFuelTankFull
entities:
- uid: 254
diff --git a/Resources/Prototypes/Nyanotrasen/Procedural/Themes/ruined_shops.yml b/Resources/Prototypes/Nyanotrasen/Procedural/Themes/ruined_shops.yml
index a6b0c0deed5..e18a066fc40 100644
--- a/Resources/Prototypes/Nyanotrasen/Procedural/Themes/ruined_shops.yml
+++ b/Resources/Prototypes/Nyanotrasen/Procedural/Themes/ruined_shops.yml
@@ -47,3 +47,10 @@
tags:
- RuinedShop
+- type: dungeonRoom
+ id: RuinedShop9x9Hippies
+ size: 9,9
+ atlas: /Maps/Dungeon/ruined_shops.yml
+ offset: 61,1
+ tags:
+ - RuinedShop
diff --git a/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_destinations.yml b/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_destinations.yml
index 9e6abc6440e..bd6c73e217c 100644
--- a/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_destinations.yml
+++ b/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_destinations.yml
@@ -3,16 +3,16 @@
biome: Snow
lightColor: "#010103"
structures:
- RuinedDwellings: 3
+ RuinedDwellings: 2
RuinedHospital: 1
- RuinedShop: 4
+ RuinedShop: 5
factions:
- ZombieOutbreak
- FleshMonsterInvasion
- MalfunctioningRobots
atmosphere:
volume: 2450
- temperature: 256
+ temperature: 251
moles:
- 20.61979
- 77.56971
@@ -22,16 +22,16 @@
biome: LowDesert
lightColor: "#030101"
structures:
- RuinedDwellings: 3
+ RuinedDwellings: 2
RuinedHospital: 1
- RuinedShop: 4
+ RuinedShop: 5
factions:
- ZombieOutbreak
- FleshMonsterInvasion
- MalfunctioningRobots
atmosphere:
volume: 2300
- temperature: 304
+ temperature: 307
moles:
- 21.94724
- 77.05276
@@ -41,9 +41,9 @@
biome: Grasslands
lightColor: "#010301"
structures:
- RuinedDwellings: 3
+ RuinedDwellings: 2
RuinedHospital: 1
- RuinedShop: 4
+ RuinedShop: 5
factions:
- ZombieOutbreak
- FleshMonsterInvasion
diff --git a/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_factions.yml b/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_factions.yml
index 0c1ce2eebdc..738dfef0870 100644
--- a/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_factions.yml
+++ b/Resources/Prototypes/Nyanotrasen/Procedural/shipwreck_factions.yml
@@ -3,7 +3,7 @@
objectiveDefender: RandomHumanoidSpawnerZombieBrute
active:
- id: RandomHumanoidSpawnerZombie
- prob: 0.4
+ prob: 0.3
orGroup: zombie
- id: RandomHumanoidSpawnerZombieSurprise
prob: 0.4
@@ -40,9 +40,9 @@
objectiveDefender: MobMalfunctioningRobotTank
active:
- id: MobMalfunctioningRobotCutter
- prob: 0.35
+ prob: 0.3
- id: MobMalfunctioningRobotPoisoner
- prob: 0.12
+ prob: 0.15
inactive:
- id: RandomHumanoidSpawnerUnaffiliatedDead
prob: 0.4
@@ -55,5 +55,5 @@
components:
- type: Anomaly
severityGrowthCoefficient: 0
- minPulseLength: 300
- maxPulseLength: 600
+ minPulseLength: 1200
+ maxPulseLength: 1800