Skip to content

Commit

Permalink
Fundamental Equipment: roundstart loadout toolset implants (#453)
Browse files Browse the repository at this point in the history
* Add first-pass on roundstart implant additions

* Remove scalpel from triage actuator and replace with retractor

* Remove unused integrated scalpel (also causing CI failures?)

* Add initial pass on binocular optics (x2)

* Further reduce integrated arc welder force to 8 from 10

* Add Blacksteel forging toolset roundstart aug

* Add bureaucrat & cargo toolset, finally add right-arm implant references

* Add nutriment pump and enable chest implants

* Drop integrated serving tray to 3 slots instead of 7

* Associative list shenanigans

* Increase toolspeed to 1.5 (per Paxil's suggestion)

* Increase integrated arc welder force to 12 from 8

* Reduce shipbreaker toolset to 6pts instead of 8 (2pts per tool)

* Avast, alack and woe

* Increase toolspeed to 1.25

* Add approved/deny stamps to jacent toolset

* Don't binocular eye-zoom when blind
  • Loading branch information
Ephemeralis authored and FFMirrorBot committed Feb 13, 2024
1 parent 4554083 commit 8b24a8e
Show file tree
Hide file tree
Showing 8 changed files with 439 additions and 2 deletions.
3 changes: 3 additions & 0 deletions code/__DEFINES/~nova_defines/manufacturer_strings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
#define COMPANY_ALLSTAR "It has <b>[span_red("Allstar Lasers Inc.")]</b> stamped onto it."
#define COMPANY_MICRON "It has <b>[span_cyan("Micron Control Sys.")]</b> cut into it."

#define COMPANY_NAKAMURA "It has <b>[span_orange("Nakamura Engineering")]</b> embossed onto it."
#define COMPANY_BLACKSTEEL "It bears the <b>[span_grey("crossed sword and hammer")]</b> crafter's mark of the <b>[span_grey("Jarnsmiour Blacksteel Foundation")]</b> upon its fore."

#define COMPANY_SZOT "It has a small <b>[span_engradio("three point crown")]</b> alongside <b>[span_engradio("Szot Dynamica")]</b> cut into it."
#define COMPANY_TKACH "It has <b>[span_robot("Tkach Design Bureau")]</b> stamped onto it."
#define COMPANY_SAKHNO "It has <b>[span_green("Sakhno Concern")]</b> stamped onto it."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"eyes" = "Eyes",
"tongue" = "Tongue",
"Mouth implant" = "Mouth implant",
"Chest implant" = "Chest implant",
"Left Arm implant" = "Left Arm implant",
"Right Arm implant" = "Right Arm implant",
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,119 @@
/datum/augment_item/implant/chest
slot = AUGMENT_SLOT_CHEST_IMPLANT

/datum/augment_item/implant/chest/nutriment_pump
name = "Nutriment Pump"
cost = 4
path = /obj/item/organ/internal/cyberimp/chest/nutriment

//LEFT ARM IMPLANTS
/datum/augment_item/implant/l_arm
slot = AUGMENT_SLOT_LEFT_ARM_IMPLANT

/datum/augment_item/implant/l_arm/civilian_lighter
name = "Left Thumbtip Lighter"
cost = 2
path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm

/datum/augment_item/implant/l_arm/razor_claws
name = "Left Razor Claws"
name = "Left Razor Claws (Knife + Wirecutters)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm

/datum/augment_item/implant/l_arm/adjuster
name = "Left Adjuster Implant (Screwdriver + Wrench)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/adjuster/left_arm

/datum/augment_item/implant/l_arm/bureaucracy
name = "Left Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm

/datum/augment_item/implant/l_arm/cargo
name = "Left FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/cargo/left_arm

/datum/augment_item/implant/l_arm/civilian_barstaff
name = "Left Waitstaff's Toolset Implant (Serving Tray + Rag)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm

/datum/augment_item/implant/l_arm/emt_triage
name = "Left Triage Actuator Implant (Drapes + Retractor + Hemostat)"
cost = 6
path = /obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm

/datum/augment_item/implant/l_arm/blacksteel_forging
name = "Left Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)"
cost = 6
path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm

/datum/augment_item/implant/l_arm/arc_welder
name = "Left Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)"
cost = 6
path = /obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm

/datum/augment_item/implant/l_arm/electrical_toolset
name = "Left Electrical Toolset Implant (Screwdriver + Multitool)"
cost = 8
path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm

//RIGHT ARM IMPLANTS
/datum/augment_item/implant/r_arm
slot = AUGMENT_SLOT_RIGHT_ARM_IMPLANT

/datum/augment_item/implant/r_arm/civilian_lighter
name = "Right Thumbtip Lighter"
cost = 2
path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm

/datum/augment_item/implant/r_arm/razor_claws
name = "Right Razor Claws"
name = "Right Razor Claws (Knife + Wirecutters)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm

/datum/augment_item/implant/r_arm/adjuster
name = "Right Adjuster Implant (Screwdriver + Wrench)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/adjuster/right_arm

/datum/augment_item/implant/r_arm/bureaucracy
name = "Right Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm

/datum/augment_item/implant/r_arm/cargo
name = "Right FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/cargo/right_arm

/datum/augment_item/implant/r_arm/civilian_barstaff
name = "Right Waitstaff's Toolset Implant (Serving Tray + Rag)"
cost = 4
path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm

/datum/augment_item/implant/r_arm/emt_triage
name = "Right Triage Actuator Implant (Drapes + Retractor + Hemostat)"
cost = 6
path = /obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm

/datum/augment_item/implant/r_arm/blacksteel_forging
name = "Right Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)"
cost = 6
path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm

/datum/augment_item/implant/r_arm/arc_welder
name = "Right Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)"
cost = 6
path = /obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm

/datum/augment_item/implant/r_arm/electrical_toolset
name = "Right Electrical Toolset Implant (Screwdriver + Multitool)"
cost = 8
path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm

//EYES IMPLANTS
/datum/augment_item/implant/eyes
slot = AUGMENT_SLOT_EYES_IMPLANT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,11 @@
allowed_biotypes = MOB_ORGANIC|MOB_ROBOTIC
cost = 1

/datum/augment_item/organ/eyes/binoculars
name = "Digital Magnification Optics (x3)"
cost = 4
path = /obj/item/organ/internal/eyes/robotic/binoculars

//TONGUES
/datum/augment_item/organ/tongue
slot = AUGMENT_SLOT_TONGUE
Expand Down
99 changes: 99 additions & 0 deletions modular_nova/modules/roundstart_implants/code/loadout_implants.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// Core balance principles with these roundstart augments is that they are SLOW. 2 toolspeed minimum where possible - finding actual things in round should always be better, this is for flavor and accessibility. The accessibility alone already provides these with a lot of value.

// EYE IMPLANTS

/obj/item/organ/internal/eyes/robotic/binoculars
name = "digital magnification optics"
desc = "Commonly used on frontier worlds with comparatively vast overland distances to aid in visual acquisition of coworkers and targets."
actions_types = list(/datum/action/item_action/organ_action/toggle)
var/zoomed = FALSE
var/range_power = 2 // what kind of range modifier do we feed to the scope component?

/obj/item/organ/internal/eyes/robotic/binoculars/Initialize(mapload)
. = ..()
AddComponent(/datum/component/scope, range_modifier = range_power)

/obj/item/organ/internal/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype)
if (istype(actiontype, /datum/action/item_action/organ_action/toggle))
toggle_active(user)

/obj/item/organ/internal/eyes/robotic/binoculars/proc/toggle_active(mob/user)
//this is so unbelievably, hysterically jank. i actually cannot believe this works. what the fuck
var/datum/component/scope/zoom = src.GetComponent(/datum/component/scope)
if (zoomed)
zoom.stop_zooming(user)
zoomed = FALSE
else
//check if they're blind
if (user.is_blind())
user.balloon_alert(user, "can't activate magnification while blind!")
return

zoom.zoom(user)
zoomed = TRUE

// ARM IMPLANTS
/obj/item/organ/internal/cyberimp/arm/adjuster
name = "adjuster arm implant"
desc = "A miniaturized toolset implant containing a simple fingertip-mounted universal screwdriver bit with an inverted torque-wrench head. Most commonly used when rearranging furniture or other station machinery."
items_to_create = list(/obj/item/wrench/integrated, /obj/item/screwdriver/integrated)

/obj/item/organ/internal/cyberimp/arm/adjuster/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA)

