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%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.