Merge pull request #3545 from DIMMoon1/upst2-fix

minor fix
This commit is contained in:
Dmitry 2026-03-29 05:39:40 +07:00 • committed by GitHub
commit 0ecb2631d1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
39 changed files with 2580 additions and 1491 deletions

View file

@ -22,13 +22,13 @@ using Content.Shared.Timing;
using Content.Shared.Toggleable;
using Content.Shared.Weapons.Melee.Events;
using Content.Shared.FixedPoint;
using Content.Shared.Hands;
using Content.Shared.Temperature.Components;
using Robust.Server.Audio;
using Robust.Shared.Physics.Components;
using Robust.Shared.Physics.Events;
using Robust.Shared.Physics.Systems;
using Robust.Shared.Random;
using Robust.Shared.Timing;
namespace Content.Server.Atmos.EntitySystems
{
@ -49,14 +49,12 @@ namespace Content.Server.Atmos.EntitySystems
[Dependency] private readonly UseDelaySystem _useDelay = default!;
[Dependency] private readonly AudioSystem _audio = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IGameTiming _timing = default!;
private EntityQuery<InventoryComponent> _inventoryQuery;
private EntityQuery<PhysicsComponent> _physicsQuery;
// This should probably be moved to the component, requires a rewrite, all fires tick at the same time
private const float UpdateTime = 1f;
private float _timer;
private static readonly TimeSpan UpdateTime = TimeSpan.FromSeconds(1);
private readonly Dictionary<Entity<FlammableComponent>, float> _fireEvents = new();
@ -138,6 +136,8 @@ namespace Content.Server.Atmos.EntitySystems
private void OnMapInit(EntityUid uid, FlammableComponent component, MapInitEvent args)
{
component.NextUpdate = _timing.CurTime + UpdateTime;
// Sets up a fixture for flammable collisions.
// TODO: Should this be generalized into a general non-hard 'effects' fixture or something? I can't think of other use cases for it.
// This doesn't seem great either (lots more collisions generated) but there isn't a better way to solve it either that I can think of.
@ -146,7 +146,7 @@ namespace Content.Server.Atmos.EntitySystems
return;
_fixture.TryCreateFixture(uid, component.FlammableCollisionShape, component.FlammableFixtureID, density: 0,
hard: false, collisionMask: (int) CollisionGroup.FullTileLayer, body: body);
hard: false, collisionMask: (int)CollisionGroup.FullTileLayer, body: body);
}
private void OnInteractUsing(EntityUid uid, FlammableComponent flammable, InteractUsingEvent args)
@ -365,7 +365,7 @@ namespace Content.Server.Atmos.EntitySystems
if (args.DamageDelta.DamageDict.TryGetValue("Heat", out FixedPoint2 value))
{
// Make sure the value is greater than the threshold
if(value <= component.Threshold)
if (value <= component.Threshold)
return;
// Ignite that sucker
@ -382,21 +382,13 @@ namespace Content.Server.Atmos.EntitySystems
if (!Resolve(uid, ref flammable))
return;
if (!flammable.OnFire || !_actionBlockerSystem.CanInteract(uid, null) || flammable.Resisting)
if (!flammable.OnFire || flammable.Resisting || !_actionBlockerSystem.CanInteract(uid, null))
return;
flammable.Resisting = true;
flammable.ResistCompleteTime = _timing.CurTime + flammable.ResistTime;
_popup.PopupEntity(Loc.GetString("flammable-component-resist-message"), uid, uid);
_stunSystem.TryUpdateParalyzeDuration(uid, TimeSpan.FromSeconds(2f));
// TODO FLAMMABLE: Make this not use TimerComponent...
uid.SpawnTimer(2000, () =>
{
flammable.Resisting = false;
flammable.FireStacks -= 1f;
UpdateAppearance(uid, flammable);
});
_stunSystem.TryUpdateParalyzeDuration(uid, flammable.ResistTime);
}
public override void Update(float frameTime)
@ -416,17 +408,21 @@ namespace Content.Server.Atmos.EntitySystems
}
_fireEvents.Clear();
_timer += frameTime;
if (_timer < UpdateTime)
return;
_timer -= UpdateTime;
var curTime = _timing.CurTime;
// TODO: This needs cleanup to take off the crust from TemperatureComponent and shit.
var query = EntityQueryEnumerator<FlammableComponent, TransformComponent>();
while (query.MoveNext(out var uid, out var flammable, out _))
{
if (curTime < flammable.NextUpdate)
continue;
flammable.NextUpdate += UpdateTime;
// Check if we finished resisting.
if (curTime > flammable.ResistCompleteTime)
flammable.ResistCompleteTime = null;
// Slowly dry ourselves off if wet.
if (flammable.FireStacks < 0)
{
@ -467,7 +463,7 @@ namespace Content.Server.Atmos.EntitySystems
_damageableSystem.TryChangeDamage(uid, flammable.Damage * flammable.FireStacks * ev.Multiplier, interruptsDoAfters: false);
AdjustFireStacks(uid, flammable.FirestackFade * (flammable.Resisting ? 10f : 1f), flammable, flammable.OnFire);
AdjustFireStacks(uid, flammable.FirestackFade * (flammable.Resisting ? 15f : 1f), flammable, flammable.OnFire);
}
else
{

View file

@ -39,7 +39,7 @@ public sealed class PoweredLightVariationPassSystem : VariationPassSystem<Powere
// some aging fluorescents (tubes) start to flicker
// its also way too annoying right now so we wrap it in another prob lol
if (Random.Prob(ent.Comp.AgedLightTubeFlickerChance))
_poweredLight.ToggleBlinkingLight(uid, comp, true);
EnsureComp<BlinkingPoweredLightComponent>(uid);
_poweredLight.ReplaceSpawnedPrototype((uid, comp), ent.Comp.AgedLightTubePrototype);
}
else

View file

@ -19,24 +19,19 @@ public sealed class PoweredLightSystem : SharedPoweredLightSystem
private void OnGhostBoo(EntityUid uid, PoweredLightComponent light, GhostBooEvent args)
{
if (light.IgnoreGhostsBoo)
return;
if (light.IgnoreGhostsBoo || HasComp<BlinkingPoweredLightComponent>(uid))
return; // The light is immune or already blinking.
// check cooldown first to prevent abuse
var time = GameTiming.CurTime;
if (light.LastGhostBlink != null)
{
if (time <= light.LastGhostBlink + light.GhostBlinkingCooldown)
return;
}
var curTime = GameTiming.CurTime;
if (light.LastGhostBlink != null && curTime <= light.LastGhostBlink + light.GhostBlinkingCooldown)
return;
light.LastGhostBlink = time;
light.LastGhostBlink = curTime;
ToggleBlinkingLight(uid, light, true);
uid.SpawnTimer(light.GhostBlinkingTime, () =>
{
ToggleBlinkingLight(uid, light, false);
});
var blinkingComp = EnsureComp<BlinkingPoweredLightComponent>(uid);
blinkingComp.StopBlinkingTime = curTime + light.GhostBlinkingTime;
Dirty(uid, blinkingComp);
args.Handled = true;
}

View file

@ -3,14 +3,40 @@ using Content.Shared.Damage;
using Robust.Shared.GameStates;
using Robust.Shared.Physics.Collision.Shapes;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Shared.Atmos.Components
{
[RegisterComponent, NetworkedComponent]
[RegisterComponent, NetworkedComponent, AutoGenerateComponentPause] // TODO: Access restriction so that other systems have to use the API to modify fire stacks
public sealed partial class FlammableComponent : Component
{
/// <summary>
/// Is the mob currently resisting being on fire
/// (i.e. throwing themselves onto the ground to extinguish themselves)?
/// </summary>
[ViewVariables]
public bool Resisting => ResistCompleteTime.HasValue;
/// <summary>
/// The time stamp at which the active resist will be over and the mob's flame stacks will be reduced.
/// </summary>
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoPausedField]
public TimeSpan? ResistCompleteTime;
/// <summary>
/// Timestamp for the next update.
/// </summary>
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoPausedField]
public TimeSpan NextUpdate;
/// <summary>
/// The time resisting being on fire will take.
/// The mob will be paralyzed for this duration.
/// </summary>
[DataField]
public bool Resisting;
public TimeSpan ResistTime = TimeSpan.FromSeconds(2);
[ViewVariables(VVAccess.ReadWrite)]
[DataField]

View file

@ -1,6 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using Content.Shared.Construction.Components;
using Content.Shared.Administration.Logs;
using Content.Shared.Construction.Components;
using Content.Shared.Construction.EntitySystems;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Database;
using Content.Shared.Examine;
@ -12,6 +13,8 @@ using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers;
using Robust.Shared.Map.Components;
using Robust.Shared.Network;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Systems;
using Robust.Shared.Prototypes;
namespace Content.Shared.Construction;
@ -21,16 +24,16 @@ public abstract class SharedFlatpackSystem : EntitySystem
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
[Dependency] private readonly INetManager _net = default!;
[Dependency] protected readonly IPrototypeManager PrototypeManager = default!;
[Dependency] protected readonly SharedAppearanceSystem Appearance = default!;
[Dependency] private readonly AnchorableSystem _anchorable = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly EntityLookupSystem _entityLookup = default!;
[Dependency] private readonly SharedMapSystem _map = default!;
[Dependency] protected readonly MachinePartSystem MachinePart = default!;
[Dependency] protected readonly SharedMaterialStorageSystem MaterialStorage = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedToolSystem _tool = default!;
[Dependency] protected readonly MachinePartSystem MachinePart = default!;
[Dependency] protected readonly SharedAppearanceSystem Appearance = default!;
[Dependency] protected readonly SharedMaterialStorageSystem MaterialStorage = default!;
/// <inheritdoc/>
public override void Initialize()
@ -77,17 +80,18 @@ public abstract class SharedFlatpackSystem : EntitySystem
return;
}
var buildPos = _map.TileIndicesFor(grid, gridComp, xform.Coordinates);
var coords = _map.ToCenterCoordinates(grid, buildPos);
// TODO FLATPAK
// Make this logic smarter. This should eventually allow for shit like building microwaves on tables and such.
// Also: make it ignore ghosts
if (_entityLookup.AnyEntitiesIntersecting(coords, LookupFlags.Dynamic | LookupFlags.Static))
if (!PrototypeManager.Resolve(comp.Entity, out var proto) ||
!proto.TryGetComponent<FixturesComponent>(out var fixture, EntityManager.ComponentFactory))
{
// this popup is on the server because the predicts on the intersection is crazy
if (_net.IsServer)
_popup.PopupEntity(Loc.GetString("flatpack-unpack-no-room"), uid, args.User);
return;
}
var (layer, mask) = SharedPhysicsSystem.GetHardCollision(fixture);
var buildPos = _map.TileIndicesFor(grid, gridComp, xform.Coordinates);
if (!_anchorable.TileFree((grid, gridComp), buildPos, layer, mask))
{
_popup.PopupPredicted(Loc.GetString("flatpack-unpack-no-room"), uid, args.User);
return;
}

