Merge remote-tracking branch 'WD-core/master' into upstream-6
This commit is contained in:
@@ -11,6 +11,7 @@ using Content.Shared.Ensnaring.Components;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.StepTrigger.Systems;
|
||||
using Content.Shared.Throwing;
|
||||
using Content.Shared.Popups;
|
||||
|
||||
namespace Content.Server.Ensnaring;
|
||||
|
||||
@@ -151,9 +152,11 @@ public sealed partial class EnsnareableSystem
|
||||
Dirty(component.Ensnared.Value, ensnareable);
|
||||
component.Ensnared = null;
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("ensnare-component-try-free-complete", ("ensnare", ensnare)), target, target, PopupType.Medium); // WD
|
||||
|
||||
UpdateAlert(target, ensnareable);
|
||||
var ev = new EnsnareRemoveEvent(component.WalkSpeed, component.SprintSpeed);
|
||||
RaiseLocalEvent(ensnare, ev);
|
||||
RaiseLocalEvent(target, ev); // WD fix from ensnare to target
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -26,6 +26,9 @@ using Robust.Shared.Collections;
|
||||
using Robust.Shared.Enums;
|
||||
using Robust.Shared.GameObjects.Components.Localization;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Content.Server.Ensnaring;
|
||||
using Content.Shared.Ensnaring.Components;
|
||||
using System.Linq;
|
||||
using GrammarSystem = Content.Shared._Amour.GrammarSystem.GrammarSystem;
|
||||
|
||||
namespace Content.Server.Implants;
|
||||
@@ -45,7 +48,8 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
||||
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
|
||||
[Dependency] private readonly SharedMapSystem _mapSystem = default!;
|
||||
[Dependency] private readonly IdentitySystem _identity = default!; // WD
|
||||
[Dependency] private readonly GrammarSystem _grammar = default!; //Amour
|
||||
[Dependency] private readonly EnsnareableSystem _ensnareable = default!; // WD
|
||||
[Dependency] private readonly GrammarSystem _grammar = default!; // Amour
|
||||
|
||||
private EntityQuery<PhysicsComponent> _physicsQuery;
|
||||
private HashSet<Entity<MapGridComponent>> _targetGrids = [];
|
||||
@@ -90,11 +94,26 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
||||
|
||||
private void OnFreedomImplant(EntityUid uid, SubdermalImplantComponent component, UseFreedomImplantEvent args)
|
||||
{
|
||||
if (!TryComp<CuffableComponent>(component.ImplantedEntity, out var cuffs) || cuffs.Container.ContainedEntities.Count < 1)
|
||||
return;
|
||||
// WD EDIT START
|
||||
var ensnareCheck = TryComp<EnsnareableComponent>(component.ImplantedEntity, out var ensnareable) && ensnareable.Container.ContainedEntities.Count > 0;
|
||||
if (ensnareCheck && ensnareable != null)
|
||||
{
|
||||
var ensnaringUid = ensnareable.Container.ContainedEntities.First();
|
||||
if (TryComp<EnsnaringComponent>(ensnaringUid, out var ensnaringComp))
|
||||
_ensnareable.ForceFree(ensnaringUid, ensnaringComp);
|
||||
}
|
||||
|
||||
_cuffable.Uncuff(component.ImplantedEntity.Value, cuffs.LastAddedCuffs, cuffs.LastAddedCuffs);
|
||||
args.Handled = true;
|
||||
var cuffCheck = TryComp<CuffableComponent>(component.ImplantedEntity, out var cuffs) && cuffs.Container.ContainedEntities.Count > 0;
|
||||
if (cuffCheck && cuffs != null && component.ImplantedEntity != null)
|
||||
{
|
||||
_cuffable.Uncuff(component.ImplantedEntity.Value, cuffs.LastAddedCuffs, cuffs.LastAddedCuffs);
|
||||
}
|
||||
|
||||
if (ensnareCheck || cuffCheck)
|
||||
{
|
||||
args.Handled = true;
|
||||
}
|
||||
// WD EDIT END
|
||||
}
|
||||
|
||||
private void OnActivateImplantEvent(EntityUid uid, SubdermalImplantComponent component, ActivateImplantEvent args)
|
||||
@@ -230,7 +249,7 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
||||
QueueDel(uid);
|
||||
}
|
||||
|
||||
//Amour Start
|
||||
// Amour Start
|
||||
private void OnGenderSwapImplant(EntityUid uid, SubdermalImplantComponent component, UseGenderSwapImplantEvent args)
|
||||
{
|
||||
if (component.ImplantedEntity is not { } ent)
|
||||
@@ -266,5 +285,5 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
||||
args.Handled = true;
|
||||
QueueDel(uid);
|
||||
}
|
||||
//Amour End
|
||||
// Amour End
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public sealed class NeuroStabilizationSystem : EntitySystem
|
||||
private void BeforeStaminaDamage(Entity<NeuroStabilizationComponent> ent, ref BeforeStaminaDamageEvent args)
|
||||
{
|
||||
args.Cancelled = true;
|
||||
Electrocute(ent, (int) MathF.Round(args.Value * 2f / 3f));
|
||||
Electrocute(ent, (int) MathF.Round(args.Value * 2f / 4f));
|
||||
}
|
||||
|
||||
public void Electrocute(EntityUid uid, int damage, StatusEffectsComponent? status = null)
|
||||
|
||||
@@ -4,6 +4,8 @@ using Content.Shared.Speech.EntitySystems;
|
||||
using Content.Shared.Standing;
|
||||
using Content.Shared.StatusEffect;
|
||||
using Content.Shared.Stunnable;
|
||||
using Content.Shared._White.Implants.NeuroControl;
|
||||
using Content.Shared.Electrocution;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Shared._White.Item.DelayedKnockdown;
|
||||
@@ -14,6 +16,7 @@ public sealed class DelayedKnockdownOnHitSystem : EntitySystem
|
||||
[Dependency] private readonly SharedJitteringSystem _jitter = default!;
|
||||
[Dependency] private readonly SharedStutteringSystem _stutter = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly SharedElectrocutionSystem _electrocution = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -36,6 +39,12 @@ public sealed class DelayedKnockdownOnHitSystem : EntitySystem
|
||||
if (!TryComp(uid, out StandingStateComponent? standingState) || !standingState.CanLieDown)
|
||||
continue;
|
||||
|
||||
if (HasComp<NeuroStabilizationComponent>(uid))
|
||||
{
|
||||
_electrocution.TryDoElectrocution(uid, null, 5, TimeSpan.FromSeconds(1), false, 0.5f, null, true);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (jitterTime > TimeSpan.Zero)
|
||||
_jitter.DoJitter(uid, jitterTime, true, status: statusEffects);
|
||||
if (stutterTime > TimeSpan.Zero)
|
||||
|
||||
@@ -1,43 +1,4 @@
|
||||
Entries:
|
||||
- author: HitPanda
|
||||
changes:
|
||||
- message: "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0430\u043F\u043B\u0438\u043D\
|
||||
\u043A\u0430."
|
||||
type: Add
|
||||
- message: "\u0414\u0440\u0443\u0433\u043E\u0435 \u043E\u0433\u0440\u043E\u043C\u043D\
|
||||
\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043F\
|
||||
\u0435\u0440\u0435\u0432\u043E\u0434\u0430 \u0441 \u0438\u0437\u043C\u0435\u043D\
|
||||
\u0435\u043D\u0438\u044F\u043C\u0438 \u0432 1500+ \u0444\u0430\u0439\u043B\u043E\
|
||||
\u0432."
|
||||
type: Add
|
||||
- message: "\u0424\u0438\u043A\u0441 \u0441\u043B\u043E\u043C\u0430\u043D\u043D\u044B\
|
||||
\u0445 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u043E\u0432 (\u0432\u0440\u043E\
|
||||
\u0434\u0435 \u0431\u044B)."
|
||||
type: Fix
|
||||
id: 115
|
||||
time: '2023-04-04T13:12:36.0000000+00:00'
|
||||
- author: HitPanda
|
||||
changes:
|
||||
- message: "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u043A\u043D\u0438\u0433"
|
||||
type: Add
|
||||
- message: "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u0438\u0441\u043A\u043E\
|
||||
\u0440\u0434-\u0441\u0442\u0430\u0442\u0443\u0441\u0430"
|
||||
type: Add
|
||||
- message: "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0430\u0434\u043C\u0438\u043D\
|
||||
-\u043F\u0430\u043D\u0435\u043B\u0438"
|
||||
type: Add
|
||||
- message: "\u0414\u0440\u0443\u0433\u0438\u0435 \u043F\u0435\u0440\u0435\u0432\u043E\
|
||||
\u0434\u044B"
|
||||
type: Add
|
||||
id: 116
|
||||
time: '2023-04-05T12:32:32.0000000+00:00'
|
||||
- author: HitPanda
|
||||
changes:
|
||||
- message: "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0438\u043A\u043E\u043D\u043E\
|
||||
\u043A \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430!"
|
||||
type: Add
|
||||
id: 117
|
||||
time: '2023-04-05T18:01:47.0000000+00:00'
|
||||
- author: Valtos
|
||||
changes:
|
||||
- message: "\u041D\u043E\u0432\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0438\
|
||||
@@ -8911,3 +8872,37 @@
|
||||
id: 614
|
||||
time: '2024-11-30T21:01:53.0000000+00:00'
|
||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/795
|
||||
- author: BIG_Zi_348
|
||||
changes:
|
||||
- message: "\u0418\u043C\u043F\u043B\u0430\u043D\u0442 \u043D\u0435\u0439\u0440\u043E\
|
||||
\u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\
|
||||
\u0435\u043F\u0435\u0440\u044C \u043F\u043E\u043C\u043E\u0433\u0430\u0435\u0442\
|
||||
\ \u043E\u0442 \u0441\u0442\u0430\u043D\u0431\u0430\u0442\u043E\u043D\u0430\
|
||||
\ \u0438 \u043D\u0430\u043D\u043E\u0441\u0438\u0442 \u043C\u0435\u043D\u044C\
|
||||
\u0448\u0435 \u0443\u0440\u043E\u043D\u0430 \u0448\u043E\u043A\u043E\u043C."
|
||||
type: Tweak
|
||||
- message: "\u0418\u043C\u043F\u043B\u0430\u043D\u0442 \u0441\u0432\u043E\u0431\u043E\
|
||||
\u0434\u044B \u0442\u0435\u043F\u0435\u0440\u044C \u043E\u0441\u0432\u043E\u0431\
|
||||
\u043E\u0436\u0434\u0430\u0435\u0442 \u043E\u0442 \u0431\u043E\u043B\u044B."
|
||||
type: Tweak
|
||||
id: 615
|
||||
time: '2024-12-01T21:07:54.0000000+00:00'
|
||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/798
|
||||
- author: BIG_Zi_348
|
||||
changes:
|
||||
- message: "\u0418\u0437\u043C\u0435\u043D\u0435\u043D \u043A\u0440\u0430\u0444\u0442\
|
||||
\ \u043C\u044F\u0441\u043D\u043E\u0433\u043E \u043A\u0440\u044E\u043A\u0430."
|
||||
type: Tweak
|
||||
id: 616
|
||||
time: '2024-12-01T21:08:19.0000000+00:00'
|
||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/797
|
||||
- author: BIG_Zi_348
|
||||
changes:
|
||||
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u0432\u044B\
|
||||
\u0434\u0430\u0447\u0430 \u0438\u043A\u043E\u043D\u043A\u0438 \u0438 \u043D\u0430\
|
||||
\u0437\u0432\u0430\u043D\u0438\u044F \u0432\u0435\u0442\u0435\u0440\u0430\u043D\
|
||||
\u0441\u043A\u0438\u043C \u0440\u043E\u043B\u044F\u043C."
|
||||
type: Fix
|
||||
id: 617
|
||||
time: '2024-12-01T21:08:39.0000000+00:00'
|
||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/799
|
||||
|
||||
@@ -3,7 +3,7 @@ ent-SeniorResearcherPDA = ПДА ведущего исследователя
|
||||
ent-SeniorPhysicianPDA = ПДА медицинского офицера
|
||||
.desc = Слабо пахнет железом и химикатами. Имеет встроенный анализатор здоровья.
|
||||
ent-SeniorOfficerPDA = ПДА ветерана СБ
|
||||
.desc = Избитые, потрепанные и сломанные, но едва пригодные для использования.
|
||||
.desc = Избитый, потрепанный и сломанный, но едва пригодный для использования.
|
||||
ent-SeniorSalvagePDA = ПДА охотника карго
|
||||
.desc = Потрепанный и воняющий кровью с потом, но пригодный для использования.
|
||||
ent-PinpointerUniversal = универсальный пинпоинтер
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
ent-KitchenSpike = мясной крюк
|
||||
.desc = Крюк для снятия мяса с животных.
|
||||
ent-KitchenSpikeFrame = каркас мясного крюка
|
||||
.desc = Незаконченный мясной крюк, требуется ещё немного терпения.
|
||||
|
||||
@@ -904,7 +904,7 @@
|
||||
- type: Unremoveable
|
||||
|
||||
- type: entity
|
||||
parent: EngineeringIDCard
|
||||
parent: IDCardStandard
|
||||
id: SeniorEngineerIDCard
|
||||
name: senior engineer ID card
|
||||
components:
|
||||
@@ -912,9 +912,11 @@
|
||||
layers:
|
||||
- state: default
|
||||
- state: idseniorengineer
|
||||
- type: PresetIdCard
|
||||
job: SeniorEngineer
|
||||
|
||||
- type: entity
|
||||
parent: ResearchIDCard
|
||||
parent: IDCardStandard
|
||||
id: SeniorResearcherIDCard
|
||||
name: senior researcher ID card
|
||||
components:
|
||||
@@ -922,9 +924,11 @@
|
||||
layers:
|
||||
- state: default
|
||||
- state: idseniorresearcher
|
||||
- type: PresetIdCard
|
||||
job: SeniorResearcher
|
||||
|
||||
- type: entity
|
||||
parent: MedicalIDCard
|
||||
parent: IDCardStandard
|
||||
id: SeniorPhysicianIDCard
|
||||
name: senior physician ID card
|
||||
components:
|
||||
@@ -932,9 +936,11 @@
|
||||
layers:
|
||||
- state: default
|
||||
- state: idseniorphysician
|
||||
- type: PresetIdCard
|
||||
job: SeniorPhysician
|
||||
|
||||
- type: entity
|
||||
parent: SecurityIDCard
|
||||
parent: IDCardStandard
|
||||
id: SeniorOfficerIDCard
|
||||
name: senior officer ID card
|
||||
components:
|
||||
@@ -942,3 +948,5 @@
|
||||
layers:
|
||||
- state: default
|
||||
- state: idseniorofficer
|
||||
- type: PresetIdCard
|
||||
job: SeniorOfficer
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
Empty: { state: spike }
|
||||
Bloody: { state: spikebloody }
|
||||
- type: Construction
|
||||
graph: MeatSpike
|
||||
graph: MeatSpikeWD # WD Edit
|
||||
node: MeatSpike
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
|
||||
@@ -1017,7 +1017,7 @@
|
||||
id: KitchenSpike
|
||||
name: meat spike
|
||||
description: A spike found in kitchens butchering animals.
|
||||
graph: MeatSpike
|
||||
graph: MeatSpikeWD # WD Edit
|
||||
startNode: start
|
||||
targetNode: MeatSpike
|
||||
category: construction-category-furniture
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
- Maintenance
|
||||
- Service
|
||||
- External
|
||||
- Medical
|
||||
- Cryogenics
|
||||
special:
|
||||
- !type:AddImplantSpecial
|
||||
implants: [ MindShieldImplant ]
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
- type: constructionGraph
|
||||
id: MeatSpikeWD
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
actions:
|
||||
- !type:DeleteEntity {}
|
||||
edges:
|
||||
- to: middle
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
southRotation: true
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 15
|
||||
doAfter: 5
|
||||
- node: middle
|
||||
entity: KitchenSpikeFrame
|
||||
edges:
|
||||
- to: MeatSpike
|
||||
steps:
|
||||
- tool: Welding
|
||||
doAfter: 3
|
||||
- node: MeatSpike
|
||||
entity: KitchenSpike
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 15
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 5
|
||||
@@ -0,0 +1,57 @@
|
||||
- type: entity
|
||||
id: KitchenSpikeFrame
|
||||
parent: BaseStructure
|
||||
name: meat spike frame
|
||||
description: Unfinished meat hook, needs a little more patience.
|
||||
components:
|
||||
- type: InteractionOutline
|
||||
- type: Sprite
|
||||
sprite: White/Structures/meat_spike.rsi
|
||||
state: spike
|
||||
layers:
|
||||
- state: spike
|
||||
map: ["base"]
|
||||
- type: Damageable
|
||||
damageContainer: StructuralInorganic
|
||||
damageModifierSet: Metallic
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 200
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 100
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: MetalBreak
|
||||
params:
|
||||
volume: -4
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
SheetSteel1:
|
||||
min: 1
|
||||
max: 1
|
||||
- type: Transform
|
||||
noRot: true
|
||||
- type: Anchorable
|
||||
- type: Pullable
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.KitchenSpikeVisuals.Status:
|
||||
base:
|
||||
Empty: { state: spike }
|
||||
Bloody: { state: spikebloody }
|
||||
- type: Construction
|
||||
graph: MeatSpikeWD
|
||||
node: middle
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Chef
|
||||
20
Resources/Textures/White/Structures/meat_spike.rsi/meta.json
Normal file
20
Resources/Textures/White/Structures/meat_spike.rsi/meta.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/kitchen.dmi",
|
||||
"states": [
|
||||
{
|
||||
"name": "spike",
|
||||
"directions": 1,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/White/Structures/meat_spike.rsi/spike.png
Normal file
BIN
Resources/Textures/White/Structures/meat_spike.rsi/spike.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Reference in New Issue
Block a user