From d7bb906a96d6e884db6433e95e8a3a6751a57096 Mon Sep 17 00:00:00 2001 From: FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> Date: Fri, 23 Aug 2024 21:24:37 +0400 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D1=89=D0=B8=D1=82=D0=B0=20=D0=BE?= =?UTF-8?q?=D1=82=20=D1=81=D1=82=D0=B0=D0=BC=D0=B8=D0=BD=D0=B0=20=D1=83?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=D0=B0=20+=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=88=D0=BF=D1=80=D0=B8=D1=86?= =?UTF-8?q?=D0=BE=D0=B2=20=D1=83=D1=85=D1=82=D0=B0=D0=BD=D1=82=D0=B0=D0=BC?= =?UTF-8?q?=20=D0=B8=20=D1=81=D0=BA=D0=B0=D1=84=D0=B0=D0=BD=D0=B4=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=20(#314)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Описание PR Добавил защиту от стана и блокировку шприцов унатхам, а так же мобам в скафандрах **Медиа** **Проверки** - [ ] PR полностью завершён и мне не нужна помощь чтобы его закончить. - [ ] Я внимательно просмотрел все свои изменения и багов в них не нашёл. - [ ] Я запускал локальный сервер со своими изменениями и всё протестировал. - [ ] Я добавил скриншот/видео демонстрации PR в игре, **или** этот PR этого не требует. **Изменения** :cl: Котя - add: Добавлена защита от стана скафандрам ЯО и СБ. - add: Теперь шприцы не работают на мобов, которые носят скафандры. - add: Шприцы так же перестали работать на унатхов даже без скафандра. --------- Co-authored-by: bananchiki <87230164+Darkiich@users.noreply.github.com> --- .../Systems/InjectorsBlockerSystem.cs | 26 +++++++++++++ .../BaseSolutionInjectOnEventComponent.cs | 5 +++ .../EntitySystems/HypospraySystem.cs | 10 +++++ .../Chemistry/EntitySystems/InjectorSystem.cs | 13 +++++++ .../SolutionInjectOnEventSystem.cs | 39 ++++++++++++++++++- .../Components/InjectorsBlockerComponent.cs | 12 ++++++ .../Chemistry/Events/InjectAttemptEvent.cs | 13 +++++++ Content.Shared/Armor/ArmorComponent.cs | 8 ++++ Content.Shared/Armor/SharedArmorSystem.cs | 18 ++++++++- .../Components/HyposprayComponent.cs | 6 +++ .../Chemistry/Components/InjectorComponent.cs | 6 +++ .../Damage/Systems/StaminaSystem.cs | 34 +++++++++++++++- .../Inventory/InventorySystem.Relay.cs | 3 ++ .../Locale/ru-RU/ADT/armor/armor-examine.ftl | 1 + .../ADT/chemistry/injector-component.ftl | 1 + .../Entities/Clothing/OuterClothing/armor.yml | 3 ++ .../OuterClothing/base_clothingouter.yml | 4 ++ .../Clothing/OuterClothing/hardsuits.yml | 7 ++++ .../Entities/Mobs/Species/reptilian.yml | 1 + .../Prototypes/Entities/Objects/Fun/darts.yml | 1 + 20 files changed, 206 insertions(+), 5 deletions(-) create mode 100644 Content.Server/ADT/Chemistry/Systems/InjectorsBlockerSystem.cs create mode 100644 Content.Shared/ADT/Chemistry/Components/InjectorsBlockerComponent.cs create mode 100644 Content.Shared/ADT/Chemistry/Events/InjectAttemptEvent.cs create mode 100644 Resources/Locale/ru-RU/ADT/armor/armor-examine.ftl create mode 100644 Resources/Locale/ru-RU/ADT/chemistry/injector-component.ftl diff --git a/Content.Server/ADT/Chemistry/Systems/InjectorsBlockerSystem.cs b/Content.Server/ADT/Chemistry/Systems/InjectorsBlockerSystem.cs new file mode 100644 index 00000000000..9c98d602074 --- /dev/null +++ b/Content.Server/ADT/Chemistry/Systems/InjectorsBlockerSystem.cs @@ -0,0 +1,26 @@ +using Content.Shared.Chemistry; +using Content.Shared.Chemistry.Components; +using Content.Shared.Inventory; + +namespace Content.Server.Chemistry.EntitySystems; + +public sealed class InjectorsBlockerSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInjectAttempt); + SubscribeLocalEvent>(OnInjectRelayAttempt); + } + + private void OnInjectAttempt(EntityUid uid, InjectorsBlockerComponent comp, InjectAttemptEvent args) + { + args.Cancel(); + } + + private void OnInjectRelayAttempt(EntityUid uid, InjectorsBlockerComponent comp, InventoryRelayedEvent args) + { + args.Args.Cancel(); + } +} diff --git a/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs b/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs index 708c1ef0052..937dcf3190b 100644 --- a/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs +++ b/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs @@ -57,4 +57,9 @@ public abstract partial class BaseSolutionInjectOnEventComponent : Component /// [DataField] public SlotFlags BlockSlots = SlotFlags.NONE; + + // ADT Injector blocking start + [DataField] + public bool IgnoreBlockers = false; + // ADT Injector blocking end } diff --git a/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs b/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs index c5bdb39816e..471ca5ff2c0 100644 --- a/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs +++ b/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs @@ -84,6 +84,16 @@ public bool TryDoInject(Entity entity, EntityUid target, Ent return false; } + // ADT Injectors blocker start + if (!entity.Comp.IgnoreBlockers) + { + var blockerEv = new InjectAttemptEvent(); + RaiseLocalEvent(target, blockerEv); + if (blockerEv.Cancelled) + return false; + } + // ADT Injectors blocker end + string? msgFormat = null; if (target == user) diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index d94faa81232..32768e51ef6 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -92,6 +92,19 @@ private void OnInjectorAfterInteract(Entity entity, ref After if (entity.Comp.IgnoreMobs) return; + // ADT Injector blocking start + if (!entity.Comp.IgnoreBlockers) + { + var ev = new InjectAttemptEvent(); + RaiseLocalEvent(target, ev); + if (ev.Cancelled) + { + Popup.PopupEntity(Loc.GetString("injector-component-fail-user", ("target", Identity.Entity(target, EntityManager))), target, args.User); + return; + } + } + // ADT Injector blocking end + InjectDoAfter(entity, target, args.User); args.Handled = true; return; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs index 3c57cc31afd..fca832645d4 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Body.Systems; using Content.Server.Chemistry.Components; using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Shared.Chemistry; using Content.Shared.Inventory; using Content.Shared.Popups; using Content.Shared.Projectiles; @@ -33,11 +34,31 @@ public override void Initialize() private void HandleProjectileHit(Entity entity, ref ProjectileHitEvent args) { + // ADT Injector blocking start + if (!entity.Comp.IgnoreBlockers) + { + var ev = new InjectAttemptEvent(); + RaiseLocalEvent(args.Target, ev); + if (ev.Cancelled) + return; + } + // ADT Injector blocking end + DoInjection((entity.Owner, entity.Comp), args.Target, args.Shooter); } private void HandleEmbed(Entity entity, ref EmbedEvent args) { + // ADT Injector blocking start + if (!entity.Comp.IgnoreBlockers) + { + var ev = new InjectAttemptEvent(); + RaiseLocalEvent(args.Embedded, ev); + if (ev.Cancelled) + return; + } + // ADT Injector blocking end + DoInjection((entity.Owner, entity.Comp), args.Embedded, args.Shooter); } @@ -46,7 +67,23 @@ private void HandleMeleeHit(Entity entity, ref M // MeleeHitEvent is weird, so we have to filter to make sure we actually // hit something and aren't just examining the weapon. if (args.IsHit) - TryInjectTargets((entity.Owner, entity.Comp), args.HitEntities, args.User); + { + List list = new(); + foreach (var ent in args.HitEntities) + { + // ADT Injector blocking start + if (!entity.Comp.IgnoreBlockers) + { + var ev = new InjectAttemptEvent(); + RaiseLocalEvent(ent, ev); + if (ev.Cancelled) + continue; + list.Add(ent); + } + // ADT Injector blocking end + } + TryInjectTargets((entity.Owner, entity.Comp), list, args.User); + } } private void DoInjection(Entity injectorEntity, EntityUid target, EntityUid? source = null) diff --git a/Content.Shared/ADT/Chemistry/Components/InjectorsBlockerComponent.cs b/Content.Shared/ADT/Chemistry/Components/InjectorsBlockerComponent.cs new file mode 100644 index 00000000000..67e98e9f1fc --- /dev/null +++ b/Content.Shared/ADT/Chemistry/Components/InjectorsBlockerComponent.cs @@ -0,0 +1,12 @@ +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.DoAfter; +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Chemistry.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class InjectorsBlockerComponent : Component +{ +} diff --git a/Content.Shared/ADT/Chemistry/Events/InjectAttemptEvent.cs b/Content.Shared/ADT/Chemistry/Events/InjectAttemptEvent.cs new file mode 100644 index 00000000000..399d5933a93 --- /dev/null +++ b/Content.Shared/ADT/Chemistry/Events/InjectAttemptEvent.cs @@ -0,0 +1,13 @@ +using Content.Shared.Inventory; + +namespace Content.Shared.Chemistry; + +public sealed class InjectAttemptEvent : CancellableEntityEventArgs, IInventoryRelayEvent +{ + // Whenever locational damage is a thing, this should just check only that bit of armour. + public SlotFlags TargetSlots { get; } = ~SlotFlags.POCKET; + + public InjectAttemptEvent() + { + } +} diff --git a/Content.Shared/Armor/ArmorComponent.cs b/Content.Shared/Armor/ArmorComponent.cs index fd04c5d29c8..9b620f6d86d 100644 --- a/Content.Shared/Armor/ArmorComponent.cs +++ b/Content.Shared/Armor/ArmorComponent.cs @@ -22,6 +22,14 @@ public sealed partial class ArmorComponent : Component /// [DataField] public float PriceMultiplier = 1; + + // ADT Stunmeta fix start + /// + /// Stamina damage reduction + /// + [DataField] + public float StaminaModifier = 1f; + // ADT Stunmeta fix } /// diff --git a/Content.Shared/Armor/SharedArmorSystem.cs b/Content.Shared/Armor/SharedArmorSystem.cs index 010ee5e65b0..de811882e71 100644 --- a/Content.Shared/Armor/SharedArmorSystem.cs +++ b/Content.Shared/Armor/SharedArmorSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Damage; +using Content.Shared.Damage.Systems; using Content.Shared.Examine; using Content.Shared.Inventory; using Content.Shared.Silicons.Borgs; @@ -22,6 +23,7 @@ public override void Initialize() SubscribeLocalEvent>(OnDamageModify); SubscribeLocalEvent>(OnBorgDamageModify); SubscribeLocalEvent>(OnArmorVerbExamine); + SubscribeLocalEvent>(OnStaminaDamageModify); // ADT Stunmeta fix } private void OnDamageModify(EntityUid uid, ArmorComponent component, InventoryRelayedEvent args) @@ -40,7 +42,7 @@ private void OnArmorVerbExamine(EntityUid uid, ArmorComponent component, GetVerb if (!args.CanInteract || !args.CanAccess) return; - var examineMarkup = GetArmorExamine(component.Modifiers); + var examineMarkup = GetArmorExamine(component.Modifiers, component.StaminaModifier); // ADT Stunmeta fix var ev = new ArmorExamineEvent(examineMarkup); RaiseLocalEvent(uid, ref ev); @@ -50,7 +52,7 @@ private void OnArmorVerbExamine(EntityUid uid, ArmorComponent component, GetVerb Loc.GetString("armor-examinable-verb-message")); } - private FormattedMessage GetArmorExamine(DamageModifierSet armorModifiers) + private FormattedMessage GetArmorExamine(DamageModifierSet armorModifiers, float staminaModifier) // ADT Stunmeta fix { var msg = new FormattedMessage(); msg.AddMarkupOrThrow(Loc.GetString("armor-examine")); @@ -77,6 +79,18 @@ private FormattedMessage GetArmorExamine(DamageModifierSet armorModifiers) )); } + // ADT Stunmeta fix start + msg.PushNewline(); + msg.AddMarkup(Loc.GetString("armor-stamina-protection-value", ("value", MathF.Round((1f - staminaModifier) * 100, 1)))); + // ADT Stunmeta fix end + return msg; } + + // ADT Stunmeta fix start + private void OnStaminaDamageModify(EntityUid uid, ArmorComponent component, InventoryRelayedEvent args) + { + args.Args.Damage *= component.StaminaModifier; + } + // ADT Stunmeta fix end } diff --git a/Content.Shared/Chemistry/Components/HyposprayComponent.cs b/Content.Shared/Chemistry/Components/HyposprayComponent.cs index 05ef84bbaf7..e66f6372f13 100644 --- a/Content.Shared/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Shared/Chemistry/Components/HyposprayComponent.cs @@ -37,4 +37,10 @@ public sealed partial class HyposprayComponent : Component /// [DataField] public bool InjectOnly = false; + + // ADT Injector blocking start + [DataField] + public bool IgnoreBlockers = true; // Мало ли будете вводить гипоспреи обычным врачам. Таким подобной роскоши не нужно + // ADT Injector blocking end + } diff --git a/Content.Shared/Chemistry/Components/InjectorComponent.cs b/Content.Shared/Chemistry/Components/InjectorComponent.cs index 1f2716356c5..befd8f5e8ad 100644 --- a/Content.Shared/Chemistry/Components/InjectorComponent.cs +++ b/Content.Shared/Chemistry/Components/InjectorComponent.cs @@ -103,6 +103,12 @@ public sealed partial class InjectorComponent : Component public float MovementThreshold = 0.1f; #endregion + + + // ADT Injector blocking start + [DataField] + public bool IgnoreBlockers = false; + // ADT Injector blocking end } /// diff --git a/Content.Shared/Damage/Systems/StaminaSystem.cs b/Content.Shared/Damage/Systems/StaminaSystem.cs index a5c8a4b38de..1244a603796 100644 --- a/Content.Shared/Damage/Systems/StaminaSystem.cs +++ b/Content.Shared/Damage/Systems/StaminaSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Database; using Content.Shared.Effects; using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; using Content.Shared.Popups; using Content.Shared.Projectiles; using Content.Shared.Rejuvenate; @@ -233,7 +234,8 @@ public bool TryTakeStamina(EntityUid uid, float value, StaminaComponent? compone } public void TakeStaminaDamage(EntityUid uid, float value, StaminaComponent? component = null, - EntityUid? source = null, EntityUid? with = null, bool visual = true, SoundSpecifier? sound = null) + EntityUid? source = null, EntityUid? with = null, bool visual = true, SoundSpecifier? sound = null, + bool ignoreResistances = false) // ADT Stunmeta fix { if (!Resolve(uid, ref component, false)) return; @@ -247,6 +249,15 @@ public void TakeStaminaDamage(EntityUid uid, float value, StaminaComponent? comp if (component.Critical) return; + // ADT Stunmeta fix start + if (!ignoreResistances) + { + var modifyEv = new StaminaDamageModifyEvent(value, source); + RaiseLocalEvent(uid, modifyEv); + value = modifyEv.Damage; + } + // ADT Stunmeta fix end + var oldDamage = component.StaminaDamage; component.StaminaDamage = MathF.Max(0f, component.StaminaDamage + value); @@ -392,7 +403,26 @@ private void ExitStamCrit(EntityUid uid, StaminaComponent? component = null) } /// -/// Raised before stamina damage is dealt to allow other systems to cancel it. +/// Raised before stamina damage is dealt to allow other systems to modify it. /// [ByRefEvent] public record struct BeforeStaminaDamageEvent(float Value, bool Cancelled = false); + +// ADT Stunmeta fix start +public sealed class StaminaDamageModifyEvent : EntityEventArgs, IInventoryRelayEvent +{ + // Whenever locational damage is a thing, this should just check only that bit of armour. + public SlotFlags TargetSlots { get; } = ~SlotFlags.POCKET; + + public readonly float OriginalDamage; + public float Damage; + public EntityUid? Origin; + + public StaminaDamageModifyEvent(float damage, EntityUid? origin = null) + { + OriginalDamage = damage; + Damage = damage; + Origin = origin; + } +} +// ADT Stunmeta fix end diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 4534ce503bd..7534626c069 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -15,6 +15,7 @@ using Content.Shared.Temperature; using Content.Shared.Verbs; using Content.Shared.ADT.Phantom.Components; +using Content.Shared.Damage.Systems; namespace Content.Shared.Inventory; @@ -31,6 +32,8 @@ public void InitializeRelay() SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); + SubscribeLocalEvent(RelayInventoryEvent); // ADT Stunmeta fix + SubscribeLocalEvent(RelayInventoryEvent); // ADT Injector blocking // by-ref events SubscribeLocalEvent(RefRelayInventoryEvent); diff --git a/Resources/Locale/ru-RU/ADT/armor/armor-examine.ftl b/Resources/Locale/ru-RU/ADT/armor/armor-examine.ftl new file mode 100644 index 00000000000..f23ab488ff2 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/armor/armor-examine.ftl @@ -0,0 +1 @@ +armor-stamina-protection-value = - [color=cyan] Стамина [/color] урон снижается на [color=lightblue]{ $value }%[/color]. diff --git a/Resources/Locale/ru-RU/ADT/chemistry/injector-component.ftl b/Resources/Locale/ru-RU/ADT/chemistry/injector-component.ftl new file mode 100644 index 00000000000..5b74c9da017 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/chemistry/injector-component.ftl @@ -0,0 +1 @@ +injector-component-fail-user = Вы не можете ввести содержимое шприца в { CAPITALIZE($target) }. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 80588ba493b..c785957d70f 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -170,6 +170,7 @@ - type: BatterySelfRecharger autoRecharge: true autoRechargeRate: 2 + - type: InjectorsBlocker # ADT - type: entity parent: ClothingOuterBaseLarge @@ -212,6 +213,7 @@ - type: GroupExamine - type: ClothingRequiredStepTriggerImmune slots: WITHOUT_POCKET + - type: InjectorsBlocker # ADT - type: entity parent: ClothingOuterArmorHeavy @@ -310,6 +312,7 @@ - type: GroupExamine - type: ClothingRequiredStepTriggerImmune slots: WITHOUT_POCKET + - type: InjectorsBlocker # ADT - type: entity parent: ClothingOuterBaseLarge diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index 5df6adffec9..50c1fd00a31 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -136,12 +136,16 @@ - WhitelistChameleon - type: ClothingRequiredStepTriggerImmune slots: WITHOUT_POCKET + + - type: InjectorsBlocker + - type: DamageOnInteractProtection damageProtection: flatReductions: Heat: 10 # the average lightbulb only does around four damage! slots: OUTERCLOTHING + - type: entity abstract: true parent: [ClothingOuterBase, AllowSuitStorageClothing] diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 72cad6e2e99..d5e6cc57915 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -209,6 +209,7 @@ Slash: 0.6 Piercing: 0.6 Caustic: 0.7 + staminaModifier: 0.8 # ADT - type: ClothingSpeedModifier walkModifier: 0.75 sprintModifier: 0.75 @@ -271,6 +272,7 @@ Slash: 0.6 Piercing: 0.6 Caustic: 0.7 + staminaModifier: 0.7 # ADT - type: ClothingSpeedModifier walkModifier: 0.7 sprintModifier: 0.7 @@ -303,6 +305,7 @@ Heat: 0.5 Radiation: 0.5 Caustic: 0.6 + staminaModifier: 0.7 # ADT - type: ClothingSpeedModifier walkModifier: 0.8 sprintModifier: 0.8 @@ -502,6 +505,7 @@ Heat: 0.6 Radiation: 0.3 Caustic: 0.3 + staminaModifier: 0.45 # ADT - type: ClothingSpeedModifier #ADT Nukiebuff walkModifier: 1 sprintModifier: 1 @@ -561,6 +565,7 @@ Heat: 0.2 Radiation: 0.01 Caustic: 0.5 + staminaModifier: 0.3 # ADT - type: Item size: Huge - type: ClothingSpeedModifier @@ -595,6 +600,7 @@ Heat: 0.5 Radiation: 0.25 Caustic: 0.4 + staminaModifier: 0.3 # ADT - type: ClothingSpeedModifier walkModifier: 1.0 sprintModifier: 1.0 @@ -627,6 +633,7 @@ Heat: 0.2 Radiation: 0.2 Caustic: 0.2 + staminaModifier: 0.15 # ADT - type: ClothingSpeedModifier walkModifier: 0.9 sprintModifier: 0.65 diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index a567eed3684..d2aeacc2f8e 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -82,6 +82,7 @@ - GalacticCommon - Draconic - CintaTaj + - type: InjectorsBlocker # ADT - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Objects/Fun/darts.yml b/Resources/Prototypes/Entities/Objects/Fun/darts.yml index 66a9037569a..102908855f0 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/darts.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/darts.yml @@ -58,6 +58,7 @@ transferAmount: 2 solution: melee blockSlots: OUTERCLOTHING + ignoreBlockers: true # ADT - type: SolutionTransfer maxTransferAmount: 2 - type: Damageable