-
Notifications
You must be signed in to change notification settings - Fork 378
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Machine Incompatible Trait (#2395)
* Mostly done, just needs some messaging added Going to change the description for the unborgable brain and add a popup. * Inspection says if brain has trait * Comments * Moved comment, removed body, localized, etc. * move to shared, shitmed ready, add warning to health analyzer * pro * remove old component * untroll brain system * * * fix --------- Signed-off-by: deltanedas <[email protected]> Co-authored-by: deltanedas <@deltanedas:kde.org> Co-authored-by: deltanedas <[email protected]>
- Loading branch information
1 parent
2d6d852
commit d361ece
Showing
8 changed files
with
94 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
using Robust.Shared.GameStates; | ||
|
||
namespace Content.Shared._DV.Traits.Assorted; | ||
|
||
/// <summary> | ||
/// This is used for the unborgable trait, which blacklists a brain from MMIs. | ||
/// If this is added to a body, it gets moved to its brain if it has one. | ||
/// </summary> | ||
[RegisterComponent, NetworkedComponent] | ||
public sealed partial class UnborgableComponent : Component; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
using Content.Shared.Body.Components; | ||
using Content.Shared.Body.Organ; | ||
using Content.Shared.Body.Systems; | ||
using Content.Shared.Examine; | ||
using Content.Shared.Movement.Components; // TODO: use BrainComponent instead of InputMover when shitmed is merged | ||
using Robust.Shared.Utility; | ||
|
||
namespace Content.Shared._DV.Traits.Assorted; | ||
|
||
/// <summary> | ||
/// Adds a warning examine message to brains with <see cref="UnborgableComponent"/>. | ||
/// </summary> | ||
public sealed class UnborgableSystem : EntitySystem | ||
{ | ||
[Dependency] private readonly SharedBodySystem _body = default!; | ||
|
||
public override void Initialize() | ||
{ | ||
base.Initialize(); | ||
|
||
SubscribeLocalEvent<UnborgableComponent, MapInitEvent>(OnMapInit); | ||
SubscribeLocalEvent<UnborgableComponent, ExaminedEvent>(OnExamined); | ||
} | ||
|
||
/// <summary> | ||
/// Returns true if a mob's brain has <see cref="UnborgableComponent"/>. | ||
/// </summary> | ||
public bool IsUnborgable(Entity<BodyComponent?> ent) | ||
{ | ||
// technically this will apply for any organ not just brain, but assume nobody will be evil and do that | ||
return _body.GetBodyOrganEntityComps<UnborgableComponent>(ent).Count > 0; | ||
} | ||
|
||
private void OnMapInit(Entity<UnborgableComponent> ent, ref MapInitEvent args) | ||
{ | ||
if (!TryComp<BodyComponent>(ent, out var body)) | ||
return; | ||
|
||
var brains = _body.GetBodyOrganEntityComps<InputMoverComponent>((ent.Owner, body)); | ||
foreach (var brain in brains) | ||
{ | ||
EnsureComp<UnborgableComponent>(brain); | ||
} | ||
} | ||
|
||
private void OnExamined(Entity<UnborgableComponent> ent, ref ExaminedEvent args) | ||
{ | ||
// need a health analyzer to see if someone can't be borged, can't just look at them and know | ||
if (!args.IsInDetailsRange || HasComp<BodyComponent>(ent)) | ||
return; | ||
|
||
args.PushMarkup(Loc.GetString("brain-cannot-be-borged-message")); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
borg-type-security-name = Security | ||
borg-type-security-desc = Assist security in the fight for justice by detaining dangerous criminals. | ||
borg-type-security-transponder = security cyborg | ||
brain-cannot-be-borged-message = [color=red]This brain is damaged beyond use.[/color] |
1 change: 1 addition & 0 deletions
1
Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
health-analyzer-window-entity-unborgable-text = [color=red]Patient's brain signatures are incompatible with MMI technology![/color] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters