diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 1ec48ba52..1741f4db2 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -86,11 +86,11 @@ to_chat(user, "Your [src] is already occupied.") return - user.visible_message("[hound.name] is carefully inserting [target.name] into their [src].", + user.visible_message("[hound.name] is carefully inserting [target.name] into their [src].", "You start placing [target] into your [src]...") if(!patient && iscarbon(target) && !target.buckled && do_after (user, 100, target = target)) - if(!in_range(src, target)) + if(!in_range(src, target)) return if(patient) return @@ -217,7 +217,7 @@ data["occupant"]["fireLoss"] = mob_occupant.getFireLoss() data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss() data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN) - + if(mob_occupant.reagents.reagent_list.len) for(var/datum/reagent/R in mob_occupant.reagents.reagent_list) chemical_list += list(list("name" = R.name, "volume" = R.volume)) @@ -393,7 +393,7 @@ H.playsound_local(source, null, 45, falloff = 0, S = pred_digest) else if(H in contents) H.playsound_local(source, null, 65, falloff = 0, S = prey_digest) - + UpdateGut(hound) if(cleaning) addtimer(CALLBACK(src, .proc/clean_cycle, hound), 50) @@ -515,7 +515,7 @@ trashman.reset_perspective(src) user.visible_message("[hound.name]'s garbage processor groans lightly as [trashman] slips inside.", "Your garbage compactor groans lightly as [trashman] slips inside.") playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) - + UpdateGut(hound) @@ -523,4 +523,11 @@ var/current_belly = ..() if(length(contents) > 11) current_belly = BORGBELLY_RED - return current_belly \ No newline at end of file + return current_belly + + +/obj/item/dogborg/sleeper/compactor/ore//identical to janihound for moment + name = "ore processor" + desc = "A mounted compactor unit with fuel processor." + icon = 'icons/mob/dogborg.dmi' + icon_state = "compactorb"//needs its own icon diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 7b6b6edc5..adcffbc80 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -67,6 +67,12 @@ syndie = TRUE if(keyslot.independent) independent = TRUE + //Skyrat edit start + if(extra_channels) + for(var/ch_name in extra_channels) + if(!(ch_name in channels)) + channels[ch_name] = extra_channels[ch_name] + //Skyrat edit end for(var/ch_name in channels) secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name]) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 1148d6692..8cb24c86e 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -200,6 +200,10 @@ INVOKE_ASYNC(RM, .proc/do_transform_animation) SEND_SIGNAL(R, COMSIG_CYBORG_MODULE_CHANGE) //hyperstation edit qdel(src) + //Skyrat change start + R.radio.extra_channels = RM.added_channels + R.radio.recalculateChannels() + //Skyrat change stop return RM /obj/item/robot_module/proc/be_transformed_to(obj/item/robot_module/old_module) diff --git a/hyperstation/code/game/objects/items/devices/radio/radio.dm b/hyperstation/code/game/objects/items/devices/radio/radio.dm new file mode 100644 index 000000000..67ea054ff --- /dev/null +++ b/hyperstation/code/game/objects/items/devices/radio/radio.dm @@ -0,0 +1,2 @@ +/obj/item/radio + var/list/extra_channels = list() //Allows indivudal channels, used for borgs diff --git a/hyperstation/code/modules/mob/living/silicon/robot/examine_vr.dm b/hyperstation/code/modules/mob/living/silicon/robot/examine_vr.dm new file mode 100644 index 000000000..f3b04a440 --- /dev/null +++ b/hyperstation/code/modules/mob/living/silicon/robot/examine_vr.dm @@ -0,0 +1,8 @@ +/mob/living/silicon/robot/proc/examine_bellies_borg() + + var/message = "" + for(var/belly in vore_organs) + var/obj/belly/B = belly + message += B.get_examine_msg() + + return message diff --git a/hyperstation/code/modules/mob/living/silicon/robot/robot.dm b/hyperstation/code/modules/mob/living/silicon/robot/robot.dm index 4752f0c95..20c7e7679 100644 --- a/hyperstation/code/modules/mob/living/silicon/robot/robot.dm +++ b/hyperstation/code/modules/mob/living/silicon/robot/robot.dm @@ -1,3 +1,3 @@ //This file is empty right now, but leaves room for people to put shit here in the future for those who are lazy /mob/living/silicon/robot - var/datum/action/cyborg_small_sprite/small_sprite_action //This gets replaced every time the cyborg changes modules --Cyanosis \ No newline at end of file + var/datum/action/cyborg_small_sprite/small_sprite_action //This gets replaced every time the cyborg changes modules --Cyanosis diff --git a/hyperstation/code/modules/mob/living/silicon/robot/robot_modules.dm b/hyperstation/code/modules/mob/living/silicon/robot/robot_modules.dm index dbef0ad93..d42f3dbeb 100644 --- a/hyperstation/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/hyperstation/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -1,11 +1,60 @@ //This file is empty right now, but leaves room for people to put shit here in the future for those who are lazy +/obj/item/robot_module + var/list/added_channels = list() //Borg radio stuffs + +//service +/obj/item/robot_module/butler + added_channels = list(RADIO_CHANNEL_SERVICE = 1) + +/obj/item/robot_module/clown + added_channels = list(RADIO_CHANNEL_SERVICE = 1) + +/obj/item/robot_module/janitor + added_channels = list(RADIO_CHANNEL_SERVICE = 1) + +//engineering +/obj/item/robot_module/engineering + added_channels = list(RADIO_CHANNEL_ENGINEERING = 1) + +//medical +/obj/item/robot_module/medical + added_channels = list(RADIO_CHANNEL_MEDICAL = 1) + +//security +/obj/item/robot_module/peacekeeper + added_channels = list(RADIO_CHANNEL_SECURITY = 1) + +/obj/item/robot_module/security + added_channels = list(RADIO_CHANNEL_SECURITY = 1) + +//supply +/obj/item/robot_module/miner + added_channels = list(RADIO_CHANNEL_SUPPLY = 1) // Probably already handled by other code when spawned with pre-set module, but whatever. + +//dogborgs +/obj/item/robot_module/k9 + added_channels = list(RADIO_CHANNEL_SECURITY = 1) + +/obj/item/robot_module/medihound + added_channels = list(RADIO_CHANNEL_MEDICAL = 1) + +/obj/item/robot_module/scrubpup + added_channels = list(RADIO_CHANNEL_SERVICE = 1) + +/obj/item/robot_module/borgi + added_channels = list(RADIO_CHANNEL_SERVICE = 1) + +/obj/item/robot_module/orepup + added_channels = list(RADIO_CHANNEL_SUPPLY = 1) + + //This proc gets called whenever a new robot module is being applied --Cyanosis /obj/item/robot_module/proc/handle_sprite_action(mob/living/silicon/robot/R, is_huge = FALSE) ASSERT(istype(R)) if(R.small_sprite_action) QDEL_NULL(R.small_sprite_action) - if(!is_huge) //only from the expander upgrade. The borg won't have an action if they don't have the expander upgrade + if(!is_huge) //only from the expander upgrade. The borg won't have an action if they don't have the expander upgrade return for(var/P in typesof(/datum/action/cyborg_small_sprite)) var/datum/action/cyborg_small_sprite/action = P diff --git a/icons/mob/dogborg.dmi b/icons/mob/dogborg.dmi index ec63120ae..3aaaa0493 100644 Binary files a/icons/mob/dogborg.dmi and b/icons/mob/dogborg.dmi differ diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm index cce251f72..39684f180 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -10,6 +10,9 @@ /mob/living/silicon/robot/modules/borgi set_module = /obj/item/robot_module/borgi +/mob/living/silicon/robot/modules/orepup + set_module = /obj/item/robot_module/orepup + /mob/living/silicon/robot/proc/get_cit_modules() var/list/modulelist = list() modulelist["MediHound"] = /obj/item/robot_module/medihound @@ -17,6 +20,7 @@ modulelist["Security K-9"] = /obj/item/robot_module/k9 modulelist["Scrub Puppy"] = /obj/item/robot_module/scrubpup modulelist["Borgi"] = /obj/item/robot_module/borgi + modulelist["Orepup"] = /obj/item/robot_module/orepup return modulelist /obj/item/robot_module @@ -261,14 +265,13 @@ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' has_snowflake_deadsprite = TRUE -/* /obj/item/robot_module/orepup name = "Ore Pup" basic_modules = list( /obj/item/storage/bag/ore/cyborg, /obj/item/analyzer/nose, /obj/item/storage/bag/borgdelivery, - /obj/item/dogborg/sleeper/ore, + /obj/item/dogborg/sleeper/compactor/ore, /obj/item/pickaxe/drill/cyborg, /obj/item/shovel, /obj/item/crowbar/cyborg, @@ -282,20 +285,33 @@ /obj/item/clockwork/slab/cyborg/miner, /obj/item/clockwork/weapon/ratvarian_spear, /obj/item/borg/sight/xray/truesight_lens) - cyborg_base_icon = "orepup" - moduleselect_icon = "orepup" - sleeper_overlay = "osleeper" + cyborg_base_icon = "blade" + moduleselect_icon = "miner" + sleeper_overlay = "bladesleeper" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' has_snowflake_deadsprite = TRUE cyborg_pixel_offset = -16 -/obj/item/robot_module/miner/do_transform_animation() + +/obj/item/robot_module/orepup/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc - R.cut_overlays() - R.setDir(SOUTH) - flick("orepup_transform", R) - do_transform_delay() - R.update_headlamp() -*/ + var/static/list/orepup_models + if(!orepup_models) + orepup_models = list( + "blade" = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "blade"), + "vale" = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "valemine") + ) + orepup_models = sortList(orepup_models) + var/orepup_borg_icon = show_radial_menu(R, R , orepup_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE) + if(!orepup_borg_icon) + return + switch(orepup_borg_icon) + if("blade") + cyborg_base_icon = "blade" + if("vale") + cyborg_base_icon = "valemine" + sleeper_overlay = "valeminesleeper" + has_snowflake_deadsprite = TRUE + return ..() /obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc @@ -353,7 +369,7 @@ cyborg_base_icon = "haydeemedical" cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' hat_offset = 3 - + if("qualified_doctor") cyborg_base_icon = "qualified_doctor" cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' diff --git a/modular_citadel/icons/mob/widerobot.dmi b/modular_citadel/icons/mob/widerobot.dmi index 4ff89322d..50c29bb75 100644 Binary files a/modular_citadel/icons/mob/widerobot.dmi and b/modular_citadel/icons/mob/widerobot.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 851d8d09d..673aeb411 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3115,6 +3115,7 @@ #include "hyperstation\code\game\objects\items\coconutcannon.dm" #include "hyperstation\code\game\objects\items\cosmetics.dm" #include "hyperstation\code\game\objects\items\lovedice.dm" +#include "hyperstation\code\game\objects\items\devices\radio\radio.dm" #include "hyperstation\code\game\objects\items\stacks\tiles\tile_types.dm" #include "hyperstation\code\game\objects\items\storage\big_bag.dm" #include "hyperstation\code\game\objects\structures\bench.dm" @@ -3189,6 +3190,7 @@ #include "hyperstation\code\modules\mob\living\carbon\carbon.dm" #include "hyperstation\code\modules\mob\living\carbon\human\cosmetic_part_handler.dm" #include "hyperstation\code\modules\mob\living\carbon\human\species_types\ipc.dm" +#include "hyperstation\code\modules\mob\living\silicon\robot\examine_vr.dm" #include "hyperstation\code\modules\mob\living\silicon\robot\robot.dm" #include "hyperstation\code\modules\mob\living\silicon\robot\robot_modules.dm" #include "hyperstation\code\modules\mob\living\simple_animal\friendly\chicken_types.dm"