Merging modules - Surgery

This commit is contained in:
Heroman
2023-08-09 08:05:02 +10:00
parent 191b9836df
commit bd00a57b4c
13 changed files with 150 additions and 436 deletions
-2
View File
@@ -1,6 +1,4 @@
/mob/living/silicon/robot/update_hud()
if(ui_style_vr)
hands.icon = 'icons/mob/screen1_robot_vr.dmi'
if(modtype)
hands.icon_state = get_hud_module_icon()
..()
@@ -64,9 +64,9 @@
/obj/item/borg/upgrade/bellysizeupgrade/action(var/mob/living/silicon/robot/R)
if(..()) return 0
if(!R.module || R.dogborg == FALSE)//can work
if(!R.module)//can work
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module! Try upgrading another model.")
to_chat(usr, "There's no mounting point for the module!")
return 0
var/obj/item/device/dogborg/sleeper/T = locate() in R.module
@@ -100,21 +100,21 @@
H.forcesay(hit_appends)
//Boop //New and improved, now a simple reagent sniffer.
/obj/item/device/dogborg/boop_module
/obj/item/device/boop_module
name = "boop module"
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "nose"
desc = "The BOOP module, a simple reagent and atmosphere sniffer."
desc = "The BOOP module, a simple reagent and atmosphere scanner."
force = 0
throwforce = 0
attack_verb = list("nuzzled", "nosed", "booped")
w_class = ITEMSIZE_TINY
/obj/item/device/dogborg/boop_module/New()
/obj/item/device/boop_module/New()
..()
flags |= NOBLUDGEON //No more attack messages
/obj/item/device/dogborg/boop_module/attack_self(mob/user)
/obj/item/device/boop_module/attack_self(mob/user)
if (!( istype(user.loc, /turf) ))
return
@@ -124,9 +124,9 @@
var/total_moles = environment.total_moles
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.visible_message("<span class='notice'>[user] sniffs the air.</span>", "<span class='notice'>You sniff the air...</span>")
user.visible_message("<span class='notice'>[user] scans the air.</span>", "<span class='notice'>You scan the air...</span>")
to_chat(user, "<span class='notice'><B>Smells like:</B></span>")
to_chat(user, "<span class='notice'><B>Scan results:</B></span>")
if(abs(pressure - ONE_ATMOSPHERE) < 10)
to_chat(user, "<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>")
else
@@ -136,7 +136,7 @@
to_chat(user, "<span class='notice'>[gas_data.name[g]]: [round((environment.gas[g] / total_moles) * 100)]%</span>")
to_chat(user, "<span class='notice'>Temperature: [round(environment.temperature-T0C,0.1)]&deg;C ([round(environment.temperature,0.1)]K)</span>")
/obj/item/device/dogborg/boop_module/afterattack(obj/O, mob/user as mob, proximity)
/obj/item/device/boop_module/afterattack(obj/O, mob/user as mob, proximity)
if(!proximity)
return
if (user.stat)
@@ -145,7 +145,7 @@
return
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.visible_message("<span class='notice'>[user] sniffs at \the [O.name].</span>", "<span class='notice'>You sniff \the [O.name]...</span>")
user.visible_message("<span class='notice'>[user] scan at \the [O.name].</span>", "<span class='notice'>You scan \the [O.name]...</span>")
if(!isnull(O.reagents))
var/dat = ""
@@ -156,9 +156,9 @@
if(dat)
to_chat(user, "<span class='notice'>Your BOOP module indicates: [dat]</span>")
else
to_chat(user, "<span class='notice'>No active chemical agents smelled in [O].</span>")
to_chat(user, "<span class='notice'>No active chemical agents detected in [O].</span>")
else
to_chat(user, "<span class='notice'>No significant chemical agents smelled in [O].</span>")
to_chat(user, "<span class='notice'>No significant chemical agents detected in [O].</span>")
return
@@ -581,15 +581,24 @@
else
resources += module_string
dat += tools
if (emagged)
if (!module.emag)
dat += text("<B>Resource depleted</B><BR>")
else if(activated(module.emag))
dat += text("[module.emag]: <B>Activated</B><BR>")
else
dat += text("[module.emag]: <A HREF=?src=\ref[src];act=\ref[module.emag]>Activate</A><BR>")
for (var/O in module.emag)
var/module_string = ""
if (!O)
module_string += text("<B>Resource depleted</B><BR>")
else if(activated(O))
module_string += text("[O]: <B>Activated</B><BR>")
else
module_string += text("[O]: <A HREF=?src=\ref[src];act=\ref[O]>Activate</A><BR>")
if((istype(O,/obj/item/weapon) || istype(O,/obj/item/device)) && !(istype(O,/obj/item/stack/cable_coil)))
tools += module_string
else
resources += module_string
dat += tools
dat += resources
@@ -224,7 +224,7 @@
return
/mob/living/silicon/robot/proc/activate_module(var/obj/item/O)
if(!(locate(O) in src.module.modules) && O != src.module.emag)
if(!(locate(O) in src.module.modules) && !(locate(O) in src.module.emag))
return
if(activated(O))
to_chat(src, "<span class='notice'>Already activated</span>")
+42 -12
View File
@@ -33,6 +33,9 @@
var/icon_selected = 1 // If icon selection has been completed yet
var/icon_selection_tries = 0 // Remaining attempts to select icon before a selection is forced
var/list/sprite_extra_customization = list()
var/rest_style = "Default"
var/notransform
does_spin = FALSE
//Hud stuff
@@ -58,6 +61,9 @@
var/cell_emp_mult = 2
var/sleeper_state = 0 // 0 for empty, 1 for normal, 2 for mediborg-healthy
var/scrubbing = FALSE //Floor cleaning enabled
// Components are basically robot organs.
var/list/components = list()
@@ -97,7 +103,10 @@
var/list/robot_verbs_default = list(
/mob/living/silicon/robot/proc/sensor_mode,
/mob/living/silicon/robot/proc/robot_checklaws
/mob/living/silicon/robot/proc/robot_checklaws,
/mob/living/silicon/robot/proc/robot_mount,
/mob/living/proc/toggle_rider_reins,
/mob/living/proc/shred_limb
)
/mob/living/silicon/robot/New(loc, var/unfinished = 0)
@@ -951,16 +960,14 @@
else
dat += text("[obj]: <A HREF=?src=\ref[src];act=\ref[obj]>Activate</A><BR>")
if (emagged || emag_items)
if(activated(module.emag))
dat += text("[module.emag]: <B>Activated</B><BR>")
else
dat += text("[module.emag]: <A HREF=?src=\ref[src];act=\ref[module.emag]>Activate</A><BR>")
/*
if(activated(obj))
dat += text("[obj]: \[<B>Activated</B> | <A HREF=?src=\ref[src];deact=\ref[obj]>Deactivate</A>\]<BR>")
else
dat += text("[obj]: \[<A HREF=?src=\ref[src];act=\ref[obj]>Activate</A> | <B>Deactivated</B>\]<BR>")
*/
for (var/obj in module.emag)
if (!obj)
dat += text("<B>Resource depleted</B><BR>")
else if(activated(obj))
dat += text("[obj]: <B>Activated</B><BR>")
else
dat += text("[obj]: <A HREF=?src=\ref[src];act=\ref[obj]>Activate</A><BR>")
src << browse(dat, "window=robotmod")
@@ -987,7 +994,7 @@
if (!istype(O))
return 1
if(!((O in src.module.modules) || (O == src.module.emag)))
if(!((O in src.module.modules) || (O in src.module.emag)))
return 1
if(activated(O))
@@ -1324,3 +1331,26 @@
/mob/living/silicon/robot/get_cell()
return cell
/mob/living/silicon/robot/lay_down()
. = ..()
update_icon()
/mob/living/silicon/robot/verb/rest_style()
set name = "Switch Rest Style"
set desc = "Select your resting pose."
set category = "IC"
if(!sprite_datum || !sprite_datum.has_rest_sprites || sprite_datum.rest_sprite_options.len < 1)
to_chat(src, "<span class='notice'>Your current appearance doesn't have any resting styles!</span>")
rest_style = "Default"
return
if(sprite_datum.rest_sprite_options.len == 1)
to_chat(src, "<span class='notice'>Your current appearance only has a single resting style!</span>")
rest_style = "Default"
return
rest_style = tgui_alert(src, "Select resting pose", "Resting Pose", sprite_datum.rest_sprite_options)
if(!rest_style)
rest_style = "Default"
@@ -27,7 +27,7 @@
src.modules += new /obj/item/device/robotanalyzer(src)
// Potato
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wire = new /datum/matter_synth/wire()
synths += wire
@@ -63,7 +63,7 @@
src.modules += new /obj/item/weapon/gripper/gravekeeper(src)
// For really persistent looters
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wood = new /datum/matter_synth/wood(25000)
synths += wood
@@ -5,7 +5,7 @@
/obj/item/weapon/robot_module/robot/stray/New(var/mob/living/silicon/robot/R)
..()
// General
src.modules += new /obj/item/device/dogborg/boop_module(src)
//src.modules += new /obj/item/device/dogborg/boop_module(src)
// Sec
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
@@ -25,7 +25,7 @@
src.modules += new /obj/item/device/multitool(src)
// Boof
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/water = new /datum/matter_synth(500) //Starts full and has a max of 500
water.name = "Water reserves"
@@ -43,16 +43,4 @@
var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper(src)
B.water = water
src.modules += B
R.icon = 'icons/mob/widerobot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
src.modules += B
@@ -46,7 +46,7 @@ var/global/list/robot_modules = list(
var/no_slip = 0
var/list/modules = list()
var/list/datum/matter_synth/synths = list()
var/obj/item/emag = null
var/list/emag = list()
var/obj/item/borg/upgrade/jetpack = null
var/obj/item/borg/upgrade/advhealth = null
var/list/subsystems = list()
@@ -93,6 +93,8 @@ var/global/list/robot_modules = list(
R.radio.recalculateChannels()
R.choose_icon(0)
R.scrubbing = FALSE
/obj/item/weapon/robot_module/Destroy()
for(var/module in modules)
qdel(module)
@@ -100,9 +102,8 @@ var/global/list/robot_modules = list(
qdel(synth)
modules.Cut()
synths.Cut()
qdel(emag)
emag.Cut()
qdel(jetpack)
emag = null
jetpack = null
return ..()
@@ -111,7 +112,8 @@ var/global/list/robot_modules = list(
for(var/obj/O in modules)
O.emp_act(severity)
if(emag)
emag.emp_act(severity)
for(var/obj/O in emag)
O.emp_act(severity)
if(synths)
for(var/datum/matter_synth/S in synths)
S.emp_act(severity)
@@ -192,11 +194,11 @@ var/global/list/robot_modules = list(
// Cyborgs (non-drones), default loadout. This will be given to every module.
/obj/item/weapon/robot_module/robot/New()
..()
src.modules += new /obj/item/device/flash/robot(src)
src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/device/gps/robot(src)
vr_new() // Vorestation Edit: For modules in robot_modules_vr.dm
src.modules += new /obj/item/device/boop_module(src)
src.modules += new /obj/item/device/flash/robot(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
/obj/item/weapon/robot_module/robot/standard
name = "standard robot module"
@@ -204,10 +206,10 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/standard/New()
..()
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.emag += new /obj/item/weapon/melee/energy/sword(src)
/obj/item/weapon/robot_module/robot/medical
name = "medical robot module"
@@ -223,6 +225,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
..()
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/sleevemate(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/surgeon(src)
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
@@ -240,9 +243,13 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper(src) // Allows surgeon borg to fix necrosis
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
var/obj/item/weapon/reagent_containers/spray/PS = new /obj/item/weapon/reagent_containers/spray(src)
src.emag += PS
PS.reagents.add_reagent("pacid", 250)
PS.name = "Polyacid spray"
src.emag += new /obj/item/weapon/dogborg/pounce(src) //Pounce, also, lets not give them polyacid spray
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(10000)
synths += medicine
@@ -263,6 +270,8 @@ var/global/list/robot_modules = list(
src.modules += B
src.modules += O
src.modules += new /obj/item/device/dogborg/sleeper/trauma(src)
/obj/item/weapon/robot_module/robot/medical/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
@@ -272,8 +281,8 @@ var/global/list/robot_modules = list(
S.desc = initial(S.desc)
S.update_icon()
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
var/obj/item/weapon/reagent_containers/spray/PS = locate() in src.emag
if(PS)
PS.reagents.add_reagent("pacid", 2 * amount)
..()
@@ -284,6 +293,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/medical/crisis/New()
..()
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/sleevemate(src)
src.modules += new /obj/item/device/reagent_scanner/adv(src)
src.modules += new /obj/item/roller_holder(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/crisis(src)
@@ -294,9 +304,10 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/gripper/medical(src)
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src) //VOREStation Add - This is kinda important for rescuing people without making it worse for everyone
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
var/obj/item/weapon/reagent_containers/spray/PS = new /obj/item/weapon/reagent_containers/spray(src)
src.emag += PS
PS.reagents.add_reagent("pacid", 250)
PS.name = "Polyacid spray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000)
synths += medicine
@@ -326,8 +337,8 @@ var/global/list/robot_modules = list(
S.desc = initial(S.desc)
S.update_icon()
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
var/obj/item/weapon/reagent_containers/spray/PS = locate() in src.emag
if(PS)
PS.reagents.add_reagent("pacid", 2 * amount)
..()
@@ -359,7 +370,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/pipe_dispenser(src)
src.modules += new /obj/item/device/floor_painter(src)
src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src)
src.emag = new /obj/item/weapon/melee/baton/robot/arm(src)
src.emag += new /obj/item/weapon/melee/baton/robot/arm(src)
src.modules += new /obj/item/device/geiger(src)
src.modules += new /obj/item/weapon/rcd/electric/mounted/borg(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
@@ -449,7 +460,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
src.modules += new /obj/item/weapon/gripper/security(src)
src.modules += new /obj/item/device/ticket_printer(src) //VOREStation Add
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/laser/mounted(src)
/obj/item/weapon/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/flash/F = locate() in src.modules
@@ -478,16 +489,18 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/mop(src)
src.modules += new /obj/item/pupscrubber(src)
src.modules += new /obj/item/device/lightreplacer(src)
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("lube", 250)
src.emag.name = "Lube spray"
var/obj/item/weapon/reagent_containers/spray/LS = new /obj/item/weapon/reagent_containers/spray(src)
src.emag += LS
LS.reagents.add_reagent("lube", 250)
LS.name = "Lube spray"
/obj/item/weapon/robot_module/robot/janitor/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules
LR.Charge(R, amount)
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/S = src.emag
S.reagents.add_reagent("lube", 2 * amount)
var/obj/item/weapon/reagent_containers/spray/LS = locate() in src.emag
if(LS)
LS.reagents.add_reagent("lube", 2 * amount)
/obj/item/weapon/robot_module/robot/clerical
name = "service robot module"
@@ -547,14 +560,23 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/tray/robotray(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/service(src)
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src)
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/PB = new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src)
src.emag += PB
var/datum/reagents/R = new/datum/reagents(50)
src.emag.reagents = R
R.my_atom = src.emag
PB.reagents = R
R.my_atom = PB
R.add_reagent("beer2", 50)
src.emag.name = "Auntie Hong's Final Sip"
src.emag.desc = "A bottle of very special mix of alcohol and poison. Some may argue that there's alcohol to die for, but Auntie Hong took it to next level."
PB.name = "Auntie Hong's Final Sip"
PB.desc = "A bottle of very special mix of alcohol and poison. Some may argue that there's alcohol to die for, but Auntie Hong took it to next level."
/obj/item/weapon/robot_module/robot/clerical/butler/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
E.reagents.add_reagent("enzyme", 2 * amount)
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/PB = locate() in src.emag
if(PB)
PB.reagents.add_reagent("beer2", 2 * amount)
/obj/item/weapon/robot_module/robot/clerical/general
name = "clerical robot module"
@@ -567,15 +589,8 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/hand_labeler(src)
src.modules += new /obj/item/weapon/stamp(src)
src.modules += new /obj/item/weapon/stamp/denied(src)
src.emag = new /obj/item/weapon/stamp/chameleon(src)
src.emag = new /obj/item/weapon/pen/chameleon(src)
/obj/item/weapon/robot_module/general/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
E.reagents.add_reagent("enzyme", 2 * amount)
if(src.emag)
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/B = src.emag
B.reagents.add_reagent("beer2", 2 * amount)
src.emag += new /obj/item/weapon/stamp/chameleon(src)
src.emag += new /obj/item/weapon/pen/chameleon(src)
/obj/item/weapon/robot_module/robot/miner
name = "miner robot module"
@@ -595,7 +610,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/gripper/miner(src)
src.modules += new /obj/item/weapon/mining_scanner(src)
// New Emag gear for the minebots!
src.emag = new /obj/item/weapon/kinetic_crusher/machete/dagger(src)
src.emag += new /obj/item/weapon/kinetic_crusher/machete/dagger(src)
// No reason for these, upgrade modules replace them.
//src.emag = new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
@@ -637,7 +652,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/dogborg/sleeper/compactor/analyzer(src)
src.emag = new /obj/item/weapon/hand_tele(src)
src.emag += new /obj/item/weapon/hand_tele(src)
var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000)
synths += nanite
@@ -679,7 +694,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/borg/combat/shield(src)
src.modules += new /obj/item/borg/combat/mobility(src)
src.modules += new /obj/item/device/ticket_printer(src) //VOREStation Add
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
src.emag += new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
src.modules += new /obj/item/device/dogborg/sleeper/K9/ert(src)
@@ -714,8 +729,9 @@ var/global/list/robot_modules = list(
robot.internals = new/obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += robot.internals
src.emag = new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
src.emag.name = "Plasma Cutter"
var/obj/item/weapon/pickaxe/plasmacutter/borg/PC = new /obj/item/weapon/pickaxe/plasmacutter/borg(src)
src.emag += PC
PC.name = "Plasma Cutter"
var/datum/matter_synth/metal = new /datum/matter_synth/metal(25000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(25000)
@@ -798,4 +814,4 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/pickaxe/borgdrill(src)
src.modules += new /obj/item/weapon/storage/bag/ore(src)
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src)
src.emag += new /obj/item/weapon/pickaxe/diamonddrill(src)
@@ -1,15 +1,3 @@
//Just add a new proc with the robot_module type if you wish to run some other vore code
/obj/item/weapon/robot_module/proc/vr_new() // Any Global modules, just add them before the return (This will also affect all the borgs in this file)
return
/obj/item/weapon/robot_module/robot/medical/surgeon/vr_new() //Surgeon Bot
src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people.
. = ..() //Any Global vore modules will come from here
/obj/item/weapon/robot_module/robot/medical/crisis/vr_new() //Crisis Bot
src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people.
. = ..() //Any Global vore modules will come from here
/obj/item/weapon/robot_module/robot/security/knine
name = "k9 robot module"
@@ -17,7 +5,7 @@
src.modules += new /obj/item/weapon/handcuffs/cyborg(src) //You need cuffs to be a proper sec borg!
src.modules += new /obj/item/weapon/dogborg/jaws/big(src) //In case there's some kind of hostile mob.
src.modules += new /obj/item/weapon/melee/baton/robot(src) //Since the pounce module refused to work, they get a stunbaton instead.
src.modules += new /obj/item/device/dogborg/boop_module(src) //Boop people on the nose.
//src.modules += new /obj/item/device/dogborg/boop_module(src) //Boop people on the nose.
src.modules += new /obj/item/taperoll/police(src) //Block out crime scenes.
src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg(src) //They /are/ a security borg, after all.
src.modules += new /obj/item/weapon/dogborg/pounce(src) //Pounce
@@ -37,20 +25,6 @@
var/obj/item/device/dogborg/sleeper/K9/B = new /obj/item/device/dogborg/sleeper/K9(src) //Eat criminals. Bring them to the brig.
B.water = water
src.modules += B
R.icon = 'icons/mob/widerobot_sec_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_sec_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/security/knine/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
@@ -77,7 +51,7 @@
/obj/item/weapon/robot_module/robot/medical/medihound/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src) //In case a patient is being attacked by carp.
src.modules += new /obj/item/device/dogborg/boop_module(src) //Boop the crew.
//src.modules += new /obj/item/device/dogborg/boop_module(src) //Boop the crew.
src.modules += new /obj/item/device/healthanalyzer(src) // See who's hurt specificially.
src.modules += new /obj/item/weapon/reagent_containers/syringe(src) //In case the chemist is nice!
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)//For holding the chemicals when the chemist is nice, made it the large variant in 2022
@@ -119,97 +93,18 @@
var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper(src) //So they can nom people and heal them
B.water = water
src.modules += B
R.icon = 'icons/mob/widerobot_med_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_med_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/medical/traumahound
name = "traumahound robot module"
/obj/item/weapon/robot_module/robot/medical/traumahound/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/weapon/autopsy_scanner(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/hemostat/cyborg(src)
src.modules += new /obj/item/weapon/surgical/retractor/cyborg(src)
src.modules += new /obj/item/weapon/surgical/cautery/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonegel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/FixOVein/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src)
src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/surgical/bioregen/cyborg(src) //let them succ
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/gripper/medical(src)
src.modules += new /obj/item/weapon/shockpaddles/robot/hound(src) //Paws of life
src.modules += new /obj/item/weapon/reagent_containers/dropper(src) // Allows surgeon borg to fix necrosis
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce, also, lets not give them polyacid spray
var/datum/matter_synth/water = new /datum/matter_synth(500)
water.name = "Water reserves"
water.recharge_rate = 0
R.water_res = water
synths += water
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
//T.water = water
src.modules += T
var/obj/item/weapon/reagent_containers/borghypo/hound/trauma/H = new /obj/item/weapon/reagent_containers/borghypo/hound/trauma(src) //surgeon chems
H.water = water
src.modules += H
var/obj/item/device/dogborg/sleeper/trauma/B = new /obj/item/device/dogborg/sleeper/trauma(src) //So they can nom people and heal them
B.water = water
src.modules += B
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(10000) //this is so they can do brute/burn surgeries and fix assisted/prosthetic organs
synths += medicine
var/obj/item/stack/nanopaste/N = new /obj/item/stack/nanopaste(src)
var/obj/item/stack/medical/advanced/bruise_pack/S = new /obj/item/stack/medical/advanced/bruise_pack(src)
var/obj/item/stack/medical/advanced/ointment/O = new /obj/item/stack/medical/advanced/ointment(src)
N.uses_charge = 1
N.charge_costs = list(1000)
N.synths = list(medicine)
S.uses_charge = 1
S.charge_costs = list(1000)
S.synths = list(medicine)
O.uses_charge = 1
O.charge_costs = list(1000)
O.synths = list(medicine)
src.modules += N
src.modules += S
src.modules += O
R.icon = 'icons/mob/widerobot_trauma_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_trauma_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/security/ert
@@ -236,20 +131,6 @@
var/obj/item/device/dogborg/sleeper/K9/B = new /obj/item/device/dogborg/sleeper/K9/ert(src)
B.water = water
src.modules += B
R.icon = 'icons/mob/widerobot_ert_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_ert_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/janitor/scrubpup
@@ -258,7 +139,7 @@
/obj/item/weapon/robot_module/robot/janitor/scrubpup/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
//src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/pupscrubber(src)
src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce
@@ -313,20 +194,6 @@
G.recipes = list()
G.recipes += new/datum/stack_recipe("glass sheet", /obj/item/stack/material/glass, 1, 1, 20)
src.modules += G
R.icon = 'icons/mob/widerobot_jan_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_jan_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/research/sciencehound
@@ -335,7 +202,7 @@
/obj/item/weapon/robot_module/robot/research/sciencehound/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
//src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/weapon/gripper/research(src)
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
@@ -389,20 +256,6 @@
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
C.synths = list(wire)
src.modules += C
R.icon = 'icons/mob/widerobot_sci_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_sci_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/engineering/engiedog
@@ -424,7 +277,7 @@
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
src.modules += new /obj/item/weapon/pickaxe(src)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
//src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/weapon/gripper(src)
src.modules += new /obj/item/weapon/gripper/circuit(src)
// The RPD does the exact same thing, this just take space.
@@ -529,20 +382,6 @@
var/obj/item/stack/material/cyborg/plasteel/PS = new (src)
PS.synths = list(plasteel)
src.modules += PS
R.icon = 'icons/mob/widerobot_eng_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_eng_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
// Uses modified K9 sprites.
@@ -550,7 +389,6 @@
name = "service-hound module"
can_be_pushed = 0
// In a nutshell, basically service/butler robot but in dog form. - Port from CitadelRP
/obj/item/weapon/robot_module/robot/clerical/butler/brodog/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/weapon/gripper/service(src)
@@ -564,7 +402,7 @@
src.modules += new /obj/item/weapon/material/kitchen/rollingpin(src)
src.modules += new /obj/item/device/multitool(src) //to freeze trays
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
//src.modules += new /obj/item/device/dogborg/boop_module(src)
src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce
var/datum/matter_synth/water = new /datum/matter_synth(500) // buffy fix, was 0
@@ -597,20 +435,6 @@
B.water = water
src.modules += B
*/
R.icon = 'icons/mob/widerobot_ser_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_ser_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/miner/kmine
@@ -648,38 +472,8 @@
B.water = water
src.modules += B
R.icon = 'icons/mob/widerobot_car_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_car_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
R.verbs |= /mob/living/proc/toggle_rider_reins
R.verbs |= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/Reset(var/mob/living/silicon/robot/R)
R.pixel_x = initial(pixel_x)
R.pixel_y = initial(pixel_y)
R.icon = initial(R.icon)
R.dogborg = FALSE
R.wideborg = FALSE
R.ui_style_vr = FALSE
R.default_pixel_x = initial(pixel_x)
R.scrubbing = FALSE
R.verbs -= /mob/living/silicon/robot/proc/ex_reserve_refill
R.verbs -= /mob/living/silicon/robot/proc/robot_mount
R.verbs -= /mob/living/proc/toggle_rider_reins
R.verbs -= /mob/living/proc/shred_limb
..()
/obj/item/weapon/robot_module/robot/clerical/butler/booze
name = "BoozeHound robot module"
can_be_pushed = 0
@@ -697,7 +491,7 @@
src.modules += new /obj/item/device/multitool(src) //to freeze trays
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/weapon/tray/robotray
src.modules += new /obj/item/device/dogborg/boop_module(src)
//src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/device/dogborg/sleeper/compactor/brewer(src)
src.emag = new /obj/item/weapon/dogborg/pounce(src)
//R.verbs += /mob/living/silicon/robot/proc/reskin_booze
@@ -714,17 +508,6 @@
src.modules += new /obj/item/weapon/tray/robotray(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/service(src)
R.icon = 'icons/mob/widerobot_colors_vr.dmi'
R.wideborg_dept = 'icons/mob/widerobot_colors_vr.dmi'
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.ui_style_vr = TRUE
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
..()
/obj/item/weapon/robot_module/robot/clerical/butler/booze/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
@@ -1,80 +1,5 @@
/mob/living/silicon/robot
var/sleeper_state = 0 // 0 for empty, 1 for normal, 2 for mediborg-healthy
var/leaping = 0
var/pounce_cooldown = 0
var/pounce_cooldown_time = 40
var/leap_at
var/dogborg = FALSE //Dogborg special features (overlays etc.)
var/wideborg = FALSE //When the borg simply doesn't use standard 32p size.
var/scrubbing = FALSE //Floor cleaning enabled
var/datum/matter_synth/water_res = null
var/notransform
var/original_icon = 'icons/mob/robots.dmi'
var/ui_style_vr = FALSE //Do we use our hud icons?
var/rest_style = "Default"
does_spin = FALSE
var/wideborg_dept = 'icons/mob/widerobot_vr.dmi'
var/vr_icons = list(
"handy-hydro",
"handy-service",
"handy-clerk",
"handy-janitor",
"handy-miner",
"handy-standard",
"handy-sec",
"mechoid-Standard",
"mechoid-Medical",
"mechoid-Security",
"mechoid-Science",
"mechoid-Engineering",
"mechoid-Miner",
"mechoid-Service",
"mechoid-Janitor",
"mechoid-Combat",
"mechoid-Combat-roll",
"mechoid-Combat-shield",
"Noble-CLN",
"Noble-SRV",
"Noble-DIG",
"Noble-MED",
"Noble-SEC",
"Noble-ENG",
"Noble-STD",
"zoomba-standard",
"zoomba-clerical",
"zoomba-engineering",
"zoomba-janitor",
"zoomba-medical",
"zoomba-crisis",
"zoomba-miner",
"zoomba-research",
"zoomba-security",
"zoomba-service",
"zoomba-combat",
"zoomba-combat-roll",
"zoomba-combat-shield",
"spiderscience",
"uptall-standard",
"uptall-standard2",
"uptall-medical",
"uptall-janitor",
"uptall-crisis",
"uptall-service",
"uptall-engineering",
"uptall-miner",
"uptall-security",
"uptall-science",
"worm-standard",
"worm-engineering",
"worm-janitor",
"worm-crisis",
"worm-miner",
"worm-security",
"worm-combat",
"worm-surgeon",
"worm-service"
) //List of all used sprites that are in robots_vr.dmi
/mob/living/silicon/robot/verb/robot_nom(var/mob/living/T in living_mobs(1))
set name = "Robot Nom"
@@ -85,38 +10,6 @@
return
return feed_grabbed_to_self(src,T)
/mob/living/silicon/robot/lay_down()
. = ..()
update_icon()
/mob/living/silicon/robot/verb/rest_style()
set name = "Switch Rest Style"
set desc = "Select your resting pose."
set category = "IC"
if(!sprite_datum || !sprite_datum.has_rest_sprites || sprite_datum.rest_sprite_options.len <= 1)
return
rest_style = tgui_alert(src, "Select resting pose", "Resting Pose", sprite_datum.rest_sprite_options)
if(!rest_style)
rest_style = "Default"
/mob/living/silicon/robot/proc/ex_reserve_refill()
set name = "Refill Extinguisher"
set category = "Object"
var/datum/matter_synth/water = water_res
for(var/obj/item/weapon/extinguisher/E in module.modules)
if(E.reagents.total_volume < E.max_water)
if(water && water.energy > 0)
var/amount = E.max_water - E.reagents.total_volume
if(water.energy < amount)
amount = water.energy
water.use_charge(amount)
E.reagents.add_reagent("water", amount)
to_chat(src, "<span class='filter_notice'>You refill the extinguisher using your water reserves.</span>")
else
to_chat(src, "<span class='filter_notice'>Insufficient water reserves.</span>")
//RIDING
/datum/riding/dogborg
keytype = /obj/item/weapon/material/twohanded/riding_crop // Crack!
@@ -166,8 +59,6 @@
/mob/living/silicon/robot/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
if(forced)
return ..() // Skip our checks
if(!dogborg)
return FALSE
if(lying)
return FALSE
if(!ishuman(M))
+1 -2
View File
@@ -152,8 +152,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
var/is_dogborg = FALSE
var/is_vore_simple_mob = FALSE
if(isrobot(host))
var/mob/living/silicon/robot/R = host
is_dogborg = R.dogborg
is_dogborg = TRUE
else if(istype(host, /mob/living/simple_mob/vore)) //So far, this does nothing. But, creating this for future belly work
is_vore_simple_mob = TRUE
data["host_mobtype"] = list(
Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB