diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index ba6a33d48c..40caa4c405 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -35,6 +35,15 @@ containertype = /obj/structure/closet/crate/allico containername = "foam weapon crate" +/datum/supply_pack/recreation/donksoftborg + name = "Donk-Soft Cyborg Blaster Crate" + contains = list( + /obj/item/borg/upgrade/toygun = 2, + ) + cost = 35 + containertype = /obj/structure/closet/crate/allico + containername = "foam weapon crate" + /datum/supply_pack/recreation/donksoftvend name = "Donk-Soft Vendor Crate" contains = list() diff --git a/code/game/objects/items/robot/robot_upgrades_vr.dm b/code/game/objects/items/robot/robot_upgrades_vr.dm index bd9f247ec7..499d535a5c 100644 --- a/code/game/objects/items/robot/robot_upgrades_vr.dm +++ b/code/game/objects/items/robot/robot_upgrades_vr.dm @@ -31,6 +31,30 @@ R.verbs += /mob/living/proc/set_size return 1 +//Robot size gun +/obj/item/borg/upgrade/sizegun + name = "robot mounted size gun" + desc = "A size gun adapted for installation in cyborgs, allows them to turn people pocket-sized among other uses. What could go wrong?" + icon_state = "cyborg_upgrade2" + item_state = "cyborg_upgrade" + require_module = 1 + +/obj/item/borg/upgrade/sizegun/action(var/mob/living/silicon/robot/R) + if(..()) return 0 + + var/obj/item/weapon/gun/energy/sizegun/mounted/T = locate() in R.module + if(!T) + T = locate() in R.module.contents + if(!T) + T = locate() in R.module.modules + if(!T) + R.module.modules += new/obj/item/weapon/gun/energy/sizegun/mounted(R.module) + return 1 + if(T) + to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") + to_chat(usr, "There's no mounting point for the module!") + return 0 + /obj/item/borg/upgrade/bellysizeupgrade name = "robohound capacity expansion module" desc = "Used to double a robohound's belly capacity. This only affects total volume, and won't allow support of more than one patient in case of sleeper bellies. Can only be applied once." @@ -152,6 +176,30 @@ if(!T) R.module.modules += new/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg(R.module) return 1 + if(T) + to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") + to_chat(usr, "There's no mounting point for the module!") + return 0 + +//cyborg foam dart gun +/obj/item/borg/upgrade/toygun + name = "Donk-Soft Cyborg Blaster module" //Cyborg Blaster is capitalized because it's the brand name + desc = "A foam dart gun designed for mounting into cyborgs. It's Donk or Don't! DISCLAIMER: Donk-Soft bears no responsibility for incidents relating to cyborgs becoming too accustomed to shooting at crew. Installation of the Donk-Soft Cyborg Blaster must be performed only by a licensed roboticist." + icon_state = "cyborg_upgrade5" + item_state = "cyborg_upgrade" + require_module = 1 + +/obj/item/borg/upgrade/toygun/action(var/mob/living/silicon/robot/R) + if(..()) return 0 + + var/obj/item/weapon/gun/projectile/cyborgtoy/T = locate() in R.module + if(!T) + T = locate() in R.module.contents + if(!T) + T = locate() in R.module.modules + if(!T) + R.module.modules += new/obj/item/weapon/gun/projectile/cyborgtoy(R.module) + return 1 if(T) to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") to_chat(usr, "There's no mounting point for the module!") diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm index 2d31539403..b6791ccf0d 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm @@ -44,6 +44,10 @@ display_name = "collar, cowbell" path = /obj/item/clothing/accessory/collar/cowbell +/datum/gear/collar/planet_earth + display_name = "collar, planet" + path = /obj/item/clothing/accessory/collar/collarplanet_earth + /datum/gear/collar/holo display_name = "collar, holo" path = /obj/item/clothing/accessory/collar/holo diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index afcccabe3e..33d8045f38 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -291,7 +291,7 @@ /obj/item/clothing/accessory/collar/collarplanet_earth name = "planet collar" - desc = "A collar featuring a surprisingly detailed replica of a earth-like planet surrounded by a weak battery powered force shield. There is a button to turn it off." + desc = "A collar featuring a surprisingly detailed replica of planet earth surrounded by a weak battery powered force shield. There is a button to turn it off." icon_state = "collarplanet_earth" item_state = "collarplanet_earth" overlay_state = "collarplanet_earth" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 980057eb52..14e2f452ac 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -485,9 +485,6 @@ return istype(H.glasses, /obj/item/clothing/glasses/hud/health) else if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = M - switch(hudtype) - if("security") - return R.hudmode == "Security" - if("medical") - return R.hudmode == "Medical" + return R.sensor_type //VOREStation Add - Borgo sensors are now binary so just have them on or off + return 0 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index a2876c61aa..dd3fc5f064 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -787,9 +787,11 @@ var/list/ai_verbs_default = list( src.aiRadio.interact(src) /mob/living/silicon/ai/proc/sensor_mode() - set name = "Set Sensor Augmentation" + set name = "Toggle Sensor Augmentation" //VOREStation Add set category = "AI Settings" set desc = "Augment visual feed with internal sensor overlays" + sensor_type = !sensor_type //VOREStation Add + to_chat(usr, "You [sensor_type ? "enable" : "disable"] your sensors.") //VOREStation Add toggle_sensor_mode() /mob/living/silicon/ai/proc/toggle_hologram_movement() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 291717f37b..71b84648d5 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -21,8 +21,9 @@ /obj/item/weapon/tank, /obj/item/weapon/circuitboard, /obj/item/weapon/smes_coil, - /obj/item/weapon/fuel_assembly - ) + /obj/item/weapon/fuel_assembly, + /obj/item/weapon/ore/bluespace_crystal + ) // CHOMPEdit - Buffing the gripper to allow bluespace crystal use for telesci building. var/obj/item/wrapped = null // Item currently being held. diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c5036fcc35..4ddfdd608f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1079,9 +1079,11 @@ to_chat(src, "Your icon has been set. You now require a module reset to change it.") /mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs - set name = "Set Sensor Augmentation" + set name = "Toggle Sensor Augmentation" //VOREStation Add set category = "Robot Commands" set desc = "Augment visual feed with internal sensor overlays." + sensor_type = !sensor_type //VOREStation Add + to_chat(usr, "You [sensor_type ? "enable" : "disable"] your sensors.") //VOREStation Add toggle_sensor_mode() /mob/living/silicon/robot/proc/add_robot_verbs() diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 8e9c36d450..e676c871c4 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -340,6 +340,7 @@ var/global/list/robot_modules = list( 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/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.modules += new /obj/item/device/sleevemate(src) src.emag.reagents.add_reagent("pacid", 250) 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 147c289b73..50d907c913 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 @@ -300,6 +300,7 @@ src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)//For holding the chemicals when the chemist is nice src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. src.modules += new /obj/item/weapon/shockpaddles/robot/hound(src) //Paws of life + src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src) //This is kinda important for rescuing people without making it worse for everyone src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce src.modules += new /obj/item/weapon/gripper/medical(src)//Now you can set up cyro or make peri. //CHOMPEdit diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 56b042e363..7caad30448 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -25,6 +25,8 @@ var/obj/item/weapon/card/id/idcard var/idcard_type = /obj/item/weapon/card/id/synthetic + var/sensor_type = 0 //VOREStation add - silicon omni "is sensor on or nah" + var/hudmode = null /mob/living/silicon/New() @@ -221,52 +223,36 @@ var/synth = (L in speech_synthesizer_langs) . += "[L.name] ([get_language_prefix()][L.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[L.desc]

