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