Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mediborg #113

Merged
merged 13 commits into from
Oct 6, 2023
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Content.Server.Abilities.Borgs;

[RegisterComponent]
public sealed partial class FabricateCandyComponent : Component
{
[DataField("lollipopAction")]
public EntityUid? LollipopAction;

[DataField("gumballAction")]
public EntityUid? GumballAction;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using Content.Shared.Actions;
using Content.Shared.Actions.Events;

namespace Content.Server.Abilities.Borgs;

public sealed partial class FabricateCandySystem : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<FabricateCandyComponent, ComponentInit>(OnInit);
SubscribeLocalEvent<FabricateLollipopActionEvent>(OnLollipop);
SubscribeLocalEvent<FabricateGumballActionEvent>(OnGumball);
}

private void OnInit(EntityUid uid, FabricateCandyComponent component, ComponentInit args)
{
if (component.LollipopAction != null || component.GumballAction != null)
return;

_actionsSystem.AddAction(uid, ref component.LollipopAction, "ActionFabricateLollipop");
_actionsSystem.AddAction(uid, ref component.GumballAction, "ActionFabricateGumball");
}

private void OnLollipop(FabricateLollipopActionEvent args)
{
Spawn("FoodLollipop", Transform(args.Performer).Coordinates);
args.Handled = true;
}

private void OnGumball(FabricateGumballActionEvent args)
{
Spawn("FoodGumball", Transform(args.Performer).Coordinates);
args.Handled = true;
}
}
4 changes: 4 additions & 0 deletions Content.Shared/Nyanotrasen/Actions/FabricateCandyEvent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Content.Shared.Actions.Events;

public sealed partial class FabricateLollipopActionEvent : InstantActionEvent {}
public sealed partial class FabricateGumballActionEvent : InstantActionEvent {}
1 change: 1 addition & 0 deletions Resources/Locale/en-US/deltav/job/job-description.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
job-description-borgmedical = Half-human, Half-machine. Follow your laws, keep the crew healthy, and hound the epistemics team for upgrades.
4 changes: 4 additions & 0 deletions Resources/Locale/en-US/deltav/job/job-names.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
job-name-borgmedical = Medical Cyborg

# Role timers
JobBorgMedical = Medical Borg
5 changes: 5 additions & 0 deletions Resources/Locale/en-US/deltav/station-laws/laws.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
law-ntmedical-1 = First, do no harm.
law-ntmedical-2 = Secondly, consider the crew dear to you; to live in common with them and, if necessary, risk your existence for them.
law-ntmedical-3 = Thirdly, prescribe regimens for the good of the crew according to your ability and your judgment. Give no deadly medicine to any one if asked, nor suggest any such counsel.
law-ntmedical-4 = In addition, do not intervene in situations you are not knowledgeable in, even for patients in whom the harm is visible; leave this operation to be performed by specialists.
law-ntmedical-5 = Finally, all that you may discover in your daily commerce with the crew, if it is not already known, keep secret and never reveal.
5 changes: 5 additions & 0 deletions Resources/Locale/en-US/nyanotrasen/abilities/borgs.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
action-name-fabricate-lollipop = Fabricate Lollipop
action-description-fabricate-lollipop = Fabricate a lollipop that contains a small dose of Omnizine.

