more expedition changes (#17403)

Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
deltanedas
2023-06-28 14:01:27 +00:00
committed by GitHub
parent b1f7b15dd7
commit 9cd8d25ae7
16 changed files with 371 additions and 128 deletions

View File

@@ -16,6 +16,7 @@ using Robust.Client.UserInterface.XAML;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility;
namespace Content.Client.Salvage.UI; namespace Content.Client.Salvage.UI;
@@ -194,10 +195,19 @@ public sealed partial class SalvageExpeditionWindow : FancyWindow,
Text = Loc.GetString("salvage-expedition-window-rewards") Text = Loc.GetString("salvage-expedition-window-rewards")
}); });
// there will always be 3 rewards so no need for 0 check var rewards = new Dictionary<string, int>();
foreach (var reward in mission.Rewards)
{
var name = _prototype.Index<EntityPrototype>(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() lBox.AddChild(new Label()
{ {
Text = string.Join("\n", mission.Rewards.Select(id => "- " + _prototype.Index<EntityPrototype>(id).Name)), Text = string.Join("\n", rewards.Select(o => "- " + o.Key + (o.Value > 1 ? $" x {o.Value}" : ""))).TrimEnd(),
FontColorOverride = StyleNano.ConcerningOrangeFore, FontColorOverride = StyleNano.ConcerningOrangeFore,
HorizontalAlignment = HAlignment.Left, HorizontalAlignment = HAlignment.Left,
Margin = new Thickness(0f, 0f, 0f, 5f) Margin = new Thickness(0f, 0f, 0f, 5f)

View File

@@ -115,8 +115,7 @@ public sealed class SpawnSalvageMissionJob : Job<bool>
_entManager.System<AtmosphereSystem>().SetMapSpace(mapUid, air.Space, atmos); _entManager.System<AtmosphereSystem>().SetMapSpace(mapUid, air.Space, atmos);
_entManager.System<AtmosphereSystem>().SetMapGasMixture(mapUid, new GasMixture(2500) _entManager.System<AtmosphereSystem>().SetMapGasMixture(mapUid, new GasMixture(2500)
{ {
// TODO: temperature mods Temperature = mission.Temperature,
Temperature = 293.15f,
Moles = moles, Moles = moles,
}, atmos); }, atmos);

View File

@@ -0,0 +1,9 @@
namespace Content.Shared.Salvage.Expeditions.Modifiers;
public interface IBiomeSpecificMod : ISalvageMod
{
/// <summary>
/// Whitelist for biomes. If null then any biome is allowed.
/// </summary>
List<string>? Biomes { get; }
}

View File

@@ -7,5 +7,8 @@ public interface ISalvageMod
/// </summary> /// </summary>
string Description { get; } string Description { get; }
/// <summary>
/// Cost for difficulty modifiers.
/// </summary>
float Cost { get; } float Cost { get; }
} }

View File

@@ -10,7 +10,7 @@ namespace Content.Shared.Salvage.Expeditions.Modifiers;
/// Which one is selected depends on the mission difficulty, different weightedRandoms are picked from. /// Which one is selected depends on the mission difficulty, different weightedRandoms are picked from.
/// </summary> /// </summary>
[Prototype("salvageAirMod")] [Prototype("salvageAirMod")]
public sealed class SalvageAirMod : IPrototype, ISalvageMod public sealed class SalvageAirMod : IPrototype, IBiomeSpecificMod
{ {
[IdDataField] [IdDataField]
public string ID { get; } = default!; public string ID { get; } = default!;
@@ -23,6 +23,10 @@ public sealed class SalvageAirMod : IPrototype, ISalvageMod
[DataField("cost")] [DataField("cost")]
public float Cost { get; } = 0f; public float Cost { get; } = 0f;
/// <inheritdoc/>
[DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))]
public List<string>? Biomes { get; } = null;
/// <summary> /// <summary>
/// Set to true if this planet will have no atmosphere. /// Set to true if this planet will have no atmosphere.
/// </summary> /// </summary>
@@ -34,10 +38,4 @@ public sealed class SalvageAirMod : IPrototype, ISalvageMod
/// </summary> /// </summary>
[DataField("gases")] [DataField("gases")]
public float[] Gases = new float[Atmospherics.AdjustedNumberOfGases]; public float[] Gases = new float[Atmospherics.AdjustedNumberOfGases];
/// <summary>
/// Biomes this air mixture is allowed to occur in.
/// </summary>
[DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))]
public List<string>? Biomes;
} }

