diff --git a/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs b/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs index c27f2ad317..150f4a2957 100644 --- a/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs +++ b/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs @@ -16,6 +16,7 @@ using Robust.Client.UserInterface.XAML; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Client.Salvage.UI; @@ -194,10 +195,19 @@ public sealed partial class SalvageExpeditionWindow : FancyWindow, Text = Loc.GetString("salvage-expedition-window-rewards") }); - // there will always be 3 rewards so no need for 0 check + var rewards = new Dictionary(); + foreach (var reward in mission.Rewards) + { + var name = _prototype.Index(reward).Name; + var count = rewards.GetOrNew(name); + count++; + rewards[name] = count; + } + + // there will always be 3 or more rewards so no need for 0 check lBox.AddChild(new Label() { - Text = string.Join("\n", mission.Rewards.Select(id => "- " + _prototype.Index(id).Name)), + Text = string.Join("\n", rewards.Select(o => "- " + o.Key + (o.Value > 1 ? $" x {o.Value}" : ""))).TrimEnd(), FontColorOverride = StyleNano.ConcerningOrangeFore, HorizontalAlignment = HAlignment.Left, Margin = new Thickness(0f, 0f, 0f, 5f) diff --git a/Content.Server/Salvage/SpawnSalvageMissionJob.cs b/Content.Server/Salvage/SpawnSalvageMissionJob.cs index 7034057261..897c01d034 100644 --- a/Content.Server/Salvage/SpawnSalvageMissionJob.cs +++ b/Content.Server/Salvage/SpawnSalvageMissionJob.cs @@ -115,8 +115,7 @@ public sealed class SpawnSalvageMissionJob : Job _entManager.System().SetMapSpace(mapUid, air.Space, atmos); _entManager.System().SetMapGasMixture(mapUid, new GasMixture(2500) { - // TODO: temperature mods - Temperature = 293.15f, + Temperature = mission.Temperature, Moles = moles, }, atmos); diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/IBiomeSpecificMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/IBiomeSpecificMod.cs new file mode 100644 index 0000000000..f379df9a4c --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/Modifiers/IBiomeSpecificMod.cs @@ -0,0 +1,9 @@ +namespace Content.Shared.Salvage.Expeditions.Modifiers; + +public interface IBiomeSpecificMod : ISalvageMod +{ + /// + /// Whitelist for biomes. If null then any biome is allowed. + /// + List? Biomes { get; } +} diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/ISalvageMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/ISalvageMod.cs index d911e4ee42..aa27f83f03 100644 --- a/Content.Shared/Salvage/Expeditions/Modifiers/ISalvageMod.cs +++ b/Content.Shared/Salvage/Expeditions/Modifiers/ISalvageMod.cs @@ -7,5 +7,8 @@ public interface ISalvageMod /// string Description { get; } + /// + /// Cost for difficulty modifiers. + /// float Cost { get; } } diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageAirMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageAirMod.cs index 167c140b4b..11ab80b14e 100644 --- a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageAirMod.cs +++ b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageAirMod.cs @@ -10,7 +10,7 @@ namespace Content.Shared.Salvage.Expeditions.Modifiers; /// Which one is selected depends on the mission difficulty, different weightedRandoms are picked from. /// [Prototype("salvageAirMod")] -public sealed class SalvageAirMod : IPrototype, ISalvageMod +public sealed class SalvageAirMod : IPrototype, IBiomeSpecificMod { [IdDataField] public string ID { get; } = default!; @@ -23,6 +23,10 @@ public sealed class SalvageAirMod : IPrototype, ISalvageMod [DataField("cost")] public float Cost { get; } = 0f; + /// + [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List? Biomes { get; } = null; + /// /// Set to true if this planet will have no atmosphere. /// @@ -34,10 +38,4 @@ public sealed class SalvageAirMod : IPrototype, ISalvageMod /// [DataField("gases")] public float[] Gases = new float[Atmospherics.AdjustedNumberOfGases]; - - /// - /// Biomes this air mixture is allowed to occur in. - /// - [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List? Biomes; } diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageDungeonMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageDungeonMod.cs index 8a7ce1ccca..c30c2aa29a 100644 --- a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageDungeonMod.cs +++ b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageDungeonMod.cs @@ -6,24 +6,23 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy namespace Content.Shared.Salvage.Expeditions.Modifiers; [Prototype("salvageDungeonMod")] -public sealed class SalvageDungeonMod : IPrototype, ISalvageMod +public sealed class SalvageDungeonMod : IPrototype, IBiomeSpecificMod { [IdDataField] public string ID { get; } = default!; [DataField("desc")] public string Description { get; } = string.Empty; - [DataField("proto", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string Proto = string.Empty; - - /// - /// Cost for difficulty modifiers. - /// + /// [DataField("cost")] public float Cost { get; } = 0f; + /// + [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List? Biomes { get; } = null; + /// - /// Biomes this dungeon can occur in. + /// The config to use for spawning the dungeon. /// - [DataField("biomeMods", customTypeSerializer:typeof(PrototypeIdListSerializer))] - public List? BiomeMods; + [DataField("proto", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Proto = string.Empty; } diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageLightMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageLightMod.cs index 7393bf862f..315125d3aa 100644 --- a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageLightMod.cs +++ b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageLightMod.cs @@ -4,23 +4,19 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy namespace Content.Shared.Salvage.Expeditions.Modifiers; [Prototype("salvageLightMod")] -public sealed class SalvageLightMod : IPrototype, ISalvageMod +public sealed class SalvageLightMod : IPrototype, IBiomeSpecificMod { [IdDataField] public string ID { get; } = default!; [DataField("desc")] public string Description { get; } = string.Empty; - /// - /// Cost for difficulty modifiers. - /// + /// [DataField("cost")] public float Cost { get; } = 0f; - [DataField("color", required: true)] public Color? Color; - - /// - /// Biomes that this color applies to. - /// + /// [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List? Biomes; + public List? Biomes { get; } = null; + + [DataField("color", required: true)] public Color? Color; } diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageTemperatureMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageTemperatureMod.cs new file mode 100644 index 0000000000..58e9553739 --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageTemperatureMod.cs @@ -0,0 +1,27 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Salvage.Expeditions.Modifiers; + +[Prototype("salvageTemperatureMod")] +public sealed class SalvageTemperatureMod : IPrototype, IBiomeSpecificMod +{ + [IdDataField] public string ID { get; } = default!; + + [DataField("desc")] public string Description { get; } = string.Empty; + + /// + [DataField("cost")] + public float Cost { get; } = 0f; + + /// + [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List? Biomes { get; } = null; + + /// + /// Temperature in the planets air mix. + /// + [DataField("temperature")] + public float Temperature = 293.15f; +} diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs index 7889e8b09b..7bf6be4913 100644 --- a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs +++ b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs @@ -1,4 +1,3 @@ -using Content.Shared.Parallax.Biomes; using Content.Shared.Weather; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; @@ -7,24 +6,23 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy namespace Content.Shared.Salvage.Expeditions.Modifiers; [Prototype("salvageWeatherMod")] -public sealed class SalvageWeatherMod : IPrototype, ISalvageMod +public sealed class SalvageWeatherMod : IPrototype, IBiomeSpecificMod { [IdDataField] public string ID { get; } = default!; [DataField("desc")] public string Description { get; } = string.Empty; - /// - /// Cost for difficulty modifiers. - /// + /// [DataField("cost")] public float Cost { get; } = 0f; - [DataField("weather", required: true, customTypeSerializer:typeof(PrototypeIdSerializer))] - public string WeatherPrototype = string.Empty; + /// + [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List? Biomes { get; } = null; /// - /// Whitelist for biomes. If empty assumed any allowed. + /// Weather prototype to use on the planet. /// - [DataField("biomes", customTypeSerializer:typeof(PrototypeIdListSerializer))] - public List Biomes = new(); + [DataField("weather", required: true, customTypeSerializer:typeof(PrototypeIdSerializer))] + public string WeatherPrototype = string.Empty; } diff --git a/Content.Shared/Salvage/Expeditions/SalvageExpeditions.cs b/Content.Shared/Salvage/Expeditions/SalvageExpeditions.cs index 85894d86fb..10c3cae7b6 100644 --- a/Content.Shared/Salvage/Expeditions/SalvageExpeditions.cs +++ b/Content.Shared/Salvage/Expeditions/SalvageExpeditions.cs @@ -100,6 +100,7 @@ public sealed record SalvageMission( SalvageMissionType Mission, string Biome, string Air, + float Temperature, Color? Color, TimeSpan Duration, List Rewards, @@ -140,6 +141,11 @@ public sealed record SalvageMission( /// public readonly string Air = Air; + /// + /// Temperature of the planet's atmosphere. + /// + public readonly float Temperature = Temperature; + /// /// Lighting color to be used (AKA outdoor lighting). /// diff --git a/Content.Shared/Salvage/SharedSalvageSystem.cs b/Content.Shared/Salvage/SharedSalvageSystem.cs index 7a5a7c32e9..813299b423 100644 --- a/Content.Shared/Salvage/SharedSalvageSystem.cs +++ b/Content.Shared/Salvage/SharedSalvageSystem.cs @@ -65,9 +65,9 @@ public abstract class SharedSalvageSystem : EntitySystem case DifficultyRating.Moderate: return 4; case DifficultyRating.Hazardous: - return 6; - case DifficultyRating.Extreme: return 8; + case DifficultyRating.Extreme: + return 16; default: throw new ArgumentOutOfRangeException(nameof(rating), rating, null); } @@ -97,16 +97,23 @@ public abstract class SharedSalvageSystem : EntitySystem var rand = new System.Random(seed); var faction = GetMod(rand, ref rating); var biome = GetMod(rand, ref rating); - var dungeon = GetDungeon(biome.ID, rand, ref rating); + var dungeon = GetBiomeMod(biome.ID, rand, ref rating); var mods = new List(); - var air = GetAir(biome.ID, rand, ref rating); + var air = GetBiomeMod(biome.ID, rand, ref rating); if (air.Description != string.Empty) { mods.Add(air.Description); } - var light = GetLight(biome.ID, rand, ref rating); + // only show the description if there is an atmosphere since wont matter otherwise + var temp = GetBiomeMod(biome.ID, rand, ref rating); + if (temp.Description != string.Empty && !air.Space) + { + mods.Add(temp.Description); + } + + var light = GetBiomeMod(biome.ID, rand, ref rating); if (light.Description != string.Empty) { mods.Add(light.Description); @@ -124,60 +131,18 @@ public abstract class SharedSalvageSystem : EntitySystem } var rewards = GetRewards(difficulty, rand); - return new SalvageMission(seed, difficulty, dungeon.ID, faction.ID, config, biome.ID, air.ID, light.Color, duration, rewards, mods); + return new SalvageMission(seed, difficulty, dungeon.ID, faction.ID, config, biome.ID, air.ID, temp.Temperature, light.Color, duration, rewards, mods); } - // TODO: probably worth putting the biome whitelist thing in a common thing then having a getmod overload for it - public SalvageDungeonMod GetDungeon(string biome, System.Random rand, ref float rating) + public T GetBiomeMod(string biome, System.Random rand, ref float rating) where T : class, IPrototype, IBiomeSpecificMod { - var mods = _proto.EnumeratePrototypes().ToList(); + var mods = _proto.EnumeratePrototypes().ToList(); mods.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal)); rand.Shuffle(mods); foreach (var mod in mods) { - if (mod.BiomeMods?.Contains(biome) == false || - mod.Cost > rating) - { - continue; - } - - rating -= (int) mod.Cost; - - return mod; - } - - throw new InvalidOperationException(); - } - - public SalvageAirMod GetAir(string biome, System.Random rand, ref float rating) - { - var mods = _proto.EnumeratePrototypes().ToList(); - mods.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal)); - rand.Shuffle(mods); - - foreach (var mod in mods) - { - if (mod.Biomes?.Contains(biome) == false || mod.Cost > rating) - continue; - - rating -= mod.Cost; - - return mod; - } - - throw new InvalidOperationException(); - } - - public SalvageLightMod GetLight(string biome, System.Random rand, ref float rating) - { - var mods = _proto.EnumeratePrototypes().ToList(); - mods.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal)); - rand.Shuffle(mods); - - foreach (var mod in mods) - { - if (mod.Biomes?.Contains(biome) == false || mod.Cost > rating) + if (mod.Cost > rating || (mod.Biomes != null && !mod.Biomes.Contains(biome))) continue; rating -= mod.Cost; @@ -238,9 +203,9 @@ public abstract class SharedSalvageSystem : EntitySystem case DifficultyRating.Moderate: return new string[] { common, rare, rare }; case DifficultyRating.Hazardous: - return new string[] { rare, rare, epic }; + return new string[] { rare, rare, rare, epic }; case DifficultyRating.Extreme: - return new string[] { rare, epic, epic }; + return new string[] { rare, rare, epic, epic, epic }; default: throw new NotImplementedException(); } diff --git a/Resources/Maps/Dungeon/experiment.yml b/Resources/Maps/Dungeon/experiment.yml index 2d34639ca0..66f9659f38 100644 --- a/Resources/Maps/Dungeon/experiment.yml +++ b/Resources/Maps/Dungeon/experiment.yml @@ -7948,11 +7948,11 @@ entities: - pos: 7.5,32.5 parent: 1653 type: Transform -- proto: PowerCellHyperPrinted +- proto: PowerCellHighPrinted entities: - - uid: 1599 + - uid: 822 components: - - pos: 33.368233,13.5307665 + - pos: 33.49889,13.580287 parent: 1653 type: Transform - proto: PowerCellRecharger @@ -8929,6 +8929,49 @@ entities: - pos: 25.506968,14.578961 parent: 1653 type: Transform +- proto: SheetGlass + entities: + - uid: 841 + components: + - pos: 0.32647848,15.48905 + parent: 1653 + type: Transform + - uid: 844 + components: + - pos: 53.377705,4.600436 + parent: 1653 + type: Transform +- proto: SheetPlastic + entities: + - uid: 838 + components: + - pos: 10.278141,7.4876976 + parent: 1653 + type: Transform + - uid: 839 + components: + - pos: 0.43585348,16.5828 + parent: 1653 + type: Transform + - uid: 846 + components: + - pos: 6.3194933,22.541233 + parent: 1653 + type: Transform +- proto: SheetRGlass + entities: + - uid: 1112 + components: + - pos: 20.352413,24.551647 + parent: 1653 + type: Transform +- proto: SheetSteel + entities: + - uid: 840 + components: + - pos: 0.46710348,15.942175 + parent: 1653 + type: Transform - proto: ShuttersWindow entities: - uid: 580 diff --git a/Resources/Maps/Dungeon/lava_brig.yml b/Resources/Maps/Dungeon/lava_brig.yml index 765dffca65..e85c15282f 100644 --- a/Resources/Maps/Dungeon/lava_brig.yml +++ b/Resources/Maps/Dungeon/lava_brig.yml @@ -3144,11 +3144,6 @@ entities: - pos: 19.42657,0.6288943 parent: 588 type: Transform - - uid: 398 - components: - - pos: 28.387192,8.540832 - parent: 588 - type: Transform - proto: BookRandom entities: - uid: 1835 @@ -7708,6 +7703,13 @@ entities: - pos: 10.645364,44.67479 parent: 588 type: Transform +- proto: ClusterBangFull + entities: + - uid: 599 + components: + - pos: 33.484257,28.42918 + parent: 588 + type: Transform - proto: ComputerAlert entities: - uid: 999 @@ -9004,6 +9006,13 @@ entities: - pos: 10.5,48.5 parent: 588 type: Transform +- proto: GatfruitSeeds + entities: + - uid: 562 + components: + - pos: 8.528373,27.49547 + parent: 588 + type: Transform - proto: Gauze entities: - uid: 1482 @@ -9191,18 +9200,17 @@ entities: type: Transform - proto: HospitalCurtains entities: + - uid: 402 + components: + - pos: 8.5,27.5 + parent: 588 + type: Transform - uid: 949 components: - rot: 1.5707963267948966 rad pos: 8.5,24.5 parent: 588 type: Transform - - uid: 950 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,27.5 - parent: 588 - type: Transform - uid: 951 components: - rot: 1.5707963267948966 rad @@ -9352,6 +9360,13 @@ entities: - pos: 30.5,42.5 parent: 588 type: Transform +- proto: IngotGold + entities: + - uid: 952 + components: + - pos: 11.069347,39.504154 + parent: 588 + type: Transform - proto: KitchenMicrowave entities: - uid: 524 @@ -9606,13 +9621,6 @@ entities: - pos: 30.614443,28.392822 parent: 588 type: Transform -- proto: MedkitBruteFilled - entities: - - uid: 402 - components: - - pos: 30.512049,27.511803 - parent: 588 - type: Transform - proto: MedkitCombatFilled entities: - uid: 1154 @@ -9828,7 +9836,7 @@ entities: - pos: 22.5,40.5 parent: 588 type: Transform -- proto: PowerCellHigh +- proto: PowerCellHyper entities: - uid: 469 components: @@ -11174,6 +11182,24 @@ entities: type: Transform - proto: RemoteSignaller entities: + - uid: 593 + components: + - pos: 34.361877,24.623777 + parent: 588 + type: Transform + - linkedPorts: + 1238: + - Pressed: Toggle + 1239: + - Pressed: Toggle + 1237: + - Pressed: Toggle + registeredSinks: + Pressed: + - 1238 + - 1239 + - 1237 + type: DeviceLinkSource - uid: 1104 components: - pos: 25.24476,30.698978 @@ -11288,6 +11314,39 @@ entities: - pos: 28.5,42.5 parent: 588 type: Transform +- proto: SheetGlass + entities: + - uid: 649 + components: + - pos: 14.3137455,32.471424 + parent: 588 + type: Transform +- proto: SheetPlasteel + entities: + - uid: 866 + components: + - pos: 2.412651,34.456436 + parent: 588 + type: Transform +- proto: SheetPlastic + entities: + - uid: 398 + components: + - pos: 20.04785,45.07574 + parent: 588 + type: Transform +- proto: SheetSteel + entities: + - uid: 656 + components: + - pos: 26.36062,32.5183 + parent: 588 + type: Transform + - uid: 699 + components: + - pos: 29.259031,40.432583 + parent: 588 + type: Transform - proto: ShowcaseRobot entities: - uid: 1621 @@ -11307,11 +11366,17 @@ entities: - pos: 34.5,27.5 parent: 588 type: Transform + - links: + - 593 + type: DeviceLinkSink - uid: 1238 components: - pos: 32.5,27.5 parent: 588 type: Transform + - links: + - 593 + type: DeviceLinkSink - proto: ShuttersWindow entities: - uid: 1239 @@ -11319,6 +11384,9 @@ entities: - pos: 33.5,27.5 parent: 588 type: Transform + - links: + - 593 + type: DeviceLinkSink - proto: SignCloning entities: - uid: 1484 @@ -11474,6 +11542,13 @@ entities: - pos: 24.466219,48.441994 parent: 588 type: Transform +- proto: SpeedLoaderMagnumHighVelocity + entities: + - uid: 950 + components: + - pos: 28.703945,8.421182 + parent: 588 + type: Transform - proto: StasisBed entities: - uid: 1425 @@ -11481,6 +11556,13 @@ entities: - pos: 13.5,43.5 parent: 588 type: Transform +- proto: StimkitFilled + entities: + - uid: 561 + components: + - pos: 30.39083,27.514402 + parent: 588 + type: Transform - proto: StimpackMini entities: - uid: 1879 @@ -12763,6 +12845,13 @@ entities: - pos: 22.543945,6.5464144 parent: 588 type: Transform +- proto: WeaponShotgunKammerer + entities: + - uid: 583 + components: + - pos: 26.57963,35.4414 + parent: 588 + type: Transform - proto: WindoorAssemblySecure entities: - uid: 696 diff --git a/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml b/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml index 9132080ebe..891cf40fa0 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/space_cash.yml @@ -97,6 +97,39 @@ - type: Stack count: 1000 +- type: entity + parent: SpaceCash + id: SpaceCash2500 + suffix: 2500 + components: + - type: Icon + sprite: Objects/Economy/cash.rsi + state: cash_1000 + - type: Stack + count: 2500 + +- type: entity + parent: SpaceCash + id: SpaceCash5000 + suffix: 5000 + components: + - type: Icon + sprite: Objects/Economy/cash.rsi + state: cash_1000 + - type: Stack + count: 5000 + +- type: entity + parent: SpaceCash + id: SpaceCash10000 + suffix: 10000 + components: + - type: Icon + sprite: Objects/Economy/cash.rsi + state: cash_1000 + - type: Stack + count: 10000 + - type: entity parent: SpaceCash id: SpaceCash1000000 diff --git a/Resources/Prototypes/Procedural/salvage_mods.yml b/Resources/Prototypes/Procedural/salvage_mods.yml index 77c58c4cac..fa81b0332b 100644 --- a/Resources/Prototypes/Procedural/salvage_mods.yml +++ b/Resources/Prototypes/Procedural/salvage_mods.yml @@ -48,14 +48,14 @@ desc: Daylight color: "#D8B059" biomes: - - Grasslands + - Grasslands - type: salvageLightMod id: Lavalight desc: Daylight color: "#A34931" biomes: - - Lava + - Lava - type: salvageLightMod id: Evening @@ -65,8 +65,8 @@ - type: salvageLightMod id: Night desc: Night time + cost: 2 color: null - cost: 1 # Time mods -> at least 1 required - type: salvageTimeMod @@ -89,7 +89,7 @@ - type: salvageDungeonMod id: Experiment proto: Experiment - biomeMods: + biomes: - Caves #- LowDesert - Snow @@ -98,7 +98,7 @@ - type: salvageDungeonMod id: LavaBrig proto: LavaBrig - biomeMods: + biomes: - Lava # Air mixtures @@ -195,3 +195,65 @@ biomes: - Caves - Lava + +# Temperatures + +- type: salvageTemperatureMod + id: RoomTemp + biomes: + - Caves + #- LowDesert + - Grasslands + +- type: salvageTemperatureMod + id: Hot + temperature: 323.15 # 50C + biomes: + - Caves + #- LowDesert + - Grasslands + - Lava + +- type: salvageTemperatureMod + id: Burning + desc: High temperature + cost: 1 + temperature: 423.15 # 200C + biomes: + - Caves + #- LowDesert + - Lava + +- type: salvageTemperatureMod + id: Melting + desc: Extreme heat + cost: 4 + temperature: 1273.15 # 1000C hot hot hot + biomes: + - Lava + +- type: salvageTemperatureMod + id: Cold + temperature: 275.15 # 2C + biomes: + - Caves + #- LowDesert + - Grasslands + - Snow + +- type: salvageTemperatureMod + id: Tundra + desc: Low temperature + cost: 2 + temperature: 263.15 # -40C + biomes: + - Caves + - Snow + +- type: salvageTemperatureMod + id: Frozen + desc: Extreme cold + cost: 3 + temperature: 123.15 # -150C + biomes: + - Snow diff --git a/Resources/Prototypes/Procedural/salvage_rewards.yml b/Resources/Prototypes/Procedural/salvage_rewards.yml index f64ea80f83..998bf3b531 100644 --- a/Resources/Prototypes/Procedural/salvage_rewards.yml +++ b/Resources/Prototypes/Procedural/salvage_rewards.yml @@ -16,6 +16,9 @@ RandomArtifactSpawner: 0.25 # weighted down since it sells for a lot NuclearBombKeg: 0.1 + # money + SpaceCash500: 0.5 + SpaceCash1000: 0.25 - type: weightedRandom id: SalvageRewardRare @@ -27,14 +30,11 @@ SheetUranium: 1.0 CratePartsT3: 1.0 CratePartsT3T4: 0.5 - # things the expedition team might want - CrateEmergencyBruteKit: 0.5 - CrateMedicalSupplies: 0.5 - CrateSecurityRiot: 0.5 # cloning boards CloningPodMachineCircuitboard: 0.5 MedicalScannerMachineCircuitboard: 0.5 CloningConsoleComputerCircuitboard: 0.5 + BiomassReclaimerMachineCircuitboard: 0.5 # basic weapons CrateArmorySMG: 0.25 CrateArmoryLaser: 0.25 @@ -43,6 +43,10 @@ ClothingHeadHelmetSwat: 0.1 # rare weapons WeaponSubMachineGunC20r: 0.1 + # money + SpaceCash500: 1.0 + SpaceCash1000: 0.75 + SpaceCash2500: 0.5 - type: weightedRandom id: SalvageRewardEpic @@ -50,14 +54,16 @@ # rare machinery ResearchAndDevelopmentServerMachineCircuitboard: 1.0 CratePartsT4: 1.0 + PowerCellAntiqueProto: 0.25 # rare weapons WeaponAdvancedLaser: 1.0 WeaponLaserCannon: 1.0 WeaponXrayCannon: 1.0 WeaponSniperHristov: 1.0 - # extremely rare weapons - GatfruitSeeds: 0.25 - WeaponLauncherRocket: 0.1 # rare chemicals CognizineChemistryBottle: 1.0 OmnizineChemistryBottle: 1.0 + # money + SpaceCash2500: 1.0 + SpaceCash5000: 0.75 + SpaceCash10000: 0.5