View file

@ -1,4 +1,3 @@
namespace Content.Shared.Crayon;
[Virtual]
public abstract class SharedCrayonSystem : EntitySystem { }

View file

@ -4,6 +4,7 @@ using Robust.Shared.Audio;
using Robust.Shared.Containers;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Shared.Light.Components
{
@ -48,9 +49,6 @@ namespace Content.Shared.Light.Components
[AutoNetworkedField]
public bool CurrentLit;
[DataField, AutoNetworkedField]
public bool IsBlinking;
[DataField, AutoNetworkedField, AutoPausedField]
public TimeSpan LastThunk;
@ -84,4 +82,19 @@ namespace Content.Shared.Light.Components
[DataField]
public TimeSpan UnarmedHitStun = TimeSpan.FromSeconds(5);
}
/// <summary>
/// Makes an entity with <see cref="PoweredLightComponent"/> toggle itself on and off.
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause]
public sealed partial class BlinkingPoweredLightComponent : Component
{
/// <summary>
/// The time at which this component will remove itself, stopping the blinking.
/// If null then this light will keep blinking forever.
/// </summary>
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoNetworkedField, AutoPausedField]
public TimeSpan? StopBlinkingTime;
}
}

View file

@ -54,6 +54,9 @@ public abstract class SharedPoweredLightSystem : EntitySystem
SubscribeLocalEvent<PoweredLightComponent, PoweredLightDoAfterEvent>(OnDoAfter);
SubscribeLocalEvent<PoweredLightComponent, DamageChangedEvent>(HandleLightDamaged);
SubscribeLocalEvent<PoweredLightComponent, EmpPulseEvent>(OnEmpPulse);
SubscribeLocalEvent<BlinkingPoweredLightComponent, MapInitEvent>(OnBlinkingMapInit);
SubscribeLocalEvent<BlinkingPoweredLightComponent, ComponentShutdown>(OnBlinkingShutdown);
}
private void OnInit(EntityUid uid, PoweredLightComponent light, ComponentInit args)
@ -353,20 +356,6 @@ public abstract class SharedPoweredLightSystem : EntitySystem
args.Affected = true;
}
public void ToggleBlinkingLight(EntityUid uid, PoweredLightComponent light, bool isNowBlinking)
{
if (light.IsBlinking == isNowBlinking)
return;
light.IsBlinking = isNowBlinking;
Dirty(uid, light);
if (!TryComp<AppearanceComponent>(uid, out var appearance))
return;
_appearance.SetData(uid, PoweredLightVisuals.Blinking, isNowBlinking, appearance);
}
private void SetLight(EntityUid uid, bool value, Color? color = null, PoweredLightComponent? light = null, float? radius = null, float? energy = null, float? softness = null)
{
if (!Resolve(uid, ref light))
@ -427,4 +416,27 @@ public abstract class SharedPoweredLightSystem : EntitySystem
args.Handled = true;
}
private void OnBlinkingMapInit(Entity<BlinkingPoweredLightComponent> ent, ref MapInitEvent args)
{
_appearance.SetData(ent, PoweredLightVisuals.Blinking, true);
}
private void OnBlinkingShutdown(Entity<BlinkingPoweredLightComponent> ent, ref ComponentShutdown args)
{
_appearance.SetData(ent, PoweredLightVisuals.Blinking, false);
}
public override void Update(float frameTime)
{
base.Update(frameTime);
var curTime = GameTiming.CurTime;
var query = EntityQueryEnumerator<BlinkingPoweredLightComponent>();
while (query.MoveNext(out var uid, out var blinkingComp))
{
if (curTime > blinkingComp.StopBlinkingTime)
RemCompDeferred<BlinkingPoweredLightComponent>(uid);
}
}
}