/obj/item/organ/internal/cyberimp/arm/electrical_toolset
name = "electrical toolset implant"
desc = "Bereft of any kind of insulation to speak of, this aug has a very distinct nickname amongst frontier outpost crews: 'the sizzler'. Often used in high verticality environments where loadout space is at a premium."
items_to_create = list(/obj/item/screwdriver/integrated, /obj/item/multitool/integrated)

/obj/item/organ/internal/cyberimp/arm/electrical_toolset/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA)

/obj/item/organ/internal/cyberimp/arm/arc_welder
name = "shipbreaker's toolset implant"
desc = "A specialized salvage-grade implant that houses an arc welder, miniaturized crowbar within the bearer's arm, plus a fingertip torque-wrench rated for enough newtons to get the job done. Renowned across the frontier for being the 'trashy tattoo' equivalent of someone's first aug."
items_to_create = list(/obj/item/wrench/integrated, /obj/item/crowbar/integrated, /obj/item/weldingtool/electric/arc_welder/integrated)

/obj/item/organ/internal/cyberimp/arm/arc_welder/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER)

/obj/item/organ/internal/cyberimp/arm/emt_triage
name = "triage actuator implant"
desc = "Pioneered by Interdyne Pharmaceuticals for use in their frontier postings, this set of in-arm augments allows medical staff to perform basic life-saving surgeries out on the field with the assistance of a bladed instrument."
items_to_create = list(/obj/item/surgical_drapes/integrated, /obj/item/retractor/integrated, /obj/item/hemostat/integrated)

