Merges the Hug Module With the Cyborg Gripper (#26007)

* Hugs

* Update cyborg_gripper.dm

* Update cyborg_gripper.dm

* Update cyborg_gripper.dm

* AGHHH!

* Update code/game/objects/items/robot/cyborg_gripper.dm

Co-authored-by: Sheep <46016730+Scribble-Sheep@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update cyborg_gripper.dm

* Fixing some minor typos for cyborg upgrade flavour text

Throws in some missing apostrophes, capitalisation, and the letter "s."

* Briefcase Full of Cash buff

Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr

* Reverts double-feature PR

* Reverts a broken revert

* Reverting again because Ebba told me to

* And reverting yet again

* Update robot_upgrades.dm

* Update cyborg_gripper.dm

* Apply suggestions from code review

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update robot_modules.dm

* Apply suggestions from code review

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update code/game/objects/items/robot/cyborg_gripper.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

---------

Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Co-authored-by: Sheep <46016730+Scribble-Sheep@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
CRUNCH
2024-08-07 13:07:36 +00:00
committed by GitHub
co-authored by Sheep Burzah
parent 9e02af5154
commit 2c1fcbd7da
3 changed files with 356 additions and 293 deletions
@@ -324,7 +324,8 @@
/obj/item/robot_module/proc/handle_death(mob/living/silicon/robot/R, gibbed)
return
// Medical cyborg module.
// MARK: Robot Modules
// Medical
/obj/item/robot_module/medical
name = "medical robot module"
module_type = "Medical"
@@ -337,7 +338,6 @@
/obj/item/borg_defib,
/obj/item/handheld_defibrillator,
/obj/item/roller_holder,
/obj/item/borg/cyborghug,
/obj/item/reagent_containers/borghypo,
/obj/item/scalpel/laser/laser1,
/obj/item/hemostat,
@@ -369,20 +369,24 @@
if(G)
G.drop_gripped_item(silent = TRUE)
// Disable safeties on the borg's defib.
// Emag the robot's equipment.
/obj/item/robot_module/medical/emag_act(mob/user)
. = ..()
for(var/obj/item/borg_defib/F in modules)
F.emag_act()
for(var/obj/item/reagent_containers/borghypo/F in modules)
F.emag_act()
for(var/obj/item/gripper/F in modules)
F.emag_act()
// Enable safeties on the borg's defib.
// Remove the emagging on the robot's equipment.
/obj/item/robot_module/medical/unemag()
for(var/obj/item/borg_defib/F in modules)
F.emag_act()
for(var/obj/item/reagent_containers/borghypo/F in modules)
F.emag_act()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
/// Malf Syringe Gun
@@ -438,7 +442,7 @@
if(emagged)
reagents.check_and_add("facid", volume, 2 * coeff)
// Engineering cyborg module.
// Engineering
/obj/item/robot_module/engineering
name = "engineering robot module"
module_type = "Engineer"
@@ -485,7 +489,17 @@
if(istype(P))
P.drop_inventory(R)
// Security cyborg module.
/obj/item/robot_module/engineering/emag_act(mob/user)
. = ..()
for(var/obj/item/gripper/F in modules)
F.emag_act()
/obj/item/robot_module/engineering/unemag()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
// Security
/obj/item/robot_module/security
name = "security robot module"
module_type = "Security"
@@ -511,7 +525,7 @@
if(B)
B.link_new_cell(unlink_cell)
// Janitor cyborg module.
// Janitor
/obj/item/robot_module/janitor
name = "janitorial robot module"
module_type = "Janitor"
@@ -602,7 +616,7 @@
H.KnockDown(4 SECONDS)
add_attack_logs(user, H, "Leg swept with cyborg combat broom", ATKLOG_ALL)
// Service cyborg module.
// Service
/obj/item/robot_module/butler
name = "service robot module"
module_type = "Service"
@@ -639,6 +653,16 @@
if(istype(T))
T.drop_inventory(R)
/obj/item/robot_module/butler/emag_act(mob/user)
. = ..()
for(var/obj/item/gripper/F in modules)
F.emag_act()
/obj/item/robot_module/butler/unemag()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
// This is a special type of beer given when emagged, one sip and the target falls asleep.
/obj/item/reagent_containers/drinks/cans/beer/sleepy_beer
name = "Mickey Finn's Special Brew"
@@ -667,6 +691,7 @@
R.add_language("Neo-Russkiya", 1)
R.add_language("Tkachi", 1)
// Mining
/obj/item/robot_module/miner
name = "miner robot module"
module_type = "Miner"
@@ -698,6 +723,16 @@
if(istype(B))
B.drop_inventory(R)
/obj/item/robot_module/miner/emag_act(mob/user)
. = ..()
for(var/obj/item/gripper/F in modules)
F.emag_act()
/obj/item/robot_module/miner/unemag()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
// This makes it so others can crowbar out KA upgrades from the miner borg.
/obj/item/robot_module/miner/handle_custom_removal(component_id, mob/living/user, obj/item/W)
if(component_id == "KA modkits")
@@ -707,138 +742,7 @@
return TRUE
return ..()
// Deathsquad cyborg module.
/obj/item/robot_module/deathsquad
name = "NT advanced combat module"
module_type = "Malf"
module_actions = list(/datum/action/innate/robot_sight/thermal, /datum/action/innate/robot_magpulse)
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/melee/energy/sword/cyborg,
/obj/item/gun/energy/pulse/cyborg,
/obj/item/crowbar/cyborg/red,
)
special_rechargables = list(/obj/item/gun/energy/pulse/cyborg)
// Sydicate assault cyborg module.
/obj/item/robot_module/syndicate
name = "syndicate assault robot module"
module_type = "Malf" // cuz it looks cool
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/melee/energy/sword/cyborg,
/obj/item/gun/energy/printer,
/obj/item/gun/projectile/revolver/grenadelauncher/multi/cyborg,
/obj/item/card/emag,
/obj/item/crowbar/cyborg/red,
/obj/item/pinpointer/operative,
)
// Sydicate medical cyborg module.
/obj/item/robot_module/syndicate_medical
name = "syndicate medical robot module"
module_type = "Malf"
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/healthanalyzer/advanced,
/obj/item/reagent_scanner/adv,
/obj/item/bodyanalyzer/borg/syndicate,
/obj/item/borg_defib,
/obj/item/handheld_defibrillator,
/obj/item/roller_holder,
/obj/item/reagent_containers/borghypo/syndicate,
/obj/item/scalpel/laser/laser1,
/obj/item/hemostat,
/obj/item/retractor,
/obj/item/melee/energy/sword/cyborg/saw, //Energy saw -- primary weapon
/obj/item/surgicaldrill,
/obj/item/bonesetter,
/obj/item/bonegel,
/obj/item/FixOVein,
/obj/item/card/emag,
/obj/item/crowbar/cyborg/red,
/obj/item/pinpointer/operative,
/obj/item/stack/medical/bruise_pack/advanced/cyborg/syndicate,
/obj/item/stack/medical/ointment/advanced/cyborg/syndicate,
/obj/item/stack/medical/splint/cyborg/syndicate,
/obj/item/stack/nanopaste/cyborg/syndicate,
/obj/item/gun/medbeam,
/obj/item/extinguisher/mini,
/obj/item/gripper/medical,
)
special_rechargables = list(/obj/item/extinguisher/mini)
// Sydicate engineer/sabotuer cyborg module.
/obj/item/robot_module/syndicate_saboteur
name = "saboteur robot module" // Disguises are handled in the actual cyborg projector
module_type = "Malf"
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/rcd/borg/syndicate,
/obj/item/rpd,
/obj/item/extinguisher,
/obj/item/weldingtool/largetank/cyborg,
/obj/item/screwdriver/cyborg,
/obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/wirecutters/cyborg,
/obj/item/multitool/cyborg,
/obj/item/t_scanner,
/obj/item/analyzer,
/obj/item/gripper/engineering,
/obj/item/melee/energy/sword/cyborg,
/obj/item/card/emag,
/obj/item/borg_chameleon,
/obj/item/pinpointer/operative,
/obj/item/stack/sheet/metal/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/stack/cable_coil/cyborg,
/obj/item/stack/sheet/glass/cyborg,
/obj/item/stack/sheet/rglass/cyborg
)
special_rechargables = list(/obj/item/extinguisher, /obj/item/weldingtool/largetank/cyborg)
/obj/item/robot_module/destroyer
name = "destroyer robot module"
module_type = "Malf"
module_actions = list(/datum/action/innate/robot_sight/thermal, /datum/action/innate/robot_magpulse)
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/crowbar/cyborg/red,
/obj/item/gun/energy/immolator/multi/cyborg, // See comments on /robot_module/combat below
/obj/item/melee/baton/loaded, // secondary weapon, for things immune to burn, immune to ranged weapons, or for arresting low-grade threats
/obj/item/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/pickaxe/drill/jackhammer, // for breaking walls to execute flanking moves
/obj/item/borg/destroyer/mobility
)
special_rechargables = list(
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/immolator/multi/cyborg
)
/obj/item/robot_module/combat
name = "combat robot module"
module_type = "Malf"
module_actions = list(/datum/action/innate/robot_magpulse)
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/crowbar/cyborg/red,
/obj/item/gun/energy/immolator/multi/cyborg, // primary weapon, strong at close range (ie: against blob/terror/xeno), but consumes a lot of energy per shot.
// Borg gets 40 shots of this weapon. Gamma Sec ERT gets 10.
// So, borg has way more burst damage, but also takes way longer to recharge / get back in the fight once depleted. Has to find a borg recharger and sit in it for ages.
// Organic gamma sec ERT carries alternate weapons, including a box of flashbangs, and can load up on a huge number of guns from science. Borg cannot do either.
// Overall, gamma borg has higher skill floor but lower skill ceiling.
/obj/item/melee/baton/loaded, // secondary weapon, for things immune to burn, immune to ranged weapons, or for arresting low-grade threats
/obj/item/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/pickaxe/drill/jackhammer // for breaking walls to execute flanking moves
)
special_rechargables = list(
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/immolator/multi/cyborg
)
// Xenomorph cyborg module.
// Xeno Hunter
/obj/item/robot_module/alien/hunter
name = "alien hunter module"
module_type = "Standard"
@@ -859,7 +763,7 @@
. = ..()
R.add_language("xenocommon", 1)
// Maintenance drone module.
// Maintenance Drone
/obj/item/robot_module/drone
name = "drone module"
module_type = "Engineer"
@@ -900,6 +804,169 @@
if(G)
G.drop_gripped_item(silent = TRUE)
/obj/item/robot_module/drone/emag_act(mob/user)
. = ..()
for(var/obj/item/gripper/F in modules)
F.emag_act()
/obj/item/robot_module/drone/unemag()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
// Sydicate Assault cyborg module.
/obj/item/robot_module/syndicate
name = "syndicate assault robot module"
module_type = "Malf" // cuz it looks cool
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/melee/energy/sword/cyborg,
/obj/item/gun/energy/printer,
/obj/item/gun/projectile/revolver/grenadelauncher/multi/cyborg,
/obj/item/card/emag,
/obj/item/crowbar/cyborg/red,
/obj/item/pinpointer/operative,
)
// Sydicate Medical cyborg module.
/obj/item/robot_module/syndicate_medical
name = "syndicate medical robot module"
module_type = "Malf"
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/healthanalyzer/advanced,
/obj/item/reagent_scanner/adv,
/obj/item/bodyanalyzer/borg/syndicate,
/obj/item/borg_defib,
/obj/item/handheld_defibrillator,
/obj/item/roller_holder,
/obj/item/reagent_containers/borghypo/syndicate,
/obj/item/scalpel/laser/laser1,
/obj/item/hemostat,
/obj/item/retractor,
/obj/item/melee/energy/sword/cyborg/saw, //Energy saw -- primary weapon
/obj/item/surgicaldrill,
/obj/item/bonesetter,
/obj/item/bonegel,
/obj/item/FixOVein,
/obj/item/card/emag,
/obj/item/crowbar/cyborg/red,
/obj/item/pinpointer/operative,
/obj/item/stack/medical/bruise_pack/advanced/cyborg/syndicate,
/obj/item/stack/medical/ointment/advanced/cyborg/syndicate,
/obj/item/stack/medical/splint/cyborg/syndicate,
/obj/item/stack/nanopaste/cyborg/syndicate,
/obj/item/gun/medbeam,
/obj/item/extinguisher/mini,
/obj/item/gripper/medical,
)
special_rechargables = list(/obj/item/extinguisher/mini)
/obj/item/robot_module/syndicate_medical/emag_act(mob/user)
. = ..()
for(var/obj/item/gripper/F in modules)
F.emag_act()
/obj/item/robot_module/syndicate_medical/unemag()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
// Sydicate Sabotuer/Engineering cyborg module.
/obj/item/robot_module/syndicate_saboteur
name = "saboteur robot module" // Disguises are handled in the actual cyborg projector
module_type = "Malf"
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/rcd/borg/syndicate,
/obj/item/rpd,
/obj/item/extinguisher,
/obj/item/weldingtool/largetank/cyborg,
/obj/item/screwdriver/cyborg,
/obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/wirecutters/cyborg,
/obj/item/multitool/cyborg,
/obj/item/t_scanner,
/obj/item/analyzer,
/obj/item/gripper/engineering,
/obj/item/melee/energy/sword/cyborg,
/obj/item/card/emag,
/obj/item/borg_chameleon,
/obj/item/pinpointer/operative,
/obj/item/stack/sheet/metal/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/stack/cable_coil/cyborg,
/obj/item/stack/sheet/glass/cyborg,
/obj/item/stack/sheet/rglass/cyborg
)
special_rechargables = list(/obj/item/extinguisher, /obj/item/weldingtool/largetank/cyborg)
/obj/item/robot_module/syndicate_saboteur/emag_act(mob/user)
. = ..()
for(var/obj/item/gripper/F in modules)
F.emag_act()
/obj/item/robot_module/syndicate_saboteur/unemag()
for(var/obj/item/gripper/F in modules)
F.emag_act()
return ..()
// Gamma security module.
/obj/item/robot_module/combat
name = "combat robot module"
module_type = "Malf"
module_actions = list(/datum/action/innate/robot_magpulse)
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/crowbar/cyborg/red,
/obj/item/gun/energy/immolator/multi/cyborg, // primary weapon, strong at close range (ie: against blob/terror/xeno), but consumes a lot of energy per shot.
// Borg gets 40 shots of this weapon. Gamma Sec ERT gets 10.
// So, borg has way more burst damage, but also takes way longer to recharge / get back in the fight once depleted. Has to find a borg recharger and sit in it for ages.
// Organic gamma sec ERT carries alternate weapons, including a box of flashbangs, and can load up on a huge number of guns from science. Borg cannot do either.
// Overall, gamma borg has higher skill floor but lower skill ceiling.
/obj/item/melee/baton/loaded, // secondary weapon, for things immune to burn, immune to ranged weapons, or for arresting low-grade threats
/obj/item/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/pickaxe/drill/jackhammer // for breaking walls to execute flanking moves
)
special_rechargables = list(
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/immolator/multi/cyborg
)
// Destroyer security module.
/obj/item/robot_module/destroyer
name = "destroyer robot module"
module_type = "Malf"
module_actions = list(/datum/action/innate/robot_sight/thermal, /datum/action/innate/robot_magpulse)
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/crowbar/cyborg/red,
/obj/item/gun/energy/immolator/multi/cyborg, // See comments on /robot_module/combat below
/obj/item/melee/baton/loaded, // secondary weapon, for things immune to burn, immune to ranged weapons, or for arresting low-grade threats
/obj/item/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/pickaxe/drill/jackhammer, // for breaking walls to execute flanking moves
/obj/item/borg/destroyer/mobility
)
special_rechargables = list(
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/immolator/multi/cyborg
)
// Deathsquad
/obj/item/robot_module/deathsquad
name = "NT advanced combat module"
module_type = "Malf"
module_actions = list(/datum/action/innate/robot_sight/thermal, /datum/action/innate/robot_magpulse)
basic_modules = list(
/obj/item/flash/cyborg,
/obj/item/melee/energy/sword/cyborg,
/obj/item/gun/energy/pulse/cyborg,
/obj/item/crowbar/cyborg/red,
)
special_rechargables = list(/obj/item/gun/energy/pulse/cyborg)
/// Checks whether this item is a module of the robot it is located in.
/obj/item/proc/is_robot_module()
if(!isrobot(loc))