View file

@ -1,25 +1,4 @@
Entries:
- author: ScarKy0
changes:
- message: Mice, cockroaches and other small mobs can no longer unwrap parcels.
type: Fix
id: 9075
time: '2025-10-11T21:32:59.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40838
- author: Hitlinemoss
changes:
- message: Autolathes can now print durathread.
type: Add
id: 9076
time: '2025-10-11T21:46:46.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40837
- author: cloudyias
changes:
- message: Added the ability for droppers to be printed via autolathes and medfabs
type: Add
id: 9077
time: '2025-10-11T23:15:41.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40074
- author: jessicamaybe
changes:
- message: Added swabs and an emag inventory to the biogenerator
@ -4029,3 +4008,28 @@ Entries:
id: 9586
time: '2026-03-22T22:57:42.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/43321
- author: mqole
changes:
- message: Flatpacks now use the collision of the flatpacked entity, so they can
be opened on tables and aren't blocked by ghosts.
type: Fix
id: 9587
time: '2026-03-24T20:25:18.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/41849
- author: Not-A-Chair
changes:
- message: Tricordrazine no longer heals radiation
type: Tweak
- message: . Tricordrazine no longer works on mobs in crit
type: Tweak
id: 9588
time: '2026-03-25T13:34:10.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/43293
- author: ArcaneValiance
changes:
- message: Ambuzol and Ambuzol Plus pills now properly cure and prevent infection
respectively.
type: Fix
id: 9589
time: '2026-03-25T13:49:55.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/43331

View file

@ -1067,4 +1067,15 @@
id: 131
time: '2026-03-19T07:44:21.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/43278
- author: ProPeperos
changes:
- message: On Reach, added protective grill around the station.
type: Add
- message: On Reach, you can now dock cargo shuttle to cargo dock
type: Tweak
- message: On Reach, added a bunch of needed improvements
type: Tweak
id: 132
time: '2026-03-24T21:43:08.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/43046
Order: 2

View file

@ -270166,7 +270166,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 141.5,115.5
parent: 2
- type: Timer
- uid: 37569
components:
- type: Transform
@ -270189,7 +270188,6 @@ entities:
- type: Transform
pos: 137.5,113.5
parent: 2
- type: Timer
- uid: 37573
components:
- type: Transform
@ -271222,7 +271220,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 86.5,104.5
parent: 2
- type: Timer
- uid: 37751
components:
- type: Transform
@ -271293,7 +271290,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 90.5,106.5
parent: 2
- type: Timer
- uid: 37763
components:
- type: Transform
@ -273940,7 +273936,6 @@ entities:
- type: Transform
pos: 88.5,107.5
parent: 2
- type: Timer
- uid: 38207
components:
- type: Transform

View file

@ -210337,7 +210337,6 @@ entities:
parent: 2
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 27232
components:
- type: Transform
@ -210827,7 +210826,6 @@ entities:
parent: 2
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 27298
components:
- type: Transform
@ -211369,7 +211367,6 @@ entities:
parent: 2
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 27371
components:
- type: Transform
@ -212216,7 +212213,6 @@ entities:
parent: 2
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 27491
components:
- type: Transform

View file

@ -233080,7 +233080,6 @@ entities:
- type: Transform
pos: 9.5,-11.5
parent: 2
- type: Timer
- uid: 25526
components:
- type: Transform

View file

@ -46415,7 +46415,6 @@ entities:
- type: Transform
pos: -7.5,-4.5
parent: 8406
- type: Timer
- uid: 8559
components:
- type: MetaData

View file

@ -92512,7 +92512,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 21.5,-70.5
parent: 2
- type: Timer
- uid: 9798
components:
- type: Transform

View file

@ -171204,7 +171204,6 @@ entities:
parent: 13329
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 20036
components:
- type: Transform
@ -171213,7 +171212,6 @@ entities:
parent: 13329
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 20037
components:
- type: Transform
@ -171222,7 +171220,6 @@ entities:
parent: 13329
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 20038
components:
- type: Transform

