Merge remote-tracking branch 'WD-core/master' into upstream-6

This commit is contained in:
BIGZi0348
2024-12-02 00:11:52 +03:00
15 changed files with 203 additions and 56 deletions

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -3,7 +3,7 @@ ent-SeniorResearcherPDA = ПДА ведущего исследователя
ent-SeniorPhysicianPDA = ПДА медицинского офицера
.desc = Слабо пахнет железом и химикатами. Имеет встроенный анализатор здоровья.
ent-SeniorOfficerPDA = ПДА ветерана СБ
.desc = Избитые, потрепанные и сломанные, но едва пригодные для использования.
.desc = Избитый, потрепанный и сломанный, но едва пригодный для использования.
ent-SeniorSalvagePDA = ПДА охотника карго
.desc = Потрепанный и воняющий кровью с потом, но пригодный для использования.
ent-PinpointerUniversal = универсальный пинпоинтер

View File

@@ -1,2 +1,4 @@
ent-KitchenSpike = мясной крюк
.desc = Крюк для снятия мяса с животных.
ent-KitchenSpikeFrame = каркас мясного крюка
.desc = Незаконченный мясной крюк, требуется ещё немного терпения.

View File

@@ -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

View File

@@ -52,7 +52,7 @@
Empty: { state: spike }
Bloody: { state: spikebloody }
- type: Construction
graph: MeatSpike
graph: MeatSpikeWD # WD Edit
node: MeatSpike
- type: GuideHelp
guides:

View File

@@ -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

View File

@@ -30,7 +30,7 @@
- Maintenance
- Service
- External
- Medical
- Cryogenics
special:
- !type:AddImplantSpecial
implants: [ MindShieldImplant ]

View File

@@ -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

View File

@@ -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

View 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
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB