diff --git a/code/global_vr.dm b/code/global_vr.dm index 8b4ab024fc..30ebf366e6 100644 --- a/code/global_vr.dm +++ b/code/global_vr.dm @@ -4,4 +4,6 @@ robot_module_types += "Janihound" robot_module_types += "Sci-borg" robot_module_types += "Pupdozer" + robot_module_types += "Vore Services" //edit chompers + robot_module_types += "Medivore" return 1 diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 39236a824f..7ef49f4b7b 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -671,4 +671,16 @@ desc = "A mounted matter decompiling unit with fuel processor." icon_state = "decompiler" max_item_count = 10 - decompiler = TRUE \ No newline at end of file + decompiler = TRUE + +/obj/item/device/dogborg/sleeper/general //generic stomach for borgs + name = "Robotic Stomach" + desc = "A stretchy stomach for a vore enabled borg, it can hold and digest items and crew." + icon_state = "belly-standard" + injection_chems = null + max_item_count = 10 + +/obj/item/device/dogborg/sleeper/medical + name = "Borg Mounted Sleeper" + desc = "A stretchy stomach for a vore enabled medical borg, it can hold crew for healing or as emergency power." + icon_state = "belly-medical" \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/dogborg/nondog_modules_ch.dm b/code/modules/mob/living/silicon/robot/dogborg/nondog_modules_ch.dm new file mode 100644 index 0000000000..f2161c25fd --- /dev/null +++ b/code/modules/mob/living/silicon/robot/dogborg/nondog_modules_ch.dm @@ -0,0 +1,62 @@ +/obj/item/weapon/service_fab + name = "\improper Service item disepencer" + desc = "A device used to dispence service items." + icon = 'icons/obj/items.dmi' + icon_state = "rcd" + var/obj/product + var/mode = 1 + +/obj/item/weapon/service_fab/attack_self(mob/user as mob) + var/mob/M = usr + var/list/options = list() + options["Drinking Glass, Pint"] = 1 + options["Coffee Cup"] = 2 + options["Paper"] = 3 + options["Pen"] = 4 + options["Dice Bag"] = 5 + options["Cigarette"] = 6 + var/choice = input(M,"Choose your item!") in options + if(src && choice && !M.stat && in_range(M,src)) + mode = options[choice] + M << "You will now dispence [choice]" + return 1 + +/obj/item/weapon/service_fab/afterattack(atom/A, mob/user as mob, proximity) + if(!proximity) return + + if(istype(user,/mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = user + if(R.stat || !R.cell || R.cell.charge <= 0) + return +// else +// if(stored_matter <= 0) +// return + + if(!istype(A, /obj/structure/table) && !istype(A, /turf/simulated/floor)) + return + + playsound(src.loc, 'sound/machines/click.ogg', 10, 1) + var/used_energy = 30 +// var/obj/product + + switch(mode) + if(1) + product = new /obj/item/weapon/reagent_containers/food/drinks/glass2/pint() + if(2) + product = new /obj/item/weapon/reagent_containers/food/drinks/cup() + if(3) + product = new /obj/item/weapon/paper() + if(4) + product = new /obj/item/weapon/pen() + if(5) + product = new /obj/item/weapon/storage/pill_bottle/dice() + if(6) + product = new /obj/item/clothing/mask/smokable/cigarette() + + user << "Dispensing [product ? product : "product"]..." + product.loc = get_turf(A) + +// if(isrobot(user)) + var/mob/living/silicon/robot/R = user + if(R.cell) + R.cell.use(used_energy) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_ch.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_ch.dm new file mode 100644 index 0000000000..68a48a6c2c --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_ch.dm @@ -0,0 +1,140 @@ +/obj/item/weapon/robot_module/robot/servore + name = "vore services module" + can_buckle = 1 + sprites = list( + "Service BootyBot" = "servoregreen", + "BoootyBlue" = "servore" + ) + channels = list("Service" = 1) + can_be_pushed = 0 + + languages = list( + LANGUAGE_SOL_COMMON = 1, + LANGUAGE_UNATHI = 1, + LANGUAGE_SIIK = 1, + LANGUAGE_AKHANI = 1, + LANGUAGE_SKRELLIAN = 1, + LANGUAGE_SKRELLIANFAR = 0, + LANGUAGE_ROOTLOCAL = 0, + LANGUAGE_TRADEBAND = 1, + LANGUAGE_GUTTER = 0, + LANGUAGE_SCHECHI = 1, + LANGUAGE_EAL = 1, + LANGUAGE_TERMINUS = 1, + LANGUAGE_SIGN = 0 + ) + +/obj/item/weapon/robot_module/robot/servore/New(var/mob/living/silicon/robot/R) + src.modules += new /obj/item/weapon/gripper/service(src) + src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src) + src.modules += new /obj/item/weapon/material/minihoe(src) + src.modules += new /obj/item/weapon/material/knife/machete/hatchet(src) + src.modules += new /obj/item/device/analyzer/plant_analyzer(src) + src.modules += new /obj/item/weapon/storage/bag/plants(src) + src.modules += new /obj/item/weapon/robot_harvester(src) + src.modules += new /obj/item/weapon/material/knife(src) + 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/device/dogborg/sleeper/general(src) + src.modules += new /obj/item/weapon/service_fab(src) + + //var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) + //M.stored_matter = 30 + //src.modules += M + + src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src) + + var/obj/item/weapon/flame/lighter/zippo/L = new /obj/item/weapon/flame/lighter/zippo(src) + L.lit = 1 + src.modules += L + + 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/datum/reagents/N = new/datum/reagents(50) + src.emag.reagents = N + N.my_atom = src.emag + N.add_reagent("beer2", 50) + src.emag.name = "Mickey Finn's Special Brew" + + R.icon = 'icons/mob/robots_ch.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.resticon = FALSE + R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill + ..() + +/obj/item/weapon/robot_module/robot/medical/vore + name = "crisis robot vore module" + sprites = list( + "Medical BootyBot" = "medvore" + ) + +/obj/item/weapon/robot_module/robot/medical/vore/New(var/mob/living/silicon/robot/R) + src.modules += new /obj/item/device/healthanalyzer(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) + src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src) + src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src) + src.modules += new /obj/item/weapon/reagent_containers/syringe(src) + 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(src) + src.modules += new /obj/item/device/dogborg/sleeper/medical(src) + src.emag = new /obj/item/weapon/reagent_containers/spray(src) + src.emag.reagents.add_reagent("pacid", 250) + src.emag.name = "Polyacid spray" + + var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000) + synths += medicine + + var/obj/item/stack/medical/advanced/ointment/O = new /obj/item/stack/medical/advanced/ointment(src) + var/obj/item/stack/medical/advanced/bruise_pack/B = new /obj/item/stack/medical/advanced/bruise_pack(src) + var/obj/item/stack/medical/splint/S = new /obj/item/stack/medical/splint(src) + O.uses_charge = 1 + O.charge_costs = list(1000) + O.synths = list(medicine) + B.uses_charge = 1 + B.charge_costs = list(1000) + B.synths = list(medicine) + S.uses_charge = 1 + S.charge_costs = list(1000) + S.synths = list(medicine) + src.modules += O + src.modules += B + src.modules += S + + R.icon = 'icons/mob/robots_ch.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.resticon = FALSE + R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill + ..() + +/obj/item/weapon/robot_module/robot/medical/vore/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) + + var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules + if(S.mode == 2) + S.reagents.clear_reagents() + S.mode = initial(S.mode) + S.desc = initial(S.desc) + S.update_icon() + + if(src.emag) + var/obj/item/weapon/reagent_containers/spray/PS = src.emag + PS.reagents.add_reagent("pacid", 2 * amount) + + ..() + diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 09728c2acd..b1467ed101 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -43,6 +43,8 @@ robot_modules["Janihound"] = /obj/item/weapon/robot_module/robot/scrubpup robot_modules["Sci-borg"] = /obj/item/weapon/robot_module/robot/science robot_modules["Pupdozer"] = /obj/item/weapon/robot_module/robot/engiedog + robot_modules["Vore Services"] = /obj/item/weapon/robot_module/robot/servore//edit chompers + robot_modules["Medivore"] = /obj/item/weapon/robot_module/robot/medical/vore return 1 //Just add a new proc with the robot_module type if you wish to run some other vore code diff --git a/icons/mob/dogborg_vr.dmi b/icons/mob/dogborg_vr.dmi index 78d646c6aa..f01e8902ca 100644 Binary files a/icons/mob/dogborg_vr.dmi and b/icons/mob/dogborg_vr.dmi differ diff --git a/icons/mob/robots_ch.dmi b/icons/mob/robots_ch.dmi new file mode 100644 index 0000000000..ede47972c2 Binary files /dev/null and b/icons/mob/robots_ch.dmi differ diff --git a/icons/mob/screen1_robot_vr.dmi b/icons/mob/screen1_robot_vr.dmi index 3c8a67154e..9b51034d10 100644 Binary files a/icons/mob/screen1_robot_vr.dmi and b/icons/mob/screen1_robot_vr.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 5f06fb738c..ecc36faddd 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2162,6 +2162,7 @@ #include "code\modules\mob\living\silicon\robot\syndicate.dm" #include "code\modules\mob\living\silicon\robot\dogborg\dog_modules_vr.dm" #include "code\modules\mob\living\silicon\robot\dogborg\dog_sleeper_vr.dm" +#include "code\modules\mob\living\silicon\robot\dogborg\nondog_modules_ch.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" @@ -2172,6 +2173,7 @@ #include "code\modules\mob\living\silicon\robot\drone\drone_unify.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\event.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\station.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules\station_ch.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\station_vr.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\syndicate.dm" #include "code\modules\mob\living\silicon\robot\subtypes\gravekeeper.dm"