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.IdentityManagement;
|
||||||
using Content.Shared.StepTrigger.Systems;
|
using Content.Shared.StepTrigger.Systems;
|
||||||
using Content.Shared.Throwing;
|
using Content.Shared.Throwing;
|
||||||
|
using Content.Shared.Popups;
|
||||||
|
|
||||||
namespace Content.Server.Ensnaring;
|
namespace Content.Server.Ensnaring;
|
||||||
|
|
||||||
@@ -151,9 +152,11 @@ public sealed partial class EnsnareableSystem
|
|||||||
Dirty(component.Ensnared.Value, ensnareable);
|
Dirty(component.Ensnared.Value, ensnareable);
|
||||||
component.Ensnared = null;
|
component.Ensnared = null;
|
||||||
|
|
||||||
|
_popup.PopupEntity(Loc.GetString("ensnare-component-try-free-complete", ("ensnare", ensnare)), target, target, PopupType.Medium); // WD
|
||||||
|
|
||||||
UpdateAlert(target, ensnareable);
|
UpdateAlert(target, ensnareable);
|
||||||
var ev = new EnsnareRemoveEvent(component.WalkSpeed, component.SprintSpeed);
|
var ev = new EnsnareRemoveEvent(component.WalkSpeed, component.SprintSpeed);
|
||||||
RaiseLocalEvent(ensnare, ev);
|
RaiseLocalEvent(target, ev); // WD fix from ensnare to target
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ using Robust.Shared.Collections;
|
|||||||
using Robust.Shared.Enums;
|
using Robust.Shared.Enums;
|
||||||
using Robust.Shared.GameObjects.Components.Localization;
|
using Robust.Shared.GameObjects.Components.Localization;
|
||||||
using Robust.Shared.Map.Components;
|
using Robust.Shared.Map.Components;
|
||||||
|
using Content.Server.Ensnaring;
|
||||||
|
using Content.Shared.Ensnaring.Components;
|
||||||
|
using System.Linq;
|
||||||
using GrammarSystem = Content.Shared._Amour.GrammarSystem.GrammarSystem;
|
using GrammarSystem = Content.Shared._Amour.GrammarSystem.GrammarSystem;
|
||||||
|
|
||||||
namespace Content.Server.Implants;
|
namespace Content.Server.Implants;
|
||||||
@@ -45,7 +48,8 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
|||||||
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
|
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
|
||||||
[Dependency] private readonly SharedMapSystem _mapSystem = default!;
|
[Dependency] private readonly SharedMapSystem _mapSystem = default!;
|
||||||
[Dependency] private readonly IdentitySystem _identity = default!; // WD
|
[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 EntityQuery<PhysicsComponent> _physicsQuery;
|
||||||
private HashSet<Entity<MapGridComponent>> _targetGrids = [];
|
private HashSet<Entity<MapGridComponent>> _targetGrids = [];
|
||||||
@@ -90,11 +94,26 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
|||||||
|
|
||||||
private void OnFreedomImplant(EntityUid uid, SubdermalImplantComponent component, UseFreedomImplantEvent args)
|
private void OnFreedomImplant(EntityUid uid, SubdermalImplantComponent component, UseFreedomImplantEvent args)
|
||||||
{
|
{
|
||||||
if (!TryComp<CuffableComponent>(component.ImplantedEntity, out var cuffs) || cuffs.Container.ContainedEntities.Count < 1)
|
// WD EDIT START
|
||||||
return;
|
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);
|
var cuffCheck = TryComp<CuffableComponent>(component.ImplantedEntity, out var cuffs) && cuffs.Container.ContainedEntities.Count > 0;
|
||||||
args.Handled = true;
|
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)
|
private void OnActivateImplantEvent(EntityUid uid, SubdermalImplantComponent component, ActivateImplantEvent args)
|
||||||
@@ -230,7 +249,7 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
|||||||
QueueDel(uid);
|
QueueDel(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Amour Start
|
// Amour Start
|
||||||
private void OnGenderSwapImplant(EntityUid uid, SubdermalImplantComponent component, UseGenderSwapImplantEvent args)
|
private void OnGenderSwapImplant(EntityUid uid, SubdermalImplantComponent component, UseGenderSwapImplantEvent args)
|
||||||
{
|
{
|
||||||
if (component.ImplantedEntity is not { } ent)
|
if (component.ImplantedEntity is not { } ent)
|
||||||
@@ -266,5 +285,5 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem
|
|||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
QueueDel(uid);
|
QueueDel(uid);
|
||||||
}
|
}
|
||||||
//Amour End
|
// Amour End
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public sealed class NeuroStabilizationSystem : EntitySystem
|
|||||||
private void BeforeStaminaDamage(Entity<NeuroStabilizationComponent> ent, ref BeforeStaminaDamageEvent args)
|
private void BeforeStaminaDamage(Entity<NeuroStabilizationComponent> ent, ref BeforeStaminaDamageEvent args)
|
||||||
{
|
{
|
||||||
args.Cancelled = true;
|
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)
|
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.Standing;
|
||||||
using Content.Shared.StatusEffect;
|
using Content.Shared.StatusEffect;
|
||||||
using Content.Shared.Stunnable;
|
using Content.Shared.Stunnable;
|
||||||
|
using Content.Shared._White.Implants.NeuroControl;
|
||||||
|
using Content.Shared.Electrocution;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
namespace Content.Shared._White.Item.DelayedKnockdown;
|
namespace Content.Shared._White.Item.DelayedKnockdown;
|
||||||
@@ -14,6 +16,7 @@ public sealed class DelayedKnockdownOnHitSystem : EntitySystem
|
|||||||
[Dependency] private readonly SharedJitteringSystem _jitter = default!;
|
[Dependency] private readonly SharedJitteringSystem _jitter = default!;
|
||||||
[Dependency] private readonly SharedStutteringSystem _stutter = default!;
|
[Dependency] private readonly SharedStutteringSystem _stutter = default!;
|
||||||
[Dependency] private readonly IGameTiming _timing = default!;
|
[Dependency] private readonly IGameTiming _timing = default!;
|
||||||
|
[Dependency] private readonly SharedElectrocutionSystem _electrocution = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -36,6 +39,12 @@ public sealed class DelayedKnockdownOnHitSystem : EntitySystem
|
|||||||
if (!TryComp(uid, out StandingStateComponent? standingState) || !standingState.CanLieDown)
|
if (!TryComp(uid, out StandingStateComponent? standingState) || !standingState.CanLieDown)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (HasComp<NeuroStabilizationComponent>(uid))
|
||||||
|
{
|
||||||
|
_electrocution.TryDoElectrocution(uid, null, 5, TimeSpan.FromSeconds(1), false, 0.5f, null, true);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (jitterTime > TimeSpan.Zero)
|
if (jitterTime > TimeSpan.Zero)
|
||||||
_jitter.DoJitter(uid, jitterTime, true, status: statusEffects);
|
_jitter.DoJitter(uid, jitterTime, true, status: statusEffects);
|
||||||
if (stutterTime > TimeSpan.Zero)
|
if (stutterTime > TimeSpan.Zero)
|
||||||
|
|||||||
@@ -1,43 +1,4 @@
|
|||||||
Entries:
|
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
|
- author: Valtos
|
||||||
changes:
|
changes:
|
||||||
- message: "\u041D\u043E\u0432\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0438\
|
- message: "\u041D\u043E\u0432\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0438\
|
||||||
@@ -8911,3 +8872,37 @@
|
|||||||
id: 614
|
id: 614
|
||||||
time: '2024-11-30T21:01:53.0000000+00:00'
|
time: '2024-11-30T21:01:53.0000000+00:00'
|
||||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/795
|
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 = ПДА медицинского офицера
|
ent-SeniorPhysicianPDA = ПДА медицинского офицера
|
||||||
.desc = Слабо пахнет железом и химикатами. Имеет встроенный анализатор здоровья.
|
.desc = Слабо пахнет железом и химикатами. Имеет встроенный анализатор здоровья.
|
||||||
ent-SeniorOfficerPDA = ПДА ветерана СБ
|
ent-SeniorOfficerPDA = ПДА ветерана СБ
|
||||||
.desc = Избитые, потрепанные и сломанные, но едва пригодные для использования.
|
.desc = Избитый, потрепанный и сломанный, но едва пригодный для использования.
|
||||||
ent-SeniorSalvagePDA = ПДА охотника карго
|
ent-SeniorSalvagePDA = ПДА охотника карго
|
||||||
.desc = Потрепанный и воняющий кровью с потом, но пригодный для использования.
|
.desc = Потрепанный и воняющий кровью с потом, но пригодный для использования.
|
||||||
ent-PinpointerUniversal = универсальный пинпоинтер
|
ent-PinpointerUniversal = универсальный пинпоинтер
|
||||||
|
|||||||
@@ -1,2 +1,4 @@
|
|||||||
ent-KitchenSpike = мясной крюк
|
ent-KitchenSpike = мясной крюк
|
||||||
.desc = Крюк для снятия мяса с животных.
|
.desc = Крюк для снятия мяса с животных.
|
||||||
|
ent-KitchenSpikeFrame = каркас мясного крюка
|
||||||
|
.desc = Незаконченный мясной крюк, требуется ещё немного терпения.
|
||||||
|
|||||||
@@ -904,7 +904,7 @@
|
|||||||
- type: Unremoveable
|
- type: Unremoveable
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: EngineeringIDCard
|
parent: IDCardStandard
|
||||||
id: SeniorEngineerIDCard
|
id: SeniorEngineerIDCard
|
||||||
name: senior engineer ID card
|
name: senior engineer ID card
|
||||||
components:
|
components:
|
||||||
@@ -912,9 +912,11 @@
|
|||||||
layers:
|
layers:
|
||||||
- state: default
|
- state: default
|
||||||
- state: idseniorengineer
|
- state: idseniorengineer
|
||||||
|
- type: PresetIdCard
|
||||||
|
job: SeniorEngineer
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: ResearchIDCard
|
parent: IDCardStandard
|
||||||
id: SeniorResearcherIDCard
|
id: SeniorResearcherIDCard
|
||||||
name: senior researcher ID card
|
name: senior researcher ID card
|
||||||
components:
|
components:
|
||||||
@@ -922,9 +924,11 @@
|
|||||||
layers:
|
layers:
|
||||||
- state: default
|
- state: default
|
||||||
- state: idseniorresearcher
|
- state: idseniorresearcher
|
||||||
|
- type: PresetIdCard
|
||||||
|
job: SeniorResearcher
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: MedicalIDCard
|
parent: IDCardStandard
|
||||||
id: SeniorPhysicianIDCard
|
id: SeniorPhysicianIDCard
|
||||||
name: senior physician ID card
|
name: senior physician ID card
|
||||||
components:
|
components:
|
||||||
@@ -932,9 +936,11 @@
|
|||||||
layers:
|
layers:
|
||||||
- state: default
|
- state: default
|
||||||
- state: idseniorphysician
|
- state: idseniorphysician
|
||||||
|
- type: PresetIdCard
|
||||||
|
job: SeniorPhysician
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: SecurityIDCard
|
parent: IDCardStandard
|
||||||
id: SeniorOfficerIDCard
|
id: SeniorOfficerIDCard
|
||||||
name: senior officer ID card
|
name: senior officer ID card
|
||||||
components:
|
components:
|
||||||
@@ -942,3 +948,5 @@
|
|||||||
layers:
|
layers:
|
||||||
- state: default
|
- state: default
|
||||||
- state: idseniorofficer
|
- state: idseniorofficer
|
||||||
|
- type: PresetIdCard
|
||||||
|
job: SeniorOfficer
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
Empty: { state: spike }
|
Empty: { state: spike }
|
||||||
Bloody: { state: spikebloody }
|
Bloody: { state: spikebloody }
|
||||||
- type: Construction
|
- type: Construction
|
||||||
graph: MeatSpike
|
graph: MeatSpikeWD # WD Edit
|
||||||
node: MeatSpike
|
node: MeatSpike
|
||||||
- type: GuideHelp
|
- type: GuideHelp
|
||||||
guides:
|
guides:
|
||||||
|
|||||||
@@ -1017,7 +1017,7 @@
|
|||||||
id: KitchenSpike
|
id: KitchenSpike
|
||||||
name: meat spike
|
name: meat spike
|
||||||
description: A spike found in kitchens butchering animals.
|
description: A spike found in kitchens butchering animals.
|
||||||
graph: MeatSpike
|
graph: MeatSpikeWD # WD Edit
|
||||||
startNode: start
|
startNode: start
|
||||||
targetNode: MeatSpike
|
targetNode: MeatSpike
|
||||||
category: construction-category-furniture
|
category: construction-category-furniture
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
- Maintenance
|
- Maintenance
|
||||||
- Service
|
- Service
|
||||||
- External
|
- External
|
||||||
- Medical
|
- Cryogenics
|
||||||
special:
|
special:
|
||||||
- !type:AddImplantSpecial
|
- !type:AddImplantSpecial
|
||||||
implants: [ MindShieldImplant ]
|
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