View file

@ -153624,7 +153624,7 @@ entities:
content: >-
To: Mom
From: Elian Voss,
From: Elian Voss,
Power Systems Maintenance Tech – Oasis Station
Subject: Before I Go Under
@ -156986,13 +156986,11 @@ entities:
rot: 3.141592653589793 rad
pos: 22.5,4.5
parent: 2
- type: Timer
- uid: 2585
components:
- type: Transform
pos: 22.5,9.5
parent: 2
- type: Timer
- uid: 2586
components:
- type: Transform
@ -157547,7 +157545,6 @@ entities:
rot: 3.141592653589793 rad
pos: -29.5,39.5
parent: 2
- type: Timer
- uid: 9180
components:
- type: Transform

View file

@ -77244,7 +77244,6 @@ entities:
parent: 2
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 7568
components:
- type: Transform

File diff suppressed because it is too large Load diff

View file

@ -51418,7 +51418,6 @@ entities:
parent: 31
- type: ApcPowerReceiver
powerLoad: 0
- type: Timer
- uid: 1324
components:
- type: Transform

View file

@ -16,7 +16,7 @@
required: true
default: [ IpcOrangeS ]
enum.HumanoidVisualLayers.Head:
limit: 0
limit: 1
required: false
enum.HumanoidVisualLayers.LArm:
limit: 1

View file

@ -1,9 +1,8 @@
- type: marking
id: FoxEars
bodyPart: HeadTop
groupWhitelist: [Human]
sponsorOnly: true # Corvax-Sponsors
sponsorOnly: false # Corvax-Sponsors
sprites:
- sprite: Corvax/Mobs/Customization/fox_parts.rsi
state: ears_fox_outer

View file

@ -11,9 +11,8 @@
- type: marking
id: FoxTail
bodyPart: Tail
groupWhitelist: [Vulpkanin]
sponsorOnly: true # Corvax-Sponsors
sponsorOnly: false # Corvax-Sponsors
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_tail
@ -59,7 +58,7 @@
bodyPart: Snout
groupWhitelist: [Vulpkanin]
sponsorOnly: true # Corvax-Sponsors
sponsorOnly: false # Corvax-Sponsors
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_face

View file

@ -9,7 +9,6 @@
- sprite: Mobs/Species/Human/parts.rsi
state: full
- state: ai
- type: Timer
- type: TimedSpawner
prototypes:
- MobSpirate
@ -30,7 +29,6 @@
- sprite: Mobs/Aliens/Xenos/burrower.rsi
state: crit
- state: ai
- type: Timer
- type: TimedSpawner
prototypes:
- MobXeno
@ -50,7 +48,6 @@
- sprite: Mobs/Animals/mouse.rsi
state: icon-2
- state: timed
- type: Timer
- type: TimedSpawner
prototypes:
- MobMouse

View file

@ -35,15 +35,18 @@
layers:
- state: green
- state: ai
- type: RandomSpawner
prototypes:
- MobCat
- MobCatCalico
- MobCatCaracal
- MobCatKitten
rarePrototypes:
- MobCatSpace
rareChance: 0.05
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- id: MobCatSpace
weight: 5
- !type:GroupSelector
weight: 95
children:
- id: MobCat
- id: MobCatCalico
- id: MobCatCaracal
- id: MobCatKitten
- type: entity
parent: MarkerBase

View file

@ -3,29 +3,34 @@
id: BedsheetSpawner
parent: MarkerBase
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Misc/bedsheets.rsi
state: random_bedsheet
- type: RandomSpawner
rarePrototypes:
- BedsheetIan
- BedsheetCosmos
rareChance: 0.03
prototypes:
- BedsheetBlue
- BedsheetYellow
- BedsheetOrange
- BedsheetGreen
- BedsheetNT
- BedsheetRed
- BedsheetUSA
- BedsheetBrown
- BedsheetBlack
- BedsheetPurple
- BedsheetGrey
- BedsheetWhite
- BedsheetRainbow
chance: 0.97
offset: 0
- type: Sprite
layers:
- state: red
- sprite: Objects/Misc/bedsheets.rsi
state: random_bedsheet
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 97
prob: 0.97
children:
- id: BedsheetBlue
- id: BedsheetYellow
- id: BedsheetOrange
- id: BedsheetGreen
- id: BedsheetNT
- id: BedsheetRed
- id: BedsheetUSA
- id: BedsheetBrown
- id: BedsheetBlack
- id: BedsheetPurple
- id: BedsheetGrey
- id: BedsheetWhite
- id: BedsheetRainbow
- !type:GroupSelector
weight: 3
children:
- id: BedsheetIan
- id: BedsheetCosmos
offset: 0

View file

