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 39236a824f..44ace0a189 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 @@ -11,7 +11,6 @@ var/min_health = -100 var/cleaning = 0 var/patient_laststat = null - var/mob_energy = -100 //Energy gained from digesting dead mobs (including PCs) var/list/injection_chems = list("inaprovaline", "dexalin", "bicaridine", "kelotane","anti_toxin", "alkysine", "imidazoline", "spaceacillin", "paracetamol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection. var/eject_port = "ingestion" var/list/items_preserved = list() @@ -70,8 +69,6 @@ for(var/T in tech_item.origin_tech) to_chat(user, "\The [tech_item] has level [tech_item.origin_tech[T]] in [CallTechName(T)].") update_patient() - if(UI_open == TRUE) - sleeperUI(usr) return else if(ishuman(target)) @@ -90,8 +87,6 @@ user.visible_message("[hound.name]'s internal analyzer groans lightly as [trashman] slips inside.", "Your internal analyzer groans lightly as [trashman] slips inside.") playsound(hound, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) update_patient() - if(UI_open == TRUE) - sleeperUI(usr) return return @@ -107,8 +102,6 @@ user.visible_message("[hound.name]'s garbage processor groans lightly as [target.name] slips inside.", "Your garbage compactor groans lightly as [target] slips inside.") playsound(hound, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) update_patient() - if(UI_open == TRUE) - sleeperUI(usr) return if(istype(target, /mob/living/simple_animal/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v @@ -120,8 +113,6 @@ user.visible_message("[hound.name]'s garbage processor groans lightly as [trashmouse] slips inside.", "Your garbage compactor groans lightly as [trashmouse] slips inside.") playsound(hound, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) update_patient() - if(UI_open == TRUE) - sleeperUI(usr) return else if(ishuman(target)) @@ -140,8 +131,6 @@ 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, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) update_patient() - if(UI_open == TRUE) - sleeperUI(usr) return return else if(ishuman(target)) @@ -167,8 +156,6 @@ user.visible_message("[hound.name]'s medical pod lights up as [H.name] slips inside into their [src.name].", "Your medical pod lights up as [H] slips into your [src]. Life support functions engaged.") message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "JMP" : "null"])") playsound(hound, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) - if(UI_open == TRUE) - sleeperUI(usr) /obj/item/device/dogborg/sleeper/proc/go_out(var/target) hound = src.loc @@ -208,10 +195,9 @@ if(..()) return sleeperUI(user) - UI_open = TRUE /obj/item/device/dogborg/sleeper/proc/sleeperUI(mob/user) - var/dat + var/dat = "[name] Console
" if(islist(injection_chems)) //Only display this if we're a drug-dispensing doggo. dat += "

Injector

" @@ -295,10 +281,10 @@ dat += "
[R.name]:
[round(R.volume, 0.1)] units

