Merge pull request #779 from kcin2001/new-vorebots

adds 2 new 32x vore borg modules (service and medical)
This commit is contained in:
Razgriz
2019-08-27 00:39:41 -07:00
committed by GitHub
10 changed files with 226 additions and 3 deletions
@@ -673,6 +673,17 @@
max_item_count = 10
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"
/obj/item/device/dogborg/sleeper/compactor/brewer //Boozehound gut.
name = "Brew Belly"
@@ -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)
@@ -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)
..()
@@ -45,6 +45,8 @@
robot_modules["Pupdozer"] = /obj/item/weapon/robot_module/robot/engiedog
robot_modules["BoozeHound"] = /obj/item/weapon/robot_module/robot/booze
robot_modules["Service-borg"] = /obj/item/weapon/robot_module/robot/servborg
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
@@ -509,11 +511,11 @@
water.energy = 0
R.water_res = water
synths += water
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
T.water = water
src.modules += T
src.modules += new /obj/item/weapon/tray/robotray(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/service/booze(src)
@@ -7,6 +7,7 @@
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/resticon = TRUE //does nothing without dogborg and when false makes it use a similar method to default borgs
var/scrubbing = FALSE //Floor cleaning enabled
var/datum/matter_synth/water_res = null
var/notransform
@@ -56,9 +57,12 @@
add_overlay("taser")
if(lights_on)
add_overlay("eyes-[module_sprites[icontype]]-lights")
if(resting)
if(resting && resticon == FALSE)
cut_overlay("eyes-[module_sprites[icontype]]")
if(resting && resticon == TRUE)
cut_overlays() // Hide that gut for it has no ground sprite yo.
icon_state = "[module_sprites[icontype]]-rest"
else
icon_state = "[module_sprites[icontype]]"
if(dogborg == TRUE && stat == DEAD)