diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index e5749764e0..f642791224 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -124,7 +124,7 @@ #define EATING_NOISES 2 #define DIGESTION_NOISES 4 -#define TOGGLES_CITADEL (MEDIHOUND_SLEEPER|EATING_NOISES|DIGESTION_NOISES) +#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES) //component stuff #define COMSIG_COMBAT_TOGGLED "combatmode_toggled" //called by combat mode toggle on all equipped items. args: (mob/user, combatmode) diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 68045296be..9163fb0849 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -67,9 +67,9 @@ return if(!iscarbon(target)) return - if(!target.client || !(target.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) - to_chat(user, "This person is incompatible with our equipment.") - return + var/voracious = TRUE + if(!target.client || !(target.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) || !hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + voracious = FALSE if(target.buckled) to_chat(user, "The user is buckled and can not be put into your [src].") return @@ -95,7 +95,8 @@ target.reset_perspective(src) target.ExtinguishMob() //The tongue already puts out fire stacks but being put into the sleeper shouldn't allow you to keep burning. update_gut() - user.visible_message("[hound.name]'s medical pod lights up and expands as [target.name] slips inside into their [src.name].", "Your medical pod lights up as [target] slips into your [src]. Life support functions engaged.") + user.visible_message("[voracious ? "[hound]'s [src.name] lights up and expands as [target] slips inside into their [src.name]." : "[hound]'s sleeper indicator lights up as [target] is scooped up into [hound.p_their()] [src]."]", \ + "Your [voracious ? "[src.name] lights up as [target] slips into" : "sleeper indicator light shines brightly as [target] is scooped inside"] your [src]. Life support functions engaged.") message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]") playsound(hound, 'sound/effects/bin_close.ogg', 100, 1) @@ -105,9 +106,12 @@ user.last_special = world.time + CLICK_CD_BREAKOUT if(user.a_intent == INTENT_HELP) return - user.visible_message("You see [user] kicking against the expanded material of [hound.name]'s gut!", \ - "You struggle inside [src], kicking the release with your foot... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a thump from [hound.name].") + var/voracious = TRUE + if(!user.client || !(user.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) || !hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + voracious = FALSE + user.visible_message("You see [voracious ? "[user] struggling against the expanded material of [hound]'s gut!" : "and hear [user] pounding against something inside of [hound]'s [src.name]!"]", \ + "[voracious ? "You start struggling inside of [src]'s tight, flexible confines," : "You start pounding against the metallic walls of [src],"] trying to trigger the release... (this will take about [DisplayTimeText(breakout_time)].)", \ + "You hear a [voracious ? "couple of thumps" : "loud banging noise"] coming from within [hound].") if(do_after(user, breakout_time, target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src ) return @@ -118,8 +122,16 @@ /obj/item/dogborg/sleeper/proc/go_out(var/target) hound = loc hound.setClickCooldown(50) + var/voracious = TRUE + if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + voracious = FALSE + else + for(var/mob/M in contents) + if(!M.client || !(M.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + voracious = FALSE if(length(contents) > 0) - hound.visible_message("[hound.name] empties out their contents via their release port.", "You empty your contents via your release port.") + hound.visible_message("[voracious ? "[hound] empties out [hound.p_their()] contents via [hound.p_their()] release port." : "[hound]'s underside slides open with an audible clunk before [hound.p_their()] [src] flips over, carelessly dumping its contents onto the ground below [hound.p_them()] before closing right back up again."]", \ + "[voracious ? "You empty your contents via your release port." : "You open your sleeper hatch, quickly releasing all of the contents within before closing it again."]") if(target) if(iscarbon(target)) var/mob/living/carbon/person = target @@ -140,7 +152,7 @@ items_preserved.Cut() update_gut() cleaning = FALSE - playsound(loc, 'sound/effects/splat.ogg', 50, 1) + playsound(loc, voracious ? 'sound/effects/splat.ogg' : 'sound/effects/bin_close.ogg', 50, 1) else //You clicked eject with nothing in you, let's just reset stuff to be sure. items_preserved.Cut() @@ -232,6 +244,9 @@ /obj/item/dogborg/sleeper/proc/update_gut() //Well, we HAD one, what happened to them? + var/prociconupdate = FALSE + var/currentenvy = hound.sleeper_nv + hound.sleeper_nv = FALSE if(patient in contents) if(patient_laststat != patient.stat) if(patient.stat & DEAD) @@ -242,7 +257,17 @@ hound.sleeper_r = 0 hound.sleeper_g = 1 patient_laststat = patient.stat - //Update icon + prociconupdate = TRUE + + if(!patient.client || !(patient.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) || !hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + hound.sleeper_nv = TRUE + else + hound.sleeper_nv = FALSE + if(hound.sleeper_nv != currentenvy) + prociconupdate = TRUE + + //Update icon + if(prociconupdate) hound.update_icons() //Return original patient return(patient) @@ -258,6 +283,12 @@ hound.sleeper_r = 0 hound.sleeper_g = 1 patient_laststat = patient.stat + + if(!patient.client || !(patient.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) || !hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + hound.sleeper_nv = TRUE + else + hound.sleeper_nv = FALSE + //Update icon and return new patient hound.update_icons() return(C) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2ee079e41d..481305d62b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -732,7 +732,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Citadel Preferences

