diff --git a/code/_helpers/roundend.dm b/code/_helpers/roundend.dm
index e652471d28..5352010ea7 100644
--- a/code/_helpers/roundend.dm
+++ b/code/_helpers/roundend.dm
@@ -11,70 +11,7 @@
send2chat(new /datum/tgs_message_content("[GLOB.round_id ? "Round [GLOB.round_id]" : "The round has"] just ended."), channel_tag)
send2adminchat("Server", "Round just ended.")
- for(var/mob/Player in GLOB.player_list)
- if(Player.mind && !isnewplayer(Player))
- if(Player.stat != DEAD)
- var/turf/playerTurf = get_turf(Player)
- if(SSemergency_shuttle.departed && SSemergency_shuttle.evac)
- if(isNotAdminLevel(playerTurf.z))
- to_chat(Player, span_filter_system(span_blue(span_bold("You survived the round, but remained on [station_name()] as [Player.real_name]."))))
- else
- to_chat(Player, span_filter_system(span_green(span_bold("You managed to survive the events on [station_name()] as [Player.real_name]."))))
- else if(isAdminLevel(playerTurf.z))
- to_chat(Player, span_filter_system(span_green(span_bold("You successfully underwent crew transfer after events on [station_name()] as [Player.real_name]."))))
- else if(issilicon(Player))
- to_chat(Player, span_filter_system(span_green(span_bold("You remain operational after the events on [station_name()] as [Player.real_name]."))))
- else
- to_chat(Player, span_filter_system(span_blue(span_bold("You missed the crew transfer after the events on [station_name()] as [Player.real_name]."))))
- else
- if(isobserver(Player))
- var/mob/observer/dead/O = Player
- if(!O.started_as_observer)
- to_chat(Player, span_filter_system(span_red(span_bold("You did not survive the events on [station_name()]..."))))
- else
- to_chat(Player, span_filter_system(span_red(span_bold("You did not survive the events on [station_name()]..."))))
- to_chat(world, span_filter_system("
"))
-
- for (var/mob/living/silicon/ai/aiPlayer in GLOB.mob_list)
- if (aiPlayer.stat != 2)
- to_chat(world, span_filter_system(span_bold("[aiPlayer.name]'s laws at the end of the round were:"))) // VOREStation edit
- else
- to_chat(world, span_filter_system(span_bold("[aiPlayer.name]'s laws when it was deactivated were:"))) // VOREStation edit
- aiPlayer.show_laws(1)
-
- if (aiPlayer.connected_robots.len)
- var/robolist = span_bold("The AI's loyal minions were:") + " "
- for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
- robolist += "[robo.name][robo.stat?" (Deactivated), ":", "]" // VOREStation edit
- to_chat(world, span_filter_system("[robolist]"))
-
- var/dronecount = 0
-
- for (var/mob/living/silicon/robot/robo in GLOB.mob_list)
-
- if(istype(robo, /mob/living/silicon/robot/platform))
- var/mob/living/silicon/robot/platform/tank = robo
- if(!tank.has_had_player)
- continue
-
- if(istype(robo,/mob/living/silicon/robot/drone) && !istype(robo,/mob/living/silicon/robot/drone/swarm))
- dronecount++
- continue
-
- if (!robo.connected_ai)
- var/list/robot_stat_display = list()
- if (robo.stat != 2)
- robot_stat_display += span_filter_system(span_bold("[robo.name] survived as an AI-less stationbound synthetic! Its laws were:"))
- else
- robot_stat_display += span_filter_system(span_bold("[robo.name] was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:"))
-
- if(robo) //How the hell do we lose robo between here and the world messages directly above this?
- robot_stat_display += robo.laws.get_formatted_laws()
- to_chat(world, robot_stat_display.Join("\n"))
-
- if(dronecount)
- to_chat(world, span_filter_system(span_bold("There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round.")))
-
+ PlayerStats()
var/extra_delay = mode.declare_completion()//To declare normal completion.
RoundTrivia()
diff --git a/code/_helpers/roundstats.dm b/code/_helpers/roundstats.dm
index 5b4061c38f..2e99ffb866 100644
--- a/code/_helpers/roundstats.dm
+++ b/code/_helpers/roundstats.dm
@@ -28,6 +28,71 @@ GLOBAL_VAR_INIT(items_digested_roundstat, 0)
GLOBAL_LIST_EMPTY(security_printer_tickets)
GLOBAL_LIST_EMPTY(refined_chems_sold)
+
+/datum/controller/subsystem/ticker/proc/PlayerStats()
+ for(var/mob/Player in GLOB.player_list)
+ if(Player.mind && !isnewplayer(Player))
+ if(Player.stat != DEAD)
+ var/turf/playerTurf = get_turf(Player)
+ if(SSemergency_shuttle.departed && SSemergency_shuttle.evac)
+ if(isNotAdminLevel(playerTurf.z))
+ to_chat(Player, span_filter_system(span_blue(span_bold("You survived the round, but remained on [station_name()] as [Player.real_name]."))))
+ else
+ to_chat(Player, span_filter_system(span_green(span_bold("You managed to survive the events on [station_name()] as [Player.real_name]."))))
+ else if(isAdminLevel(playerTurf.z))
+ to_chat(Player, span_filter_system(span_green(span_bold("You successfully underwent crew transfer after events on [station_name()] as [Player.real_name]."))))
+ else if(issilicon(Player))
+ to_chat(Player, span_filter_system(span_green(span_bold("You remain operational after the events on [station_name()] as [Player.real_name]."))))
+ else
+ to_chat(Player, span_filter_system(span_blue(span_bold("You missed the crew transfer after the events on [station_name()] as [Player.real_name]."))))
+ else
+ if(isobserver(Player))
+ var/mob/observer/dead/O = Player
+ if(!O.started_as_observer)
+ to_chat(Player, span_filter_system(span_red(span_bold("You did not survive the events on [station_name()]..."))))
+ else
+ to_chat(Player, span_filter_system(span_red(span_bold("You did not survive the events on [station_name()]..."))))
+ to_chat(world, span_filter_system("
"))
+
+ for (var/mob/living/silicon/ai/aiPlayer in GLOB.mob_list)
+ if (aiPlayer.stat != 2)
+ to_chat(world, span_filter_system(span_bold("[aiPlayer.name]'s laws at the end of the round were:")))
+ else
+ to_chat(world, span_filter_system(span_bold("[aiPlayer.name]'s laws when it was deactivated were:")))
+ aiPlayer.show_laws(1)
+
+ if (aiPlayer.connected_robots.len)
+ var/robolist = span_bold("The AI's loyal minions were:") + " "
+ for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
+ robolist += "[robo.name][robo.stat?" (Deactivated), ":", "]"
+ to_chat(world, span_filter_system("[robolist]"))
+
+ var/dronecount = 0
+
+ for (var/mob/living/silicon/robot/robo in GLOB.mob_list)
+
+ if(istype(robo, /mob/living/silicon/robot/platform))
+ var/mob/living/silicon/robot/platform/tank = robo
+ if(!tank.has_had_player)
+ continue
+
+ if(istype(robo,/mob/living/silicon/robot/drone) && !istype(robo,/mob/living/silicon/robot/drone/swarm))
+ dronecount++
+ continue
+
+ if (!robo.connected_ai)
+ var/list/robot_stat_display = list()
+ if (robo.stat != 2)
+ robot_stat_display += span_filter_system(span_bold("[robo.name] survived as an AI-less stationbound synthetic! Its laws were:"))
+ else
+ robot_stat_display += span_filter_system(span_bold("[robo.name] was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:"))
+
+ robot_stat_display += robo.laws.get_formatted_laws()
+ to_chat(world, robot_stat_display.Join("\n"))
+
+ if(dronecount)
+ to_chat(world, span_filter_system(span_bold("There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round.")))
+
/datum/controller/subsystem/ticker/proc/RoundTrivia()//bazinga
var/list/valid_stats_list = list() //This is to be populated with the good shit
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index a31da4d91d..4a4891ab35 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -56,7 +56,7 @@
var/confirm = tgui_alert(user, "Do you really want to deactivate this guest pass? (you can't reactivate it)", "Confirm Deactivation", list("Yes", "No"))
if(confirm == "Yes")
//rip guest pass 3
- user.visible_message(span_infoplain(span_bold("\The [user]") + "deactivates \the [src]."))
+ user.visible_message(span_infoplain(span_bold("\The [user]") + " deactivates \the [src]."))
icon_state = "guest-invalid"
update_icon()
expiration_time = world.time
diff --git a/code/modules/lootpanel/_lootpanel.dm b/code/modules/lootpanel/_lootpanel.dm
index 6331282b07..f6f2d1e502 100644
--- a/code/modules/lootpanel/_lootpanel.dm
+++ b/code/modules/lootpanel/_lootpanel.dm
@@ -73,7 +73,7 @@
switch(action)
if("grab")
- return grab(usr, params)
+ return grab(ui.user, params)
if("refresh")
return populate_contents()
diff --git a/code/modules/lootpanel/misc.dm b/code/modules/lootpanel/misc.dm
index 1f18790aa7..5a4cddbb25 100644
--- a/code/modules/lootpanel/misc.dm
+++ b/code/modules/lootpanel/misc.dm
@@ -7,8 +7,8 @@
var/build = owner.byond_build
var/version = owner.byond_version
if(build < 515 || (build == 515 && version < 1635))
- to_chat(owner.mob, span_info("\
- Your version of Byond doesn't support fast image loading.\n\
+ to_chat(owner.mob, span_info(span_bolddanger("\
+ Your version of Byond doesn't support fast image loading.") + ")\n\
Detected: [version].[build]\n\
Required version for this feature: 515.1635 or later.\n\
Visit BYOND's website to get the latest version of BYOND.\n\
diff --git a/code/modules/mob/living/inventory.dm b/code/modules/mob/living/inventory.dm
index 4b1629b6d6..f9c08e01bb 100644
--- a/code/modules/mob/living/inventory.dm
+++ b/code/modules/mob/living/inventory.dm
@@ -186,9 +186,9 @@
// This handles the drag-open inventory panel.
/mob/living/MouseDrop(atom/over_object)
- var/mob/living/L = over_object
- if(L.is_incorporeal())
+ if(over_object?.is_incorporeal())
return
+ var/mob/living/L = over_object
if(istype(L) && L != src && L == usr && Adjacent(L))
show_inventory_panel(L)
. = ..()
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper.dm
index 00dba23c7a..ef56ff54ac 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper.dm
@@ -8,7 +8,6 @@
icon_state = "sleeper"
w_class = ITEMSIZE_TINY
var/mob/living/carbon/patient = null
- var/mob/living/silicon/robot/hound = null
var/inject_amount = 10
var/min_health = -100
var/cleaning = 0
@@ -63,7 +62,7 @@
med_analyzer = new /obj/item/healthanalyzer
/obj/item/dogborg/sleeper/Destroy()
- go_out()
+ go_out(loc)
if(ore_bag)
QDEL_NULL(ore_bag)
if(med_analyzer)
@@ -80,15 +79,14 @@
var/datum/gas_mixture/belly_air/air = new(1000)
return air
-/obj/item/dogborg/sleeper/afterattack(atom/movable/target, mob/living/silicon/user, proximity_flag, click_parameters)
- hound = loc
- if(!istype(target))
+/obj/item/dogborg/sleeper/afterattack(atom/movable/target, mob/living/silicon/robot/user, proximity_flag, click_parameters)
+ if(!istype(target) || !istype(user))
return
if(!proximity_flag)
return
if(target.anchored)
return
- if(target in hound.module.modules)
+ if(target in user.module.modules)
return
if(length(contents) >= max_item_count)
to_chat(user, span_warning("Your [src.name] is full. Eject or process contents to continue."))
@@ -103,29 +101,29 @@
if(target_obj.w_class > ITEMSIZE_LARGE)
to_chat(user, span_warning("\The [target] is too large to fit into your [src.name]"))
return
- user.visible_message(span_warning("[hound.name] is ingesting [target.name] into their [src.name]."), span_notice("You start ingesting [target] into your [src.name]..."))
+ user.visible_message(span_warning("[user.name] is ingesting [target.name] into their [src.name]."), span_notice("You start ingesting [target] into your [src.name]..."))
if(do_after(user, 3 SECONDS, target) && length(contents) < max_item_count)
target.forceMove(src)
- user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as [target.name] slips inside."), span_notice("Your [src.name] groans lightly as [target] slips inside."))
+ user.visible_message(span_warning("[user.name]'s [src.name] groans lightly as [target.name] slips inside."), span_notice("Your [src.name] groans lightly as [target] slips inside."))
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
if(delivery)
if(islist(deliverylists[delivery_tag]))
deliverylists[delivery_tag] |= target
to_chat(user, span_notice("\The [target.name] added to cargo compartment slot: [delivery_tag]."))
- update_patient()
+ update_patient(user)
return
if(istype(target, /mob/living/simple_mob/animal/passive/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v
var/mob/living/simple_mob/trashmouse = target
- user.visible_message(span_warning("[hound.name] is ingesting [trashmouse] into their [src.name]."), span_notice("You start ingesting [trashmouse] into your [src.name]..."))
+ user.visible_message(span_warning("[user.name] is ingesting [trashmouse] into their [src.name]."), span_notice("You start ingesting [trashmouse] into your [src.name]..."))
if(do_after(user, 3 SECONDS, target = trashmouse) && length(contents) < max_item_count)
trashmouse.forceMove(src)
- user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as [trashmouse] slips inside."), span_notice("Your [src.name] groans lightly as [trashmouse] slips inside."))
+ user.visible_message(span_warning("[user.name]'s [src.name] groans lightly as [trashmouse] slips inside."), span_notice("Your [src.name] groans lightly as [trashmouse] slips inside."))
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
if(delivery)
if(islist(deliverylists[delivery_tag]))
deliverylists[delivery_tag] |= trashmouse
to_chat(user, span_notice("\The [trashmouse] added to cargo compartment slot: [delivery_tag]."))
- update_patient()
+ update_patient(user)
return
else if(ishuman(target))
var/mob/living/carbon/human/trashman = target
@@ -135,19 +133,19 @@
if(trashman.buckled)
to_chat(user, span_warning("[trashman] is buckled and can not be put into your [src.name]."))
return
- user.visible_message(span_warning("[hound.name] is ingesting [trashman] into their [src.name]."), span_notice("You start ingesting [trashman] into your [src.name]..."))
+ user.visible_message(span_warning("[user.name] is ingesting [trashman] into their [src.name]."), span_notice("You start ingesting [trashman] into your [src.name]..."))
if(do_after(user, 3 SECONDS, target = trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
trashman.forceMove(src)
START_PROCESSING(SSobj, src)
- user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as [trashman] slips inside."), span_notice("Your [src.name] groans lightly as [trashman] slips inside."))
- log_attack("[key_name(hound)] has eaten [key_name(patient)] with a cyborg belly. ([hound ? "JMP" : "null"])")
+ user.visible_message(span_warning("[user.name]'s [src.name] groans lightly as [trashman] slips inside."), span_notice("Your [src.name] groans lightly as [trashman] slips inside."))
+ log_attack("[key_name(user)] has eaten [key_name(patient)] with a cyborg belly. ([user ? "JMP" : "null"])")
playsound(src, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
if(delivery)
if(islist(deliverylists[delivery_tag]))
deliverylists[delivery_tag] |= trashman
to_chat(user, span_notice("\The [trashman] added to cargo compartment slot: [delivery_tag]."))
- to_chat(trashman, span_notice("[hound.name] has added you to their cargo compartment slot: [delivery_tag]."))
- update_patient()
+ to_chat(trashman, span_notice("[user.name] has added you to their cargo compartment slot: [delivery_tag]."))
+ update_patient(user)
return
return
@@ -159,7 +157,7 @@
if(patient)
to_chat(user, span_warning("Your [src.name] is already occupied."))
return
- user.visible_message(span_warning("[hound.name] is ingesting [H.name] into their [src.name]."), span_notice("You start ingesting [H] into your [src]..."))
+ user.visible_message(span_warning("[user.name] is ingesting [H.name] into their [src.name]."), span_notice("You start ingesting [H] into your [src]..."))
if(!patient && !H.buckled && do_after (user, 50, H))
if(!proximity_flag)
return //If they moved away, you can't eat them.
@@ -167,13 +165,13 @@
return //If you try to eat two people at once, you can only eat one.
else //If you don't have someone in you, proceed.
H.forceMove(src)
- update_patient()
+ update_patient(user)
START_PROCESSING(SSobj, src)
- user.visible_message(span_warning("[hound.name]'s [src.name] lights up as [H.name] slips inside."), span_notice("Your [src] lights up as [H] slips inside. Life support functions engaged."))
- log_admin("[key_name(hound)] has eaten [key_name(patient)] with a cyborg belly. ([hound ? "JMP" : "null"])")
+ user.visible_message(span_warning("[user.name]'s [src.name] lights up as [H.name] slips inside."), span_notice("Your [src] lights up as [H] slips inside. Life support functions engaged."))
+ log_admin("[key_name(user)] has eaten [key_name(patient)] with a cyborg belly. ([user ? "JMP" : "null"])")
playsound(src, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
-/obj/item/dogborg/sleeper/proc/ingest_atom(atom/ingesting)
+/obj/item/dogborg/sleeper/proc/ingest_atom(atom/ingesting, mob/living/silicon/robot/hound)
if (!ingesting || ingesting == hound)
return
var/obj/belly/belly = hound.vore_selected
@@ -189,7 +187,7 @@
var/obj/item/holder/micro = ingesting
var/delete_holder = TRUE
for (var/mob/living/M in micro.contents)
- if (!ingest_living(M, belly) || M.loc == micro)
+ if (!ingest_living(M, belly, hound) || M.loc == micro)
delete_holder = FALSE
if (delete_holder)
micro.held_mob = null
@@ -198,15 +196,14 @@
to_eat.forceMove(belly)
log_admin("VORE: [hound] used their [src] to swallow [to_eat].")
-/obj/item/dogborg/sleeper/proc/ingest_living(mob/living/victim, obj/belly/belly)
+/obj/item/dogborg/sleeper/proc/ingest_living(mob/living/victim, obj/belly/belly, mob/living/silicon/robot/hound)
if (victim.devourable && is_vore_predator(hound))
belly.nom_atom(victim, hound)
add_attack_logs(hound, victim, "Eaten via [belly.name]")
return TRUE
return FALSE
-/obj/item/dogborg/sleeper/proc/go_out()
- hound = src.loc
+/obj/item/dogborg/sleeper/proc/go_out(mob/living/silicon/robot/hound)
items_preserved.Cut()
cleaning = 0
for(var/list/dlist in deliverylists)
@@ -216,10 +213,9 @@
for(var/atom/movable/content in contents)
content.forceMove(get_turf(src))
playsound(src, 'sound/effects/splat.ogg', 50, 1)
- update_patient()
+ update_patient(hound)
-/obj/item/dogborg/sleeper/proc/vore_ingest_all()
- hound = src.loc
+/obj/item/dogborg/sleeper/proc/vore_ingest_all(mob/living/silicon/robot/hound)
if (!istype(hound) || length(contents) <= 0)
return
if (!hound.vore_selected)
@@ -227,14 +223,12 @@
return
for (var/C in contents)
if (isliving(C) || isitem(C))
- ingest_atom(C)
+ ingest_atom(C, hound)
hound.updateVRPanel()
- update_patient()
+ update_patient(hound)
+
+/obj/item/dogborg/sleeper/proc/drain(mob/living/silicon/robot/hound, amt = 3) //Slightly reduced cost (before, it was always injecting inaprov)
-/obj/item/dogborg/sleeper/proc/drain(amt = 3) //Slightly reduced cost (before, it was always injecting inaprov)
- hound = src.loc
- if(istype(hound,/obj/item/robot_module))
- hound = hound.loc
hound.cell.charge = hound.cell.charge - amt
/obj/item/dogborg/sleeper/attack_self(mob/user)
@@ -330,22 +324,24 @@
if(ui.user == patient)
return FALSE
+ var/mob/living/silicon/robot/our_hound = ui.user
+
switch(action)
if("eject")
- go_out()
+ go_out(our_hound)
return TRUE
if("clean")
if(cleaning)
return FALSE
cleaning = TRUE
- drain(startdrain)
+ drain(our_hound, startdrain)
START_PROCESSING(SSobj, src)
- update_patient()
+ update_patient(our_hound)
if(patient)
- to_chat(patient, span_danger("[hound.name]'s [src.name] fills with caustic enzymes around you!"))
+ to_chat(patient, span_danger("[our_hound.name]'s [src.name] fills with caustic enzymes around you!"))
return TRUE
if("analyze")
- med_analyzer.scan_mob(patient,hound)
+ med_analyzer.scan_mob(patient, our_hound)
return TRUE
if("port")
var/new_port = params["value"]
@@ -354,7 +350,7 @@
eject_port = new_port
return TRUE
if("ingest")
- vore_ingest_all()
+ vore_ingest_all(our_hound)
return TRUE
if("deliveryslot")
var/new_tag = params["value"]
@@ -365,11 +361,11 @@
if("slot_eject")
if(!length(deliverylists[delivery_tag]))
return FALSE
- hound.visible_message(span_warning("[hound.name] empties out their cargo compartment via their [eject_port] port."), span_notice("You empty your cargo compartment via your [eject_port] port."))
+ our_hound.visible_message(span_warning("[our_hound.name] empties out their cargo compartment via their [eject_port] port."), span_notice("You empty your cargo compartment via your [eject_port] port."))
for(var/atom/movable/content in deliverylists[delivery_tag])
content.forceMove(get_turf(src))
playsound(src, 'sound/effects/splat.ogg', 50, 1)
- update_patient()
+ update_patient(our_hound)
deliverylists[delivery_tag].Cut()
return TRUE
if("inject")
@@ -385,24 +381,23 @@
to_chat(ui.user, span_notice("ERROR: Subject is not in stable condition for injections."))
return TRUE
-/obj/item/dogborg/sleeper/proc/inject_chem(mob/user, chem)
+/obj/item/dogborg/sleeper/proc/inject_chem(mob/living/silicon/robot/user, chem)
if(patient && patient.reagents)
if(chem in (injection_chems + REAGENT_ID_INAPROVALINE))
- if(hound.cell.charge < 800) //This is so borgs don't kill themselves with it.
- to_chat(hound, span_notice("You don't have enough power to synthesize fluids."))
+ if(user.cell.charge < 800) //This is so borgs don't kill themselves with it.
+ to_chat(user, span_notice("You don't have enough power to synthesize fluids."))
return
else if(patient.reagents.get_reagent_amount(chem) + 10 >= 20) //Preventing people from accidentally killing themselves by trying to inject too many chemicals!
- to_chat(hound, span_notice("Your stomach is currently too full of fluids to secrete more fluids of this kind."))
+ to_chat(user, span_notice("Your stomach is currently too full of fluids to secrete more fluids of this kind."))
else if(patient.reagents.get_reagent_amount(chem) + 10 <= 20) //No overdoses for you
patient.reagents.add_reagent(chem, inject_amount)
- drain(SLEEPER_INJECT_COST)
+ drain(user, SLEEPER_INJECT_COST)
var/units = round(patient.reagents.get_reagent_amount(chem))
- to_chat(hound, span_notice("Injecting [units] unit\s of [SSchemistry.chemical_reagents[chem]] into occupant.")) //If they were immersed, the reagents wouldn't leave with them.
+ to_chat(user, span_notice("Injecting [units] unit\s of [SSchemistry.chemical_reagents[chem]] into occupant.")) //If they were immersed, the reagents wouldn't leave with them.
//For if the dogborg's existing patient uh, doesn't make it.
-/obj/item/dogborg/sleeper/proc/update_patient()
- hound = src.loc
- if(!istype(hound,/mob/living/silicon/robot))
+/obj/item/dogborg/sleeper/proc/update_patient(mob/living/silicon/robot/hound)
+ if(!istype(hound))
return
//Cleaning looks better with red on, even with nobody in it
@@ -457,7 +452,7 @@
return
//Gurgleborg process
-/obj/item/dogborg/sleeper/proc/clean_cycle()
+/obj/item/dogborg/sleeper/proc/clean_cycle(mob/living/silicon/robot/hound)
//Sanity? Maybe not required. More like if indigestible person OOC escapes.
for(var/I in items_preserved)
@@ -625,22 +620,22 @@
return
if(cleaning) //We're cleaning, return early after calling this as we don't care about the patient.
- clean_cycle()
+ clean_cycle(loc)
return
if(patient && stabilizer) //We're caring for the patient. Medical emergency! Or endo scene.
- update_patient()
+ update_patient(loc)
if(patient.health < 0)
patient.adjustOxyLoss(-1) //Heal some oxygen damage if they're in critical condition
patient.updatehealth()
- drain()
+ drain(loc)
patient.AdjustStunned(-4)
patient.AdjustWeakened(-4)
- drain(1)
+ drain(loc, 1)
return
if(!patient && !cleaning) //We think we're done working.
- if(!update_patient()) //One last try to find someone
+ if(!update_patient(loc)) //One last try to find someone
STOP_PROCESSING(SSobj, src)
return
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_types.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_types.dm
index ad91fcc115..f36a335c01 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_types.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_types.dm
@@ -58,14 +58,14 @@
if(isturf(target))
if(ore_bag.gather_all(target, user, TRUE))
- user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as ore slips inside."), span_notice("Your [src.name] groans lightly as ore slips inside."))
+ user.visible_message(span_warning("[user.name]'s [src.name] groans lightly as ore slips inside."), span_notice("Your [src.name] groans lightly as ore slips inside."))
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
return
if(istype(target, /obj/item/ore) && !istype(target, /obj/item/ore/slag) && !istype(target, /obj/item/ore/archeology_debris))
var/turf_check = isturf(target.loc) //get_turf intentionally not used here due to clicking ore in a backpack or other weirdness.
if(turf_check)
if(ore_bag.gather_all(target.loc, user, TRUE))
- user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as ore slips inside."), span_notice("Your [src.name] groans lightly as ore slips inside."))
+ user.visible_message(span_warning("[user.name]'s [src.name] groans lightly as ore slips inside."), span_notice("Your [src.name] groans lightly as ore slips inside."))
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
return
. = ..()
@@ -88,19 +88,19 @@
max_item_count = 10
recycles = FALSE
-/obj/item/dogborg/sleeper/compactor/brewer/inject_chem(mob/user, chem)
+/obj/item/dogborg/sleeper/compactor/brewer/inject_chem(mob/living/silicon/robot/user, chem)
if(patient && patient.reagents)
if((chem in injection_chems) + REAGENT_ID_INAPROVALINE)
- if(hound.cell.charge < 200) //This is so borgs don't kill themselves with it.
- to_chat(hound, span_notice("You don't have enough power to synthesize fluids."))
+ if(user.cell.charge < 200) //This is so borgs don't kill themselves with it.
+ to_chat(user, span_notice("You don't have enough power to synthesize fluids."))
return
else if(patient.reagents.get_reagent_amount(chem) + 10 >= 50) //Preventing people from accidentally killing themselves by trying to inject too many chemicals!
- to_chat(hound, span_notice("Your stomach is currently too full of fluids to secrete more fluids of this kind."))
+ to_chat(user, span_notice("Your stomach is currently too full of fluids to secrete more fluids of this kind."))
else if(patient.reagents.get_reagent_amount(chem) + 10 <= 50) //No overdoses for you
patient.reagents.add_reagent(chem, inject_amount)
- drain(100) //-100 charge per injection
+ drain(user, 100) //-100 charge per injection
var/units = round(patient.reagents.get_reagent_amount(chem))
- to_chat(hound, span_notice("Injecting [units] unit\s into occupant.")) //If they were immersed, the reagents wouldn't leave with them.
+ to_chat(user, span_notice("Injecting [units] unit\s into occupant.")) //If they were immersed, the reagents wouldn't leave with them.
/obj/item/dogborg/sleeper/K9/ert
name = "Emergency Storage"
diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm
index 8c0910b469..cfe15dfff2 100644
--- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm
+++ b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm
@@ -184,8 +184,8 @@
target_name = L.name
break
- laws.set_zeroth_law("[target_name] is your master.")
- return laws
+ laws.set_zeroth_law("[target_name] is your master.")
+ return laws
if("neutral")
var/rng = rand(1,3)
switch(rng)
diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm b/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm
index a6e16237b0..a090909d00 100644
--- a/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm
+++ b/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm
@@ -35,7 +35,6 @@
if(!isbelly(hostloc))
return list()
- var/list/inside = list()
var/obj/belly/inside_belly = hostloc
var/mob/living/pred = inside_belly.owner
@@ -48,18 +47,6 @@
if(inside_desc != "No description.")
inside_desc = inside_belly.belly_format_string(inside_desc, owner, use_first_only = TRUE)
- inside = list(
- "absorbed" = owner.absorbed,
- "belly_name" = inside_belly.get_belly_name(),
- "belly_mode" = inside_belly.digest_mode,
- "desc" = inside_desc,
- "pred" = pred,
- "ref" = "\ref[inside_belly]",
- "liq_lvl" = inside_belly.reagents.total_volume,
- "liq_reagent_type" = inside_belly.reagent_chosen,
- "liuq_name" = inside_belly.reagent_name,
- )
-
var/list/inside_contents = list()
for(var/atom/movable/O in inside_belly)
if(O == owner)
@@ -90,7 +77,20 @@
if(M.absorbed)
info["absorbed"] = TRUE
UNTYPED_LIST_ADD(inside_contents, info)
- inside["contents"] = inside_contents
+
+ var/list/inside = list(
+ "absorbed" = owner.absorbed,
+ "belly_name" = inside_belly.get_belly_name(),
+ "belly_mode" = inside_belly.digest_mode,
+ "desc" = inside_desc,
+ "pred" = pred,
+ "ref" = "\ref[inside_belly]",
+ "liq_lvl" = inside_belly.reagents.total_volume,
+ "liq_reagent_type" = inside_belly.reagent_chosen,
+ "liuq_name" = inside_belly.reagent_name,
+ "contents" = inside_contents
+ )
+
return inside
/datum/vore_look/proc/get_prey_abilities(mob/owner, obj/belly/inside_belly)