Psionic Prosthetics (#4689)

* AAAAAAAAA

* consistency

* add to emag packs

* add blacklist system and blacklist high risk items and bags thank you javadocs

* add DeltaV comments

* make comment better fit comment standards
This commit is contained in:
AeraAulin 2025-11-19 17:58:08 -08:00 committed by GitHub
parent 40332af3b1
commit 2679bb238a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 199 additions and 5 deletions

View File

@ -1,4 +1,5 @@
using Robust.Shared.GameStates;
using Content.Shared.Whitelist; // DeltaV
namespace Content.Shared.ItemRecall;
@ -40,4 +41,10 @@ public sealed partial class ItemRecallComponent : Component
/// </summary>
[DataField, AutoNetworkedField]
public EntityUid? MarkedEntity;
/// <summary>
// DeltaV - Prevent steal target items from being marked.
/// <summary>
[DataField]
public EntityWhitelist? MarkedEntityBlacklist = new();
}

View File

@ -5,6 +5,7 @@ using Content.Shared.Hands.EntitySystems;
using Content.Shared.IdentityManagement;
using Content.Shared.Popups;
using Content.Shared.Projectiles;
using Content.Shared.Whitelist; //DeltaV
using Robust.Shared.GameStates;
using Robust.Shared.Player;
@ -22,6 +23,7 @@ public abstract partial class SharedItemRecallSystem : EntitySystem
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedPopupSystem _popups = default!;
[Dependency] private readonly SharedProjectileSystem _proj = default!;
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; // DeltaV
public override void Initialize()
{
@ -60,9 +62,11 @@ public abstract partial class SharedItemRecallSystem : EntitySystem
return;
}
_popups.PopupClient(Loc.GetString("item-recall-item-marked", ("item", markItem.Value)), args.Performer, args.Performer);
TryMarkItem(ent, markItem.Value);
// DeltaV
if (TryMarkItem(ent, markItem.Value))
_popups.PopupClient(Loc.GetString("item-recall-item-marked", ("item", markItem.Value)), args.Performer, args.Performer);
return;
// DeltaV
}
RecallItem(ent.Comp.MarkedEntity.Value);
@ -96,13 +100,20 @@ public abstract partial class SharedItemRecallSystem : EntitySystem
TryUnmarkItem(ent);
}
private void TryMarkItem(Entity<ItemRecallComponent> ent, EntityUid item)
// DeltaV - Change to return bool and add blacklist check
private bool TryMarkItem(Entity<ItemRecallComponent> ent, EntityUid item)
{
if (_actions.GetAction(ent.Owner) is not {} action)
return;
return false;
if (action.Comp.AttachedEntity is not {} user)
return;
return false;
if (_whitelistSystem.IsBlacklistPass(ent.Comp.MarkedEntityBlacklist, item))
{
_popups.PopupClient(Loc.GetString("item-recall-item-steal-target", ("item", item)), user, user);
return false;
}
AddToPvsOverride(item, user);
@ -114,7 +125,9 @@ public abstract partial class SharedItemRecallSystem : EntitySystem
Dirty(item, marker);
UpdateActionAppearance((action, action, ent));
return true;
}
// END DeltaV
private void TryUnmarkItem(EntityUid item)
{

View File

@ -0,0 +1 @@
item-recall-item-steal-target = {CAPITALIZE(THE($item))}'s potential rejects the mark.

View File

@ -9,6 +9,7 @@ research-technology-engineering-eva = EVA PPE Suits
# Experimental
research-technology-cloning = Cloning
research-technology-artifact-display = Artifact Display Technology
research-technology-psionic-prosthetics = Psionic Prosthetics
# Civilian
research-technology-civilian-mechs = Civilian Mechs
@ -29,3 +30,4 @@ research-technology-robust-melee = Robust Melee
research-technology-incendiary-laser-weapons = Incendiary Laser Weapons
research-technology-security-eva = EVA Armored Suits
research-technology-salvage-eva = EVA Xeno-fighting Suits
research-technology-offensive-psionic-prosthetics = Offensive Psionic Prosthetics

View File

@ -345,6 +345,7 @@
- MechEquipment
- Surgery # DeltaV - Share Surgery Parts between Epi and Med.
- CyberneticsRobotics # DeltaV - Share Surgery Parts between Epi and Med.
- PsionicProsthetics # DeltaV
- type: EmagLatheRecipes # DeltaV
emagStaticPacks:
- RoboticsEmagStatic
@ -357,6 +358,7 @@
- SalvageHardsuits
- ParamedicHardsuit
- EngineeringHardsuits
- AdvancedPsionicProsthetics
# End DeltaV Additions
- type: MaterialStorage
whitelist:
@ -455,6 +457,7 @@
- SecurityWeapons
- SpecOpsGoogles # DeltaV
#- SecurityDisablers # DeltaV - made roundstart
- AdvancedPsionicProsthetics # DeltaV
- type: MaterialStorage
whitelist:
tags:

View File

@ -21,3 +21,7 @@
- type: InstantAction
event: !type:OnItemRecallActionEvent
- type: ItemRecall
markedEntityBlacklist: # DeltaV
tags:
- HighRiskItem
- Backpack

View File

@ -0,0 +1,64 @@
- type: entity
parent: LeftArmCyberneticBase
id: ForcewallLeftArm
name: FWL left arm
description: A prosthetic arm made by blending advanced cybernetics and powerful psionics. This one grants the use of the ability forcewall.
components:
- type: BodyPart
onAdd:
- type: ActionGrant
actions:
- ActionForceWall
- type: Psionic
- type: entity
parent: LeftArmCyberneticBase
id: RecallLeftArm
name: RCL left arm
description: A prosthetic arm made by blending advanced cybernetics and powerful psionics. This one grants the use of the ability Recall.
components:
- type: BodyPart
onAdd:
- type: ActionGrant
actions:
- ActionItemRecall
- type: Psionic
- type: entity
parent: LeftArmCyberneticBase
id: DispelLeftArm
name: DSP left arm
description: A prosthetic arm made by blending advanced cybernetics and powerful psionics. This one grants the use of the ability Dispel.
components:
- type: BodyPart
onAdd:
- type: ActionGrant
actions:
- ActionDispel
- type: Psionic
- type: entity
parent: LeftArmCyberneticBase
id: PyroLeftArm
name: BRN left arm
description: A prosthetic arm made by blending advanced cybernetics and powerful psionics. This one grants the use of the ability Pyrokinesis.
components:
- type: BodyPart
onAdd:
- type: ActionGrant
actions:
- ActionPyrokinesis
- type: Psionic
- type: entity
parent: LeftArmCyberneticBase
id: ZapLeftArm
name: ZAP left arm
description: A prosthetic arm made by blending advanced cybernetics and powerful psionics. This one grants the use of the ability Noospheric Zap.
components:
- type: BodyPart
onAdd:
- type: ActionGrant
actions:
- ActionNoosphericZap
- type: Psionic

View File

@ -76,3 +76,10 @@
- AugmentBotanyPanelElectronics
- AugmentSurgeryPanelElectronics
- AugmentPaperworkPanelElectronics
- type: latheRecipePack
id: PsionicProsthetics
recipes:
- DispelLeftArm
- RecallLeftArm
- ForcewallLeftArm

View File

@ -100,3 +100,9 @@
recipes:
- ClothingOuterHardsuitEVAPrisoner
- ClothingHeadHelmetEVALarge
- type: latheRecipePack
id: AdvancedPsionicProsthetics
recipes:
- PyroLeftArm
- ZapLeftArm

View File

@ -242,3 +242,39 @@
Plasma: 1000
Plastic: 1000
Gold: 500
- type: latheRecipe
id: ForcewallLeftArm
result: ForcewallLeftArm
categories:
- Robotics
completetime: 5
materials:
Steel: 1500
Silver: 100
Plasma: 500
Bluespace: 300
- type: latheRecipe
id: DispelLeftArm
result: DispelLeftArm
categories:
- Robotics
completetime: 5
materials:
Steel: 1500
Silver: 100
Plasma: 500
Bluespace: 300
- type: latheRecipe
id: RecallLeftArm
result: RecallLeftArm
categories:
- Robotics
completetime: 5
materials:
Steel: 1500
Silver: 100
Plasma: 500
Bluespace: 300

View File

@ -352,3 +352,27 @@
Silver: 1500
Gold: 500
Wood: 300
- type: latheRecipe
id: PyroLeftArm
result: PyroLeftArm
categories:
- Robotics
completetime: 5
materials:
Steel: 1500
Silver: 100
Plasma: 500
Bluespace: 300
- type: latheRecipe
id: ZapLeftArm
result: ZapLeftArm
categories:
- Robotics
completetime: 5
materials:
Steel: 1500
Silver: 100
Plasma: 500
Bluespace: 300

View File

@ -151,3 +151,16 @@
- TelescopicShield
- BorgModuleSecurityEscalate
- BorgModuleSecurityBastion
- type: technology
id: OffensivePsionicProsthetics
name: research-technology-offensive-psionic-prosthetics
icon:
sprite: _DV/Interface/Actions/actions_psionics.rsi
state: pyrokinesis
discipline: Arsenal
tier: 2
cost: 12500
recipeUnlocks:
- PyroLeftArm
- ZapLeftArm

View File

@ -9,3 +9,17 @@
cost: 5000
recipeUnlocks:
- ArtifactDisplayCaseMachineCircuitBoard
- type: technology
id: PsionicProsthetics
name: research-technology-psionic-prosthetics
icon:
sprite: _DV/Interface/Actions/actions_psionics.rsi
state: dispel
discipline: Experimental
tier: 2
cost: 10000
recipeUnlocks:
- DispelLeftArm
- RecallLeftArm
- ForcewallLeftArm