@ -184,37 +184,42 @@
- state: red
- sprite: Structures/Storage/Crates/engineering.rsi
state: icon
- type: RandomSpawner
rarePrototypes:
- CrateEngineeringSingularityGenerator
- CrateEngineeringTeslaGenerator
- CrateEngineeringTeslaGroundingRod
- CrateEngineeringParticleAccelerator
- CrateRCD
- CrateEngineeringGear
rareChance: 0.2
prototypes:
- CrateEngineering
- CrateElectrical
- CrateEngineeringElectricalSupplies
- CrateRCDAmmo
- CrateEngineeringCableLV
- CrateEngineeringCableMV
- CrateEngineeringCableHV
- CrateEngineeringCableBulk
- CrateEngineeringSingularityContainment
- CrateEngineeringSingularityCollector
- CrateEngineeringTeslaCoil
- CrateEngineeringSingularityEmitter
- CrateEngineeringGyroscope
- CrateEngineeringThruster
- CrateEngineeringToolbox
- CrateEngineeringShuttle
- CrateEngineeringSolar
- CrateEngineeringJetpack
- CrateEmergencyRadiation
- CrateRadiation
chance: 0.9
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 8
prob: 0.9
children:
- id: CrateEngineering
- id: CrateElectrical
- id: CrateEngineeringElectricalSupplies
- id: CrateRCDAmmo
- id: CrateEngineeringCableLV
- id: CrateEngineeringCableMV
- id: CrateEngineeringCableHV
- id: CrateEngineeringCableBulk
- id: CrateEngineeringSingularityContainment
- id: CrateEngineeringSingularityCollector
- id: CrateEngineeringTeslaCoil
- id: CrateEngineeringSingularityEmitter
- id: CrateEngineeringGyroscope
- id: CrateEngineeringThruster
- id: CrateEngineeringToolbox
- id: CrateEngineeringShuttle
- id: CrateEngineeringSolar
- id: CrateEngineeringJetpack
- id: CrateEmergencyRadiation
- id: CrateRadiation
- !type:GroupSelector
weight: 2
children:
- id: CrateEngineeringSingularityGenerator
- id: CrateEngineeringTeslaGenerator
- id: CrateEngineeringTeslaGroundingRod
- id: CrateEngineeringParticleAccelerator
- id: CrateRCD
- id: CrateEngineeringGear
offset: 0.0
- type: entity
@ -227,26 +232,30 @@
- state: red
- sprite: Structures/Storage/Crates/sec_gear.rsi
state: icon
- type: RandomSpawner
rarePrototypes: #Very useful stuff we probably don't want random people getting on space ruins often, even if there are hurdles to open it
- CrateArmoryShotgun
- CrateArmorySMG
- CrateSecurityRiot
- CrateSecurityNonlethal
rareChance: 0.1
prototypes:
- CrateWeaponSecure
- CrateArmoryLaser
- CrateArmoryPistols
- CrateTrainingBombs
- CrateTrackingImplants
- CrateSecurityTrackingMindshieldImplants
- CrateSecurityHelmet
- CrateSecurityArmor
- CrateRestraints
- CrateEmergencyExplosive
- CrateSecurityBiosuit
chance: 0.9
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 9
prob: 0.9
children:
- id: CrateWeaponSecure
- id: CrateArmoryLaser
- id: CrateArmoryPistols
- id: CrateTrainingBombs
- id: CrateTrackingImplants
- id: CrateSecurityTrackingMindshieldImplants
- id: CrateSecurityHelmet
- id: CrateSecurityArmor
- id: CrateRestraints
- id: CrateEmergencyExplosive
- id: CrateSecurityBiosuit
- !type:GroupSelector #Very useful stuff we probably don't want random people getting on space ruins often, even if there are hurdles to open it
children:
- id: CrateArmoryShotgun
- id: CrateArmorySMG
- id: CrateSecurityRiot
- id: CrateSecurityNonlethal
offset: 0.0
- type: entityTable

View file

@ -4,24 +4,28 @@
id: LootSpawnerEncryptionKey
parent: MarkerBase
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Devices/encryption_keys.rsi
state: crypt_rusted
- sprite: Objects/Devices/encryption_keys.rsi
state: nano_label
- type: RandomSpawner
rarePrototypes:
- EncryptionKeyCommand
- EncryptionKeySecurity
rareChance: 0.1
prototypes:
- EncryptionKeyCommon
- EncryptionKeyEngineering
- EncryptionKeyScience
- EncryptionKeyService
- EncryptionKeyMedical
- EncryptionKeyCargo
chance: 0.9
offset: 0.0
- type: Sprite
layers:
- state: red
- sprite: Objects/Devices/encryption_keys.rsi
state: crypt_rusted
- sprite: Objects/Devices/encryption_keys.rsi
state: nano_label
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 9
prob: 0.9
children:
- id: EncryptionKeyCommon
- id: EncryptionKeyEngineering
- id: EncryptionKeyScience
- id: EncryptionKeyService
- id: EncryptionKeyMedical
- id: EncryptionKeyCargo
- !type:GroupSelector
children:
- id: EncryptionKeyCommand
- id: EncryptionKeySecurity
offset: 0.0

View file

@ -8,13 +8,16 @@
- state: red
- sprite: Objects/Decoration/Flora/flora_trees.rsi
state: tree01
- type: RandomSpawner
prototypes:
- FloraTreeLarge
- FloraTreeConifer
- FloraTreeSnow
- FloraTree
chance: 0.95
rarePrototypes:
- ShadowTree
rareChance: 0.05
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- id: ShadowTree
weight: 5
- !type:GroupSelector
weight: 95
prob: 0.95
children:
- id: FloraTreeLarge
- id: FloraTreeConifer
- id: FloraTreeSnow
- id: FloraTree

View file

@ -4,33 +4,37 @@
id: LootSpawnerIndustrialFluff
parent: MarkerBase
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Tools/flashlight.rsi
state: flashlight
- type: RandomSpawner
rarePrototypes:
- CheapLighter
- Pen
- Cigar
- CigarSpent
- Cigarette
- CigaretteSpent
- Paper
- FolderSpawner
rareChance: 0.1
prototypes:
- RemoteSignaller
- GeigerCounter
- trayScanner
- FlashlightLantern
- ClothingHandsGlovesColorBlack
- Lighter
- ClothingMaskGas
- HandheldGPSBasic
chance: 0.85
offset: 0.0
- type: Sprite
layers:
- state: red
- sprite: Objects/Tools/flashlight.rsi
state: flashlight
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 9
prob: 0.85
children:
- id: RemoteSignaller
- id: GeigerCounter
- id: trayScanner
- id: FlashlightLantern
- id: ClothingHandsGlovesColorBlack
- id: Lighter
- id: ClothingMaskGas
- id: HandheldGPSBasic
- !type:GroupSelector
children:
- id: CheapLighter
- id: Pen
- id: Cigar
- id: CigarSpent
- id: Cigarette
- id: CigaretteSpent
- id: Paper
- id: FolderSpawner
offset: 0.0
- type: entity
name: industrial loot spawner
@ -38,48 +42,53 @@
id: LootSpawnerIndustrial
parent: MarkerBase
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Tools/welder.rsi
state: icon
- type: RandomSpawner
rarePrototypes:
- MicroManipulatorStockPart
- CableHVStack10
- WelderIndustrial
- PowerCellHigh
- PowerCellSmall
- ClothingHandsGlovesColorYellowBudget
rareChance: 0.2
prototypes:
- ClothingHeadHatWelding
- WelderMini
- Crowbar
- CrowbarRed
- Screwdriver
- Wrench
- Wirecutter
- Welder
- RemoteSignaller
- GeigerCounter
- GasAnalyzer
- Multitool
- trayScanner
- FlashlightLantern
- ClothingHandsGlovesColorBlack
- ClothingMaskGas
- HandheldGPSBasic
- FireExtinguisher
- PowerCellMedium
- SheetSteel10
- SheetGlass10
- SheetPlastic10
- SheetPlasteel10
- PartRodMetal10
- CableApcStack10
- CableMVStack10
- ToolboxElectricalFilled
- ToolboxMechanicalFilled
chance: 0.8
offset: 0.0
- type: Sprite
layers:
- state: red
- sprite: Objects/Tools/welder.rsi
state: icon
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 8
prob: 0.8
children:
- id: ClothingHeadHatWelding
- id: WelderMini
- id: Crowbar
- id: CrowbarRed
- id: Screwdriver
- id: Wrench
- id: Wirecutter
- id: Welder
- id: RemoteSignaller
- id: GeigerCounter
- id: GasAnalyzer
- id: Multitool
- id: trayScanner
- id: FlashlightLantern
- id: ClothingHandsGlovesColorBlack
- id: ClothingMaskGas
- id: HandheldGPSBasic
- id: FireExtinguisher
- id: PowerCellMedium
- id: SheetSteel10
- id: SheetGlass10
- id: SheetPlastic10
- id: SheetPlasteel10
- id: PartRodMetal10
- id: CableApcStack10
- id: CableMVStack10
- id: ToolboxElectricalFilled
- id: ToolboxMechanicalFilled
- !type:GroupSelector
weight: 2
children:
- id: MicroManipulatorStockPart
- id: CableHVStack10
- id: WelderIndustrial
- id: PowerCellHigh
- id: PowerCellSmall
- id: ClothingHandsGlovesColorYellowBudget
offset: 0.0

