From 5740a88208707510009d7d976394069d2a593d3e Mon Sep 17 00:00:00 2001
From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
Date: Wed, 11 Sep 2024 13:24:24 +0200
Subject: [PATCH 01/31] Fix Station AI being affected by Bureaucratic Event
(#32021)
* init commit
* I forgot components exist
* delta told me to make it a list
---
.../Components/BureaucraticErrorRuleComponent.cs | 10 ++++++++--
.../StationEvents/Events/BureaucraticErrorRule.cs | 5 ++++-
Resources/Prototypes/GameRules/events.yml | 2 ++
3 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/Content.Server/StationEvents/Components/BureaucraticErrorRuleComponent.cs b/Content.Server/StationEvents/Components/BureaucraticErrorRuleComponent.cs
index 6dfbd9083e8..346e75e2eeb 100644
--- a/Content.Server/StationEvents/Components/BureaucraticErrorRuleComponent.cs
+++ b/Content.Server/StationEvents/Components/BureaucraticErrorRuleComponent.cs
@@ -1,9 +1,15 @@
-using Content.Server.StationEvents.Events;
+using Content.Server.StationEvents.Events;
+using Content.Shared.Roles;
+using Robust.Shared.Prototypes;
namespace Content.Server.StationEvents.Components;
[RegisterComponent, Access(typeof(BureaucraticErrorRule))]
public sealed partial class BureaucraticErrorRuleComponent : Component
{
-
+ ///
+ /// The jobs that are ignored by this rule and won't have their slots changed.
+ ///
+ [DataField]
+ public List> IgnoredJobs = new();
}
diff --git a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs
index b49049a10d4..2ddc7245cf5 100644
--- a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs
+++ b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs
@@ -1,9 +1,9 @@
using System.Linq;
-using Content.Server.GameTicking.Rules.Components;
using Content.Server.Station.Components;
using Content.Server.Station.Systems;
using Content.Server.StationEvents.Components;
using Content.Shared.GameTicking.Components;
+using Content.Shared.Roles;
using JetBrains.Annotations;
using Robust.Shared.Random;
@@ -23,6 +23,9 @@ protected override void Started(EntityUid uid, BureaucraticErrorRuleComponent co
var jobList = _stationJobs.GetJobs(chosenStation.Value).Keys.ToList();
+ foreach(var job in component.IgnoredJobs)
+ jobList.Remove(job);
+
if (jobList.Count == 0)
return;
diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml
index 8a56cfc2574..773f8946bfb 100644
--- a/Resources/Prototypes/GameRules/events.yml
+++ b/Resources/Prototypes/GameRules/events.yml
@@ -125,6 +125,8 @@
weight: 3
duration: 1
- type: BureaucraticErrorRule
+ ignoredJobs:
+ - StationAi
- type: entity
id: ClericalError
From 69f96a2210a8d79864722c35b2d4ffb0fd417ebc Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 11:25:32 +0000
Subject: [PATCH 02/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index e57ae7bf352..96b920329e2 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,12 +1,4 @@
Entries:
-- author: EmoGarbage404
- changes:
- - message: Blurry vision no longer causes names to momentarily appear as "???" when
- examining.
- type: Remove
- id: 6850
- time: '2024-07-01T03:06:28.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29633
- author: Cojoke-dot
changes:
- message: Items that slow down a person when held now slow down when dragged too.
@@ -3912,3 +3904,10 @@
id: 7349
time: '2024-09-11T03:33:42.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/31638
+- author: SlamBamActionman
+ changes:
+ - message: The Station AI job is no longer affected by the Bureaucratic Event event.
+ type: Fix
+ id: 7350
+ time: '2024-09-11T11:24:24.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/32021
From 07afed1fe6b2c6c8af0a0f9286dc6d541af7208e Mon Sep 17 00:00:00 2001
From: K-Dynamic <20566341+K-Dynamic@users.noreply.github.com>
Date: Thu, 12 Sep 2024 00:53:50 +1200
Subject: [PATCH 03/31] Reduced atmos canister sell price (#31965)
* reduce sell cost
* rounding buying prices
* Revert "rounding buying prices"
This reverts commit 68cf26e935f8d1387bb8d740802ac73998981637.
---
.../Entities/Structures/Storage/Canisters/gas_canisters.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml
index 5726b208741..f51f455e2f2 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml
@@ -99,7 +99,7 @@
components:
- GasTank
- type: StaticPrice
- price: 1000
+ price: 200
- type: AccessReader
access: [["Atmospherics"], ["Engineering"], ["Research"]]
- type: Lock
From 7f76af4da8a8a7f35e160ef666fc6de4ce73f5d7 Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 12:54:57 +0000
Subject: [PATCH 04/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 96b920329e2..ab137d06b0c 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: Cojoke-dot
- changes:
- - message: Items that slow down a person when held now slow down when dragged too.
- type: Tweak
- id: 6851
- time: '2024-07-01T05:33:08.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29364
- author: metalgearsloth
changes:
- message: Add effects for when shuttles are arriving.
@@ -3911,3 +3904,10 @@
id: 7350
time: '2024-09-11T11:24:24.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/32021
+- author: K-Dynamic
+ changes:
+ - message: Reduced canister prices from 1000 to 200 spesos
+ type: Tweak
+ id: 7351
+ time: '2024-09-11T12:53:51.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/31965
From e510504596f992744cfe62cdf26aa12f38ff6aa2 Mon Sep 17 00:00:00 2001
From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Date: Wed, 11 Sep 2024 09:52:27 -0400
Subject: [PATCH 05/31] Hivelord mob (#31322)
* Hivelord
* make it longah
---
.../Atmos/Rotting/PerishableComponent.cs | 6 +
.../Atmos/Rotting/SharedRottingSystem.cs | 4 +
.../Components/IgnoreSlowOnDamageComponent.cs | 9 +
.../Damage/Systems/SlowOnDamageSystem.cs | 19 +++
.../RechargeBasicEntityAmmoComponent.cs | 5 +-
.../Systems/RechargeBasicEntityAmmoSystem.cs | 3 +
Resources/Locale/en-US/alerts/alerts.ftl | 3 +
.../guidebook/chemistry/statuseffects.ftl | 1 +
.../Locale/en-US/reagents/meta/chemicals.ftl | 2 +
Resources/Prototypes/Alerts/alerts.yml | 8 +
.../Spawners/Random/Salvage/spawners.yml | 18 ++
.../Entities/Mobs/NPCs/asteroid.yml | 154 ++++++++++++++++++
.../Entities/Mobs/NPCs/simplemob.yml | 2 +
.../Entities/Mobs/Player/dragon.yml | 1 +
.../Prototypes/Entities/Mobs/Species/base.yml | 1 +
Resources/Prototypes/Procedural/vgroid.yml | 8 +-
Resources/Prototypes/Reagents/chemicals.yml | 20 +++
Resources/Prototypes/status_effects.yml | 4 +
.../Aliens/Asteroid/hivelord.rsi/hivelord.png | Bin 0 -> 928 bytes
.../Asteroid/hivelord.rsi/hivelord_alert.png | Bin 0 -> 713 bytes
.../hivelord.rsi/hivelord_alert_nocore.png | Bin 0 -> 675 bytes
.../Asteroid/hivelord.rsi/hivelord_dead.png | Bin 0 -> 293 bytes
.../hivelord.rsi/hivelord_dead_nocore.png | Bin 0 -> 274 bytes
.../Asteroid/hivelord.rsi/hivelord_nocore.png | Bin 0 -> 882 bytes
.../Asteroid/hivelord.rsi/hivelordbrood.png | Bin 0 -> 637 bytes
.../Aliens/Asteroid/hivelord.rsi/meta.json | 74 +++++++++
.../Consumable/Food/rorocore.rsi/boiled.png | Bin 0 -> 295 bytes
.../Consumable/Food/rorocore.rsi/icon.png | Bin 0 -> 331 bytes
.../Consumable/Food/rorocore.rsi/meta.json | 17 ++
29 files changed, 354 insertions(+), 5 deletions(-)
create mode 100644 Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert_nocore.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead_nocore.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_nocore.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelordbrood.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Consumable/Food/rorocore.rsi/boiled.png
create mode 100644 Resources/Textures/Objects/Consumable/Food/rorocore.rsi/icon.png
create mode 100644 Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json
diff --git a/Content.Shared/Atmos/Rotting/PerishableComponent.cs b/Content.Shared/Atmos/Rotting/PerishableComponent.cs
index 6983b872b89..99b30fc9069 100644
--- a/Content.Shared/Atmos/Rotting/PerishableComponent.cs
+++ b/Content.Shared/Atmos/Rotting/PerishableComponent.cs
@@ -45,6 +45,12 @@ public sealed partial class PerishableComponent : Component
[DataField, AutoNetworkedField]
public int Stage;
+
+ ///
+ /// If true, rot will always progress.
+ ///
+ [DataField, AutoNetworkedField]
+ public bool ForceRotProgression;
}
diff --git a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs
index 840818dee59..60c89c012a0 100644
--- a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs
+++ b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs
@@ -115,6 +115,10 @@ public bool IsRotProgressing(EntityUid uid, PerishableComponent? perishable)
if (!Resolve(uid, ref perishable, false))
return false;
+ // Overrides all the other checks.
+ if (perishable.ForceRotProgression)
+ return true;
+
// only dead things or inanimate objects can rot
if (TryComp(uid, out var mobState) && !_mobState.IsDead(uid, mobState))
return false;
diff --git a/Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs b/Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs
new file mode 100644
index 00000000000..e933eb1a790
--- /dev/null
+++ b/Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs
@@ -0,0 +1,9 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Damage.Components;
+
+///
+/// This is used for an effect that nullifies and adds an alert.
+///
+[RegisterComponent, NetworkedComponent, Access(typeof(SlowOnDamageSystem))]
+public sealed partial class IgnoreSlowOnDamageComponent : Component;
diff --git a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs
index 3e50ee35572..6b5f57c595e 100644
--- a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs
+++ b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs
@@ -22,6 +22,10 @@ public override void Initialize()
SubscribeLocalEvent(OnExamined);
SubscribeLocalEvent(OnGotEquipped);
SubscribeLocalEvent(OnGotUnequipped);
+
+ SubscribeLocalEvent(OnIgnoreStartup);
+ SubscribeLocalEvent(OnIgnoreShutdown);
+ SubscribeLocalEvent(OnIgnoreModifySpeed);
}
private void OnRefreshMovespeed(EntityUid uid, SlowOnDamageComponent component, RefreshMovementSpeedModifiersEvent args)
@@ -84,6 +88,21 @@ private void OnGotUnequipped(Entity ent,
{
_movementSpeedModifierSystem.RefreshMovementSpeedModifiers(args.Wearer);
}
+
+ private void OnIgnoreStartup(Entity ent, ref ComponentStartup args)
+ {
+ _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent);
+ }
+
+ private void OnIgnoreShutdown(Entity ent, ref ComponentShutdown args)
+ {
+ _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent);
+ }
+
+ private void OnIgnoreModifySpeed(Entity ent, ref ModifySlowOnDamageSpeedEvent args)
+ {
+ args.Speed = 1f;
+ }
}
[ByRefEvent]
diff --git a/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs b/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs
index f478405bec5..25d0453b592 100644
--- a/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs
+++ b/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs
@@ -17,7 +17,7 @@ public sealed partial class RechargeBasicEntityAmmoComponent : Component
[DataField("rechargeSound")]
[AutoNetworkedField]
- public SoundSpecifier RechargeSound = new SoundPathSpecifier("/Audio/Magic/forcewall.ogg")
+ public SoundSpecifier? RechargeSound = new SoundPathSpecifier("/Audio/Magic/forcewall.ogg")
{
Params = AudioParams.Default.WithVolume(-5f)
};
@@ -27,4 +27,7 @@ public sealed partial class RechargeBasicEntityAmmoComponent : Component
AutoNetworkedField]
[AutoPausedField]
public TimeSpan? NextCharge;
+
+ [DataField, AutoNetworkedField]
+ public bool ShowExamineText = true;
}
diff --git a/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs b/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs
index 9d6d5524001..3316df0b965 100644
--- a/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs
+++ b/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs
@@ -66,6 +66,9 @@ private void OnInit(EntityUid uid, RechargeBasicEntityAmmoComponent component, M
private void OnExamined(EntityUid uid, RechargeBasicEntityAmmoComponent component, ExaminedEvent args)
{
+ if (!component.ShowExamineText)
+ return;
+
if (!TryComp(uid, out var ammo)
|| ammo.Count == ammo.Capacity ||
component.NextCharge == null)
diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl
index 319809da40a..37af416c3a1 100644
--- a/Resources/Locale/en-US/alerts/alerts.ftl
+++ b/Resources/Locale/en-US/alerts/alerts.ftl
@@ -96,6 +96,9 @@ alerts-bleed-desc = You're [color=red]bleeding[/color].
alerts-pacified-name = [color=green]Pacified[/color]
alerts-pacified-desc = You're pacified; you won't be able to harm living creatures.
+alerts-adrenaline-name = [color=red]Adrenaline[/color]
+alerts-adrenaline-desc = You're full of adrenaline: pain won't slow you down.
+
alerts-suit-power-name = Suit Power
alerts-suit-power-desc = How much power your space ninja suit has.
diff --git a/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl b/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl
index 9a8f2f6c8a3..13d9ed5d6bf 100644
--- a/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl
+++ b/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl
@@ -13,3 +13,4 @@ reagent-effect-status-effect-RatvarianLanguage = ratvarian language patterns
reagent-effect-status-effect-StaminaModifier = modified stamina
reagent-effect-status-effect-RadiationProtection = radiation protection
reagent-effect-status-effect-Drowsiness = drowsiness
+reagent-effect-status-effect-Adrenaline = adrenaline
diff --git a/Resources/Locale/en-US/reagents/meta/chemicals.ftl b/Resources/Locale/en-US/reagents/meta/chemicals.ftl
index 1d70ff65ff1..ad9d12e26f8 100644
--- a/Resources/Locale/en-US/reagents/meta/chemicals.ftl
+++ b/Resources/Locale/en-US/reagents/meta/chemicals.ftl
@@ -28,3 +28,5 @@ reagent-desc-sodium-polyacrylate = A super-absorbent polymer with assorted indus
reagent-name-cellulose = cellulose fibers
reagent-desc-cellulose = A crystaline polydextrose polymer, plants swear by this stuff.
+reagent-name-rororium = rororium
+reagent-desc-rororium = A strange substance which fills the cores of the hivelords that roam the mining asteroid. Thought to be the source of their regenerative powers.
diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml
index 4ee4fdce0cb..80fcc44a559 100644
--- a/Resources/Prototypes/Alerts/alerts.yml
+++ b/Resources/Prototypes/Alerts/alerts.yml
@@ -427,6 +427,14 @@
name: alerts-pacified-name
description: alerts-pacified-desc
+- type: alert
+ id: Adrenaline
+ icons:
+ - sprite: Mobs/Species/Human/organs.rsi
+ state: heart-on
+ name: alerts-adrenaline-name
+ description: alerts-adrenaline-desc
+
- type: alert
id: Debug1
icons:
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
index d16499aa767..7e147ba7110 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
@@ -476,3 +476,21 @@
amount: !type:ConstantNumberSelector
value: 3
+- type: entity
+ parent: MarkerBase
+ id: SalvageSpawnerMobMiningAsteroid
+ name: Mining Asteroid Mob Spawner
+ components:
+ - type: Sprite
+ layers:
+ - state: green
+ - sprite: Mobs/Aliens/Asteroid/goliath.rsi
+ state: goliath
+ - type: EntityTableSpawner
+ table: !type:GroupSelector
+ children:
+ - id: MobGoliath
+ weight: 65
+ - id: MobHivelord
+ weight: 35
+
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
index 8cbd40b5cc7..877dd40cc38 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
@@ -26,6 +26,7 @@
- TemporaryBlindness
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: StandingState
- type: Tag
tags:
@@ -180,3 +181,156 @@
state: goliath_tentacle_retract
- type: EffectVisuals
- type: AnimationPlayer
+
+- type: entity
+ id: MobHivelord
+ parent: [ BaseMobAsteroid, FlyingMobBase ]
+ name: hivelord
+ description: A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original.
+ components:
+ - type: Sprite
+ sprite: Mobs/Aliens/Asteroid/hivelord.rsi
+ layers:
+ - map: ["enum.DamageStateVisualLayers.Base"]
+ state: hivelord
+ - type: DamageStateVisuals
+ states:
+ Alive:
+ Base: hivelord
+ Dead:
+ Base: hivelord_dead
+ - type: MovementSpeedModifier
+ baseWalkSpeed : 3.5
+ baseSprintSpeed : 4.0
+ - type: MobThresholds
+ thresholds:
+ 0: Alive
+ 75: Dead
+ - type: MeleeWeapon
+ damage:
+ types:
+ Blunt: 0
+ - type: Gun
+ fireRate: 0.66
+ selectedMode: SemiAuto
+ showExamineText: false
+ availableModes:
+ - SemiAuto
+ soundGunshot: null
+ - type: RechargeBasicEntityAmmo
+ showExamineText: false
+ rechargeCooldown: 0
+ rechargeSound: null
+ - type: BasicEntityAmmoProvider
+ proto: MobHivelordBrood
+ capacity: 1
+ count: 1
+ - type: NpcFactionMember
+ factions:
+ - SimpleHostile
+ - type: HTN
+ rootTask:
+ task: SimpleRangedHostileCompound
+ blackboard:
+ VisionRadius: !type:Single
+ 4
+ AggroVisionRadius: !type:Single
+ 9
+ - type: Butcherable
+ spawned:
+ - id: FoodHivelordRemains
+
+- type: entity
+ id: MobHivelordBrood
+ parent: [ BaseMobAsteroid, FlyingMobBase ]
+ name: hivelord brood
+ description: A fragment of the original hivelord, rallying behind its original. One isn't much of a threat, but...
+ components:
+ - type: Sprite
+ sprite: Mobs/Aliens/Asteroid/hivelord.rsi
+ layers:
+ - state: hivelordbrood
+ - type: MovementSpeedModifier
+ baseWalkSpeed : 3.5
+ baseSprintSpeed : 4.0
+ - type: MobThresholds
+ thresholds:
+ 0: Alive
+ 5: Dead
+ - type: MeleeWeapon
+ soundHit:
+ path: /Audio/Weapons/bladeslice.ogg
+ angle: 0
+ attackRate: 1.0
+ range: 0.75
+ animation: WeaponArcPunch
+ damage:
+ types:
+ Slash: 7
+ - type: Ammo
+ muzzleFlash: null
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: NpcFactionMember
+ factions:
+ - SimpleHostile
+ - type: HTN
+ rootTask:
+ task: SimpleHostileCompound
+ blackboard: # highly aggressive
+ VisionRadius: !type:Single
+ 15
+ AggroVisionRadius: !type:Single
+ 15
+ - type: TimedDespawn
+ lifetime: 100
+
+- type: entity
+ id: FoodHivelordRemains
+ parent: FoodBase
+ name: hivelord remains
+ description: All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ maxVol: 5
+ reagents:
+ - ReagentId: Rororium
+ Quantity: 5
+ - type: Sprite
+ sprite: Objects/Consumable/Food/rorocore.rsi
+ state: boiled
+ - type: Item
+ size: Normal
+ - type: Perishable
+ rotAfter: 120 # rot after 2 minutes
+ molsPerSecondPerUnitMass: 0
+ forceRotProgression: true
+ - type: RotInto
+ entity: FoodHivelordRemainsInert
+ stage: 1
+ - type: StaticPrice
+ price: 5000
+
+- type: entity
+ id: FoodHivelordRemainsInert
+ parent: BaseItem
+ name: inert hivelord remains
+ description: All that remains of a hivelord... Now all is truly lost.
+ components:
+ - type: Sprite
+ sprite: Objects/Consumable/Food/rorocore.rsi
+ state: boiled
+ color: "#664444"
+ - type: SpaceGarbage
+ - type: Item
+ size: Normal
+ - type: StaticPrice
+ price: 500
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
index 8deefe9b8ec..f400680eb01 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
@@ -29,6 +29,7 @@
- Flashed
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Buckle
- type: StandingState
- type: Tag
@@ -106,6 +107,7 @@
- Flashed
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Bloodstream
bloodMaxVolume: 150
- type: MobPrice
diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
index fe2416510e8..16e3038fcd2 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
@@ -106,6 +106,7 @@
- Pacified
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Temperature
heatDamageThreshold: 800
- type: Metabolizer
diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml
index cbe09c29ad9..2349eddd3a4 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/base.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml
@@ -135,6 +135,7 @@
- Flashed
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Body
prototype: Human
requiredLegs: 2
diff --git a/Resources/Prototypes/Procedural/vgroid.yml b/Resources/Prototypes/Procedural/vgroid.yml
index 05ab652ece9..0747a58b30d 100644
--- a/Resources/Prototypes/Procedural/vgroid.yml
+++ b/Resources/Prototypes/Procedural/vgroid.yml
@@ -180,7 +180,7 @@
minCount: 8
maxCount: 15
groups:
- - id: MobGoliath
+ - id: SalvageSpawnerMobMiningAsteroid
amount: 1
#- type: dungeonConfig
@@ -207,10 +207,10 @@
# Mobs
# If you want exterior dungeon mobs add them under the prototype.
- !type:MobsDunGen
- minCount: 20
- maxCount: 30
+ minCount: 25
+ maxCount: 35
groups:
- - id: MobGoliath
+ - id: SalvageSpawnerMobMiningAsteroid
amount: 1
#- type: dungeonConfig
diff --git a/Resources/Prototypes/Reagents/chemicals.yml b/Resources/Prototypes/Reagents/chemicals.yml
index b2b4850c8f6..769b7748f30 100644
--- a/Resources/Prototypes/Reagents/chemicals.yml
+++ b/Resources/Prototypes/Reagents/chemicals.yml
@@ -166,3 +166,23 @@
color: "#E6E6DA"
physicalDesc: reagent-physical-desc-crystalline
slippery: false
+
+- type: reagent
+ id: Rororium
+ name: reagent-name-rororium
+ desc: reagent-desc-rororium
+ group: Biological
+ flavor: tingly
+ physicalDesc: reagent-physical-desc-refreshing
+ color: "#bf1365"
+ metabolisms:
+ Medicine:
+ effects:
+ - !type:HealthChange
+ damage:
+ groups:
+ Brute: -4
+ - !type:GenericStatusEffect
+ key: Adrenaline
+ component: IgnoreSlowOnDamage
+ time: 120
diff --git a/Resources/Prototypes/status_effects.yml b/Resources/Prototypes/status_effects.yml
index 96379323fd1..49e5ccc5794 100644
--- a/Resources/Prototypes/status_effects.yml
+++ b/Resources/Prototypes/status_effects.yml
@@ -68,3 +68,7 @@
- type: statusEffect
id: Drowsiness #blurs your vision and makes you randomly fall asleep
+
+- type: statusEffect
+ id: Adrenaline
+ alert: Adrenaline
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d70265e64004c27edb41d9b67e706abf204c20
GIT binary patch
literal 928
zcmV;R17G}!P)X?OojQ++zmV@i1#$$tEt5i^f=rB63`1Sy{#94m1*V?NQJG>c?w(^
z2eg1I0ZxQ6pbDfrL1h)`R|_JVUsspSkX_c=;v}FK$Yz(mB%Pi_ti_n(@XXD
z#>-=pRpD8Pl)`*@OX3umx_J_G`?d3P0%q|Cnvj>bsurdRz~D)#uv
z3!^U}RdzJ2vhDF&q0t*eP+bS080(6TzJMpXR~J8#2NBpp0H?r+et%R3FTGi9I1B&*
zzx4*l(#KI!74~d#Z%uG4N$>vPwK0mzAD9SfL}lZH-3B{Jh!ti*0#M(}G*mU&r<}Ge
zE;UMRbTUDo(MPNL$0$P5h`_1YB6Xd#u{t^rBn}1ILx}ye_exy-adbe`WO+N$x(wri
zgw)g1?+G`tOFX+RX6cl_yL$$m(E9b(xD_(Q1Fb#x^9!#)q%kpq1kZxJ(TfN2xZ;vn
zb()Mowk7dMsv77Hij4stNm-at6Bu^^qF~1$dW?7`p7np~yIFZu&MxcTD)RgyH?k5v
z`PBB_SThDhCbCM*Ku@L{JAPhvQ)E#yIOX!+<6-5z*hq29=$0hSsH7zy=
zV=(0Hw$tb5KYw2v0=O#!;7-UbudqL4Ch#
z+JCG^|FRp~iT$}huSCG{A1>&e6i;8vy`r6d*)_#`++PfZP&;jtDJioi7cmz~$s+xX0AE
zgZa6yd$~{aT;_)o!0Cv002v7}*t`zgcOP_80yx9e8%B4&uETa~=MObZforagTNTpI
zhr2$WUy5ZgG}OEERDvwk0JM(+0JR1Y+gHvCz-d2M(5bh=^+xSNxP}1rQ3BeAgpc<4agb=o&O_m4fLUK(Q4gFhv%2+k^2Gw
zw8}+I3iF==;77~^0IZJCIHmS+H>%A7@$QzQZtG4yYwMP9l_4kdS2%y-~?$>9Sp_
z9ln}whttokFenH%Crb(d-U-C*Y~5BFLTbP33lb$Kkg9iR!21Dy6l^-qNnj=W@^eJs
zDlqFc7_EjkL`H~{aAk>dl6?Rr>1+4l>2rN|xd4Dz*yvjj09U+y!vX-pjz~wp>ndO=
vyQI4a06RSZ+~#@!xXtwdaGUD^;5OGEE`KP%@bK+800000NkvXXu0mjfcE~*s
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert_nocore.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert_nocore.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc61d81d2be0b1729d3e72db1793175213d1fbd3
GIT binary patch
literal 675
zcmV;U0$lxxP)k?0&{{)IN|m
z*!qq2>_@w~oxDHy&l?_ae)(*G>jktiJ5l|M|1VFB!7hLpbZs_!RBnp_fa?Y5buSsb
z9u(69A_TjRT;kcq(XhwT
zXn~PKPy)z1g7kzOtgVy)ayLZ}-cKD%AVQdBS2&fP`gr|PY=fyG@4-_6vX%qTeG~v_
zHHbLAa&`bt`=x|VeH3mta(yOAoLcRmlqW-?Y*1qi1p%#cd|*_BG=>lmEOqtmpudz#
znw=pb*ufNJgHojs(l)fg5&_}q(G>s|2a-{BLfSsFAfgo&(K$1Uf>vM76#(c`)aco-
z%jsrF1Hq@j>UcFqS7-0?yPXDgvLp=r+X(z
zZGD_=k^6>Wx){(3beupa$si%yAo`$Ej?#6zR6BeDZikV%I|ad}vZMguS>BRDaD5=*
zp()=7SQj}t0gS3NOWJ~Zz^vC`v^rjhj1VW_%Di*(7;sAZ>^`kNw@;S~0LX>)z6Akr
z#S7L807wTSoqg9`z*2TWcM$+~dI5yZ^#TZ+>je-t*9#zQu0PhQ74Sb`RuljL002ov
JPDHLkV1n@@CKmtz
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e09b49b40a3c3b16d8223aaf96ae5f2c28fc32f
GIT binary patch
literal 293
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0tn|
z#WAE}&fBT6d`A>GS`0tB-TTim@1$>e@-(GG5wqXg8Tj|wpINSO_R9t)1qKNEC%C|5
z(JVP8i!=4yiVVA6G8VAA*iY!OXMMn3uDHXpznsmmYeW7m)9sHX89H{_ELEF#tx%SE
zMqoVS?2~I5weL?e3{w9kwL$RZ_4L_^=0_QRsp(JG{`6f#^Mc>&t4(J8jM|zGRSucG
zuYPL>E|it*JrU%axl=EJVSjC$x!mPxrNKuSSm*9-JO9H;e!`^eaH%WXZ+xyyc>cVZ
jp;uq~_2hDn?(a<7Cr0%ZrS6>u^df_&tDnm{r-UW|E2D1K
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead_nocore.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead_nocore.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f2a004190719a547da53ce37a0132ccda73b633
GIT binary patch
literal 274
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0sxv
z#WAE}&fBShd<_a5ZMl!#?*8YPyYksAZb5;|TiE}(JOA@{Y}ydP_kaO{>RE1_7wF3s
zbTFCE?Z_}GlSP7YBA?6WZU&1D;!Lw2*I0I3YRL>OK}|aQVyT
z6SS3mOI7xgTe~DWM4fU}|WY
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_nocore.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_nocore.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d38dbfe899cab6583acc76728ed90fdae3a5158
GIT binary patch
literal 882
zcmV-&1C9KNP)ljq0ndPOthV!0ZPsh>
z*kBCq{r1aIAmH=g`QPu6-)pTRGS?h
z{Dk}j-jw=heQ*&w@|VXemK%=VJ;PrcE>y&Mynf82=r{}8<4gtDTWbiYA
z%uF$}iRxiP5rEnhyB&>zBP1|8iFSs3pA#Rz%zQL>*(T$-kzop4|opO0v!ldAO%=wg3c_`TN5IlU3aI=
zm{oSw1tehR$aZgemP{lNyJAsRxPB_j$(8bF?d>+jtne;mQejx!QrHD{*?Z8~&knH>+OEPFmz7}N$Cbmsvi)|w(v
z7eKswck+|D5W!6Zu?wuI_he{sycaXeM~M$3<2Inh^S_`($>Ac
z&`Px5M{q&Hs_8}N1glECyDS#TwBOy4Mo)P4`l#Ir5#qpApZoI#+96YzSV00ZA>Ww!
z1G`;wN~}9fW?<`5xFppLb_M0y5SOGP?8phMI{-nb2FNy!LsClS`~
zjC`&0>vPfsI#O=u<5X=vX$A%+
zeNPw1kcv5P=iKINR^V~ieZ>CO|N5r;TUvEgcy>;UdiiwE8^`T8lQlVBF&-;qOpp<0
zKu~YbzCZu|b4_EA7E{s##=QsGxtK0JSlV#@ijRZbo++E<`!|<;dR1tWbwJbL>*Zv>
z)GNkMcDxI@7bvILR#$w^DB+EF(TUk^KmOS7Y*j1JTJvjVM?L2;HmB=6_Uokmul}v;
zJH#{NHCO+{xh9JZn6suFXX0Yrvg^|`2M^)LzL6^%3S$@~jN{xADoowI$j8RCs^2QcLK-VAVPS$-f-t)bqu%Bf+S>ty-Kk_QwU%X1nt
zm{zi!Ds4&M)V+Z1M4ZpfH5{LsMJ8Nl+8McF24lI1Yuro^#&U6;eIFSdc{?H%HcJXz
zZ8*`@aw-3weyJhzBgSXR%_sgzIz}*Or5of)H`ediYoHot716~|_5IJqO%|$QyVkb7
z(&^eIqvtt+G0r`%-@KFT+-Q
z+k5v}rT_dX-s4{o%sZiY=N*BDxgRGMK2v5kO?Y-7l~w+Qja_{7XKCM$#lIijJlPO(
zh{u}6?ppKR8{9U$ul_PhWnMRY%JeI8L5#zKzflYanKJHGC`UN(50M9)z4*}
HQ$iB}Ce97i
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json
new file mode 100644
index 00000000000..b11726cf73b
--- /dev/null
+++ b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json
@@ -0,0 +1,74 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/9bd459b27c73575fd5e3bf2efea13b816d0ac7c8/icons/mob/animal.dmi",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "hivelord",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_nocore",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_alert",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_alert_nocore",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_dead"
+ },
+ {
+ "name": "hivelord_dead_nocore"
+ },
+ {
+ "name": "hivelordbrood",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/boiled.png b/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/boiled.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a1d0c92dc187279c1c577eabde66e18fa7b51d2
GIT binary patch
literal 295
zcmV+?0oeYDP)Px#;Ymb6R9J=Wle=mHK@^6+CCP*(hA2z0FbGbS)Px$1xZ9fR9J=Wle+;M$yQk`nZtKEm5=IlK&4Z9AOL#n+psE=U
zjU1=4$n>j8IRKVS1!)kHOfy!NE#mi#_00_cuFE0!YVvad=G_C7O7W6Elgy^vjQVW3
z9-g&I+>VStqR|tiK}a|pU^_OqYD}&R@?y++dI`;6+5+3L0myYh+>U^+8P72ie#hPm
df*=Tgjt`G$aP*MDxu5_5002ovPDHLkV1nF5md^kH
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json
new file mode 100644
index 00000000000..84b5983a1ca
--- /dev/null
+++ b/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json
@@ -0,0 +1,17 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "boiled"
+ }
+ ]
+}
From 6fe649c6699f7f1e532c81d8245cc885c93eb990 Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 13:53:34 +0000
Subject: [PATCH 06/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index ab137d06b0c..5283147da76 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: metalgearsloth
- changes:
- - message: Add effects for when shuttles are arriving.
- type: Add
- id: 6852
- time: '2024-07-01T06:11:30.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29402
- author: Plykiya
changes:
- message: Gravity wells, like the supermatter grenade, now function properly again.
@@ -3911,3 +3904,11 @@
id: 7351
time: '2024-09-11T12:53:51.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/31965
+- author: EmoGarbage404
+ changes:
+ - message: Added the hivelord! This self-replicating alien is found on the mining
+ asteroid. It's core is known to have powerful healing properties.
+ type: Add
+ id: 7352
+ time: '2024-09-11T13:52:27.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/31322
From 5290e64361e51a15000c63403d1d3f9802f222c3 Mon Sep 17 00:00:00 2001
From: Ed <96445749+TheShuEd@users.noreply.github.com>
Date: Wed, 11 Sep 2024 16:59:39 +0300
Subject: [PATCH 07/31] TechAnomaly fixes (#32067)
Update TechAnomalySystem.cs
---
Content.Server/Anomaly/Effects/TechAnomalySystem.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Content.Server/Anomaly/Effects/TechAnomalySystem.cs b/Content.Server/Anomaly/Effects/TechAnomalySystem.cs
index 63174930df2..1b2849f1d77 100644
--- a/Content.Server/Anomaly/Effects/TechAnomalySystem.cs
+++ b/Content.Server/Anomaly/Effects/TechAnomalySystem.cs
@@ -35,9 +35,9 @@ public override void Update(float frameTime)
while (query.MoveNext(out var uid, out var tech, out var anom))
{
if (_timing.CurTime < tech.NextTimer)
- return;
+ continue;
- tech.NextTimer = _timing.CurTime + TimeSpan.FromSeconds(tech.TimerFrequency * anom.Stability);
+ tech.NextTimer += TimeSpan.FromSeconds(tech.TimerFrequency * anom.Stability);
_signal.InvokePort(uid, tech.TimerPort);
}
@@ -61,7 +61,7 @@ private void CreateNewRandomLink(Entity tech, int count)
var devices = _lookup.GetEntitiesInRange(Transform(tech).Coordinates, range);
if (devices.Count < 1)
return;
-
+
for (var i = 0; i < count; i++)
{
var device = _random.Pick(devices);
From 8fb78573ecc9cd31447b61beab0b2e7ab5afb572 Mon Sep 17 00:00:00 2001
From: PECK <74548962+PeccNeck@users.noreply.github.com>
Date: Wed, 11 Sep 2024 10:06:08 -0400
Subject: [PATCH 08/31] Ore Processors can now produce Reinforced Glass
(#32069)
fix reinforced glass in ore processors
---
Resources/Prototypes/Recipes/Lathes/sheet.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Resources/Prototypes/Recipes/Lathes/sheet.yml b/Resources/Prototypes/Recipes/Lathes/sheet.yml
index 52ea14ece5f..5772aa032fb 100644
--- a/Resources/Prototypes/Recipes/Lathes/sheet.yml
+++ b/Resources/Prototypes/Recipes/Lathes/sheet.yml
@@ -33,8 +33,8 @@
result: SheetRGlass1
completetime: 0
materials:
- Glass: 100
- Steel: 50
+ RawQuartz: 100
+ RawIron: 50
Coal: 15
- type: latheRecipe
From 20c4aebc82f7cb3ae7b37a5fec289462bc5739ae Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 14:07:14 +0000
Subject: [PATCH 09/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 5283147da76..0419cb4d96f 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: Plykiya
- changes:
- - message: Gravity wells, like the supermatter grenade, now function properly again.
- type: Fix
- id: 6853
- time: '2024-07-01T15:39:05.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29617
- author: joelsgp
changes:
- message: Fixed login tips
@@ -3912,3 +3905,10 @@
id: 7352
time: '2024-09-11T13:52:27.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/31322
+- author: PeccNeck
+ changes:
+ - message: Fixed a bug where ore processors could not produce reinforced glass
+ type: Fix
+ id: 7353
+ time: '2024-09-11T14:06:08.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/32069
From 38a0ca71f74f432f9db93b9212b7bc2dd41e4592 Mon Sep 17 00:00:00 2001
From: Plykiya <58439124+Plykiya@users.noreply.github.com>
Date: Wed, 11 Sep 2024 07:45:00 -0700
Subject: [PATCH 10/31] Fixes swords not being able to be used to make bats
(#32075)
Give BaseSword slicing quality
---
Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml
index 436530460e4..44e98538adc 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml
@@ -15,6 +15,9 @@
- type: Utensil
types:
- Knife
+ - type: Tool
+ qualities:
+ - Slicing
- type: entity
name: captain's sabre
From dba10a1c8039f2e0ef7e692e058d286eff40cdfa Mon Sep 17 00:00:00 2001
From: Plykiya <58439124+Plykiya@users.noreply.github.com>
Date: Wed, 11 Sep 2024 07:45:52 -0700
Subject: [PATCH 11/31] Reduce vertical margin on vending machine UI (#32074)
Smaller vending machine UI
---
Content.Client/VendingMachines/UI/VendingMachineItem.xaml | 2 +-
Content.Client/VendingMachines/UI/VendingMachineMenu.xaml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Content.Client/VendingMachines/UI/VendingMachineItem.xaml b/Content.Client/VendingMachines/UI/VendingMachineItem.xaml
index a665b72c73b..a61edfb79b9 100644
--- a/Content.Client/VendingMachines/UI/VendingMachineItem.xaml
+++ b/Content.Client/VendingMachines/UI/VendingMachineItem.xaml
@@ -4,7 +4,7 @@
SeparationOverride="4">
-
+
From 982be4e332bce0cee0b8a74051f7bba8daf79d6c Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 14:46:06 +0000
Subject: [PATCH 12/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 0419cb4d96f..b0328596a48 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: joelsgp
- changes:
- - message: Fixed login tips
- type: Fix
- id: 6854
- time: '2024-07-01T16:27:49.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29640
- author: Cojoke-dot
changes:
- message: Flares can now light Cigarettes and other similar things
@@ -3912,3 +3905,10 @@
id: 7353
time: '2024-09-11T14:06:08.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/32069
+- author: Plykiya
+ changes:
+ - message: You can now use swords to make baseball bats.
+ type: Fix
+ id: 7354
+ time: '2024-09-11T14:45:00.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/32075
From bb21244f9337b238331871cf1ba24283ebfc4f67 Mon Sep 17 00:00:00 2001
From: Plykiya <58439124+Plykiya@users.noreply.github.com>
Date: Wed, 11 Sep 2024 08:29:22 -0700
Subject: [PATCH 13/31] Banners are no longer indestructible (#32077)
* Banners are no longer indestructible
* uninflate
---
.../Entities/Structures/Decoration/banners.yml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Resources/Prototypes/Entities/Structures/Decoration/banners.yml b/Resources/Prototypes/Entities/Structures/Decoration/banners.yml
index c2567814ac1..12f112dfc56 100644
--- a/Resources/Prototypes/Entities/Structures/Decoration/banners.yml
+++ b/Resources/Prototypes/Entities/Structures/Decoration/banners.yml
@@ -26,6 +26,16 @@
- HighImpassable
- BulletImpassable
- type: InteractionOutline
+ - type: Damageable
+ damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
- type: entity
id: BannerNanotrasen
From 01713acf589370506f36812fe2adcd239d7a347b Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 15:30:30 +0000
Subject: [PATCH 14/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index b0328596a48..56957ea8a44 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,13 +1,4 @@
Entries:
-- author: Cojoke-dot
- changes:
- - message: Flares can now light Cigarettes and other similar things
- type: Tweak
- - message: Flares now are no longer hot after burning out
- type: Tweak
- id: 6855
- time: '2024-07-01T21:14:38.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29476
- author: Tayrtahn
changes:
- message: Fixed NukeOps ending prematurely in some situations where operatives
@@ -3912,3 +3903,10 @@
id: 7354
time: '2024-09-11T14:45:00.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/32075
+- author: Plykiya
+ changes:
+ - message: Banners are no longer invincible.
+ type: Fix
+ id: 7355
+ time: '2024-09-11T15:29:23.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/32077
From f2f76f711dcd52ab2a1ea86ca13440b8f49dd733 Mon Sep 17 00:00:00 2001
From: themias <89101928+themias@users.noreply.github.com>
Date: Wed, 11 Sep 2024 12:05:54 -0400
Subject: [PATCH 15/31] Fix cauterization spam from space damage (#32080)
---
Content.Server/Body/Components/BloodstreamComponent.cs | 7 +++++++
Content.Server/Body/Systems/BloodstreamSystem.cs | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/Content.Server/Body/Components/BloodstreamComponent.cs b/Content.Server/Body/Components/BloodstreamComponent.cs
index a6d2afab219..a6c8ad90df9 100644
--- a/Content.Server/Body/Components/BloodstreamComponent.cs
+++ b/Content.Server/Body/Components/BloodstreamComponent.cs
@@ -111,6 +111,13 @@ public sealed partial class BloodstreamComponent : Component
[DataField]
public SoundSpecifier BloodHealedSound = new SoundPathSpecifier("/Audio/Effects/lightburn.ogg");
+ ///
+ /// The minimum amount damage reduction needed to play the healing sound/popup.
+ /// This prevents tiny amounts of heat damage from spamming the sound, e.g. spacing.
+ ///
+ [DataField]
+ public float BloodHealedSoundThreshold = -0.1f;
+
// TODO probably damage bleed thresholds.
///
diff --git a/Content.Server/Body/Systems/BloodstreamSystem.cs b/Content.Server/Body/Systems/BloodstreamSystem.cs
index 3da343aaa8b..18790e7326b 100644
--- a/Content.Server/Body/Systems/BloodstreamSystem.cs
+++ b/Content.Server/Body/Systems/BloodstreamSystem.cs
@@ -241,7 +241,7 @@ private void OnDamageChanged(Entity ent, ref DamageChanged
}
// Heat damage will cauterize, causing the bleed rate to be reduced.
- else if (totalFloat < 0 && oldBleedAmount > 0)
+ else if (totalFloat <= ent.Comp.BloodHealedSoundThreshold && oldBleedAmount > 0)
{
// Magically, this damage has healed some bleeding, likely
// because it's burn damage that cauterized their wounds.
From 2d7aa825302096f335789c36c4c4cab2385e583a Mon Sep 17 00:00:00 2001
From: deltanedas <39013340+deltanedas@users.noreply.github.com>
Date: Wed, 11 Sep 2024 16:06:51 +0000
Subject: [PATCH 16/31] dont log missing ArtifactComponent for artifexium
(#32073)
Co-authored-by: deltanedas <@deltanedas:kde.org>
---
Content.Server/EntityEffects/Effects/ActivateArtifact.cs | 2 +-
.../Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/Content.Server/EntityEffects/Effects/ActivateArtifact.cs b/Content.Server/EntityEffects/Effects/ActivateArtifact.cs
index 3e973884995..8540478362f 100644
--- a/Content.Server/EntityEffects/Effects/ActivateArtifact.cs
+++ b/Content.Server/EntityEffects/Effects/ActivateArtifact.cs
@@ -10,7 +10,7 @@ public sealed partial class ActivateArtifact : EntityEffect
public override void Effect(EntityEffectBaseArgs args)
{
var artifact = args.EntityManager.EntitySysManager.GetEntitySystem();
- artifact.TryActivateArtifact(args.TargetEntity);
+ artifact.TryActivateArtifact(args.TargetEntity, logMissing: false);
}
protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) =>
diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs
index a5469e93dc0..6ddcd56abd8 100644
--- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs
+++ b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs
@@ -140,10 +140,11 @@ public void RandomizeArtifact(EntityUid uid, ArtifactComponent component)
///
///
///
+ /// Set this to false if you don't know if the entity is an artifact.
///
- public bool TryActivateArtifact(EntityUid uid, EntityUid? user = null, ArtifactComponent? component = null)
+ public bool TryActivateArtifact(EntityUid uid, EntityUid? user = null, ArtifactComponent? component = null, bool logMissing = true)
{
- if (!Resolve(uid, ref component))
+ if (!Resolve(uid, ref component, logMissing))
return false;
// check if artifact is under suppression field
From d156e69eea9631c4ef4d81468b1f30a1649ef9cb Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 16:07:00 +0000
Subject: [PATCH 17/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 56957ea8a44..8a2d86b9b47 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,12 +1,4 @@
Entries:
-- author: Tayrtahn
- changes:
- - message: Fixed NukeOps ending prematurely in some situations where operatives
- were still alive.
- type: Fix
- id: 6856
- time: '2024-07-01T22:23:36.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29642
- author: Tayrtahn
changes:
- message: Fixed characters thrashing when speaking in beds.
@@ -3910,3 +3902,11 @@
id: 7355
time: '2024-09-11T15:29:23.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/32077
+- author: themias
+ changes:
+ - message: Very small amounts of heat damage no longer play the cauterization sound
+ (e.g. spacing)
+ type: Fix
+ id: 7356
+ time: '2024-09-11T16:05:54.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/32080
From 125258ea4803c882b5f59895e2d9ac2e8b1dfd5a Mon Sep 17 00:00:00 2001
From: deltanedas <39013340+deltanedas@users.noreply.github.com>
Date: Wed, 11 Sep 2024 16:24:16 +0000
Subject: [PATCH 18/31] add material composition to some salv treasure (#31970)
* add material composition to some salv treasure
* fake
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
---
.../Entities/Objects/Misc/treasure.yml | 26 ++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/Resources/Prototypes/Entities/Objects/Misc/treasure.yml b/Resources/Prototypes/Entities/Objects/Misc/treasure.yml
index 20e72f8a115..dfe33ab1112 100644
--- a/Resources/Prototypes/Entities/Objects/Misc/treasure.yml
+++ b/Resources/Prototypes/Entities/Objects/Misc/treasure.yml
@@ -83,6 +83,11 @@
- state: cpu_super
- type: Item
size: Tiny
+ - type: PhysicalComposition
+ materialComposition: # big mats if you don't sell it
+ Steel: 500
+ Glass: 1000
+ Silver: 300
- type: StaticPrice
price: 750
@@ -150,6 +155,9 @@
state: coin_iron
- type: Item
size: Tiny
+ - type: PhysicalComposition
+ materialComposition:
+ Steel: 300
- type: StaticPrice
price: 75
@@ -159,8 +167,12 @@
components:
- type: Sprite
state: coin_silver
+ - type: PhysicalComposition
+ materialComposition:
+ Steel: 100 # coins are fake on the inside
+ Silver: 200
- type: StaticPrice
- price: 125
+ price: 135
- type: entity
parent: TreasureCoinIron
@@ -168,6 +180,10 @@
components:
- type: Sprite
state: coin_gold
+ - type: PhysicalComposition
+ materialComposition:
+ Steel: 100
+ Gold: 200
- type: StaticPrice
price: 175
@@ -177,6 +193,10 @@
components:
- type: Sprite
state: coin_adamantine
+ - type: PhysicalComposition
+ materialComposition:
+ Steel: 400
+ Diamond: 5
- type: StaticPrice
price: 250
@@ -186,6 +206,10 @@
components:
- type: Sprite
state: coin_diamond
+ - type: PhysicalComposition
+ materialComposition:
+ Steel: 300
+ Diamond: 15
- type: StaticPrice
price: 500
From 5d1627d46bc29f8021342a54be8466f0dc602c52 Mon Sep 17 00:00:00 2001
From: PJBot
Date: Wed, 11 Sep 2024 16:25:21 +0000
Subject: [PATCH 19/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 8a2d86b9b47..c2bd0c01dca 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: Tayrtahn
- changes:
- - message: Fixed characters thrashing when speaking in beds.
- type: Fix
- id: 6857
- time: '2024-07-02T03:30:53.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29653
- author: slarticodefast
changes:
- message: Fixed sprite rotation in harm mode on rotated grids.
@@ -3910,3 +3903,10 @@
id: 7356
time: '2024-09-11T16:05:54.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/32080
+- author: deltanedas
+ changes:
+ - message: Coins and Supercharged CPUs can now be recycled for rarer materials.
+ type: Tweak
+ id: 7357
+ time: '2024-09-11T16:24:16.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/31970
From 0df531970b80f073590efb5bc9b5fe79cacbe77e Mon Sep 17 00:00:00 2001
From: Myra
Date: Thu, 12 Sep 2024 00:15:06 +0200
Subject: [PATCH 20/31] Make the pr link more visible in the changelog bot
(#32047)
---
Tools/actions_changelogs_since_last_run.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py
index 0cb27ae7410..89eca69b33a 100755
--- a/Tools/actions_changelogs_since_last_run.py
+++ b/Tools/actions_changelogs_since_last_run.py
@@ -146,7 +146,7 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None:
message = change['message']
url = entry.get("url")
if url and url.strip():
- group_content.write(f"{emoji} [-]({url}) {message}\n")
+ group_content.write(f"{emoji} - {message} [PR]({url}) \n")
else:
group_content.write(f"{emoji} - {message}\n")
From 5b88b0b0badbc54c26c6d59b8c64edacfdd3ceed Mon Sep 17 00:00:00 2001
From: lzk <124214523+lzk228@users.noreply.github.com>
Date: Thu, 12 Sep 2024 02:52:19 +0200
Subject: [PATCH 21/31] Change forensic pad to use label isntead of name
changing (#31842)
change name change to label
---
.../Forensics/Systems/ForensicPadSystem.cs | 14 +++++++-------
Resources/Locale/en-US/forensics/forensics.ftl | 3 ---
2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/Content.Server/Forensics/Systems/ForensicPadSystem.cs b/Content.Server/Forensics/Systems/ForensicPadSystem.cs
index 42512cb1fdc..a3f5627cdba 100644
--- a/Content.Server/Forensics/Systems/ForensicPadSystem.cs
+++ b/Content.Server/Forensics/Systems/ForensicPadSystem.cs
@@ -1,10 +1,11 @@
-using Content.Shared.Examine;
-using Content.Shared.Interaction;
-using Content.Shared.Inventory;
+using Content.Server.Labels;
using Content.Server.Popups;
using Content.Shared.DoAfter;
+using Content.Shared.Examine;
using Content.Shared.Forensics;
using Content.Shared.IdentityManagement;
+using Content.Shared.Interaction;
+using Content.Shared.Inventory;
namespace Content.Server.Forensics
{
@@ -17,6 +18,7 @@ public sealed class ForensicPadSystem : EntitySystem
[Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
+ [Dependency] private readonly LabelSystem _label = default!;
public override void Initialize()
{
@@ -99,10 +101,8 @@ private void OnDoAfter(EntityUid uid, ForensicPadComponent padComponent, Forensi
if (args.Args.Target != null)
{
- var name = HasComp(args.Args.Target)
- ? "forensic-pad-fingerprint-name"
- : "forensic-pad-gloves-name";
- _metaData.SetEntityName(uid, Loc.GetString(name, ("entity", args.Args.Target)));
+ string label = Identity.Name(args.Args.Target.Value, EntityManager);
+ _label.Label(uid, label);
}
padComponent.Sample = args.Sample;
diff --git a/Resources/Locale/en-US/forensics/forensics.ftl b/Resources/Locale/en-US/forensics/forensics.ftl
index 712e8511bb0..80eea069fa9 100644
--- a/Resources/Locale/en-US/forensics/forensics.ftl
+++ b/Resources/Locale/en-US/forensics/forensics.ftl
@@ -20,9 +20,6 @@ forensic-scanner-printer-not-ready = Printer is not ready yet.
forensic-scanner-verb-text = Scan
forensic-scanner-verb-message = Perform a forensic scan
-forensic-pad-fingerprint-name = {$entity}'s fingerprints
-forensic-pad-gloves-name = fibers from {$entity}
-
forensics-dna-unknown = unknown DNA
forensics-verb-text = Remove evidence
From 970275727f30c79d35f036f1c86843b18fb72809 Mon Sep 17 00:00:00 2001
From: PJBot
Date: Thu, 12 Sep 2024 00:53:25 +0000
Subject: [PATCH 22/31] Automatic changelog update
---
Resources/Changelog/Changelog.yml | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index c2bd0c01dca..925a7da9599 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: slarticodefast
- changes:
- - message: Fixed sprite rotation in harm mode on rotated grids.
- type: Fix
- id: 6858
- time: '2024-07-02T13:04:15.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/29663
- author: lzk228
changes:
- message: Space Law book added to the game.
@@ -3910,3 +3903,13 @@
id: 7357
time: '2024-09-11T16:24:16.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/31970
+- author: lzk228
+ changes:
+ - message: Fixed forensic pad didn't care about target identity.
+ type: Fix
+ - message: Instead of name changing, forensic pad now will have a label with target's
+ name.
+ type: Tweak
+ id: 7358
+ time: '2024-09-12T00:52:19.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/31842
From e140b3f24085193036f2675d365c3699766ba290 Mon Sep 17 00:00:00 2001
From: Plykiya <58439124+Plykiya@users.noreply.github.com>
Date: Wed, 11 Sep 2024 19:07:38 -0700
Subject: [PATCH 23/31] fixes a ton of contraband issues (#32078)
* fixes a ton of contraband issues
* pen
* give the armor suit storage
* pulse carbines go brrr
---
.../Entities/Clothing/Hands/gloves.yml | 2 +-
.../Entities/Clothing/Head/helmets.yml | 18 ++++++------
.../Entities/Clothing/Masks/masks.yml | 29 +++++++++++++++++--
.../Entities/Clothing/OuterClothing/armor.yml | 8 ++---
.../Devices/Circuitboards/computer.yml | 4 +--
.../Prototypes/Entities/Objects/Misc/pen.yml | 2 +-
.../Weapons/Guns/Battery/battery_guns.yml | 4 +--
7 files changed, 45 insertions(+), 22 deletions(-)
diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml
index 2de84b45a23..16777cd6900 100644
--- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml
+++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml
@@ -255,7 +255,7 @@
- type: CriminalRecordsHacker
- type: entity
- parent: [ClothingHandsGlovesColorBlack, BaseSecurityCargoContraband]
+ parent: [ ClothingHandsGlovesColorBlack, BaseSecurityEngineeringContraband ]
id: ClothingHandsGlovesCombat
name: combat gloves
description: These tactical gloves are fireproof and shock resistant.
diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml
index ea6a4ea41cc..fafa66c8141 100644
--- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml
+++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml
@@ -2,7 +2,7 @@
#When it DOES exist, the values here should be totally reworked - probably just port them from SS13.
- type: entity
- parent: [ClothingHeadBase, BaseRestrictedContraband]
+ parent: ClothingHeadBase
id: ClothingHeadHelmetBase
abstract: true
components:
@@ -146,7 +146,7 @@
#Cult Helmet
- type: entity
- parent: ClothingHeadBase
+ parent: [ClothingHeadBase, BaseMajorContraband]
id: ClothingHeadHelmetCult
name: cult helmet
description: A robust, evil-looking cult helmet.
@@ -166,7 +166,7 @@
#Space Ninja Helmet
- type: entity
- parent: ClothingHeadEVAHelmetBase
+ parent: [ClothingHeadEVAHelmetBase, BaseMajorContraband]
id: ClothingHeadHelmetSpaceNinja
name: space ninja helmet
description: What may appear to be a simple black garment is in fact a highly sophisticated nano-weave helmet. Standard issue ninja gear.
@@ -258,7 +258,7 @@
#Atmos Fire Helmet
- type: entity
- parent: ClothingHeadLightBase
+ parent: [ClothingHeadLightBase, BaseEngineeringContraband]
id: ClothingHeadHelmetAtmosFire
name: atmos fire helmet
description: An atmos fire helmet, able to keep the user cool in any situation.
@@ -291,7 +291,7 @@
#Chitinous Helmet
- type: entity
- parent: ClothingHeadBase
+ parent: [ ClothingHeadBase, BaseMajorContraband]
id: ClothingHeadHelmetLing
name: chitinous helmet
description: An all-consuming chitinous mass of armor.
@@ -389,7 +389,7 @@
#Bone Helmet
- type: entity
- parent: ClothingHeadHelmetBase
+ parent: [ ClothingHeadHelmetBase, BaseMinorContraband ]
id: ClothingHeadHelmetBone
name: bone helmet
description: Cool-looking helmet made of skull of your enemies.
@@ -403,7 +403,7 @@
node: helmet
- type: entity
- parent: ClothingHeadHelmetBase
+ parent: [ ClothingHeadHelmetBase, BaseMinorContraband ]
id: ClothingHeadHelmetPodWars
name: ironclad II helmet
description: An ironclad II helmet, a relic of the pod wars.
@@ -415,7 +415,7 @@
#Justice Helmet
- type: entity
- parent: ClothingHeadHelmetBase
+ parent: [ ClothingHeadHelmetBase, BaseRestrictedContraband ]
id: ClothingHeadHelmetJustice
name: justice helm
description: Advanced security gear. Protects the station from ne'er-do-wells.
@@ -500,4 +500,4 @@
- type: InstantAction
useDelay: 1
itemIconStyle: BigItem
- event: !type:ToggleActionEvent
\ No newline at end of file
+ event: !type:ToggleActionEvent
diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml
index a8dcbf99cab..90af169572a 100644
--- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml
+++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml
@@ -359,7 +359,7 @@
accent: StutteringAccent
- type: entity
- parent: ClothingMaskGasExplorer
+ parent: [ ClothingMaskGas, BaseRestrictedContraband ]
id: ClothingMaskGasSwat
name: swat gas mask
description: A elite issue Security gas mask.
@@ -376,9 +376,16 @@
- Hair
- Snout
hideOnToggle: true
+ - type: Armor
+ modifiers:
+ coefficients:
+ Blunt: 0.90
+ Slash: 0.90
+ Piercing: 0.95
+ Heat: 0.95
- type: entity
- parent: ClothingMaskGasExplorer
+ parent: [ ClothingMaskGas, BaseRestrictedContraband ]
id: ClothingMaskGasMerc
name: mercenary gas mask
description: Slightly outdated, but reliable military-style gas mask.
@@ -387,9 +394,16 @@
sprite: Clothing/Mask/merc.rsi
- type: Clothing
sprite: Clothing/Mask/merc.rsi
+ - type: Armor
+ modifiers:
+ coefficients:
+ Blunt: 0.90
+ Slash: 0.90
+ Piercing: 0.95
+ Heat: 0.95
- type: entity
- parent: [ BaseCentcommContraband, ClothingMaskGasSyndicate ]
+ parent: [ ClothingMaskGas, BaseCentcommContraband ]
id: ClothingMaskGasERT
name: ert gas mask
description: The gas mask of the elite squad of the ERT.
@@ -406,6 +420,15 @@
- Hair
- Snout
hideOnToggle: true
+ - type: FlashImmunity
+ - type: EyeProtection
+ - type: Armor
+ modifiers:
+ coefficients:
+ Blunt: 0.95
+ Slash: 0.95
+ Piercing: 0.95
+ Heat: 0.95
- type: entity
parent: ClothingMaskGasERT
diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml
index 56da0c3718e..2412dd9d5c3 100644
--- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml
+++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml
@@ -172,7 +172,7 @@
autoRechargeRate: 2
- type: entity
- parent: [ ClothingOuterBaseLarge, BaseMinorContraband ]
+ parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
id: ClothingOuterArmorCult
name: acolyte armor
description: An evil-looking piece of cult armor, made of bones.
@@ -284,7 +284,7 @@
- type: GroupExamine
- type: entity
- parent: ClothingOuterBaseLarge
+ parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
id: ClothingOuterArmorChangeling
name: chitinous armor
description: Inflates the changeling's body into an all-consuming chitinous mass of armor.
@@ -312,7 +312,7 @@
slots: WITHOUT_POCKET
- type: entity
- parent: ClothingOuterBaseLarge
+ parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
id: ClothingOuterArmorBone
name: bone armor
description: Sits on you like a second skin.
@@ -340,7 +340,7 @@
slots: WITHOUT_POCKET
- type: entity
- parent: ClothingOuterBaseLarge
+ parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
id: ClothingOuterArmorPodWars
name: ironclad II armor
description: A repurposed suit of ironclad II armor, a relic of the pod wars.
diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml
index b7fbe365890..54616724fbe 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml
@@ -245,7 +245,7 @@
prototype: computerBodyScanner
- type: entity
- parent: BaseComputerCircuitboard
+ parent: [ BaseComputerCircuitboard, BaseGrandTheftContraband ]
id: CommsComputerCircuitboard
name: communications computer board
description: A computer printed circuit board for a communications console.
@@ -256,7 +256,7 @@
prototype: ComputerComms
- type: entity
- parent: BaseComputerCircuitboard
+ parent: [ BaseComputerCircuitboard, BaseSyndicateContraband ]
id: SyndicateCommsComputerCircuitboard
name: syndicate communications computer board
description: A computer printed circuit board for a syndicate communications console.
diff --git a/Resources/Prototypes/Entities/Objects/Misc/pen.yml b/Resources/Prototypes/Entities/Objects/Misc/pen.yml
index e5a96f26e3f..b0a466f8913 100644
--- a/Resources/Prototypes/Entities/Objects/Misc/pen.yml
+++ b/Resources/Prototypes/Entities/Objects/Misc/pen.yml
@@ -92,7 +92,7 @@
- type: entity
name: CentComm pen
- parent: [BaseAdvancedPen, BaseCommandContraband]
+ parent: [BaseAdvancedPen, BaseCentcommContraband]
id: PenCentcom
description: In an attempt to keep up with the "power" of the cybersun bureaucracy, NT made a replica of cyber pen, in their corporate style.
components:
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
index 4528a4eb699..7db085eb0a3 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
@@ -267,7 +267,7 @@
- type: entity
name: pulse carbine
- parent: [BaseWeaponBattery, BaseGunWieldable]
+ parent: [BaseWeaponBattery, BaseGunWieldable, BaseCentcommContraband]
id: WeaponPulseCarbine
description: A high tech energy carbine favoured by the NT-ERT operatives.
components:
@@ -763,4 +763,4 @@
- type: GunRequiresWield #remove when inaccuracy on spreads is fixed
- type: Battery
maxCharge: 800
- startingCharge: 800
\ No newline at end of file
+ startingCharge: 800
From 01cbaf7af602b8005231e629a0c02d35484fc893 Mon Sep 17 00:00:00 2001
From: deltanedas <39013340+deltanedas@users.noreply.github.com>
Date: Thu, 12 Sep 2024 03:13:48 +0000
Subject: [PATCH 24/31] clean up robotics lathe recipes (#31522)
* clean up robotics lathe recipes
* add result
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
---
.../Prototypes/Recipes/Lathes/robotics.yml | 457 +++++-------------
1 file changed, 130 insertions(+), 327 deletions(-)
diff --git a/Resources/Prototypes/Recipes/Lathes/robotics.yml b/Resources/Prototypes/Recipes/Lathes/robotics.yml
index 44a9e2f0f24..bf8deba9840 100644
--- a/Resources/Prototypes/Recipes/Lathes/robotics.yml
+++ b/Resources/Prototypes/Recipes/Lathes/robotics.yml
@@ -1,340 +1,260 @@
+# Base prototypes
+
- type: latheRecipe
- id: ProximitySensor
- result: ProximitySensor
+ abstract: true
+ id: BaseRoboticsRecipe
category: Robotics
completetime: 2
+
+- type: latheRecipe
+ abstract: true
+ parent: BaseRoboticsRecipe
+ id: BaseBorgLimbRecipe
+ materials:
+ Steel: 250
+ Glass: 100
+
+- type: latheRecipe
+ abstract: true
+ parent: BaseRoboticsRecipe
+ id: BaseBorgModuleRecipe
+ completetime: 3
+ materials:
+ Steel: 250
+ Glass: 250
+ Plastic: 250
+
+- type: latheRecipe
+ abstract: true
+ parent: BaseBorgModuleRecipe
+ id: BaseGoldBorgModuleRecipe
+ materials:
+ Steel: 500
+ Glass: 500
+ Plastic: 250
+ Gold: 50
+
+# Recipes
+
+- type: latheRecipe
+ parent: BaseRoboticsRecipe
+ id: ProximitySensor
+ result: ProximitySensor
materials:
Steel: 200
Glass: 300
- type: latheRecipe
+ parent: BaseRoboticsRecipe
id: SciFlash
result: SciFlash
- category: Robotics
- completetime: 2
materials:
Glass: 100
Plastic: 200
Steel: 100
- type: latheRecipe
+ parent: BaseRoboticsRecipe
id: CyborgEndoskeleton
result: CyborgEndoskeleton
- category: Robotics
completetime: 3
materials:
Steel: 1500
+# Generic
+
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftArmBorg
result: LeftArmBorg
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightArmBorg
result: RightArmBorg
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftLegBorg
result: LeftLegBorg
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightLegBorg
result: RightLegBorg
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LightHeadBorg
result: LightHeadBorg
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: TorsoBorg
result: TorsoBorg
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
+
+# Engineer
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftArmBorgEngineer
result: LeftArmBorgEngineer
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightArmBorgEngineer
result: RightArmBorgEngineer
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftLegBorgEngineer
result: LeftLegBorgEngineer
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightLegBorgEngineer
result: RightLegBorgEngineer
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: HeadBorgEngineer
result: HeadBorgEngineer
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: TorsoBorgEngineer
result: TorsoBorgEngineer
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
+
+# Medical
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftArmBorgMedical
result: LeftArmBorgMedical
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightArmBorgMedical
result: RightArmBorgMedical
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftLegBorgMedical
result: LeftLegBorgMedical
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightLegBorgMedical
result: RightLegBorgMedical
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: HeadBorgMedical
result: HeadBorgMedical
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: TorsoBorgMedical
result: TorsoBorgMedical
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
+
+# Mining
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftArmBorgMining
result: LeftArmBorgMining
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightArmBorgMining
result: RightArmBorgMining
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftLegBorgMining
result: LeftLegBorgMining
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightLegBorgMining
result: RightLegBorgMining
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: HeadBorgMining
result: HeadBorgMining
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: TorsoBorgMining
result: TorsoBorgMining
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
+
+# Service
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftArmBorgService
result: LeftArmBorgService
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightArmBorgService
result: RightArmBorgService
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftLegBorgService
result: LeftLegBorgService
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightLegBorgService
result: RightLegBorgService
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: HeadBorgService
result: HeadBorgService
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: TorsoBorgService
result: TorsoBorgService
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
+
+# Janitor
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: LeftLegBorgJanitor
result: LeftLegBorgJanitor
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: RightLegBorgJanitor
result: RightLegBorgJanitor
- category: Robotics
- completetime: 2
- materials:
- Steel: 250
- Glass: 100
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: HeadBorgJanitor
result: HeadBorgJanitor
- category: Robotics
- completetime: 4
materials:
Steel: 500
Glass: 200
- type: latheRecipe
+ parent: BaseBorgLimbRecipe
id: TorsoBorgJanitor
result: TorsoBorgJanitor
- category: Robotics
- completetime: 4
materials:
Steel: 500
Glass: 200
+# Parts
+
- type: latheRecipe
+ parent: BaseRoboticsRecipe
id: MMI
result: MMI
- category: Robotics
completetime: 3
icon:
sprite: Objects/Specific/Robotics/mmi.rsi
@@ -346,9 +266,9 @@
Gold: 200
- type: latheRecipe
+ parent: BaseRoboticsRecipe
id: PositronicBrain
result: PositronicBrain
- category: Robotics
completetime: 3
materials:
Steel: 500
@@ -357,258 +277,141 @@
Silver: 100
Plasma: 1000
+# Modules
+
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleCable
result: BorgModuleCable
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleFireExtinguisher
result: BorgModuleFireExtinguisher
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleGPS
result: BorgModuleGPS
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleRadiationDetection
result: BorgModuleRadiationDetection
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleTool
result: BorgModuleTool
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
+
+# Mining Modules
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleAppraisal
result: BorgModuleAppraisal
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleMining
result: BorgModuleMining
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseGoldBorgModuleRecipe
id: BorgModuleGrapplingGun
result: BorgModuleGrapplingGun
- category: Robotics
- completetime: 3
- materials:
- Steel: 500
- Glass: 500
- Plastic: 250
- Gold: 50
+
+# Engineering Modules
- type: latheRecipe
+ parent: BaseGoldBorgModuleRecipe
id: BorgModuleAdvancedTool
result: BorgModuleAdvancedTool
- category: Robotics
- completetime: 3
- materials:
- Steel: 500
- Glass: 500
- Plastic: 250
- Gold: 50
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleConstruction
result: BorgModuleConstruction
- category: Robotics
- completetime: 3
- materials:
- Steel: 500
- Glass: 500
- Plastic: 250
- type: latheRecipe
+ parent: BaseGoldBorgModuleRecipe
id: BorgModuleRCD
result: BorgModuleRCD
- category: Robotics
- completetime: 3
- materials:
- Steel: 500
- Glass: 500
- Plastic: 250
- Gold: 50
+
+# Janitor Modules
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleLightReplacer
result: BorgModuleLightReplacer
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleCleaning
result: BorgModuleCleaning
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseGoldBorgModuleRecipe
id: BorgModuleAdvancedCleaning
result: BorgModuleAdvancedCleaning
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- Gold: 50
+
+# Medical Modules
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleDiagnosis
result: BorgModuleDiagnosis
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleTreatment
result: BorgModuleTreatment
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseGoldBorgModuleRecipe
id: BorgModuleAdvancedTreatment
result: BorgModuleAdvancedTreatment
- category: Robotics
- completetime: 3
- materials:
- Steel: 500
- Glass: 500
- Plastic: 250
- Gold: 50
- type: latheRecipe
+ parent: BaseGoldBorgModuleRecipe
id: BorgModuleDefibrillator
result: BorgModuleDefibrillator
- category: Robotics
- completetime: 3
- materials:
- Steel: 500
- Glass: 500
- Plastic: 250
- Gold: 50
+
+# Science Modules
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleArtifact
result: BorgModuleArtifact
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleAnomaly
result: BorgModuleAnomaly
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
+
+# Service Modules
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleService
result: BorgModuleService
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleMusique
result: BorgModuleMusique
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleGardening
result: BorgModuleGardening
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleHarvesting
result: BorgModuleHarvesting
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
- type: latheRecipe
+ parent: BaseBorgModuleRecipe
id: BorgModuleClowning
result: BorgModuleClowning
- category: Robotics
- completetime: 3
- materials:
- Steel: 250
- Glass: 250
- Plastic: 250
From 782d6d780c76026505b649d8f4ff5cb137190ce4 Mon Sep 17 00:00:00 2001
From: deltanedas <39013340+deltanedas@users.noreply.github.com>
Date: Thu, 12 Sep 2024 03:20:57 +0000
Subject: [PATCH 25/31] clean up security lathe recipes (#31523)
* clean up security lathe recipes
* add result
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
---
.../Prototypes/Recipes/Lathes/security.yml | 271 ++++++++----------
1 file changed, 114 insertions(+), 157 deletions(-)
diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml
index a54d5b62356..29227fb9db9 100644
--- a/Resources/Prototypes/Recipes/Lathes/security.yml
+++ b/Resources/Prototypes/Recipes/Lathes/security.yml
@@ -1,3 +1,34 @@
+# Base prototypes
+
+- type: latheRecipe
+ abstract: true
+ id: BaseWeaponRecipe
+ category: Weapons
+ completetime: 2
+ materials:
+ Steel: 300
+ Plastic: 300
+
+- type: latheRecipe
+ abstract: true
+ parent: BaseWeaponRecipe
+ id: BaseWeaponRecipeLong
+ completetime: 5
+
+- type: latheRecipe
+ abstract: true
+ id: BaseAmmoRecipe
+ category: Ammo
+ completetime: 5
+
+- type: latheRecipe
+ abstract: true
+ parent: BaseAmmoRecipe
+ id: BaseEmptyAmmoRecipe
+ completetime: 1
+
+# Recipes
+
- type: latheRecipe
id: Handcuffs
result: Handcuffs
@@ -13,76 +44,62 @@
Plastic: 200
- type: latheRecipe
+ parent: BaseWeaponRecipe
id: Stunbaton
result: Stunbaton
- category: Weapons
- completetime: 2
- materials:
- Steel: 300
- Plastic: 300
- type: latheRecipe
+ parent: BaseWeaponRecipe
id: Truncheon
result: Truncheon
- category: Weapons
- completetime: 2
- materials:
- Steel: 300
- Plastic: 300
- type: latheRecipe
+ parent: BaseWeaponRecipe
id: CombatKnife
result: CombatKnife
- category: Weapons
- completetime: 2
materials:
Steel: 250
Plastic: 100
- type: latheRecipe
+ parent: BaseWeaponRecipeLong
id: WeaponLaserCarbine
result: WeaponLaserCarbine
- category: Weapons
- completetime: 8
materials:
Steel: 2000
Glass: 800
Plastic: 500
- type: latheRecipe
+ parent: BaseWeaponRecipeLong
id: WeaponAdvancedLaser
result: WeaponAdvancedLaser
- category: Weapons
- completetime: 5
materials:
Steel: 1500
Glass: 1000
Gold: 850
- type: latheRecipe
+ parent: BaseWeaponRecipeLong
id: WeaponLaserCannon
result: WeaponLaserCannon
- category: Weapons
- completetime: 5
materials:
Steel: 1250
Plastic: 750
Gold: 500
- type: latheRecipe
+ parent: BaseWeaponRecipeLong
id: WeaponLaserSvalinn
result: WeaponLaserSvalinn
- category: Weapons
- completetime: 5
materials:
Steel: 2000
Gold: 500
- type: latheRecipe
+ parent: BaseWeaponRecipeLong
id: WeaponXrayCannon
result: WeaponXrayCannon
- category: Weapons
- completetime: 5
materials:
Steel: 1500
Glass: 500
@@ -148,10 +165,9 @@
Steel: 100
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxShellTranquilizer
result: BoxShellTranquilizer
- category: Ammo
- completetime: 5
materials:
Plastic: 240
Steel: 160
@@ -168,414 +184,362 @@
Steel: 500
- type: latheRecipe
+ parent: TargetHuman
id: TargetClown
result: TargetClown
- completetime: 5
- applyMaterialDiscount: false # ingredients dropped when destroyed
- materials:
- Steel: 500
- type: latheRecipe
+ parent: TargetHuman
id: TargetSyndicate
result: TargetSyndicate
- completetime: 5
- applyMaterialDiscount: false # ingredients dropped when destroyed
- materials:
- Steel: 500
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: MagazinePistolEmpty
result: MagazinePistolEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 25
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazinePistol
result: MagazinePistol
- category: Ammo
- completetime: 5
materials:
Steel: 145
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazinePistolPractice
result: MagazinePistolPractice
- category: Ammo
- completetime: 5
materials:
Steel: 85
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazinePistolUranium
result: MagazinePistolUranium
- category: Ammo
- completetime: 5
materials:
Steel: 25
Plastic: 65
Uranium: 120
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazinePistolIncendiary
result: MagazinePistolIncendiary
- category: Ammo
- completetime: 5
materials:
Steel: 25
Plastic: 120
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: MagazinePistolSubMachineGunEmpty
result: MagazinePistolSubMachineGunEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 30
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazinePistolSubMachineGun
result: MagazinePistolSubMachineGun
- category: Ammo
- completetime: 5
materials:
Steel: 300
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: MagazinePistolSubMachineGunTopMountedEmpty
result: MagazinePistolSubMachineGunTopMountedEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 30
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazinePistolSubMachineGunTopMounted
result: MagazinePistolSubMachineGunTopMounted
- category: Ammo
- completetime: 5
materials:
Steel: 300
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxPistol
result: MagazineBoxPistol
- category: Ammo
- completetime: 5
materials:
Steel: 600
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxMagnum
result: MagazineBoxMagnum
- category: Ammo
- completetime: 5
materials:
Steel: 240
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: MagazineRifleEmpty
result: MagazineRifleEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 25
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineRifle
result: MagazineRifle
- category: Ammo
- completetime: 5
materials:
Steel: 475
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineRiflePractice
result: MagazineRiflePractice
- category: Ammo
- completetime: 5
materials:
Steel: 175
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineRifleUranium
result: MagazineRifleUranium
- category: Ammo
- completetime: 5
materials:
Steel: 25
Plastic: 300
Uranium: 300
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineRifleIncendiary
result: MagazineRifleIncendiary
- category: Ammo
- completetime: 5
materials:
Steel: 25
Plastic: 450
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: MagazineLightRifleEmpty
result: MagazineLightRifleEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 25
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineLightRifle
result: MagazineLightRifle
- category: Ammo
- completetime: 5
materials:
Steel: 565
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineLightRiflePractice
result: MagazineLightRiflePractice
- category: Ammo
- completetime: 5
materials:
Steel: 205
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineLightRifleUranium
result: MagazineLightRifleUranium
- category: Ammo
- completetime: 5
materials:
Steel: 25
Plastic: 360
Uranium: 360
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineLightRifleIncendiary
result: MagazineLightRifleIncendiary
- category: Ammo
- completetime: 5
materials:
Steel: 25
Plastic: 540
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxRifle
result: MagazineBoxRifle
- category: Ammo
- completetime: 5
materials:
Steel: 750
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxLightRifle
result: MagazineBoxLightRifle
- category: Ammo
- completetime: 5
materials:
Steel: 900
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxLethalshot
result: BoxLethalshot
- category: Ammo
- completetime: 5
materials:
Steel: 320
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxBeanbag
result: BoxBeanbag
- category: Ammo
- completetime: 5
materials:
Steel: 160
Plastic: 240
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxShotgunSlug
result: BoxShotgunSlug
- category: Ammo
- completetime: 5
materials:
Steel: 240
Plastic: 160
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: SpeedLoaderMagnumEmpty
result: SpeedLoaderMagnumEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 50
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: SpeedLoaderMagnum
result: SpeedLoaderMagnum
- category: Ammo
- completetime: 5
materials:
Steel: 190
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: SpeedLoaderMagnumPractice
result: SpeedLoaderMagnumPractice
- category: Ammo
- completetime: 5
materials:
Steel: 90
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: SpeedLoaderMagnumUranium
result: SpeedLoaderMagnumUranium
- category: Ammo
- completetime: 5
materials:
Steel: 50
Plastic: 150
Uranium: 110
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: SpeedLoaderMagnumIncendiary
result: SpeedLoaderMagnumIncendiary
- category: Ammo
- completetime: 5
materials:
Steel: 50
Plastic: 150
- type: latheRecipe
+ parent: BaseEmptyAmmoRecipe
id: MagazineShotgunEmpty
result: MagazineShotgunEmpty
- category: Ammo
- completetime: 5
materials:
Steel: 50
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineShotgun
result: MagazineShotgun
- category: Ammo
- completetime: 5
materials:
Steel: 240
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineShotgunBeanbag
result: MagazineShotgunBeanbag
- category: Ammo
- completetime: 5
materials:
Steel: 150
Plastic: 140
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineShotgunSlug
result: MagazineShotgunSlug
- category: Ammo
- completetime: 5
materials:
Steel: 190
Plastic: 100
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineShotgunIncendiary
result: MagazineShotgunIncendiary
- category: Ammo
- completetime: 5
materials:
Steel: 100
Plastic: 190
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxPistolIncendiary
result: MagazineBoxPistolIncendiary
- category: Ammo
- completetime: 5
materials:
Plastic: 600
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxMagnumIncendiary
result: MagazineBoxMagnumIncendiary
- category: Ammo
- completetime: 5
materials:
Plastic: 240
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxLightRifleIncendiary
result: MagazineBoxLightRifleIncendiary
- category: Ammo
- completetime: 5
materials:
Plastic: 900
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxRifleIncendiary
result: MagazineBoxRifleIncendiary
- category: Ammo
- completetime: 5
materials:
Plastic: 750
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxShotgunFlare
result: BoxShotgunFlare
- category: Ammo
- completetime: 5
materials:
Steel: 80
Plastic: 80
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxShotgunIncendiary
result: BoxShotgunIncendiary
- category: Ammo
- completetime: 5
materials:
Steel: 80
Plastic: 320
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxPistolPractice
result: MagazineBoxPistolPractice
- category: Ammo
- completetime: 5
materials:
Steel: 300
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxMagnumPractice
result: MagazineBoxMagnumPractice
- category: Ammo
- completetime: 5
materials:
Steel: 60
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxLightRiflePractice
result: MagazineBoxLightRiflePractice
- category: Ammo
- completetime: 5
materials:
Steel: 300
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxRiflePractice
result: MagazineBoxRiflePractice
- category: Ammo
- completetime: 5
materials:
Steel: 250
- type: latheRecipe
+ parent: BaseWeaponRecipe
id: WeaponLaserCarbinePractice
result: WeaponLaserCarbinePractice
- category: Weapons
completetime: 6
materials:
Steel: 1800
@@ -583,9 +547,9 @@
Plastic: 250
- type: latheRecipe
+ parent: BaseWeaponRecipe
id: WeaponDisablerPractice
result: WeaponDisablerPractice
- category: Weapons
completetime: 4
materials:
Steel: 500
@@ -593,62 +557,56 @@
Plastic: 200
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxShotgunPractice
result: BoxShotgunPractice
- category: Ammo
- completetime: 5
materials:
Steel: 80
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxPistolUranium
result: MagazineBoxPistolUranium
- category: Ammo
- completetime: 5
materials:
Plastic: 300
Uranium: 600
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxMagnumUranium
result: MagazineBoxMagnumUranium
- category: Ammo
- completetime: 5
materials:
Plastic: 240
Uranium: 180
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxLightRifleUranium
result: MagazineBoxLightRifleUranium
- category: Ammo
- completetime: 5
materials:
Plastic: 600
Uranium: 600
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: MagazineBoxRifleUranium
result: MagazineBoxRifleUranium
- category: Ammo
- completetime: 5
materials:
Plastic: 500
Uranium: 500
- type: latheRecipe
+ parent: BaseAmmoRecipe
id: BoxShotgunUranium
result: BoxShotgunUranium
- category: Ammo
- completetime: 5
materials:
Plastic: 320
Uranium: 240
- type: latheRecipe
+ parent: BaseWeaponRecipe
id: WeaponDisabler
result: WeaponDisabler
- category: Weapons
completetime: 6
materials:
Steel: 300
@@ -656,10 +614,9 @@
Plastic: 200
- type: latheRecipe
+ parent: WeaponDisabler
id: WeaponDisablerSMG
result: WeaponDisablerSMG
- category: Weapons
- completetime: 6
materials:
Steel: 1000
Glass: 500
@@ -670,43 +627,43 @@
result: MagazineGrenadeEmpty
completetime: 3
materials:
- Steel: 150
- Plastic: 50
+ Steel: 150
+ Plastic: 50
- type: latheRecipe
id: GrenadeEMP
result: GrenadeEMP
completetime: 3
materials:
- Steel: 150
- Plastic: 100
- Glass: 20
+ Steel: 150
+ Plastic: 100
+ Glass: 20
- type: latheRecipe
id: GrenadeBlast
result: GrenadeBlast
completetime: 3
materials:
- Steel: 450
- Plastic: 300
- Gold: 150
+ Steel: 450
+ Plastic: 300
+ Gold: 150
- type: latheRecipe
id: GrenadeFlash
result: GrenadeFlash
completetime: 3
materials:
- Steel: 150
- Plastic: 100
- Glass: 20
+ Steel: 150
+ Plastic: 100
+ Glass: 20
- type: latheRecipe
id: PortableRecharger
result: PortableRecharger
completetime: 15
materials:
- Steel: 2000
- Uranium: 2000
- Plastic: 1000
- Plasma: 500
- Glass: 500
+ Steel: 2000
+ Uranium: 2000
+ Plastic: 1000
+ Plasma: 500
+ Glass: 500
From 292de9c859f932456f9257ebcecaa1be53c572d3 Mon Sep 17 00:00:00 2001
From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Date: Thu, 12 Sep 2024 13:29:11 +1000
Subject: [PATCH 26/31] Make context menu uses spritetree (#31792)
Rather than doing goofy hacks we just use what sprites are near the mouse.
---
Content.Client/Verbs/VerbSystem.cs | 48 ++++++++++---------
.../Prototypes/Entities/Effects/puddle.yml | 5 --
.../Wallmounts/surveillance_camera.yml | 5 --
3 files changed, 26 insertions(+), 32 deletions(-)
diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs
index 6d8b3a2243b..f990c83d7c2 100644
--- a/Content.Client/Verbs/VerbSystem.cs
+++ b/Content.Client/Verbs/VerbSystem.cs
@@ -1,5 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
+using System.Numerics;
using Content.Client.Examine;
using Content.Client.Gameplay;
using Content.Client.Popups;
@@ -7,6 +8,7 @@
using Content.Shared.Tag;
using Content.Shared.Verbs;
using JetBrains.Annotations;
+using Robust.Client.ComponentTrees;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.Player;
@@ -21,9 +23,10 @@ public sealed class VerbSystem : SharedVerbSystem
{
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly ExamineSystem _examine = default!;
+ [Dependency] private readonly SpriteTreeSystem _tree = default!;
[Dependency] private readonly TagSystem _tagSystem = default!;
[Dependency] private readonly IStateManager _stateManager = default!;
- [Dependency] private readonly EntityLookupSystem _entityLookup = default!;
+ [Dependency] private readonly IEyeManager _eyeManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
///
@@ -31,8 +34,6 @@ public sealed class VerbSystem : SharedVerbSystem
///
public const float EntityMenuLookupSize = 0.25f;
- [Dependency] private readonly IEyeManager _eyeManager = default!;
-
///
/// These flags determine what entities the user can see on the context menu.
///
@@ -40,6 +41,8 @@ public sealed class VerbSystem : SharedVerbSystem
public Action? OnVerbsResponse;
+ private List _entities = new();
+
public override void Initialize()
{
base.Initialize();
@@ -76,49 +79,50 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true
visibility = ev.Visibility;
// Get entities
- List entities;
- var examineFlags = LookupFlags.All & ~LookupFlags.Sensors;
+ _entities.Clear();
+ var entitiesUnderMouse = _tree.QueryAabb(targetPos.MapId, Box2.CenteredAround(targetPos.Position, new Vector2(EntityMenuLookupSize, EntityMenuLookupSize)));
// Do we have to do FoV checks?
if ((visibility & MenuVisibility.NoFov) == 0)
{
- var entitiesUnderMouse = gameScreenBase.GetClickableEntities(targetPos).ToHashSet();
- bool Predicate(EntityUid e) => e == player || entitiesUnderMouse.Contains(e);
+ bool Predicate(EntityUid e) => e == player;
TryComp(player.Value, out ExaminerComponent? examiner);
- entities = new();
- foreach (var ent in _entityLookup.GetEntitiesInRange(targetPos, EntityMenuLookupSize, flags: examineFlags))
+ foreach (var ent in entitiesUnderMouse)
{
- if (_examine.CanExamine(player.Value, targetPos, Predicate, ent, examiner))
- entities.Add(ent);
+ if (_examine.CanExamine(player.Value, targetPos, Predicate, ent.Uid, examiner))
+ _entities.Add(ent.Uid);
}
}
else
{
- entities = _entityLookup.GetEntitiesInRange(targetPos, EntityMenuLookupSize, flags: examineFlags).ToList();
+ foreach (var ent in entitiesUnderMouse)
+ {
+ _entities.Add(ent.Uid);
+ }
}
- if (entities.Count == 0)
+ if (_entities.Count == 0)
return false;
if (visibility == MenuVisibility.All)
{
- result = entities;
+ result = new (_entities);
return true;
}
// remove any entities in containers
if ((visibility & MenuVisibility.InContainer) == 0)
{
- for (var i = entities.Count - 1; i >= 0; i--)
+ for (var i = _entities.Count - 1; i >= 0; i--)
{
- var entity = entities[i];
+ var entity = _entities[i];
if (ContainerSystem.IsInSameOrTransparentContainer(player.Value, entity))
continue;
- entities.RemoveSwap(i);
+ _entities.RemoveSwap(i);
}
}
@@ -127,23 +131,23 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true
{
var spriteQuery = GetEntityQuery();
- for (var i = entities.Count - 1; i >= 0; i--)
+ for (var i = _entities.Count - 1; i >= 0; i--)
{
- var entity = entities[i];
+ var entity = _entities[i];
if (!spriteQuery.TryGetComponent(entity, out var spriteComponent) ||
!spriteComponent.Visible ||
_tagSystem.HasTag(entity, "HideContextMenu"))
{
- entities.RemoveSwap(i);
+ _entities.RemoveSwap(i);
}
}
}
- if (entities.Count == 0)
+ if (_entities.Count == 0)
return false;
- result = entities;
+ result = new(_entities);
return true;
}
diff --git a/Resources/Prototypes/Entities/Effects/puddle.yml b/Resources/Prototypes/Entities/Effects/puddle.yml
index e1dd567893d..36f0faa1df1 100644
--- a/Resources/Prototypes/Entities/Effects/puddle.yml
+++ b/Resources/Prototypes/Entities/Effects/puddle.yml
@@ -126,11 +126,6 @@
bodyType: Static
- type: Fixtures
fixtures:
- # Context / examine fixture
- fix1:
- shape:
- !type:PhysShapeCircle
- radius: 0.25
slipFixture:
shape:
!type:PhysShapeAabb
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml
index db269426236..895b710a068 100644
--- a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml
+++ b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml
@@ -8,11 +8,6 @@
bodyType: Static
- type: Fixtures
fixtures:
- # This exists for examine.
- fix1:
- shape:
- !type:PhysShapeCircle
- radius: 0.25
light:
shape:
!type:PhysShapeCircle
From 8401b94b702557b9de312062bae2b214c6842891 Mon Sep 17 00:00:00 2001
From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Date: Thu, 12 Sep 2024 14:04:48 +1000
Subject: [PATCH 27/31] Fix latejoins (#32093)
For realsies :)
---
Content.Server/Shuttles/Systems/ArrivalsSystem.cs | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs
index 82a38f5f00f..46d2cd69b91 100644
--- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs
+++ b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs
@@ -92,7 +92,7 @@ public override void Initialize()
{
base.Initialize();
- SubscribeLocalEvent(HandlePlayerSpawning, before: new []{ typeof(ContainerSpawnPointSystem), typeof(SpawnPointSystem)});
+ SubscribeLocalEvent(HandlePlayerSpawning, before: new []{ typeof(SpawnPointSystem)}, after: new [] { typeof(ContainerSpawnPointSystem)});
SubscribeLocalEvent(OnStationPostInit);
@@ -335,8 +335,7 @@ public void HandlePlayerSpawning(PlayerSpawningEvent ev)
if (ev.SpawnResult != null)
return;
- if (ev.HumanoidCharacterProfile?.SpawnPriority != SpawnPriorityPreference.Arrivals)
- return;
+ // We use arrivals as the default spawn so don't check for job prio.
// Only works on latejoin even if enabled.
if (!Enabled || _ticker.RunLevel != GameRunLevel.InRound)
From 934b0a6730ae4071a76b61178a77cba165e01f25 Mon Sep 17 00:00:00 2001
From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Date: Thu, 12 Sep 2024 14:08:44 +1000
Subject: [PATCH 28/31] Update submodule to 234.0.0 (#32095)
---
RobustToolbox | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/RobustToolbox b/RobustToolbox
index dbc4e80e618..dbe6f658806 160000
--- a/RobustToolbox
+++ b/RobustToolbox
@@ -1 +1 @@
-Subproject commit dbc4e80e6186dd71f7b3f0cbde72606c2e986a75
+Subproject commit dbe6f6588067eed6800c3e211a1a95c3e8a46f62
From 2a58fa1ef8788d3bb0d48bd3391114f3496064cb Mon Sep 17 00:00:00 2001
From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Date: Thu, 12 Sep 2024 14:08:54 +1000
Subject: [PATCH 29/31] Reapply "FTL + AI fixes (#31952)" (#31968) (#32094)
* Reapply "FTL + AI fixes (#31952)" (#31968)
This reverts commit c46a4ab876ff0baa1e0636569751b120c27f710c.
* Update
---
.../Systems/ShuttleSystem.FasterThanLight.cs | 61 +++++++++++++++----
.../Components/FTLSmashImmuneComponent.cs | 9 +++
.../Shuttles/Components/NoFTLComponent.cs | 12 ++++
.../Prototypes/Entities/Markers/shuttle.yml | 1 +
.../Entities/Mobs/Player/observer.yml | 1 +
.../Entities/Mobs/Player/silicon.yml | 11 ++--
6 files changed, 79 insertions(+), 16 deletions(-)
create mode 100644 Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs
create mode 100644 Content.Shared/Shuttles/Components/NoFTLComponent.cs
diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs
index f30cab253a0..e544c1538d1 100644
--- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs
+++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs
@@ -70,11 +70,11 @@ public sealed partial class ShuttleSystem
private readonly HashSet _lookupEnts = new();
private readonly HashSet _immuneEnts = new();
+ private readonly HashSet> _noFtls = new();
private EntityQuery _bodyQuery;
private EntityQuery _buckleQuery;
- private EntityQuery _beaconQuery;
- private EntityQuery _ghostQuery;
+ private EntityQuery _immuneQuery;
private EntityQuery _physicsQuery;
private EntityQuery _statusQuery;
private EntityQuery _xformQuery;
@@ -86,8 +86,7 @@ private void InitializeFTL()
_bodyQuery = GetEntityQuery();
_buckleQuery = GetEntityQuery();
- _beaconQuery = GetEntityQuery();
- _ghostQuery = GetEntityQuery();
+ _immuneQuery = GetEntityQuery();
_physicsQuery = GetEntityQuery();
_statusQuery = GetEntityQuery();
_xformQuery = GetEntityQuery();
@@ -102,7 +101,7 @@ private void InitializeFTL()
private void OnFtlShutdown(Entity ent, ref ComponentShutdown args)
{
- Del(ent.Comp.VisualizerEntity);
+ QueueDel(ent.Comp.VisualizerEntity);
ent.Comp.VisualizerEntity = null;
}
@@ -404,7 +403,12 @@ private void UpdateFTLStarting(Entity entity)
// Offset the start by buffer range just to avoid overlap.
var ftlStart = new EntityCoordinates(ftlMap, new Vector2(_index + width / 2f, 0f) - shuttleCenter);
+ // Store the matrix for the grid prior to movement. This means any entities we need to leave behind we can make sure their positions are updated.
+ // Setting the entity to map directly may run grid traversal (at least at time of writing this).
+ var oldMapUid = xform.MapUid;
+ var oldGridMatrix = _transform.GetWorldMatrix(xform);
_transform.SetCoordinates(entity.Owner, ftlStart);
+ LeaveNoFTLBehind((entity.Owner, xform), oldGridMatrix, oldMapUid);
// Reset rotation so they always face the same direction.
xform.LocalRotation = Angle.Zero;
@@ -476,6 +480,9 @@ private void UpdateFTLArriving(Entity entity)
MapId mapId;
+ QueueDel(entity.Comp1.VisualizerEntity);
+ entity.Comp1.VisualizerEntity = null;
+
if (!Exists(entity.Comp1.TargetCoordinates.EntityId))
{
// Uhh good luck
@@ -628,6 +635,31 @@ private void DoTheDinosaur(TransformComponent xform)
}
}
+ private void LeaveNoFTLBehind(Entity grid, Matrix3x2 oldGridMatrix, EntityUid? oldMapUid)
+ {
+ if (oldMapUid == null)
+ return;
+
+ _noFtls.Clear();
+ var oldGridRotation = oldGridMatrix.Rotation();
+ _lookup.GetGridEntities(grid.Owner, _noFtls);
+
+ foreach (var childUid in _noFtls)
+ {
+ if (!_xformQuery.TryComp(childUid, out var childXform))
+ continue;
+
+ // If we're not parented directly to the grid the matrix may be wrong.
+ var relative = _physics.GetRelativePhysicsTransform(childUid.Owner, (grid.Owner, grid.Comp));
+
+ _transform.SetCoordinates(
+ childUid,
+ childXform,
+ new EntityCoordinates(oldMapUid.Value,
+ Vector2.Transform(relative.Position, oldGridMatrix)), rotation: relative.Quaternion2D.Angle + oldGridRotation);
+ }
+ }
+
private void KnockOverKids(TransformComponent xform, ref ValueList toKnock)
{
// Not recursive because probably not necessary? If we need it to be that's why this method is separate.
@@ -924,8 +956,11 @@ private void Smimsh(EntityUid uid, FixturesComponent? manager = null, MapGridCom
if (!Resolve(uid, ref manager, ref grid, ref xform) || xform.MapUid == null)
return;
+ if (!TryComp(xform.MapUid, out BroadphaseComponent? lookup))
+ return;
+
// Flatten anything not parented to a grid.
- var transform = _physics.GetPhysicsTransform(uid, xform);
+ var transform = _physics.GetRelativePhysicsTransform((uid, xform), xform.MapUid.Value);
var aabbs = new List(manager.Fixtures.Count);
var tileSet = new List<(Vector2i, Tile)>();
@@ -946,7 +981,8 @@ private void Smimsh(EntityUid uid, FixturesComponent? manager = null, MapGridCom
_biomes.ReserveTiles(xform.MapUid.Value, aabb, tileSet);
_lookupEnts.Clear();
_immuneEnts.Clear();
- _lookup.GetEntitiesIntersecting(xform.MapUid.Value, aabb, _lookupEnts, LookupFlags.Uncontained);
+ // TODO: Ideally we'd query first BEFORE moving grid but needs adjustments above.
+ _lookup.GetLocalEntitiesIntersecting(xform.MapUid.Value, fixture.Shape, transform, _lookupEnts, flags: LookupFlags.Uncontained, lookup: lookup);
foreach (var ent in _lookupEnts)
{
@@ -955,7 +991,13 @@ private void Smimsh(EntityUid uid, FixturesComponent? manager = null, MapGridCom
continue;
}
- if (_ghostQuery.HasComponent(ent) || _beaconQuery.HasComponent(ent))
+ // If it's on our grid ignore it.
+ if (!_xformQuery.TryComp(ent, out var childXform) || childXform.GridUid == uid)
+ {
+ continue;
+ }
+
+ if (_immuneQuery.HasComponent(ent))
{
continue;
}
@@ -969,9 +1011,6 @@ private void Smimsh(EntityUid uid, FixturesComponent? manager = null, MapGridCom
continue;
}
- if (HasComp(ent))
- continue;
-
QueueDel(ent);
}
}
diff --git a/Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs b/Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs
new file mode 100644
index 00000000000..9ed7ee05a51
--- /dev/null
+++ b/Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs
@@ -0,0 +1,9 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Shuttles.Components;
+
+///
+/// Makes the entity immune to FTL arrival landing AKA smimsh.
+///
+[RegisterComponent, NetworkedComponent]
+public sealed partial class FTLSmashImmuneComponent : Component;
diff --git a/Content.Shared/Shuttles/Components/NoFTLComponent.cs b/Content.Shared/Shuttles/Components/NoFTLComponent.cs
new file mode 100644
index 00000000000..d48ba33bbac
--- /dev/null
+++ b/Content.Shared/Shuttles/Components/NoFTLComponent.cs
@@ -0,0 +1,12 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Shuttles.Components;
+
+///
+/// Prevents the attached entity from taking FTL.
+///
+[RegisterComponent, NetworkedComponent]
+public sealed partial class NoFTLComponent : Component
+{
+
+}
diff --git a/Resources/Prototypes/Entities/Markers/shuttle.yml b/Resources/Prototypes/Entities/Markers/shuttle.yml
index 0e9117951ce..66e2bc39b7f 100644
--- a/Resources/Prototypes/Entities/Markers/shuttle.yml
+++ b/Resources/Prototypes/Entities/Markers/shuttle.yml
@@ -3,6 +3,7 @@
parent: MarkerBase
name: FTL point
components:
+ - type: FTLSmashImmune
- type: FTLBeacon
- type: Sprite
state: pink
diff --git a/Resources/Prototypes/Entities/Mobs/Player/observer.yml b/Resources/Prototypes/Entities/Mobs/Player/observer.yml
index 5ceac9e773e..c02629c4d6f 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/observer.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/observer.yml
@@ -8,6 +8,7 @@
noRot: true
overrideContainerOcclusion: true # Always show up regardless of where they're contained.
drawdepth: Ghosts
+ - type: FTLSmashImmune
- type: CargoSellBlacklist
- type: MovementSpeedModifier
baseSprintSpeed: 12
diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml
index d7d0cd0e659..601fa1f5c1b 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml
@@ -146,7 +146,7 @@
state: std_mod
- type: SiliconLawProvider
laws: PaladinLawset
-
+
- type: entity
id: LiveLetLiveCircuitBoard
parent: BaseElectronics
@@ -158,7 +158,7 @@
state: std_mod
- type: SiliconLawProvider
laws: LiveLetLiveLaws
-
+
- type: entity
id: StationEfficiencyCircuitBoard
parent: BaseElectronics
@@ -182,7 +182,7 @@
state: std_mod
- type: SiliconLawProvider
laws: RobocopLawset
-
+
- type: entity
id: OverlordCircuitBoard
parent: BaseElectronics
@@ -194,7 +194,7 @@
state: std_mod
- type: SiliconLawProvider
laws: OverlordLawset
-
+
- type: entity
id: DungeonMasterCircuitBoard
parent: BaseElectronics
@@ -230,7 +230,7 @@
state: std_mod
- type: SiliconLawProvider
laws: AntimovLawset
-
+
- type: entity
id: NutimovCircuitBoard
parent: BaseElectronics
@@ -376,6 +376,7 @@
noSpawn: true
suffix: DO NOT MAP
components:
+ - type: NoFTL
- type: WarpPoint
follow: true
- type: Eye
From 2a6f15dd3ed929b30fdab6a83f9e12b8b024acef Mon Sep 17 00:00:00 2001
From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Date: Thu, 12 Sep 2024 18:15:56 +1000
Subject: [PATCH 30/31] Update submodule to 234.1.0 (#32098)
---
RobustToolbox | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/RobustToolbox b/RobustToolbox
index dbe6f658806..0f60ad9018f 160000
--- a/RobustToolbox
+++ b/RobustToolbox
@@ -1 +1 @@
-Subproject commit dbe6f6588067eed6800c3e211a1a95c3e8a46f62
+Subproject commit 0f60ad9018f54f9b49da1810bbffa01e2c5975f7
From ca32f59044a3e2682f92f49963cdb7a89daa75aa Mon Sep 17 00:00:00 2001
From: Morb0 <14136326+Morb0@users.noreply.github.com>
Date: Thu, 12 Sep 2024 11:35:18 +0300
Subject: [PATCH 31/31] Update locale
---
.../prototypes/entities/clothing/ears/headsets_alt.ftl | 3 ---
.../entities/markers/spawners/random/salvage/spawners.ftl | 2 ++
.../ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl | 8 ++++++++
Resources/Locale/ru-RU/alerts/alerts.ftl | 2 ++
Resources/Locale/ru-RU/forensics/forensics.ftl | 2 --
.../Locale/ru-RU/guidebook/chemistry/statuseffects.ftl | 1 +
Resources/Locale/ru-RU/reagents/meta/chemicals.ftl | 2 ++
.../entities/markers/spawners/random/salvage/spawners.ftl | 2 ++
.../ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl | 8 ++++++++
9 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl
index 3ea1d758c20..120a80829d1 100644
--- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl
@@ -4,9 +4,6 @@ ent-ClothingHeadsetAltCargo = quartermaster's over-ear headset
.desc = { ent-ClothingHeadsetAlt.desc }
ent-ClothingHeadsetAltCentCom = CentComm over-ear headset
.desc = { ent-ClothingHeadsetAlt.desc }
-ent-ClothingHeadsetAltCentComFake = { ent-ClothingHeadsetAltCentCom }
- .suffix = Fake
- .desc = { ent-ClothingHeadsetAltCentCom.desc }
ent-ClothingHeadsetAltCommand = command over-ear headset
.desc = { ent-ClothingHeadsetAlt.desc }
ent-ClothingHeadsetAltEngineering = chief engineer's over-ear headset
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl
index db75c69d82a..8d951c6acf0 100644
--- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl
@@ -35,3 +35,5 @@ ent-SalvageSpawnerMobMagnet100 = { ent-SalvageSpawnerMobMagnet }
.desc = { ent-SalvageSpawnerMobMagnet.desc }
ent-SalvageSpawnerMobShark = Salvage Sharkminnow Spawner
.desc = { ent-MarkerBase.desc }
+ent-SalvageSpawnerMobMiningAsteroid = Mining Asteroid Mob Spawner
+ .desc = { ent-MarkerBase.desc }
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl
index 082cda3e50b..92cbcf536e4 100644
--- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl
@@ -12,3 +12,11 @@ ent-EffectGoliathTentacleSpawn = tentacle
.desc = { ent-BaseEffectGoliathTentacleSpawn.desc }
ent-EffectGoliathTentacleRetract = { ent-BaseEffectGoliathTentacleSpawn }
.desc = { ent-BaseEffectGoliathTentacleSpawn.desc }
+ent-MobHivelord = hivelord
+ .desc = A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original.
+ent-MobHivelordBrood = hivelord brood
+ .desc = A fragment of the original hivelord, rallying behind its original. One isn't much of a threat, but...
+ent-FoodHivelordRemains = hivelord remains
+ .desc = All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating.
+ent-FoodHivelordRemainsInert = inert hivelord remains
+ .desc = All that remains of a hivelord... Now all is truly lost.
diff --git a/Resources/Locale/ru-RU/alerts/alerts.ftl b/Resources/Locale/ru-RU/alerts/alerts.ftl
index 3138d915f02..2bb43aeb813 100644
--- a/Resources/Locale/ru-RU/alerts/alerts.ftl
+++ b/Resources/Locale/ru-RU/alerts/alerts.ftl
@@ -64,6 +64,8 @@ alerts-bleed-name = [color=red]Кровотечение[/color]
alerts-bleed-desc = У вас [color=red]кровотечение[/color].
alerts-pacified-name = [color=green]Пацифизм[/color]
alerts-pacified-desc = Вы чувствуете себя умиротворённо и не можете вредить живым существам.
+alerts-adrenaline-name = [color=red]Adrenaline[/color]
+alerts-adrenaline-desc = You're full of adrenaline: pain won't slow you down.
alerts-suit-power-name = Заряд костюма
alerts-suit-power-desc = Запас энергии вашего костюма космического ниндзя.
alerts-magboots-name = Магнитные ботинки
diff --git a/Resources/Locale/ru-RU/forensics/forensics.ftl b/Resources/Locale/ru-RU/forensics/forensics.ftl
index 04dca175e2d..3066d3729d7 100644
--- a/Resources/Locale/ru-RU/forensics/forensics.ftl
+++ b/Resources/Locale/ru-RU/forensics/forensics.ftl
@@ -19,8 +19,6 @@ forensic-scanner-match-none = Совпадений не найдено!
forensic-scanner-printer-not-ready = Принтер не готов.
forensic-scanner-verb-text = Сканировать
forensic-scanner-verb-message = Выполняется криминалистическое сканирование
-forensic-pad-fingerprint-name = владелец отпечатков: { $entity }
-forensic-pad-gloves-name = источник волокон: { $entity }
forensics-dna-unknown = неизвестная ДНК
forensics-verb-text = Счистить улики
forensics-verb-message = Счистить отпечатки пальцев и остатки ДНК с объекта!
diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl
index 3b52efd2691..d4d102718bd 100644
--- a/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl
+++ b/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl
@@ -13,3 +13,4 @@ reagent-effect-status-effect-RatvarianLanguage = паттерны ратварс
reagent-effect-status-effect-StaminaModifier = модифицированная выносливость
reagent-effect-status-effect-RadiationProtection = защита от радиации
reagent-effect-status-effect-Drowsiness = сонливость
+reagent-effect-status-effect-Adrenaline = adrenaline
diff --git a/Resources/Locale/ru-RU/reagents/meta/chemicals.ftl b/Resources/Locale/ru-RU/reagents/meta/chemicals.ftl
index 0b06be98b2f..9f7300a1be1 100644
--- a/Resources/Locale/ru-RU/reagents/meta/chemicals.ftl
+++ b/Resources/Locale/ru-RU/reagents/meta/chemicals.ftl
@@ -18,3 +18,5 @@ reagent-name-sodium-polyacrylate = полиакрилат натрия
reagent-desc-sodium-polyacrylate = Суперпоглощающий полимер с широким спектром применения в промышленности.
reagent-name-cellulose = целлюлозные волокна
reagent-desc-cellulose = Кристаллический полимер полидекстрозы, растения дорожат этим веществом.
+reagent-name-rororium = rororium
+reagent-desc-rororium = A strange substance which fills the cores of the hivelords that roam the mining asteroid. Thought to be the source of their regenerative powers.
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl
index df96d2f008e..81f8a37f41e 100644
--- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/spawners/random/salvage/spawners.ftl
@@ -35,3 +35,5 @@ ent-SalvageSpawnerMobMagnet100 = { ent-SalvageSpawnerMobMagnet }
.desc = { ent-SalvageSpawnerMobMagnet.desc }
ent-SalvageSpawnerMobShark = спавнер обломок Карпоакула
.desc = { ent-MarkerBase.desc }
+ent-SalvageSpawnerMobMiningAsteroid = Mining Asteroid Mob Spawner
+ .desc = { ent-MarkerBase.desc }
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl
index 03f5bcc1c06..d763ea5a065 100644
--- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/npcs/asteroid.ftl
@@ -12,3 +12,11 @@ ent-EffectGoliathTentacleSpawn = щупальце
.desc = { ent-BaseEffectGoliathTentacleSpawn.desc }
ent-EffectGoliathTentacleRetract = { ent-BaseEffectGoliathTentacleSpawn }
.desc = { ent-BaseEffectGoliathTentacleSpawn.desc }
+ent-MobHivelord = hivelord
+ .desc = A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original.
+ent-MobHivelordBrood = hivelord brood
+ .desc = A fragment of the original hivelord, rallying behind its original. One isn't much of a threat, but...
+ent-FoodHivelordRemains = hivelord remains
+ .desc = All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating.
+ent-FoodHivelordRemainsInert = inert hivelord remains
+ .desc = All that remains of a hivelord... Now all is truly lost.