View File

@@ -6,24 +6,23 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy
namespace Content.Shared.Salvage.Expeditions.Modifiers; namespace Content.Shared.Salvage.Expeditions.Modifiers;
[Prototype("salvageDungeonMod")] [Prototype("salvageDungeonMod")]
public sealed class SalvageDungeonMod : IPrototype, ISalvageMod public sealed class SalvageDungeonMod : IPrototype, IBiomeSpecificMod
{ {
[IdDataField] public string ID { get; } = default!; [IdDataField] public string ID { get; } = default!;
[DataField("desc")] public string Description { get; } = string.Empty; [DataField("desc")] public string Description { get; } = string.Empty;
[DataField("proto", customTypeSerializer:typeof(PrototypeIdSerializer<DungeonConfigPrototype>))] /// <inheridoc/>
public string Proto = string.Empty;
/// <summary>
/// Cost for difficulty modifiers.
/// </summary>
[DataField("cost")] [DataField("cost")]
public float Cost { get; } = 0f; public float Cost { get; } = 0f;
/// <inheridoc/>
[DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))]
public List<string>? Biomes { get; } = null;
/// <summary> /// <summary>
/// Biomes this dungeon can occur in. /// The config to use for spawning the dungeon.
/// </summary> /// </summary>
[DataField("biomeMods", customTypeSerializer:typeof(PrototypeIdListSerializer<SalvageBiomeMod>))] [DataField("proto", customTypeSerializer: typeof(PrototypeIdSerializer<DungeonConfigPrototype>))]
public List<string>? BiomeMods; public string Proto = string.Empty;
} }

View File

@@ -4,23 +4,19 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy
namespace Content.Shared.Salvage.Expeditions.Modifiers; namespace Content.Shared.Salvage.Expeditions.Modifiers;
[Prototype("salvageLightMod")] [Prototype("salvageLightMod")]
public sealed class SalvageLightMod : IPrototype, ISalvageMod public sealed class SalvageLightMod : IPrototype, IBiomeSpecificMod
{ {
[IdDataField] public string ID { get; } = default!; [IdDataField] public string ID { get; } = default!;
[DataField("desc")] public string Description { get; } = string.Empty; [DataField("desc")] public string Description { get; } = string.Empty;
/// <summary> /// <inheritdoc/>
/// Cost for difficulty modifiers.
/// </summary>
[DataField("cost")] [DataField("cost")]
public float Cost { get; } = 0f; public float Cost { get; } = 0f;
[DataField("color", required: true)] public Color? Color; /// <inheritdoc/>
/// <summary>
/// Biomes that this color applies to.
/// </summary>
[DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))] [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))]
public List<string>? Biomes; public List<string>? Biomes { get; } = null;
[DataField("color", required: true)] public Color? Color;
} }

View File

@@ -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;
/// <inheritdoc/>
[DataField("cost")]
public float Cost { get; } = 0f;
/// <inheritdoc/>
[DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))]
public List<string>? Biomes { get; } = null;
/// <summary>
/// Temperature in the planets air mix.
/// </summary>
[DataField("temperature")]
public float Temperature = 293.15f;
}

View File