View file

@ -5,31 +5,35 @@
components:
- type: Sprite
layers:
- state: red
- sprite: Structures/Wallmounts/paintings.rsi
state: painting8
- type: RandomSpawner
- state: red
- sprite: Structures/Wallmounts/paintings.rsi
state: painting8
- type: EntityTableSpawner
offset: 0
prototypes:
- PaintingPersistenceOfMemory
- PaintingTheSonOfMan
- PaintingTheKiss
- PaintingTheScream
- PaintingTheGreatWave
- PaintingCafeTerraceAtNight
- PaintingNightHawks
- PaintingSkeletonCigarette
- PaintingPrayerHands
- PaintingOldGuitarist
- PaintingOlympia
- PaintingSaturn
- PaintingSleepingGypsy
- PaintingRedBlueYellow
- PaintingHelloWorld
chance: 1
rarePrototypes:
- PaintingSkeletonBoof
- PaintingEmpty
- PaintingMoony
- PaintingAmogusTriptych
rareChance: 0.01
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 99
children:
- id: PaintingPersistenceOfMemory
- id: PaintingTheSonOfMan
- id: PaintingTheKiss
- id: PaintingTheScream
- id: PaintingTheGreatWave
- id: PaintingCafeTerraceAtNight
- id: PaintingNightHawks
- id: PaintingSkeletonCigarette
- id: PaintingPrayerHands
- id: PaintingOldGuitarist
- id: PaintingOlympia
- id: PaintingSaturn
- id: PaintingSleepingGypsy
- id: PaintingRedBlueYellow
- id: PaintingHelloWorld
- !type:GroupSelector
weight: 1
children:
- id: PaintingSkeletonBoof
- id: PaintingEmpty
- id: PaintingMoony
- id: PaintingAmogusTriptych

View file