" dat += "" - var/datum/browser/popup = new(user, "sleeper", "[name] Console", 520, 540) //Set up the popup browser window - //popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) //I have no idea what this is, but it feels irrelevant and causes runtimes idk. + var/datum/browser/popup = new(user, "sleeper_b", "[name] Console", 400, 500, src) popup.set_content(dat) popup.open() + UI_open = TRUE return /obj/item/device/dogborg/sleeper/Topic(href, href_list) @@ -328,7 +314,6 @@ drain(startdrain) processing_objects |= src update_patient() - sleeperUI(usr) if(patient) to_chat(patient, "[hound.name]'s [src.name] fills with caustic enzymes around you!") return @@ -392,6 +377,8 @@ //For if the dogborg's existing patient uh, doesn't make it. /obj/item/device/dogborg/sleeper/proc/update_patient() hound = src.loc + if(UI_open == TRUE) + sleeperUI(hound) //Well, we HAD one, what happened to them? if(patient in contents) @@ -411,8 +398,6 @@ //Update icon hound.updateicon() //Return original patient - if(UI_open == TRUE) - sleeperUI(usr) return(patient) //Check for a new patient @@ -433,8 +418,6 @@ patient_laststat = patient.stat //Update icon and return new patient hound.updateicon() - if(UI_open == TRUE) - sleeperUI(usr) return(C) //Cleaning looks better with red on, even with nobody in it @@ -455,8 +438,6 @@ patient_laststat = null patient = null hound.updateicon() - if(UI_open == TRUE) - sleeperUI(usr) return //Gurgleborg process @@ -470,7 +451,7 @@ var/list/touchable_items = contents - items_preserved //Belly is entirely empty - if(!length(contents)) + if(!length(touchable_items)) var/finisher = pick( 'sound/vore/death1.ogg', 'sound/vore/death2.ogg', @@ -508,7 +489,9 @@ if(air_master.current_cycle%3==1 && length(touchable_items)) //Burn all the mobs or add them to the exclusion list + var/volume = 0 for(var/mob/living/T in (touchable_items)) + touchable_items -= T //Exclude mobs from loose item picking. if((T.status_flags & GODMODE) || !T.digestable) items_preserved += T else @@ -520,66 +503,55 @@ var/actual_burn = T.getFireLoss() - old_burn var/damage_gain = actual_brute + actual_burn drain(-25 * damage_gain) //25*total loss as with voreorgan stats. - update_patient() + water.add_charge(damage_gain) + if(T.stat == DEAD) + if(ishuman(T)) + message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "JMP" : "null"])") + to_chat(hound, "You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.") + to_chat(T, "You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.") + var/deathsound = pick( + 'sound/vore/death1.ogg', + 'sound/vore/death2.ogg', + 'sound/vore/death3.ogg', + 'sound/vore/death4.ogg', + 'sound/vore/death5.ogg', + 'sound/vore/death6.ogg', + 'sound/vore/death7.ogg', + 'sound/vore/death8.ogg', + 'sound/vore/death9.ogg', + 'sound/vore/death10.ogg') + playsound(hound, deathsound, vol = 100, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises) + if(is_vore_predator(T)) + for(var/belly in T.vore_organs) + var/obj/belly/B = belly + for(var/atom/movable/thing in B) + thing.forceMove(src) + if(ismob(thing)) + to_chat(thing, "As [T] melts away around you, you find yourself in [hound]'s [name]") + for(var/obj/item/I in T) + if(istype(I,/obj/item/organ/internal/mmi_holder/posibrain)) + var/obj/item/organ/internal/mmi_holder/MMI = I + var/atom/movable/brain = MMI.removed() + if(brain) + hound.remove_from_mob(brain,src) + brain.forceMove(src) + items_preserved += brain + else + T.drop_from_inventory(I, src) + if(ishuman(T)) + var/mob/living/carbon/human/Prey = T + volume = (Prey.bloodstr.total_volume + Prey.ingested.total_volume + Prey.touching.total_volume + Prey.weight) * Prey.size_multiplier + water.add_charge(volume) + if(T.reagents) + volume = T.reagents.total_volume + water.add_charge(volume) + qdel(T) //Pick a random item to deal with (if there are any) - var/atom/target = pick(touchable_items) - var/volume = 0 + if(length(touchable_items)) + var/atom/target = pick(touchable_items) - //Handle the target being a mob - if(isliving(target)) - var/mob/living/T = target - - //Mob is now dead - if(T.stat == DEAD) - if(ishuman(target)) - message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "JMP" : "null"])") - to_chat(hound, "You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.") - to_chat(T, "You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.") - drain(mob_energy) //Fueeeeellll - var/deathsound = pick( - 'sound/vore/death1.ogg', - 'sound/vore/death2.ogg', - 'sound/vore/death3.ogg', - 'sound/vore/death4.ogg', - 'sound/vore/death5.ogg', - 'sound/vore/death6.ogg', - 'sound/vore/death7.ogg', - 'sound/vore/death8.ogg', - 'sound/vore/death9.ogg', - 'sound/vore/death10.ogg') - playsound(hound, deathsound, vol = 100, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises) - if(is_vore_predator(T)) - for(var/belly in T.vore_organs) - var/obj/belly/B = belly - for(var/atom/movable/thing in B) - thing.forceMove(src) - if(ismob(thing)) - to_chat(thing, "As [T] melts away around you, you find yourself in [hound]'s [name]") - for(var/obj/item/I in T) - if(istype(I,/obj/item/organ/internal/mmi_holder/posibrain)) - var/obj/item/organ/internal/mmi_holder/MMI = I - var/atom/movable/brain = MMI.removed() - if(brain) - hound.remove_from_mob(brain,src) - brain.forceMove(src) - items_preserved += brain - else - T.drop_from_inventory(I, src) - if(ishuman(T)) - var/mob/living/carbon/human/Prey = T - volume = (Prey.bloodstr.total_volume + Prey.ingested.total_volume + Prey.touching.total_volume + Prey.weight) * Prey.size_multiplier - water.add_charge(volume) - if(T.reagents) - volume = T.reagents.total_volume - water.add_charge(volume) - qdel(T) - update_patient() - if(UI_open == TRUE) - sleeperUI(hound) - - //Handle the target being anything but a /mob/living - else + //Handle the target being anything but a /mob/living var/obj/item/T = target if(istype(T)) if(T.reagents) @@ -618,10 +590,8 @@ drain(-100) else items_preserved |= target - if(UI_open == TRUE) - update_patient() - sleeperUI(hound) - return + update_patient() + return /obj/item/device/dogborg/sleeper/process() diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index 20d570075d..cc247b5497 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -19,23 +19,23 @@ ///////////// // Some indigestible stuff ///////////// -/obj/item/weapon/hand_tele/digest_act(...) +/obj/item/weapon/hand_tele/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/weapon/card/id/gold/captain/spare/digest_act(...) +/obj/item/weapon/card/id/gold/captain/spare/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/device/aicard/digest_act(...) +/obj/item/device/aicard/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/device/paicard/digest_act(...) +/obj/item/device/paicard/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/weapon/gun/digest_act(...) +/obj/item/weapon/gun/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/weapon/pinpointer/digest_act(...) +/obj/item/weapon/pinpointer/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/blueprints/digest_act(...) +/obj/item/blueprints/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/weapon/disk/nuclear/digest_act(...) +/obj/item/weapon/disk/nuclear/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/device/perfect_tele_beacon/digest_act(...) +/obj/item/device/perfect_tele_beacon/digest_act(var/atom/movable/item_storage = null) return FALSE //Sorta important to not digest your own beacons. /////////////