@@ -1,4 +1,3 @@
using Content.Shared.Parallax.Biomes;
using Content.Shared.Weather; using Content.Shared.Weather;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; 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; namespace Content.Shared.Salvage.Expeditions.Modifiers;
[Prototype("salvageWeatherMod")] [Prototype("salvageWeatherMod")]
public sealed class SalvageWeatherMod : IPrototype, ISalvageMod public sealed class SalvageWeatherMod : IPrototype, IBiomeSpecificMod
{ {
[IdDataField] public string ID { get; } = default!; [IdDataField] public string ID { get; } = default!;
[DataField("desc")] public string Description { get; } = string.Empty; [DataField("desc")] public string Description { get; } = string.Empty;
/// <summary> /// <inheritdoc/>
/// Cost for difficulty modifiers.
/// </summary>
[DataField("cost")] [DataField("cost")]
public float Cost { get; } = 0f; public float Cost { get; } = 0f;
[DataField("weather", required: true, customTypeSerializer:typeof(PrototypeIdSerializer<WeatherPrototype>))] /// <inheritdoc/>
public string WeatherPrototype = string.Empty; [DataField("biomes", customTypeSerializer: typeof(PrototypeIdListSerializer<SalvageBiomeMod>))]
public List<string>? Biomes { get; } = null;
/// <summary> /// <summary>
/// Whitelist for biomes. If empty assumed any allowed. /// Weather prototype to use on the planet.
/// </summary> /// </summary>
[DataField("biomes", customTypeSerializer:typeof(PrototypeIdListSerializer<BiomeTemplatePrototype>))] [DataField("weather", required: true, customTypeSerializer:typeof(PrototypeIdSerializer<WeatherPrototype>))]
public List<string> Biomes = new(); public string WeatherPrototype = string.Empty;
} }

View File