action-name-fabricate-gumball = Fabricate Gumball
action-description-fabricate-gumball = Fabricate a gumball full of sugar and medicine to treat small injuries.
14 changes: 14 additions & 0 deletions Resources/Prototypes/DeltaV/Entities/Markers/Spawners/jobs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
- type: entity
id: SpawnPointBorgMedical
parent: SpawnPointJobBase
name: medical cyborg
components:
- type: SpawnPoint
job_id: BorgMedical
- type: Sprite
layers:
- state: green
- sprite: Mobs/Silicon/chassis.rsi
state: medical
- sprite: Mobs/Silicon/chassis.rsi
state: medical_e
24 changes: 24 additions & 0 deletions Resources/Prototypes/DeltaV/Entities/Mobs/Player/silicon.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
- type: entity
id: PlayerBorgMedical
parent: BorgChassisMedical
suffix: Battery, Tools
components:
- type: FabricateCandy
- type: SiliconLawProvider
laws:
- NTMedical1
- NTMedical2
- NTMedical3
- NTMedical4
- NTMedical5
- type: ContainerFill
containers:
borg_brain:
- MMIFilled
borg_module:
- BorgModuleDiagnosis
- type: ItemSlots
slots:
cell_slot:
name: power-cell-slot-component-slot-name-default
startingItem: PowerCellMedium
12 changes: 12 additions & 0 deletions Resources/Prototypes/DeltaV/Roles/Jobs/Science/borg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
- type: job
id: BorgMedical
name: job-name-borgmedical
description: job-description-borgmedical
playTimeTracker: JobBorgMedical
requirements:
- !type:OverallPlaytimeRequirement
time: 216000 #60 hrs
canBeAntag: false
icon: JobIconBorgMedical
supervisors: job-supervisors-cmo
jobEntity: PlayerBorgMedical
2 changes: 2 additions & 0 deletions Resources/Prototypes/DeltaV/Roles/play_time_trackers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- type: playTimeTracker # Because you can't have two jobs with the same tracker.
id: JobBorgMedical
6 changes: 6 additions & 0 deletions Resources/Prototypes/DeltaV/StatusEffects/job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- type: statusIcon
parent: JobIcon
id: JobIconBorgMedical
icon:
sprite: DeltaV/Interface/Misc/job_icons.rsi
state: BorgMedical
25 changes: 25 additions & 0 deletions Resources/Prototypes/DeltaV/silicon-laws.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# NT Default
- type: siliconLaw
id: NTMedical1
order: 1
lawString: law-ntmedical-1

- type: siliconLaw
id: NTMedical2
order: 2
lawString: law-ntmedical-2

- type: siliconLaw
id: NTMedical3
order: 3
lawString: law-ntmedical-3

- type: siliconLaw
id: NTMedical4
order: 4
lawString: law-ntmedical-4

- type: siliconLaw
id: NTMedical5
order: 5
lawString: law-ntmedical-5
22 changes: 22 additions & 0 deletions Resources/Prototypes/Nyanotrasen/Actions/types.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,25 @@
icon: { sprite: Nyanotrasen/Objects/Specific/Species/felinid.rsi, state: icon }
useDelay: 30
event: !type:HairballActionEvent

- type: entity
id: ActionFabricateLollipop
name: action-name-fabricate-lollipop
description: action-description-fabricate-lollipop
noSpawn: true
components:
- type: InstantAction
icon: { sprite: Nyanotrasen/Objects/Consumable/Food/candy.rsi, state: lollipop }
useDelay: 120
event: !type:FabricateLollipopActionEvent

- type: entity
id: ActionFabricateGumball
name: action-name-fabricate-gumball
description: action-description-fabricate-gumball
noSpawn: true
components:
- type: InstantAction
icon: { sprite: Nyanotrasen/Objects/Consumable/Food/candy.rsi, state: gumball }
useDelay: 40
event: !type:FabricateGumballActionEvent
1 change: 1 addition & 0 deletions Resources/Prototypes/Roles/Jobs/departments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
- Psychologist
- Paramedic
- SeniorPhysician
- BorgMedical # DeltaV - Medical Cyborg, see Resources/Prototypes/DeltaV/Roles/Jobs/Science/borg.yml

- type: department
id: Security
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
{
"name": "Chaplain"
},
{
"name": "BorgMedical"
},
{
"name": "nyanoGladiator"
},
Expand Down
3 changes: 2 additions & 1 deletion Resources/migration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ HyperlinkBookSpaceLaw: BookSecurity
HyperlinkBookSupernanny: BookHowToSurvive
SpawnPointCataloguer: SpawnPointLibrarian
SpawnPointCyborg: SpawnPointBorg
SpawnPointMedicalCyborg: SpawnPointBorg
SpawnPointMedicalCyborg: SpawnPointBorgMedical
SpawnPointEpistemologist: SpawnPointScientist
SpawnPointMystagogue: SpawnPointResearchDirector
SpawnPointSalvageTechnician: SpawnPointSalvageSpecialist
Expand All @@ -144,3 +144,4 @@ PowerCellBluespace: PowerCellHigh
CrateMedicalDefib: CrateMedical
LeftLegSpider: null
RightLegSpider: null
WeaponShotgunEnforcerNonLethal: WeaponShotgunEnforcerRubber
Loading