@ -1,3 +1,129 @@
- type: entityTable
id: ContrabandPosterTable
table: !type:GroupSelector
children:
- id: PosterContrabandFreeTonto
- id: PosterContrabandAtmosiaDeclarationIndependence
- id: PosterContrabandFunPolice
- id: PosterContrabandRealExomorph
- id: PosterContrabandSyndicateRecruitment
- id: PosterContrabandClown
- id: PosterContrabandSmoke
- id: PosterContrabandGreyTide
- id: PosterContrabandMissingGloves
- id: PosterContrabandHackingGuide
- id: PosterContrabandRIPBadger
- id: PosterContrabandAmbrosiaVulgaris
- id: PosterContrabandDonutCorp
- id: PosterContrabandEAT
- id: PosterContrabandTools
- id: PosterContrabandPower
- id: PosterContrabandSpaceCube
- id: PosterContrabandCommunistState
- id: PosterContrabandLamarr
- id: PosterContrabandBorgFancy
- id: PosterContrabandBorgFancyv2
- id: PosterContrabandKosmicheskayaStantsiya
- id: PosterContrabandRebelsUnite
- id: PosterContrabandC20r
- id: PosterContrabandHaveaPuff
- id: PosterContrabandRevolver
- id: PosterContrabandDDayPromo
- id: PosterContrabandSyndicatePistol
- id: PosterContrabandEnergySwords
- id: PosterContrabandRedRum
- id: PosterContrabandCC64KAd
- id: PosterContrabandPunchShit
- id: PosterContrabandTheGriffin
- id: PosterContrabandFreeDrone
- id: PosterContrabandRouny
- id: PosterContrabandRobustSoftdrinks
- id: PosterContrabandShamblersJuice
- id: PosterContrabandPwrGame
- id: PosterContrabandSunkist
- id: PosterContrabandSpaceCola
- id: PosterContrabandSpaceUp
- id: PosterContrabandKudzu
- id: PosterContrabandMaskedMen
- id: PosterContrabandUnreadableAnnouncement
- id: PosterContrabandFreeSyndicateEncryptionKey
- id: PosterContrabandBountyHunters
- id: PosterContrabandTheBigGasTruth
- id: PosterContrabandWehWatches
- id: PosterContrabandVoteWeh
- id: PosterContrabandBeachStarYamamoto
- id: PosterContrabandHighEffectEngineering
- id: PosterContrabandNuclearDeviceInformational
- id: PosterContrabandRevolt
- id: PosterContrabandRise
- id: PosterContrabandMoth
- id: PosterContrabandCybersun600
- id: PosterContrabandDonk
- id: PosterContrabandEnlistGorlex
- id: PosterContrabandInterdyne
- id: PosterContrabandWaffleCorp
- id: PosterContrabandMissingSpacepen
- id: PosterContrabandExoAcid
- id: PosterContrabandExoRun
- id: PosterContrabandExoChomp
- type: entityTable
id: LegitPosterTable
table: !type:GroupSelector
children:
- id: PosterLegitHereForYourSafety
- id: PosterLegitNanotrasenLogo
- id: PosterLegitCleanliness
- id: PosterLegitHelpOthers
- id: PosterLegitBuild
- id: PosterLegitBlessThisSpess
- id: PosterLegitScience
- id: PosterLegitIan
- id: PosterLegitObey
- id: PosterLegitWalk
- id: PosterLegitStateLaws
- id: PosterLegitLoveIan
- id: PosterLegitSpaceCops
- id: PosterLegitUeNo
- id: PosterLegitGetYourLEGS
- id: PosterLegitDoNotQuestion
- id: PosterLegitWorkForAFuture
- id: PosterLegitSoftCapPopArt
- id: PosterLegitSafetyInternals
- id: PosterLegitSafetyEyeProtection
- id: PosterLegitSafetyReport
- id: PosterLegitReportCrimes
- id: PosterLegitIonRifle
- id: PosterLegitFoamForceAd
- id: PosterLegitCohibaRobustoAd
- id: PosterLegit50thAnniversaryVintageReprint
- id: PosterLegitFruitBowl
- id: PosterLegitPDAAd
- id: PosterLegitEnlist
- id: PosterLegitNanomichiAd
- id: PosterLegit12Gauge
- id: PosterLegitHighClassMartini
- id: PosterLegitTheOwl
- id: PosterLegitNoERP
- id: PosterLegitCarbonDioxide
- id: PosterLegitDickGumshue
- id: PosterLegitThereIsNoGasGiant
- id: PosterLegitJustAWeekAway
- id: PosterLegitSecWatch
- id: PosterLegitVacation
- id: PosterLegitRenault
- id: PosterLegitNTTGC
- id: PosterLegitSafetyMothDelam
- id: PosterLegitSafetyMothEpi
- id: PosterLegitSafetyMothPiping
- id: PosterLegitSafetyMothMeth
- id: PosterLegitSafetyMothHardhat
- id: PosterLegitSafetyMothSSD
- id: PosterLegitOppenhopper
- id: PosterLegitTyrone
- id: PosterLegitHelio
- id: PosterLegitBotanyFear
- type: entity
parent: MarkerBase
id: RandomPosterAny
@ -5,18 +131,23 @@
components:
- type: Sprite
layers:
- state: red
- sprite: Structures/Wallmounts/posters.rsi
state: random_anything
- type: RandomSpawner
- state: red
- sprite: Structures/Wallmounts/posters.rsi
state: random_anything
- type: EntityTableSpawner
offset: 0
prototypes:
- RandomPosterContraband
- RandomPosterLegit
chance: 0.95
rarePrototypes:
- PosterBroken
rareChance: 0.05
table: !type:GroupSelector
children:
- id: PosterBroken
weight: 0.05
- !type:GroupSelector
weight: 0.95
prob: 0.95
children:
- !type:NestedSelector
tableId: ContrabandPosterTable
- !type:NestedSelector
tableId: LegitPosterTable
- type: entity
parent: MarkerBase
@ -25,78 +156,13 @@
components:
- type: Sprite
layers:
- state: red
- sprite: Structures/Wallmounts/posters.rsi
state: random_contraband
- type: RandomSpawner
- state: red
- sprite: Structures/Wallmounts/posters.rsi
state: random_contraband
- type: EntityTableSpawner
offset: 0
prototypes:
- PosterContrabandFreeTonto
- PosterContrabandAtmosiaDeclarationIndependence
- PosterContrabandFunPolice
- PosterContrabandRealExomorph
- PosterContrabandSyndicateRecruitment
- PosterContrabandClown
- PosterContrabandSmoke
- PosterContrabandGreyTide
- PosterContrabandMissingGloves
- PosterContrabandHackingGuide
- PosterContrabandRIPBadger
- PosterContrabandAmbrosiaVulgaris
- PosterContrabandDonutCorp
- PosterContrabandEAT
- PosterContrabandTools
- PosterContrabandPower
- PosterContrabandSpaceCube
- PosterContrabandCommunistState
- PosterContrabandLamarr
- PosterContrabandBorgFancy
- PosterContrabandBorgFancyv2
- PosterContrabandKosmicheskayaStantsiya
- PosterContrabandRebelsUnite
- PosterContrabandC20r
- PosterContrabandHaveaPuff
- PosterContrabandRevolver
- PosterContrabandDDayPromo
- PosterContrabandSyndicatePistol
- PosterContrabandEnergySwords
- PosterContrabandRedRum
- PosterContrabandCC64KAd
- PosterContrabandPunchShit
- PosterContrabandTheGriffin
- PosterContrabandFreeDrone
- PosterContrabandRouny
- PosterContrabandRobustSoftdrinks
- PosterContrabandShamblersJuice
- PosterContrabandPwrGame
- PosterContrabandSunkist
- PosterContrabandSpaceCola
- PosterContrabandSpaceUp
- PosterContrabandKudzu
- PosterContrabandMaskedMen
- PosterContrabandUnreadableAnnouncement
- PosterContrabandFreeSyndicateEncryptionKey
- PosterContrabandBountyHunters
- PosterContrabandTheBigGasTruth
- PosterContrabandWehWatches
- PosterContrabandVoteWeh
- PosterContrabandBeachStarYamamoto
- PosterContrabandHighEffectEngineering
- PosterContrabandNuclearDeviceInformational
- PosterLegitEnlist # Corvax-Lore
- PosterContrabandRevolt
- PosterContrabandRise
- PosterContrabandMoth
- PosterContrabandCybersun600
- PosterContrabandDonk
- PosterContrabandEnlistGorlex
- PosterContrabandInterdyne
- PosterContrabandWaffleCorp
- PosterContrabandMissingSpacepen
- PosterContrabandExoAcid
- PosterContrabandExoRun
- PosterContrabandExoChomp
chance: 1
table: !type:NestedSelector
tableId: ContrabandPosterTable
- type: entity
parent: MarkerBase
@ -105,61 +171,10 @@
components:
- type: Sprite
layers:
- state: red
- sprite: Structures/Wallmounts/posters.rsi
state: random_legit
- type: RandomSpawner
- state: red
- sprite: Structures/Wallmounts/posters.rsi
state: random_legit
- type: EntityTableSpawner
offset: 0
prototypes:
- PosterLegitHereForYourSafety
- PosterLegitNanotrasenLogo
- PosterLegitCleanliness
- PosterLegitHelpOthers
- PosterLegitBuild
- PosterLegitBlessThisSpess
- PosterLegitScience
- PosterLegitIan
- PosterLegitObey
- PosterLegitWalk
- PosterLegitStateLaws
- PosterLegitLoveIan
- PosterLegitSpaceCops
- PosterLegitUeNo
- PosterLegitGetYourLEGS
- PosterLegitDoNotQuestion
- PosterLegitWorkForAFuture
- PosterLegitSoftCapPopArt
- PosterLegitSafetyInternals
- PosterLegitSafetyEyeProtection
- PosterLegitSafetyReport
- PosterLegitReportCrimes
- PosterLegitIonRifle
- PosterLegitFoamForceAd
- PosterLegitCohibaRobustoAd
- PosterLegit50thAnniversaryVintageReprint
- PosterLegitFruitBowl
- PosterLegitPDAAd
- PosterLegitNanomichiAd
- PosterLegit12Gauge
- PosterLegitHighClassMartini
- PosterLegitTheOwl
- PosterLegitNoERP
- PosterLegitCarbonDioxide
- PosterLegitDickGumshue
- PosterLegitThereIsNoGasGiant
- PosterLegitJustAWeekAway
- PosterLegitSecWatch
- PosterLegitVacation
- PosterLegitRenault
- PosterLegitNTTGC
- PosterLegitSafetyMothDelam
- PosterLegitSafetyMothEpi
- PosterLegitSafetyMothPiping
- PosterLegitSafetyMothMeth
- PosterLegitSafetyMothHardhat
- PosterLegitSafetyMothSSD
- PosterLegitOppenhopper
- PosterLegitTyrone
- PosterLegitHelio
- PosterLegitBotanyFear
chance: 1
table: !type:NestedSelector
tableId: LegitPosterTable

