diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index fee3ce8e321..8a15c5430c5 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -85,6 +85,10 @@
"cyborgrecharger",
"robocontrol",
"sflash",
+
+ //SKYRAT EDIT START - RESEARCH DESIGNS
+ "affection_module",
+ //SKYRAT EDIT END - RESEARCH DESIGNS
)
/datum/techweb_node/mech
diff --git a/modular_skyrat/modules/altborgs/code/game/objects/items/robot_items.dm b/modular_skyrat/modules/altborgs/code/game/objects/items/robot_items.dm
index b8a50034627..9b7127969eb 100644
--- a/modular_skyrat/modules/altborgs/code/game/objects/items/robot_items.dm
+++ b/modular_skyrat/modules/altborgs/code/game/objects/items/robot_items.dm
@@ -11,15 +11,15 @@
. = ..()
if(!proximity || !isliving(target))
return
- var/mob/living/silicon/robot/R = user
- var/mob/living/L = target
+ var/mob/living/silicon/robot/borg = user
+ var/mob/living/mob = target
- if(check_zone(R.zone_selected) == "head")
- R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
- playsound(R, 'sound/effects/attackblob.ogg', 50, 1)
+ if(check_zone(borg.zone_selected) == "head")
+ borg.visible_message("\the [borg] affectionally licks \the [mob]'s face!", "You affectionally lick \the [mob]'s face!")
+ playsound(borg, 'sound/effects/attackblob.ogg', 50, 1)
else
- R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
- playsound(R, 'sound/effects/attackblob.ogg', 50, 1)
+ borg.visible_message("\the [borg] affectionally licks \the [mob]!", "You affectionally lick \the [mob]!")
+ playsound(borg, 'sound/effects/attackblob.ogg', 50, 1)
/obj/item/dogborg_nose
name = "boop module"
diff --git a/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot_modules.dm
index b42b87d66ce..4d763bd4f9f 100644
--- a/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -1,8 +1,6 @@
/obj/item/robot_model/proc/dogborg_equip()
cyborg_pixel_offset = -16
hat_offset = INFINITY
- basic_modules += new /obj/item/dogborg_nose(src)
- basic_modules += new /obj/item/dogborg_tongue(src)
var/mob/living/silicon/robot/cyborg = loc
add_verb(cyborg , /mob/living/silicon/robot/proc/robot_lay_down)
add_verb(cyborg , /mob/living/silicon/robot/proc/rest_style)
diff --git a/modular_skyrat/modules/cyborg/code/mechafabricator_designs.dm b/modular_skyrat/modules/cyborg/code/mechafabricator_designs.dm
index 2700b645eab..57460396e9b 100644
--- a/modular_skyrat/modules/cyborg/code/mechafabricator_designs.dm
+++ b/modular_skyrat/modules/cyborg/code/mechafabricator_designs.dm
@@ -15,3 +15,12 @@
materials = list(/datum/material/iron = 14500, /datum/material/glass = 7500, /datum/material/silver = 6000, /datum/material/gold = 1500, /datum/material/diamond = 200, /datum/material/titanium = 8000, /datum/material/plasma = 2000)
construction_time = 80
category = list("Cyborg Upgrade Modules")
+
+/datum/design/affection_module
+ name = "Cyborg Upgrade (Affection Module)"
+ id = "affection_module"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/affectionmodule
+ materials = list(/datum/material/iron=1000, /datum/material/glass=500)
+ construction_time = 40
+ category = list("Cyborg Upgrade Modules")
diff --git a/modular_skyrat/modules/cyborg/code/robot_upgrades.dm b/modular_skyrat/modules/cyborg/code/robot_upgrades.dm
index 4218aaaee56..8d1ca8ca669 100644
--- a/modular_skyrat/modules/cyborg/code/robot_upgrades.dm
+++ b/modular_skyrat/modules/cyborg/code/robot_upgrades.dm
@@ -6,43 +6,43 @@
desc = "A cyborg resizer, it makes a cyborg small."
icon_state = "cyborg_upgrade3"
-/obj/item/borg/upgrade/shrink/action(mob/living/silicon/robot/R, user = usr)
+/obj/item/borg/upgrade/shrink/action(mob/living/silicon/robot/borg, user = usr)
. = ..()
if(.)
- if(R.hasShrunk)
+ if(borg.hasShrunk)
to_chat(usr, "This unit already has a shrink module installed!")
return FALSE
- if(R_TRAIT_SMALL in R.model.model_features)
+ if(R_TRAIT_SMALL in borg.model.model_features)
to_chat(usr, "This unit's chassis cannot be shrunk any further.")
return FALSE
- R.notransform = TRUE
- var/prev_lockcharge = R.lockcharge
- R.SetLockdown(1)
- R.set_anchored(TRUE)
+ borg.notransform = TRUE
+ var/prev_lockcharge = borg.lockcharge
+ borg.SetLockdown(1)
+ borg.set_anchored(TRUE)
var/datum/effect_system/smoke_spread/smoke = new
- smoke.set_up(1, R.loc)
+ smoke.set_up(1, borg.loc)
smoke.start()
sleep(2)
for(var/i in 1 to 4)
- playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1)
+ playsound(borg, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1)
sleep(12)
if(!prev_lockcharge)
- R.SetLockdown(0)
- R.set_anchored(FALSE)
- R.notransform = FALSE
- R.resize = 0.75
- R.hasShrunk = TRUE
- R.update_transform()
+ borg.SetLockdown(0)
+ borg.set_anchored(FALSE)
+ borg.notransform = FALSE
+ borg.resize = 0.75
+ borg.hasShrunk = TRUE
+ borg.update_transform()
-/obj/item/borg/upgrade/shrink/deactivate(mob/living/silicon/robot/R, user = usr)
+/obj/item/borg/upgrade/shrink/deactivate(mob/living/silicon/robot/borg, user = usr)
. = ..()
if (.)
- if (R.hasShrunk)
- R.hasShrunk = FALSE
- R.resize = (4/3)
- R.update_transform()
+ if (borg.hasShrunk)
+ borg.hasShrunk = FALSE
+ borg.resize = (4/3)
+ borg.update_transform()
/obj/item/borg/upgrade/surgerytools
name = "medical cyborg advanced surgery tools"
@@ -52,57 +52,80 @@
model_type = list(/obj/item/robot_model/medical)
model_flags = BORG_MODEL_MEDICAL
-/obj/item/borg/upgrade/surgerytools/action(mob/living/silicon/robot/R)
+/obj/item/borg/upgrade/surgerytools/action(mob/living/silicon/robot/borg)
. = ..()
if(.)
- for(var/obj/item/retractor/RT in R.model.modules)
- R.model.remove_module(RT, TRUE)
- for(var/obj/item/hemostat/HS in R.model.modules)
- R.model.remove_module(HS, TRUE)
- for(var/obj/item/cautery/CT in R.model.modules)
- R.model.remove_module(CT, TRUE)
- for(var/obj/item/surgicaldrill/SD in R.model.modules)
- R.model.remove_module(SD, TRUE)
- for(var/obj/item/scalpel/SP in R.model.modules)
- R.model.remove_module(SP, TRUE)
- for(var/obj/item/circular_saw/CS in R.model.modules)
- R.model.remove_module(CS, TRUE)
+ for(var/obj/item/retractor/RT in borg.model.modules)
+ borg.model.remove_module(RT, TRUE)
+ for(var/obj/item/hemostat/HS in borg.model.modules)
+ borg.model.remove_module(HS, TRUE)
+ for(var/obj/item/cautery/CT in borg.model.modules)
+ borg.model.remove_module(CT, TRUE)
+ for(var/obj/item/surgicaldrill/SD in borg.model.modules)
+ borg.model.remove_module(SD, TRUE)
+ for(var/obj/item/scalpel/SP in borg.model.modules)
+ borg.model.remove_module(SP, TRUE)
+ for(var/obj/item/circular_saw/CS in borg.model.modules)
+ borg.model.remove_module(CS, TRUE)
- var/obj/item/scalpel/advanced/AS = new /obj/item/scalpel/advanced(R.model)
- R.model.basic_modules += AS
- R.model.add_module(AS, FALSE, TRUE)
- var/obj/item/retractor/advanced/AR = new /obj/item/retractor/advanced(R.model)
- R.model.basic_modules += AR
- R.model.add_module(AR, FALSE, TRUE)
- var/obj/item/cautery/advanced/AC = new /obj/item/cautery/advanced(R.model)
- R.model.basic_modules += AC
- R.model.add_module(AC, FALSE, TRUE)
+ var/obj/item/scalpel/advanced/AS = new /obj/item/scalpel/advanced(borg.model)
+ borg.model.basic_modules += AS
+ borg.model.add_module(AS, FALSE, TRUE)
+ var/obj/item/retractor/advanced/AR = new /obj/item/retractor/advanced(borg.model)
+ borg.model.basic_modules += AR
+ borg.model.add_module(AR, FALSE, TRUE)
+ var/obj/item/cautery/advanced/AC = new /obj/item/cautery/advanced(borg.model)
+ borg.model.basic_modules += AC
+ borg.model.add_module(AC, FALSE, TRUE)
-/obj/item/borg/upgrade/surgerytools/deactivate(mob/living/silicon/robot/R, user = usr)
+/obj/item/borg/upgrade/surgerytools/deactivate(mob/living/silicon/robot/borg, user = usr)
. = ..()
if(.)
- for(var/obj/item/scalpel/advanced/AS in R.model.modules)
- R.model.remove_module(AS, TRUE)
- for(var/obj/item/retractor/advanced/AR in R.model.modules)
- R.model.remove_module(AR, TRUE)
- for(var/obj/item/cautery/advanced/AC in R.model.modules)
- R.model.remove_module(AC, TRUE)
+ for(var/obj/item/scalpel/advanced/AS in borg.model.modules)
+ borg.model.remove_module(AS, TRUE)
+ for(var/obj/item/retractor/advanced/AR in borg.model.modules)
+ borg.model.remove_module(AR, TRUE)
+ for(var/obj/item/cautery/advanced/AC in borg.model.modules)
+ borg.model.remove_module(AC, TRUE)
- var/obj/item/retractor/RT = new (R.model)
- R.model.basic_modules += RT
- R.model.add_module(RT, FALSE, TRUE)
- var/obj/item/hemostat/HS = new (R.model)
- R.model.basic_modules += HS
- R.model.add_module(HS, FALSE, TRUE)
- var/obj/item/cautery/CT = new (R.model)
- R.model.basic_modules += CT
- R.model.add_module(CT, FALSE, TRUE)
- var/obj/item/surgicaldrill/SD = new (R.model)
- R.model.basic_modules += SD
- R.model.add_module(SD, FALSE, TRUE)
- var/obj/item/scalpel/SP = new (R.model)
- R.model.basic_modules += SP
- R.model.add_module(SP, FALSE, TRUE)
- var/obj/item/circular_saw/CS = new (R.model)
- R.model.basic_modules += CS
- R.model.add_module(CS, FALSE, TRUE)
+ var/obj/item/retractor/RT = new (borg.model)
+ borg.model.basic_modules += RT
+ borg.model.add_module(RT, FALSE, TRUE)
+ var/obj/item/hemostat/HS = new (borg.model)
+ borg.model.basic_modules += HS
+ borg.model.add_module(HS, FALSE, TRUE)
+ var/obj/item/cautery/CT = new (borg.model)
+ borg.model.basic_modules += CT
+ borg.model.add_module(CT, FALSE, TRUE)
+ var/obj/item/surgicaldrill/SD = new (borg.model)
+ borg.model.basic_modules += SD
+ borg.model.add_module(SD, FALSE, TRUE)
+ var/obj/item/scalpel/SP = new (borg.model)
+ borg.model.basic_modules += SP
+ borg.model.add_module(SP, FALSE, TRUE)
+ var/obj/item/circular_saw/CS = new (borg.model)
+ borg.model.basic_modules += CS
+ borg.model.add_module(CS, FALSE, TRUE)
+
+/obj/item/borg/upgrade/affectionmodule
+ name = "borg affection module"
+ desc = "A module that upgrades the ability of borgs to display affection."
+ icon_state = "cyborg_upgrade3"
+
+/obj/item/borg/upgrade/affectionmodule/action(mob/living/silicon/robot/borg)
+ . = ..()
+ if(.)
+ var/obj/item/dogborg_tongue/dogtongue = new /obj/item/dogborg_tongue(borg.model)
+ borg.model.basic_modules += dogtongue
+ borg.model.add_module(dogtongue, FALSE, TRUE)
+ var/obj/item/dogborg_nose/dognose = new /obj/item/dogborg_nose(borg.model)
+ borg.model.basic_modules += dognose
+ borg.model.add_module(dognose, FALSE, TRUE)
+
+/obj/item/borg/upgrade/affectionmodule/deactivate(mob/living/silicon/robot/borg, user = usr)
+ . = ..()
+ if(.)
+ for(var/obj/item/dogborg_tongue/dogtongue in borg.model.modules)
+ borg.model.remove_module(dogtongue, TRUE)
+ for(var/obj/item/dogborg_nose/dognose in borg.model.modules)
+ borg.model.remove_module(dognose, TRUE)