@@ -100,6 +100,7 @@ public sealed record SalvageMission(
SalvageMissionType Mission, SalvageMissionType Mission,
string Biome, string Biome,
string Air, string Air,
float Temperature,
Color? Color, Color? Color,
TimeSpan Duration, TimeSpan Duration,
List<string> Rewards, List<string> Rewards,
@@ -140,6 +141,11 @@ public sealed record SalvageMission(
/// </summary> /// </summary>
public readonly string Air = Air; public readonly string Air = Air;
/// <summary>
/// Temperature of the planet's atmosphere.
/// </summary>
public readonly float Temperature = Temperature;
/// <summary> /// <summary>
/// Lighting color to be used (AKA outdoor lighting). /// Lighting color to be used (AKA outdoor lighting).
/// </summary> /// </summary>

View File

@@ -65,9 +65,9 @@ public abstract class SharedSalvageSystem : EntitySystem
case DifficultyRating.Moderate: case DifficultyRating.Moderate:
return 4; return 4;
case DifficultyRating.Hazardous: case DifficultyRating.Hazardous:
return 6;
case DifficultyRating.Extreme:
return 8; return 8;
case DifficultyRating.Extreme:
return 16;
default: default:
throw new ArgumentOutOfRangeException(nameof(rating), rating, null); throw new ArgumentOutOfRangeException(nameof(rating), rating, null);
} }
@@ -97,16 +97,23 @@ public abstract class SharedSalvageSystem : EntitySystem
var rand = new System.Random(seed); var rand = new System.Random(seed);
var faction = GetMod<SalvageFactionPrototype>(rand, ref rating); var faction = GetMod<SalvageFactionPrototype>(rand, ref rating);
var biome = GetMod<SalvageBiomeMod>(rand, ref rating); var biome = GetMod<SalvageBiomeMod>(rand, ref rating);
var dungeon = GetDungeon(biome.ID, rand, ref rating); var dungeon = GetBiomeMod<SalvageDungeonMod>(biome.ID, rand, ref rating);
var mods = new List<string>(); var mods = new List<string>();
var air = GetAir(biome.ID, rand, ref rating); var air = GetBiomeMod<SalvageAirMod>(biome.ID, rand, ref rating);
if (air.Description != string.Empty) if (air.Description != string.Empty)
{ {
mods.Add(air.Description); 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<SalvageTemperatureMod>(biome.ID, rand, ref rating);
if (temp.Description != string.Empty && !air.Space)
{
mods.Add(temp.Description);
}
var light = GetBiomeMod<SalvageLightMod>(biome.ID, rand, ref rating);
if (light.Description != string.Empty) if (light.Description != string.Empty)
{ {
mods.Add(light.Description); mods.Add(light.Description);
@@ -124,60 +131,18 @@ public abstract class SharedSalvageSystem : EntitySystem
} }
var rewards = GetRewards(difficulty, rand); 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 T GetBiomeMod<T>(string biome, System.Random rand, ref float rating) where T : class, IPrototype, IBiomeSpecificMod
public SalvageDungeonMod GetDungeon(string biome, System.Random rand, ref float rating)
{ {
var mods = _proto.EnumeratePrototypes<SalvageDungeonMod>().ToList(); var mods = _proto.EnumeratePrototypes<T>().ToList();
mods.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal)); mods.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal));
rand.Shuffle(mods); rand.Shuffle(mods);
foreach (var mod in mods) foreach (var mod in mods)
{ {
if (mod.BiomeMods?.Contains(biome) == false || if (mod.Cost > rating || (mod.Biomes != null && !mod.Biomes.Contains(biome)))
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<SalvageAirMod>().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<SalvageLightMod>().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; continue;
rating -= mod.Cost; rating -= mod.Cost;
@@ -238,9 +203,9 @@ public abstract class SharedSalvageSystem : EntitySystem
case DifficultyRating.Moderate: case DifficultyRating.Moderate:
return new string[] { common, rare, rare }; return new string[] { common, rare, rare };
case DifficultyRating.Hazardous: case DifficultyRating.Hazardous:
return new string[] { rare, rare, epic }; return new string[] { rare, rare, rare, epic };
case DifficultyRating.Extreme: case DifficultyRating.Extreme:
return new string[] { rare, epic, epic }; return new string[] { rare, rare, epic, epic, epic };
default: default:
throw new NotImplementedException(); throw new NotImplementedException();
} }

View File

@@ -7948,11 +7948,11 @@ entities:
- pos: 7.5,32.5 - pos: 7.5,32.5
parent: 1653 parent: 1653
type: Transform type: Transform
- proto: PowerCellHyperPrinted - proto: PowerCellHighPrinted
entities: entities:
- uid: 1599 - uid: 822
components: components:
- pos: 33.368233,13.5307665 - pos: 33.49889,13.580287
parent: 1653 parent: 1653
type: Transform type: Transform
- proto: PowerCellRecharger - proto: PowerCellRecharger
@@ -8929,6 +8929,49 @@ entities:
- pos: 25.506968,14.578961 - pos: 25.506968,14.578961
parent: 1653 parent: 1653
type: Transform 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 - proto: ShuttersWindow
entities: entities:
- uid: 580 - uid: 580

View File

@@ -3144,11 +3144,6 @@ entities:
- pos: 19.42657,0.6288943 - pos: 19.42657,0.6288943
parent: 588 parent: 588
type: Transform type: Transform
- uid: 398
components:
- pos: 28.387192,8.540832
parent: 588
type: Transform
- proto: BookRandom - proto: BookRandom
entities: entities:
- uid: 1835 - uid: 1835
@@ -7708,6 +7703,13 @@ entities:
- pos: 10.645364,44.67479 - pos: 10.645364,44.67479
parent: 588 parent: 588
type: Transform type: Transform
- proto: ClusterBangFull
entities:
- uid: 599
components:
- pos: 33.484257,28.42918
parent: 588
type: Transform
- proto: ComputerAlert - proto: ComputerAlert
entities: entities:
- uid: 999 - uid: 999
@@ -9004,6 +9006,13 @@ entities:
- pos: 10.5,48.5 - pos: 10.5,48.5
parent: 588 parent: 588
type: Transform type: Transform
- proto: GatfruitSeeds
entities:
- uid: 562
components:
- pos: 8.528373,27.49547
parent: 588
type: Transform
- proto: Gauze - proto: Gauze
entities: entities:
- uid: 1482 - uid: 1482
@@ -9191,18 +9200,17 @@ entities:
type: Transform type: Transform
- proto: HospitalCurtains - proto: HospitalCurtains
entities: entities:
- uid: 402
components:
- pos: 8.5,27.5
parent: 588
type: Transform
- uid: 949 - uid: 949
components: components:
- rot: 1.5707963267948966 rad - rot: 1.5707963267948966 rad
pos: 8.5,24.5 pos: 8.5,24.5
parent: 588 parent: 588
type: Transform type: Transform
- uid: 950
components:
- rot: 1.5707963267948966 rad
pos: 8.5,27.5
parent: 588
type: Transform
- uid: 951 - uid: 951
components: components:
- rot: 1.5707963267948966 rad - rot: 1.5707963267948966 rad
@@ -9352,6 +9360,13 @@ entities:
- pos: 30.5,42.5 - pos: 30.5,42.5
parent: 588 parent: 588
type: Transform type: Transform
- proto: IngotGold
entities:
- uid: 952
components:
- pos: 11.069347,39.504154
parent: 588
type: Transform
- proto: KitchenMicrowave - proto: KitchenMicrowave
entities: entities:
- uid: 524 - uid: 524
@@ -9606,13 +9621,6 @@ entities:
- pos: 30.614443,28.392822 - pos: 30.614443,28.392822
parent: 588 parent: 588
type: Transform type: Transform
- proto: MedkitBruteFilled
entities:
- uid: 402
components:
- pos: 30.512049,27.511803
parent: 588
type: Transform
- proto: MedkitCombatFilled - proto: MedkitCombatFilled
entities: entities:
- uid: 1154 - uid: 1154
@@ -9828,7 +9836,7 @@ entities:
- pos: 22.5,40.5 - pos: 22.5,40.5
parent: 588 parent: 588
type: Transform type: Transform
- proto: PowerCellHigh - proto: PowerCellHyper
entities: entities:
- uid: 469 - uid: 469
components: components:
@@ -11174,6 +11182,24 @@ entities:
type: Transform type: Transform
- proto: RemoteSignaller - proto: RemoteSignaller
entities: 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 - uid: 1104
components: components:
- pos: 25.24476,30.698978 - pos: 25.24476,30.698978
@@ -11288,6 +11314,39 @@ entities:
- pos: 28.5,42.5 - pos: 28.5,42.5
parent: 588 parent: 588
type: Transform 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 - proto: ShowcaseRobot
entities: entities:
- uid: 1621 - uid: 1621
@@ -11307,11 +11366,17 @@ entities:
- pos: 34.5,27.5 - pos: 34.5,27.5
parent: 588 parent: 588
type: Transform type: Transform
- links:
- 593
type: DeviceLinkSink
- uid: 1238 - uid: 1238
components: components:
- pos: 32.5,27.5 - pos: 32.5,27.5
parent: 588 parent: 588
type: Transform type: Transform
- links:
- 593
type: DeviceLinkSink
- proto: ShuttersWindow - proto: ShuttersWindow
entities: entities:
- uid: 1239 - uid: 1239
@@ -11319,6 +11384,9 @@ entities:
- pos: 33.5,27.5 - pos: 33.5,27.5
parent: 588 parent: 588
type: Transform type: Transform
- links:
- 593
type: DeviceLinkSink
- proto: SignCloning - proto: SignCloning
entities: entities:
- uid: 1484 - uid: 1484
@@ -11474,6 +11542,13 @@ entities:
- pos: 24.466219,48.441994 - pos: 24.466219,48.441994
parent: 588 parent: 588
type: Transform type: Transform
- proto: SpeedLoaderMagnumHighVelocity
entities:
- uid: 950
components:
- pos: 28.703945,8.421182
parent: 588
type: Transform
- proto: StasisBed - proto: StasisBed
entities: entities:
- uid: 1425 - uid: 1425
@@ -11481,6 +11556,13 @@ entities:
- pos: 13.5,43.5 - pos: 13.5,43.5
parent: 588 parent: 588
type: Transform type: Transform
- proto: StimkitFilled
entities:
- uid: 561
components:
- pos: 30.39083,27.514402
parent: 588
type: Transform
- proto: StimpackMini - proto: StimpackMini
entities: entities:
- uid: 1879 - uid: 1879
@@ -12763,6 +12845,13 @@ entities:
- pos: 22.543945,6.5464144 - pos: 22.543945,6.5464144
parent: 588 parent: 588
type: Transform type: Transform
- proto: WeaponShotgunKammerer
entities:
- uid: 583
components:
- pos: 26.57963,35.4414
parent: 588
type: Transform
- proto: WindoorAssemblySecure - proto: WindoorAssemblySecure
entities: entities:
- uid: 696 - uid: 696

View File

@@ -97,6 +97,39 @@
- type: Stack - type: Stack
count: 1000 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 - type: entity
parent: SpaceCash parent: SpaceCash
id: SpaceCash1000000 id: SpaceCash1000000

View File

@@ -65,8 +65,8 @@
- type: salvageLightMod - type: salvageLightMod
id: Night id: Night
desc: Night time desc: Night time
cost: 2
color: null color: null
cost: 1
# Time mods -> at least 1 required # Time mods -> at least 1 required
- type: salvageTimeMod - type: salvageTimeMod
@@ -89,7 +89,7 @@
- type: salvageDungeonMod - type: salvageDungeonMod
id: Experiment id: Experiment
proto: Experiment proto: Experiment
biomeMods: biomes:
- Caves - Caves
#- LowDesert #- LowDesert
- Snow - Snow
@@ -98,7 +98,7 @@
- type: salvageDungeonMod - type: salvageDungeonMod
id: LavaBrig id: LavaBrig
proto: LavaBrig proto: LavaBrig
biomeMods: biomes:
- Lava - Lava
# Air mixtures # Air mixtures
@@ -195,3 +195,65 @@
biomes: biomes:
- Caves - Caves
- Lava - 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

View File

@@ -16,6 +16,9 @@
RandomArtifactSpawner: 0.25 RandomArtifactSpawner: 0.25
# weighted down since it sells for a lot # weighted down since it sells for a lot
NuclearBombKeg: 0.1 NuclearBombKeg: 0.1
# money
SpaceCash500: 0.5
SpaceCash1000: 0.25
- type: weightedRandom - type: weightedRandom
id: SalvageRewardRare id: SalvageRewardRare
@@ -27,14 +30,11 @@
SheetUranium: 1.0 SheetUranium: 1.0
CratePartsT3: 1.0 CratePartsT3: 1.0
CratePartsT3T4: 0.5 CratePartsT3T4: 0.5
# things the expedition team might want
CrateEmergencyBruteKit: 0.5
CrateMedicalSupplies: 0.5
CrateSecurityRiot: 0.5
# cloning boards # cloning boards
CloningPodMachineCircuitboard: 0.5 CloningPodMachineCircuitboard: 0.5
MedicalScannerMachineCircuitboard: 0.5 MedicalScannerMachineCircuitboard: 0.5
CloningConsoleComputerCircuitboard: 0.5 CloningConsoleComputerCircuitboard: 0.5
BiomassReclaimerMachineCircuitboard: 0.5
# basic weapons # basic weapons
CrateArmorySMG: 0.25 CrateArmorySMG: 0.25
CrateArmoryLaser: 0.25 CrateArmoryLaser: 0.25
@@ -43,6 +43,10 @@
ClothingHeadHelmetSwat: 0.1 ClothingHeadHelmetSwat: 0.1
# rare weapons # rare weapons
WeaponSubMachineGunC20r: 0.1 WeaponSubMachineGunC20r: 0.1
# money
SpaceCash500: 1.0
SpaceCash1000: 0.75
SpaceCash2500: 0.5
- type: weightedRandom - type: weightedRandom
id: SalvageRewardEpic id: SalvageRewardEpic
@@ -50,14 +54,16 @@
# rare machinery # rare machinery
ResearchAndDevelopmentServerMachineCircuitboard: 1.0 ResearchAndDevelopmentServerMachineCircuitboard: 1.0
CratePartsT4: 1.0 CratePartsT4: 1.0
PowerCellAntiqueProto: 0.25
# rare weapons # rare weapons
WeaponAdvancedLaser: 1.0 WeaponAdvancedLaser: 1.0
WeaponLaserCannon: 1.0 WeaponLaserCannon: 1.0
WeaponXrayCannon: 1.0 WeaponXrayCannon: 1.0
WeaponSniperHristov: 1.0 WeaponSniperHristov: 1.0
# extremely rare weapons
GatfruitSeeds: 0.25
WeaponLauncherRocket: 0.1
# rare chemicals # rare chemicals
CognizineChemistryBottle: 1.0 CognizineChemistryBottle: 1.0
OmnizineChemistryBottle: 1.0 OmnizineChemistryBottle: 1.0
# money
SpaceCash2500: 1.0
SpaceCash5000: 0.75
SpaceCash10000: 0.5