/obj/item/organ/internal/cyberimp/arm/emt_triage/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_INTERDYNE)

/obj/item/organ/internal/cyberimp/arm/civilian_barstaff
name = "waitstaff implant"
desc = "The galactic service industry demands only the finest from its (underpaid) employees, leading to the development of this sordid piece of technology which substitutes a user's organic arm for a food storage space and an integrated chamois cleaning cloth. Why?"
items_to_create = list(/obj/item/storage/bag/tray/integrated, /obj/item/reagent_containers/cup/rag/integrated)

/obj/item/organ/internal/cyberimp/arm/civilian_lighter
name = "thumbtip lighter implant"
desc = "This extraordinarily useless implant was a product of market demand, and it exists because the galactic diaspora apparently craves the ability to light things with their thumbtips."
items_to_create = list(/obj/item/lighter/integrated)

/obj/item/organ/internal/cyberimp/arm/blacksteel_forging
name = "Blacksteel 'Starforge' metalworking toolset implant"
desc = "A galactic favorite amongst burgeoning starfarer races with a fascination for basic metallurgy or mundane weaponry, this unlikely toolset augmentation is one of the Foundation's most popular products."
items_to_create = list(/obj/item/forging/hammer/integrated, /obj/item/forging/tongs/integrated, /obj/item/forging/billow/integrated)

/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_BLACKSTEEL)

/obj/item/organ/internal/cyberimp/arm/bureaucracy
name = "bureaucrat's 'Jacent' toolset implant"
desc = "Popular amongst coreworld corporates, this integrated toolset includes a wrist-sheathed four-colour pen, a special motorized sheaf hollow for holding up to ten pieces of galactic-standard A4 paper and a set of two fingertip stamps for approving and denying things. Does not replenish."
items_to_create = list(/obj/item/pen/fourcolor/integrated, /obj/item/paper_bin/integrated, /obj/item/stamp/integrated, /obj/item/stamp/denied/integrated)

/obj/item/organ/internal/cyberimp/arm/cargo
name = "FTU 'Deckhand' toolset implant"
desc = "Containing a fingertip-mounted universal scanner and a boxcutter, deck workers across the sector favor this cheap and effective implant as both a means of self-defense from irate consumers and for keeping a set of handy scanners quite literally, close at hand."
items_to_create = list(/obj/item/universal_scanner/integrated, /obj/item/boxcutter/extended/integrated)
83 changes: 83 additions & 0 deletions modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
//This entire file just contains special subtypes for the loadout_implants roundstart augs that makes them work with the system.
//Purely code readability.

// ARM IMPLANTS
/obj/item/organ/internal/cyberimp/arm/adjuster/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/adjuster/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/lighter/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/lighter/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/cargo/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG

/obj/item/organ/internal/cyberimp/arm/cargo/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
Loading

0 comments on commit 8b24a8e

Please sign in to comment.