diff --git a/code/game/objects/items/surplus_voucher_ch.dm b/code/game/objects/items/surplus_voucher_ch.dm new file mode 100644 index 0000000000..82e005de73 --- /dev/null +++ b/code/game/objects/items/surplus_voucher_ch.dm @@ -0,0 +1,192 @@ +// Contains the supply vouchers for taskmanager.dm +/obj/item/surplus_voucher + icon = 'icons/obj/items.dmi' + icon_state = "pizza_voucher" + throwforce = 0 + throw_speed = 5 + throw_range = 4 + force = 0 + +/obj/item/surplus_voucher/com + name = "Reward Surplus Voucher" + desc = "A surplus voucher! This one is meant to reward valued employees! Activate it for your surplus delivery!" +/obj/item/surplus_voucher/com/attack_self(mob/user as mob) + spawn_item(get_turf(src)) + +/obj/item/surplus_voucher/com/proc/spawn_item(var/turf/T) + var/path = pick(prob(6);/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/rum, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac, + prob(3);/obj/item/weapon/reagent_containers/food/drinks/bottle/wine, + prob(3);/obj/item/weapon/spacecash/c50, + prob(3);/obj/item/weapon/spacecash/c100, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/cheeseburger, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/fries, + prob(2);/obj/item/pizzabox/meat, + prob(2);/obj/item/pizzabox/vegetable, + prob(1);/obj/item/pizzabox/pineapple, + prob(2);/obj/item/pizzabox/margherita, + prob(2);/obj/item/pizzabox/mushroom, + prob(3);/obj/item/toy/bouquet, + prob(5);/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer, + prob(3);/obj/item/weapon/storage/box/snappops, + prob(2);/obj/item/clothing/under/syndicate/tacticool, + prob(3);/obj/item/clothing/head/cowboy_hat/small, + prob(3);/obj/item/toy/sword, + prob(3);/obj/item/toy/cultsword, + prob(1);/obj/structure/plushie/ian) + playsound(T, 'sound/effects/phasein.ogg', 25, 1) + new path(T) + del(src) + +/obj/item/surplus_voucher/eng + name = "Engineering Surplus Voucher" + desc = "A surplus voucher! This one is meant to resupply engineering with tools! Activate it for your surplus delivery!" +/obj/item/surplus_voucher/eng/attack_self(mob/user as mob) + spawn_item(get_turf(src)) + +/obj/item/surplus_voucher/eng/proc/spawn_item(var/turf/T) + var/path = pick(prob(2);/datum/design/item/powercell/high, + prob(2);/obj/item/weapon/storage/briefcase/inflatable, + prob(2);/obj/item/clamp, + prob(3);/obj/item/weapon/extinguisher, + prob(3);/obj/item/weapon/weldingtool/largetank, + prob(2);/obj/item/weapon/tool/wirecutters, + prob(3);/obj/item/weapon/tool/wrench, + prob(3);/obj/item/weapon/tool/screwdriver, + prob(3);/obj/item/device/analyzer, + prob(3);/obj/item/device/t_scanner, + prob(1);/obj/item/weapon/rms, + prob(1);/obj/item/weapon/rcd, + prob(3);/obj/item/weapon/rcd_ammo, + prob(2);/obj/item/weapon/grenade/chem_grenade/metalfoam, + prob(1);/obj/item/toy/figure/engineer) + playsound(T, 'sound/effects/phasein.ogg', 25, 1) + new path(T) + del(src) + + + +/obj/item/surplus_voucher/med + name = "Medical Surplus Voucher" + desc = "A surplus voucher! This one is meant to resupply medical with chemicals and kits! Activate it for your surplus delivery!" +/obj/item/surplus_voucher/med/attack_self(mob/user as mob) + spawn_item(get_turf(src)) + +/obj/item/surplus_voucher/med/proc/spawn_item(var/turf/T) + var/path = pick(prob(6);/obj/item/weapon/storage/firstaid/regular, + prob(6);/obj/item/weapon/storage/firstaid/fire, + prob(6);/obj/item/weapon/storage/firstaid/toxin, + prob(6);/obj/item/weapon/storage/firstaid/o2, + prob(6);/obj/item/weapon/storage/firstaid/adv, + prob(2);/obj/item/weapon/storage/firstaid/surgery, + prob(1);/obj/item/weapon/storage/firstaid/combat, + prob(3);/obj/item/weapon/storage/pill_bottle/antitox, + prob(3);/obj/item/weapon/storage/pill_bottle/bicaridine, + prob(2);/obj/item/weapon/storage/pill_bottle/dexalin_plus, + prob(3);/obj/item/weapon/storage/pill_bottle/dylovene, + prob(3);/obj/item/weapon/storage/pill_bottle/inaprovaline, + prob(3);/obj/item/weapon/storage/pill_bottle/kelotane, + prob(3);/obj/item/weapon/storage/pill_bottle/dermaline, + prob(3);/obj/item/weapon/storage/pill_bottle/spaceacillin, + prob(3);/obj/item/weapon/storage/pill_bottle/tramadol, + prob(3);/obj/item/weapon/storage/pill_bottle/carbon, + prob(3);/obj/item/weapon/storage/pill_bottle/iron, + prob(4);/obj/item/weapon/storage/pill_bottle/assorted, + prob(1);/obj/item/weapon/storage/pill_bottle/combat, + prob(4);/obj/item/weapon/backup_implanter, + prob(2);/obj/item/toy/plushie/borgplushie/medihound) + playsound(T, 'sound/effects/phasein.ogg', 25, 1) + new path(T) + del(src) + +/obj/item/surplus_voucher/sci + name = "Science Surplus Voucher" + desc = "A surplus voucher! This one is meant to supply science with a variety of miscellaneous items! Activate it for your surplus delivery!" +/obj/item/surplus_voucher/sci/attack_self(mob/user as mob) + spawn_item(get_turf(src)) + +/obj/item/surplus_voucher/sci/proc/spawn_item(var/turf/T) + var/path = pick(prob(1);/obj/item/device/kit/paint/ripley, + prob(1);/obj/item/device/kit/paint/ripley/death, + prob(1);/obj/item/device/kit/paint/ripley/flames_red, + prob(1);/obj/item/device/kit/paint/ripley/flames_blue, + prob(1);/obj/item/device/kit/paint/durand, + prob(1);/obj/item/device/kit/paint/gygax/darkgygax, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/monkeycube, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sobakacube, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sarucube, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sparracube, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wolpincube, + prob(2);/obj/item/weapon/storage/part_replacer, + prob(2);/obj/item/device/integrated_circuit_printer, + prob(1);/obj/item/weapon/disk/integrated_circuit/upgrade/advanced, + prob(3);/obj/item/stack/nanopaste, + prob(3);/obj/item/weapon/melee/baton/slime, + prob(3);/obj/item/weapon/gun/energy/taser/xeno, + prob(3);/obj/item/weapon/storage/box/monkeycubes, + prob(1);/obj/item/toy/figure/borg) + playsound(T, 'sound/effects/phasein.ogg', 25, 1) + new path(T) + del(src) + +/obj/item/surplus_voucher/sec + name = "Security Surplus Voucher" + desc = "A surplus voucher! This one is meant to resupply security with gear... and donuts! Activate it for your surplus delivery!" +/obj/item/surplus_voucher/sec/attack_self(mob/user as mob) + spawn_item(get_turf(src)) + +/obj/item/surplus_voucher/sec/proc/spawn_item(var/turf/T) + var/path = pick(prob(2);/obj/item/weapon/storage/box/flashbangs, + prob(1);/obj/item/weapon/storage/box/empslite, + prob(3);/obj/item/weapon/storage/box/smokes, + prob(2);/obj/item/weapon/storage/box/teargas, + prob(4);/obj/item/weapon/storage/box/flare, + prob(5);/obj/item/weapon/storage/box/donut, + prob(4);/obj/item/weapon/storage/box/handcuffs, + prob(3);/obj/item/weapon/reagent_containers/spray/pepper, + prob(2);/obj/item/weapon/gun/energy/taser, + prob(2);/obj/item/weapon/gun/energy/stunrevolver, + prob(3);/obj/item/weapon/melee/baton/loaded, + prob(2);/obj/item/weapon/storage/box/beanbags, + prob(2);/obj/item/weapon/storage/box/stunshells, + prob(2);/obj/item/ammo_magazine/m45/rubber, + prob(2);/obj/item/ammo_magazine/m9mmt/rubber, + prob(1);/obj/item/weapon/gun/projectile/colt/detective, + prob(1);/obj/item/weapon/gun/projectile/shotgun/pump, + prob(1);/obj/item/toy/plushie/borgplushie) + playsound(T, 'sound/effects/phasein.ogg', 25, 1) + new path(T) + del(src) + +/obj/item/surplus_voucher/ser + name = "Service Surplus Voucher" + desc = "A surplus voucher! This one is meant to generally resupply service employees! Activate it for your surplus delivery!" +/obj/item/surplus_voucher/ser/attack_self(mob/user as mob) + spawn_item(get_turf(src)) + +/obj/item/surplus_voucher/ser/proc/spawn_item(var/turf/T) + var/path = pick(prob(4);/obj/item/weapon/reagent_containers/food/drinks/milk, + prob(4);/obj/item/weapon/reagent_containers/food/condiment/flour, + prob(4);/obj/item/weapon/reagent_containers/food/drinks/soymilk, + prob(4);/obj/item/weapon/storage/fancy/egg_box, + prob(3);/obj/item/weapon/reagent_containers/food/snacks/meat, + prob(3);/obj/item/weapon/reagent_containers/spray/cleaner, + prob(2);/obj/item/weapon/grenade/chem_grenade/cleaner, + prob(1);/obj/item/weapon/storage/box/monkeycubes, + prob(3);/obj/item/weapon/reagent_containers/spray/plantbgone, + prob(2);/obj/item/seeds/sunflowerseed, + prob(2);/obj/item/seeds/cornseed, + prob(2);/obj/item/seeds/berryseed, + prob(2);/obj/item/seeds/wheatseed, + prob(2);/obj/item/seeds/orangeseed, + prob(1);/obj/item/toy/figure/bartender) + playsound(T, 'sound/effects/phasein.ogg', 25, 1) + new path(T) + del(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/taskmanager_ch.dm b/code/game/objects/items/weapons/taskmanager_ch.dm new file mode 100644 index 0000000000..7aea6903af --- /dev/null +++ b/code/game/objects/items/weapons/taskmanager_ch.dm @@ -0,0 +1,191 @@ +/obj/item/weapon/taskmanager + name = "Task Manager" + desc = "A high-tech tool used to pull surplus items from offsite storage. Select a department to begin! Has a five minute cooldown between successful uses" + icon = 'icons/mob/dogborg_vr.dmi' + icon_state = "taskmanager" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + force = 5 + throwforce = 7 + throw_speed = 1 + throw_range = 3 + w_class = ITEMSIZE_NORMAL + origin_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 3) + matter = list(DEFAULT_WALL_MATERIAL = 5000) + preserve_item = FALSE + var/scancount = 0 + var/scanreq = 3 + var/mode = 0 + var/formatx1 = 0 + var/formatx2 = 0 + var/formatx3 = 0 + var/format = "" + var/ready = 1 + var/list/scannables = list() + var/list/scanned = list() + var/static/image/radial_image_bridge = image(icon = 'icons/mob/radial_ch.dmi', icon_state = "bridge") + var/static/image/radial_image_engineering = image(icon= 'icons/mob/radial_ch.dmi', icon_state = "eng") + var/static/image/radial_image_medical = image(icon = 'icons/mob/radial_ch.dmi', icon_state = "medbay") + var/static/image/radial_image_science = image(icon = 'icons/mob/radial_ch.dmi', icon_state = "sci") + var/static/image/radial_image_service = image(icon = 'icons/mob/radial_ch.dmi', icon_state = "bar") + var/static/image/radial_image_security = image(icon = 'icons/mob/radial_ch.dmi', icon_state = "armory") + +/obj/item/weapon/taskmanager/proc/check_menu(mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + + +/obj/item/weapon/taskmanager/attack_self(mob/user) + var/list/choices = list( + "Bridge" = radial_image_bridge, + "Engineering" = radial_image_engineering, + "Medical" = radial_image_medical, + "Science" = radial_image_science, + "Service" = radial_image_service, + "Security" = radial_image_security + ) + + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + if(!check_menu(user)) + return + switch(choice) + if("Bridge") + mode = 1 + scancount = 0 + scanned = list() + scannables = list(/mob/living/simple_mob/animal/passive/dog/corgi/Ian,/obj/machinery/photocopier,/obj/machinery/papershredder,/obj/item/weapon/pen/multi, + /obj/structure/filingcabinet/chestdrawer,/obj/item/weapon/folder/blue,/obj/item/weapon/folder/red,/obj/machinery/computer/communications, + /obj/machinery/photocopier/faxmachine,/obj/item/weapon/hand_labeler,/obj/item/device/megaphone,/obj/item/device/taperecorder,/obj/item/weapon/melee/chainofcommand, + /obj/item/weapon/hand_tele,/obj/item/weapon/stamp/captain,/obj/item/weapon/stamp/denied) + if("Engineering") + mode = 2 + scancount = 0 + scanned = list() + scannables = list(/obj/item/weapon/book/manual/supermatter_engine,/obj/machinery/computer/security/engineering,/obj/item/weapon/rcd,/obj/item/weapon/stamp/ce, + /obj/item/weapon/folder/yellow_ce,/obj/item/clothing/glasses/meson,/obj/item/weapon/tape_roll,/obj/machinery/computer/power_monitor,/obj/machinery/computer/rcon, + /obj/machinery/computer/atmos_alert,/obj/machinery/pipedispenser,/obj/machinery/pipedispenser/disposal,/obj/item/clothing/head/welding,/obj/item/clothing/glasses/welding, + /obj/machinery/vending/tool,/obj/machinery/vending/engivend,/obj/structure/reagent_dispensers/fueltank,/obj/structure/reagent_dispensers/watertank) + if("Medical") + mode = 3 + scancount = 0 + scanned = list() + scannables = list(/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/device/sleevemate,/obj/item/device/defib_kit/loaded,/obj/item/organ/internal/lungs/erikLungs, + /obj/machinery/reagentgrinder,/obj/machinery/chem_master,/obj/machinery/chemical_dispenser/full,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker, + /obj/item/device/mass_spectrometer/adv,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/toxin, + /obj/item/weapon/storage/firstaid/fire,/obj/machinery/vending/medical,/obj/item/roller,/obj/machinery/vending/blood,/obj/machinery/atmospherics/unary/cryo_cell, + /obj/machinery/clonepod/transhuman/full,/obj/machinery/body_scanconsole,/obj/machinery/sleep_console) + if("Science") + mode = 4 + scancount = 0 + scanned = list() + scannables = list(/obj/machinery/pros_fabricator,/obj/machinery/mecha_part_fabricator,/obj/machinery/autolathe,/obj/machinery/computer/rdconsole/robotics, + /obj/machinery/r_n_d/circuit_imprinter,/obj/machinery/r_n_d/destructive_analyzer,/obj/machinery/computer/rdconsole/core,/obj/machinery/r_n_d/protolathe, + /mob/living/simple_mob/slime/xenobio/rainbow/kendrick,/obj/machinery/computer/rdservercontrol,/obj/machinery/r_n_d/server/core,/obj/machinery/r_n_d/server/robotics, + /obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/gun/energy/taser/xeno,/obj/item/weapon/melee/baton/slime/loaded,/obj/item/device/slime_scanner, + /obj/machinery/processor) + if("Service") + mode = 5 + scancount = 0 + scanned = list() + scannables = list(/obj/machinery/holosign/bar,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/fork, + /mob/living/carbon/human/monkey/punpun,/obj/machinery/chemical_dispenser/bar_alc/full,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/machinery/smartfridge/drinks, + /obj/machinery/vending/boozeomat,/obj/machinery/media/jukebox,/obj/machinery/chem_master/condimaster,/obj/machinery/microwave,/obj/machinery/cooker/cereal, + /obj/machinery/cooker/candy,/obj/machinery/vending/dinnerware,/obj/structure/closet/secure_closet/freezer/meat,/obj/structure/closet/secure_closet/freezer/fridge, + /obj/machinery/cooker/fryer,/obj/machinery/cooker/grill,/obj/machinery/cooker/oven,/obj/machinery/icecream_vat,/obj/machinery/gibber,/obj/structure/kitchenspike, + /obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/vending/hydronutrients,/obj/machinery/seed_storage/garden,/obj/machinery/honey_extractor, + /obj/machinery/biogenerator,/obj/machinery/seed_extractor) + if("Security") + mode = 6 + scancount = 0 + scanned = list() + scannables = list(/obj/machinery/deployable/barrier,/obj/machinery/flasher/portable,/obj/item/weapon/storage/box/flashbangs,/obj/item/device/taperecorder, + /mob/living/simple_mob/animal/passive/snake/noodle,/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/reagent_containers/spray/pepper, + /obj/item/weapon/storage/box/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud/aviator,/obj/machinery/computer/secure_data,/obj/machinery/computer/security, + /obj/item/weapon/storage/briefcase/crimekit,/obj/machinery/microscope,/obj/machinery/dnaforensics,/obj/machinery/flasher,/obj/structure/closet/secure_closet/brig, + /obj/structure/closet/secure_closet/warden,/obj/machinery/vending/security,/obj/structure/closet/secure_closet/hos2,/obj/structure/closet/secure_closet/hos, + /obj/item/weapon/stamp/hos,/obj/structure/closet/secure_closet/security) + else + return + + scanreq = rand(3,9) + to_chat(user, span("notice", "Changed mode to '[choice]'.")) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + return ..() + + + +/obj/item/weapon/taskmanager/afterattack(atom/target, mob/user, proximity) + if(!proximity) + return + if(!ready) + to_chat(user, "The Task Manager is still recharging!") + return + if(mode == 0) + to_chat(user, "You must choose a department first!") + return + if((target.type in scannables) && scancount < scanreq && !(target.type in scanned)) + scancount = scancount + 1 + scanned.Add(target.type) + var/scansleft = scanreq - scancount + playsound(src, 'sound/machines/beep.ogg', 50) + to_chat(user, "You must scan [scansleft] more department objects!") + if (scancount == scanreq) + formatx1 = rand(1,5) + formatx2 = rand(0,80) + formatx3 = rand(1,6) + format = "Greetings supervisors,
I have detected [formatx1] infractions in this department alone.
Scans indicate that this department is functioning at [formatx2]% capacity.
Additional supplies are requested, priority level [formatx3]
I await your delivery" + to_chat(user, "Scans complete! [formatx1] infractions detected, department at [formatx2]% capacity, alert level [formatx3]") + to_chat(user, "Please write down the following form on a paper, and replace all X's with the appopriate number. Do NOT change anything but the X's") + to_chat(user, "Greetings supervisors,
I have detected X infractions in this department alone.
Scans indicate that this department is functioning at X% capacity.
Additional supplies are requested, priority level X
I await your delivery
") + return + if(istype(target,/obj/item/weapon/paper) && scancount == scanreq) + scan_paper(user,target) + return + else + to_chat(user, "The Task Manager can't scan this!") + return + +/obj/item/weapon/taskmanager/proc/scan_paper(user,paper) + var/obj/item/weapon/paper/P = paper + if(findtext(P.info,format)) + deploy_voucher(get_turf(src)) + scancount = 0 + scanned = list() + del(P) + to_chat(user, "Format accepted, printing voucher!") + ready = 0 + spawn(30 SECONDS) + ready = 1 + return + if(!findtext(P.info,format)) + to_chat(user, "Incorrect format!") + return + else + to_chat(user, "If you are reading this, something has gone horribly wrong!") + return + +/obj/item/weapon/taskmanager/proc/deploy_voucher(var/turf/T) + switch(mode) + if (1) + new /obj/item/surplus_voucher/com(T) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if (2) + new /obj/item/surplus_voucher/eng(T) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if (3) + new /obj/item/surplus_voucher/med(T) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if (4) + new /obj/item/surplus_voucher/sci(T) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if (5) + new /obj/item/surplus_voucher/ser(T) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if (6) + new /obj/item/surplus_voucher/sec(T) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) diff --git a/code/global_vr.dm b/code/global_vr.dm index 0db457da75..3b7ea08384 100644 --- a/code/global_vr.dm +++ b/code/global_vr.dm @@ -7,6 +7,7 @@ robot_module_types += "Service-Hound" robot_module_types += "KMine" robot_module_types += "BoozeHound" //YW changes + robot_module_types += "UnityHound" // CH changes return 1 /* //ChompStation Removal var/list/shell_module_types = list( 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 ae59e957b6..4a07efa00a 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 @@ -698,12 +698,20 @@ icon_state = "brewer" injection_chems = null max_item_count = 1 - + /obj/item/device/dogborg/sleeper/compactor/supply //Miner borg belly name = "Supply Satchel" desc = "A mounted survival unit with fuel processor." icon_state = "sleeperc" injection_chems = list("glucose","inaprovaline","tricordrazine") max_item_count = 1 +/obj/item/device/dogborg/sleeper/command //Command borg belly // CH addition + name = "Bluespace Filing Belly" + desc = "A mounted bluespace storage unit for carrying paperwork" + icon_state = "sleeperd" + injection_chems = null + compactor = TRUE + recycles = FALSE + max_item_count = 25 #undef SLEEPER_INJECT_COST \ No newline at end of file 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 c986456a0d..9f13ab2a47 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 @@ -37,6 +37,26 @@ LANGUAGE_ENOCHIAN = 1 ) +/obj/item/weapon/robot_module/robot/chound + languages = list( + LANGUAGE_SOL_COMMON = 1, + LANGUAGE_TRADEBAND = 1, + LANGUAGE_UNATHI = 1, + LANGUAGE_SIIK = 1, + LANGUAGE_SKRELLIAN = 1, + LANGUAGE_ROOTLOCAL = 0, + LANGUAGE_GUTTER = 1, + LANGUAGE_SCHECHI = 1, + LANGUAGE_EAL = 1, + LANGUAGE_SIGN = 0, + LANGUAGE_BIRDSONG = 1, + LANGUAGE_SAGARU = 1, + LANGUAGE_CANILUNZT = 1, + LANGUAGE_ECUREUILIAN= 1, + LANGUAGE_DAEMON = 1, + LANGUAGE_ENOCHIAN = 1 + ) + /hook/startup/proc/robot_modules_vr() robot_modules["Medihound"] = /obj/item/weapon/robot_module/robot/medihound robot_modules["K9"] = /obj/item/weapon/robot_module/robot/knine @@ -48,6 +68,7 @@ robot_modules["Service-Hound"] = /obj/item/weapon/robot_module/robot/clerical/brodog robot_modules["KMine"] = /obj/item/weapon/robot_module/robot/kmine robot_modules["BoozeHound"] = /obj/item/weapon/robot_module/robot/booze //YW Addition booze + robot_modules["UnityHound"] = /obj/item/weapon/robot_module/robot/chound //CH Addition Unity return 1 //Just add a new proc with the robot_module type if you wish to run some other vore code @@ -262,7 +283,7 @@ var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(2000) synths += medicine - + var/obj/item/stack/medical/advanced/clotting/C = new (src) C.uses_charge = 1 C.charge_costs = list(1000) @@ -987,3 +1008,81 @@ B.reagents.add_reagent("beer2", 2 * amount) // YW Changes - Boozeborg end + +// CH Changes - Unity Hound begin +/obj/item/weapon/robot_module/robot/chound + name = "Unity Hound Module" + sprites = list( + "Kcom" = "kcom" + ) + channels = list( + "Medical" = 1, + "Engineering" = 1, + "Security" = 1, + "Service" = 1, + "Supply" = 0, + "Science" = 1, + "Command" = 1, + "Explorer" = 0 + ) + pto_type = PTO_CIVILIAN + can_be_pushed = 0 + +/obj/item/weapon/robot_module/robot/chound/New(var/mob/living/silicon/robot/R) + src.modules += new /obj/item/weapon/pen/robopen(src) + src.modules += new /obj/item/weapon/form_printer(src) + src.modules += new /obj/item/weapon/gripper/paperwork(src) + 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.modules += new /obj/item/weapon/taskmanager(src) + src.emag = new /obj/item/weapon/stamp/chameleon(src) + src.emag = new /obj/item/weapon/pen/chameleon(src) + + 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 + src.modules += T + + var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper/command(src) + B.water = water + src.modules += B + + R.icon = 'icons/mob/widerobot_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.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 + R.verbs |= /mob/living/silicon/robot/proc/rest_style + + ..() + +/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 + R.verbs -= /mob/living/silicon/robot/proc/rest_style + ..() +// CH changes - Unity Hound end + diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 1959dd6466..b8bb793f77 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -33,7 +33,11 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins /obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob) user.set_machine(src) - ui_interact(user) + if(issilicon(usr)) + authenticated = 1 + ui_interact(user) + else + ui_interact(user) /** * Display the NanoUI window for the fax machine. diff --git a/icons/mob/dogborg_vr.dmi b/icons/mob/dogborg_vr.dmi index 4bf56f830a..bc50551508 100644 Binary files a/icons/mob/dogborg_vr.dmi and b/icons/mob/dogborg_vr.dmi differ diff --git a/icons/mob/radial_ch.dmi b/icons/mob/radial_ch.dmi new file mode 100644 index 0000000000..cc069847b0 Binary files /dev/null and b/icons/mob/radial_ch.dmi differ diff --git a/icons/mob/widerobot_ch.dmi b/icons/mob/widerobot_ch.dmi index 883f8a4b2f..2fe76523cb 100644 Binary files a/icons/mob/widerobot_ch.dmi and b/icons/mob/widerobot_ch.dmi differ