" //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" - dat += "Allow MediHound sleeper: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" + dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
" dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a1ad1165de..ec6895984e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -639,9 +639,9 @@ add_overlay("disabler")//ditto if(sleeper_g && module.sleeper_overlay) - add_overlay("[module.sleeper_overlay]_g") + add_overlay("[module.sleeper_overlay]_g[sleeper_nv ? "_nv" : ""]") if(sleeper_r && module.sleeper_overlay) - add_overlay("[module.sleeper_overlay]_r") + add_overlay("[module.sleeper_overlay]_r[sleeper_nv ? "_nv" : ""]") if(module.dogborg == TRUE) if(resting) cut_overlays() diff --git a/modular_citadel/code/modules/client/preferences_toggles.dm b/modular_citadel/code/modules/client/preferences_toggles.dm index 7e3a78144e..350c19ab64 100644 --- a/modular_citadel/code/modules/client/preferences_toggles.dm +++ b/modular_citadel/code/modules/client/preferences_toggles.dm @@ -22,15 +22,15 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggledigestionnoise)() return C.prefs.cit_toggles & DIGESTION_NOISES TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglehoundsleeper)() - set name = "Allow/Deny Hound Sleeper" + set name = "Toggle Voracious Hound Sleepers" set category = "Preferences" - set desc = "Allow MediHound Sleepers" + set desc = "Toggles Voracious MediHound Sleepers" usr.client.prefs.cit_toggles ^= MEDIHOUND_SLEEPER usr.client.prefs.save_preferences() if(usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) - to_chat(usr, "You will now allow MediHounds to place you in their sleeper.") + to_chat(usr, "You have opted in for voracious medihound sleepers.") else - to_chat(usr, "You will no longer allow MediHounds to place you in their sleeper.") + to_chat(usr, "Medihound sleepers will no longer be voracious when you're involved.") SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle MediHound Sleeper", "[usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/togglehoundsleeper/Get_checked(client/C) - return C.prefs.cit_toggles & MEDIHOUND_SLEEPER \ No newline at end of file + return C.prefs.cit_toggles & MEDIHOUND_SLEEPER diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 0ac3d624e9..f0e5c35a8b 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -315,6 +315,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/laser var/sleeper_g var/sleeper_r + var/sleeper_nv #define MAX_K9_LEAP_DIST 4 //because something's definitely borked the pounce functioning from a distance. diff --git a/modular_citadel/icons/mob/widerobot.dmi b/modular_citadel/icons/mob/widerobot.dmi index 81ec2ed86d..2b192a1052 100644 Binary files a/modular_citadel/icons/mob/widerobot.dmi and b/modular_citadel/icons/mob/widerobot.dmi differ