View file

@ -8,25 +8,30 @@
- state: red
- sprite: Objects/Misc/module.rsi
state: boris
- type: RandomSpawner
prototypes:
- AirAlarmElectronics
- FireAlarmElectronics
- DoorElectronics
- FirelockElectronics
- IntercomElectronics
- APCElectronics
- SignalTimerElectronics
- APECircuitboard
- SMESMachineCircuitboard
- SubstationMachineCircuitboard
- TelecomServerCircuitboard
chance: 0.95
rarePrototypes:
- CommsComputerCircuitboard
- ShuttleConsoleCircuitboard
- ComputerMassMediaCircuitboard
- AutolatheMachineCircuitboard
- ProtolatheMachineCircuitboard
- SalvageMagnetMachineCircuitboard
rareChance: 0.05
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- !type:GroupSelector
weight: 95
prob: 0.95
children:
- id: AirAlarmElectronics
- id: FireAlarmElectronics
- id: DoorElectronics
- id: FirelockElectronics
- id: IntercomElectronics
- id: APCElectronics
- id: SignalTimerElectronics
- id: APECircuitboard
- id: SMESMachineCircuitboard
- id: SubstationMachineCircuitboard
- id: TelecomServerCircuitboard
- !type:GroupSelector
weight: 5
children:
- id: CommsComputerCircuitboard
- id: ShuttleConsoleCircuitboard
- id: ComputerMassMediaCircuitboard
- id: AutolatheMachineCircuitboard
- id: ProtolatheMachineCircuitboard
- id: SalvageMagnetMachineCircuitboard

View file

@ -340,7 +340,6 @@
parent: FoodEgg
suffix: Fertilized, Chicken
components:
- type: Timer
- type: TimedSpawner
prototypes:
- MobChicken
@ -779,7 +778,6 @@
parent: FoodEgg
suffix: Fertilized, Duck
components:
- type: Timer
- type: TimedSpawner
prototypes:
- MobDuckMallard

View file

@ -927,6 +927,8 @@
id: MobPollyParrot
description: An expert in quantum cracker theory
components:
- type: TTS # Corvax-TTS
voice: Meiow
- type: Vocalizer
maxVocalizeInterval: 240 # polly is chattier
- type: RadioVocalizer

View file

@ -411,6 +411,8 @@
parent: PositronicBrain
categories: [ HideSpawnMenu, DoNotMap ]
components:
- type: TTS
voice: Machine_spirit_4 # Corvax-TTS
- type: Sprite
# Once it's in a core it's pretty much an abstract entity at that point.
visible: false

View file

@ -663,6 +663,13 @@
- !type:ReagentCondition
reagent: Ambuzol
min: 10
Digestion:
effects:
- !type:CureZombieInfection
conditions:
- !type:ReagentCondition
reagent: Ambuzol
min: 10
- type: reagent
id: AmbuzolPlus
@ -681,6 +688,14 @@
- !type:ReagentCondition
reagent: AmbuzolPlus
min: 5
Digestion:
effects:
- !type:CureZombieInfection
innoculate: true
conditions:
- !type:ReagentCondition
reagent: AmbuzolPlus
min: 5
- type: reagent
id: PulpedBananaPeel
@ -817,10 +832,19 @@
Bloodstream:
effects:
- !type:EvenHealthChange
conditions:
- !type:MobStateCondition # no healing in crit so that dedicated single damage type meds can still have a niche.
mobstate: Alive
damage:
Brute: -1
Burn: -1
Toxin: -0.5
- !type:HealthChange
conditions:
- !type:MobStateCondition
mobstate: Alive
damage:
types:
Poison: -0.5 # Same as what it was before the second coming of offmed
- type: reagent
id: Lipozine

View file

@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi",
"copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/blob/633736637f35321062f723752cb9e5d797c532aa/icons/obj/food.dmi",
"size": {
"x": 32,
"y": 32

@ -1 +1 @@
Subproject commit cc5d7503b3e2d87a2c9007c003d51246c2b1d450
Subproject commit dad56301e115f79f03852e3a8dfe485f0db667c3