" -/mob/living/silicon/proc/toggle_sensor_mode() - var/sensor_type = tgui_input_list(usr, "Please select sensor type.", "Sensor Integration", list("Security","Medical","Disable")) - switch(sensor_type) - if ("Security") - if(plane_holder) - //Enable Security planes - plane_holder.set_vis(VIS_CH_ID,TRUE) - plane_holder.set_vis(VIS_CH_WANTED,TRUE) - plane_holder.set_vis(VIS_CH_IMPLOYAL,TRUE) - plane_holder.set_vis(VIS_CH_IMPTRACK,TRUE) - plane_holder.set_vis(VIS_CH_IMPCHEM,TRUE) +/mob/living/silicon/proc/toggle_sensor_mode() //VOREStation Add to make borgs use omni starts here - Tank, clueless bird + if(sensor_type) + if(plane_holder) + //Enable the planes, its basically just AR-Bs + plane_holder.set_vis(VIS_CH_ID,TRUE) + plane_holder.set_vis(VIS_CH_WANTED,TRUE) + plane_holder.set_vis(VIS_CH_IMPLOYAL,TRUE) //antag related so prob not useful but leaving them in + plane_holder.set_vis(VIS_CH_IMPTRACK,TRUE) + plane_holder.set_vis(VIS_CH_IMPCHEM,TRUE) + plane_holder.set_vis(VIS_CH_STATUS_R,TRUE) + plane_holder.set_vis(VIS_CH_HEALTH_VR,TRUE) + plane_holder.set_vis(VIS_CH_BACKUP,TRUE) //backup stuff from silicon_vr is here now + return TRUE - //Disable Medical planes - plane_holder.set_vis(VIS_CH_STATUS,FALSE) - plane_holder.set_vis(VIS_CH_HEALTH,FALSE) + else + if(plane_holder) + //Disable the planes + plane_holder.set_vis(VIS_CH_ID,FALSE) + plane_holder.set_vis(VIS_CH_WANTED,FALSE) + plane_holder.set_vis(VIS_CH_IMPLOYAL,FALSE) + plane_holder.set_vis(VIS_CH_IMPTRACK,FALSE) + plane_holder.set_vis(VIS_CH_IMPCHEM,FALSE) + plane_holder.set_vis(VIS_CH_STATUS_R,FALSE) + plane_holder.set_vis(VIS_CH_HEALTH_VR,FALSE) + plane_holder.set_vis(VIS_CH_BACKUP,FALSE) + return FALSE - to_chat(src, "Security records overlay enabled.") - if ("Medical") - if(plane_holder) - //Disable Security planes - plane_holder.set_vis(VIS_CH_ID,FALSE) - plane_holder.set_vis(VIS_CH_WANTED,FALSE) - plane_holder.set_vis(VIS_CH_IMPLOYAL,FALSE) - plane_holder.set_vis(VIS_CH_IMPTRACK,FALSE) - plane_holder.set_vis(VIS_CH_IMPCHEM,FALSE) - - //Enable Medical planes - plane_holder.set_vis(VIS_CH_STATUS,TRUE) - plane_holder.set_vis(VIS_CH_HEALTH,TRUE) - - to_chat(src, "Life signs monitor overlay enabled.") - if ("Disable") - if(plane_holder) - //Disable Security planes - plane_holder.set_vis(VIS_CH_ID,FALSE) - plane_holder.set_vis(VIS_CH_WANTED,FALSE) - plane_holder.set_vis(VIS_CH_IMPLOYAL,FALSE) - plane_holder.set_vis(VIS_CH_IMPTRACK,FALSE) - plane_holder.set_vis(VIS_CH_IMPCHEM,FALSE) - - //Disable Medical planes - plane_holder.set_vis(VIS_CH_STATUS,FALSE) - plane_holder.set_vis(VIS_CH_HEALTH,FALSE) - to_chat(src, "Sensor augmentations disabled.") - - hudmode = sensor_type //This is checked in examine.dm on humans, so they can see medical/security records depending on mode +//hudmode = sensor_type //This is checked in examine.dm on humans, so they can see medical/security records depending on mode +//I made it work like omnis with records by adding stuff to examine.dm +//VOREStation Add ends here /mob/living/silicon/verb/pose() set name = "Set Pose" diff --git a/code/modules/mob/living/silicon/silicon_vr.dm b/code/modules/mob/living/silicon/silicon_vr.dm index 168b3facab..73a25dbd76 100644 --- a/code/modules/mob/living/silicon/silicon_vr.dm +++ b/code/modules/mob/living/silicon/silicon_vr.dm @@ -4,18 +4,18 @@ return 1 return ..() -// For handling any custom visibility in borgo sensor modes, like sleeve implants -/mob/living/silicon/toggle_sensor_mode() - . = ..() - switch(hudmode) // This is set in parent - if ("Security") - //Disable Medical planes - plane_holder?.set_vis(VIS_CH_BACKUP,FALSE) - - if ("Medical") - //Enable Medical planes - plane_holder?.set_vis(VIS_CH_BACKUP,TRUE) - - if ("Disable") - //Disable Medical planes - plane_holder?.set_vis(VIS_CH_BACKUP,FALSE) +// For handling any custom visibility in borgo sensor modes, like sleeve implants - not needed anymore but leaving anyways - Tank +///mob/living/silicon/toggle_sensor_mode() +// . = ..() +// switch(hudmode) // This is set in parent +// if ("Security") +// //Disable Medical planes +// plane_holder?.set_vis(VIS_CH_BACKUP,FALSE) +// +// if ("Medical") +// //Enable Medical planes +// plane_holder?.set_vis(VIS_CH_BACKUP,TRUE) +// +// if ("Disable") +// //Disable Medical planes +// plane_holder?.set_vis(VIS_CH_BACKUP,FALSE) diff --git a/code/modules/projectiles/guns/toy.dm b/code/modules/projectiles/guns/toy.dm index 680057dcd4..a2d75685d8 100644 --- a/code/modules/projectiles/guns/toy.dm +++ b/code/modules/projectiles/guns/toy.dm @@ -199,7 +199,52 @@ icon_state = initial(icon_state) else icon_state = "[initial(icon_state)]-e" +/* + * Cyborg + */ +/obj/item/weapon/gun/projectile/cyborgtoy + name = "\improper Donk-Soft Cyborg Blaster" + desc = "Donk-Soft Cyborg Blaster! It's Donk or Don't! Adult supervision required. Use to toggle between battle and cleanup mode." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "smg" + caliber = "foam" + load_method = SINGLE_CASING + max_shells = 15 + var/cleanup = 0 + ammo_type = /obj/item/ammo_casing/afoam_dart + projectile_type = /obj/item/projectile/bullet/foam_dart + recoil = null + handle_casings = null +/obj/item/weapon/gun/projectile/cyborgtoy/attack_self(var/mob/user) + cleanup = !cleanup + to_chat(user, "The [src] is now on [cleanup ? "cleanup" : "battle"] mode.") + +/obj/item/weapon/gun/projectile/cyborgtoy/afterattack(atom/A, mob/living/user, adjacent, params) + if(cleanup) + if(!adjacent) + return 0 + collectammo(A, user) + return 0 + ..() + +/obj/item/weapon/gun/projectile/cyborgtoy/proc/collectammo(atom/A, user) + if(loaded.len >= max_shells) + to_chat(user, "The [src] is at max capacity.") + return + var/T = get_turf(A) + var/success = 0 + for(var/obj/item/ammo_casing/afoam_dart/D in T) + if(loaded.len >= max_shells) + break + D.loc = src + loaded.Insert(1, D) + success = 1 + if(success) + playsound(src, 'sound/machines/hiss.ogg', 50, 0) + to_chat(user, "The [src] vacuums in the darts!") + else + to_chat(user, "No Donk-Soft brand foam darts detected. Aborting.") /* * Laser Tag */ diff --git a/code/modules/research/prosfab_designs_vr.dm b/code/modules/research/prosfab_designs_vr.dm index bb15c848f8..8275a456c9 100644 --- a/code/modules/research/prosfab_designs_vr.dm +++ b/code/modules/research/prosfab_designs_vr.dm @@ -7,6 +7,13 @@ materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000) build_path = /obj/item/borg/upgrade/sizeshift +/datum/design/item/prosfab/robot_upgrade/sizegun + name = "Size Gun Module" + id = "borg_sizegun_module" + req_tech = list(TECH_COMBAT = 3, TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2) + materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000) + build_path = /obj/item/borg/upgrade/sizegun + /datum/design/item/prosfab/robot_upgrade/bellysizeupgrade name = "Robohound Capacity Expansion Module" id = "borg_hound_capacity_module" diff --git a/icons/inventory/accessory/item_vr.dmi b/icons/inventory/accessory/item_vr.dmi index 09e8425850..b1e6a60a0e 100644 Binary files a/icons/inventory/accessory/item_vr.dmi and b/icons/inventory/accessory/item_vr.dmi differ diff --git a/icons/inventory/accessory/mob_vr.dmi b/icons/inventory/accessory/mob_vr.dmi index 7327c9b136..cab7916a32 100644 Binary files a/icons/inventory/accessory/mob_vr.dmi and b/icons/inventory/accessory/mob_vr.dmi differ diff --git a/icons/mob/taursuits_horse.dmi b/icons/mob/taursuits_horse.dmi index b8901590ec..192f282796 100644 Binary files a/icons/mob/taursuits_horse.dmi and b/icons/mob/taursuits_horse.dmi differ diff --git a/icons/mob/taursuits_horse_vr.dmi b/icons/mob/taursuits_horse_vr.dmi index b8901590ec..192f282796 100644 Binary files a/icons/mob/taursuits_horse_vr.dmi and b/icons/mob/taursuits_horse_vr.dmi differ diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index 087ceb08b7..517ce37d4b 100644 Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