From 251bd3e06b1b223d30944dd9ad5b7133e23598d0 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Thu, 31 Dec 2020 12:33:05 -0800
Subject: [PATCH 01/22] logging
---
code/modules/food_and_drinks/drinks/drinks.dm | 6 +++---
code/modules/food_and_drinks/food/condiment.dm | 8 ++++----
code/modules/food_and_drinks/food/snacks.dm | 4 ++--
code/modules/food_and_drinks/food/snacks_pie.dm | 2 +-
code/modules/hydroponics/hydroponics.dm | 6 +++---
.../chemistry/machinery/chem_dispenser.dm | 16 ++++++++++++++--
.../modules/reagents/reagent_containers/glass.dm | 2 +-
.../reagents/reagent_containers/hypospray.dm | 4 ++--
.../reagents/reagent_containers/medspray.dm | 2 +-
code/modules/reagents/reagent_containers/pill.dm | 5 +++--
code/modules/reagents/reagent_containers/rags.dm | 4 ++--
.../modules/reagents/reagent_containers/spray.dm | 4 ++++
.../reagents/reagent_containers/syringes.dm | 4 ++--
code/modules/reagents/reagent_dispenser.dm | 2 +-
code/modules/surgery/dental_implant.dm | 2 +-
15 files changed, 44 insertions(+), 27 deletions(-)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 140923c1ef..3f51da22b3 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -48,7 +48,7 @@
var/fraction = min(gulp_size/reagents.total_volume, 1)
checkLiked(fraction, M)
reagents.reaction(M, INGEST, fraction)
- reagents.trans_to(M, gulp_size)
+ reagents.trans_to(M, gulp_size, log = TRUE)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
return 1
@@ -71,7 +71,7 @@
return
var/refill = reagents.get_master_reagent_id()
- var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
+ var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this, log = TRUE)
to_chat(user, "You transfer [trans] units of the solution to [target].")
if(iscyborg(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
@@ -92,7 +92,7 @@
to_chat(user, "[src] is full.")
return
- var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
+ var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, log = TRUE)
to_chat(user, "You fill [src] with [trans] units of the contents of [target].")
/obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params)
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index 95e5c9fb56..dca12aa4f8 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -55,7 +55,7 @@
var/fraction = min(10/reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
- reagents.trans_to(M, 10)
+ reagents.trans_to(M, 10, log = TRUE)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
return 1
@@ -73,7 +73,7 @@
to_chat(user, "[src] is full!")
return
- var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
+ var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, log = TRUE)
to_chat(user, "You fill [src] with [trans] units of the contents of [target].")
//Something like a glass or a food item. Player probably wants to transfer TO it.
@@ -84,7 +84,7 @@
if(target.reagents.total_volume >= target.reagents.maximum_volume)
to_chat(user, "you can't add anymore to [target]!")
return
- var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
+ var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this, log = TRUE)
to_chat(user, "You transfer [trans] units of the condiment to [target].")
/obj/item/reagent_containers/food/condiment/on_reagent_change(changetype)
@@ -270,7 +270,7 @@
return
else
to_chat(user, "You tear open [src] above [target] and the condiments drip onto it.")
- src.reagents.trans_to(target, amount_per_transfer_from_this)
+ src.reagents.trans_to(target, amount_per_transfer_from_this, log = TRUE)
qdel(src)
/obj/item/reagent_containers/food/condiment/pack/on_reagent_change(changetype)
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 4d5f4e2dd0..cb1ed628c4 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -160,7 +160,7 @@ All foods are distributed among various categories. Use common sense.
SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user)
var/fraction = min(bitesize / reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
- reagents.trans_to(M, bitesize)
+ reagents.trans_to(M, bitesize, log = TRUE)
bitecount++
On_Consume(M)
checkLiked(fraction, M)
@@ -359,7 +359,7 @@ All foods are distributed among various categories. Use common sense.
if(!M.is_drainable())
to_chat(user, "[M] is unable to be dunked in!")
return
- if(M.reagents.trans_to(src, dunk_amount)) //if reagents were transfered, show the message
+ if(M.reagents.trans_to(src, dunk_amount, log = TRUE)) //if reagents were transfered, show the message
to_chat(user, "You dunk the [M].")
return
if(!M.reagents.total_volume)
diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm
index 24522503c1..a4287d3d19 100644
--- a/code/modules/food_and_drinks/food/snacks_pie.dm
+++ b/code/modules/food_and_drinks/food/snacks_pie.dm
@@ -54,7 +54,7 @@
H.visible_message("[H] is creamed by [src]!", "You've been creamed by [src]!")
playsound(H, "desceration", 50, TRUE)
if(!H.is_mouth_covered())
- reagents.trans_to(H,15) //Cream pie combat
+ reagents.trans_to(H, 15, log = TRUE) //Cream pie combat
if(!H.creamed) // one layer at a time
H.add_overlay(creamoverlay)
H.creamed = TRUE
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index a1a177c028..8467d00124 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -130,7 +130,7 @@
reagents.remove_any(min(0.5, nutridrain))
else
reagents.remove_any(nutridrain)
-
+
// Lack of nutrients hurts non-weeds
if(reagents.total_volume <= 0 && !myseed.get_gene(/datum/plant_gene/trait/plant_type/weed_hardy))
adjustHealth(-rand(1,3))
@@ -501,7 +501,7 @@
if(visi_msg)
visible_message("[visi_msg].")
-
+
for(var/obj/machinery/hydroponics/H in trays)
//cause I don't want to feel like im juggling 15 tamagotchis and I can get to my real work of ripping flooring apart in hopes of validating my life choices of becoming a space-gardener
//This was originally in apply_chemicals, but due to apply_chemicals only holding nutrients, we handle it here now.
@@ -675,7 +675,7 @@
idle_power_usage = 0
self_sustaining = FALSE
update_icon()
-
+
/// Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds.///
/obj/machinery/hydroponics/proc/adjustWater(adjustamt)
waterlevel = clamp(waterlevel + adjustamt, 0, maxwater)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index db16a10d1d..7e6635af15 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -259,6 +259,7 @@
say("Not enough energy to complete operation!")
return
R.add_reagent(reagent, actual)
+ log_reagent("DISPENSER: ([COORD(src)]) ([REF(src)]) [key_name(usr)] dispensed [actual] of [reagent] to [beaker] ([REF(beaker)]).")
work_animation()
else
@@ -281,11 +282,14 @@
var/list/chemicals_to_dispense = saved_recipes[params["recipe"]]
if(!LAZYLEN(chemicals_to_dispense))
return
+ var/list/logstring = list()
+ var/earlyabort = TRUE
for(var/key in chemicals_to_dispense)
var/reagent = GLOB.name2reagent[translate_legacy_chem_id(key)]
var/dispense_amount = chemicals_to_dispense[key]
+ logstring += "[reagent] = [dispense_amount]"
if(!dispensable_reagents.Find(reagent))
- return
+ break
if(!recording_recipe)
if(!beaker)
return
@@ -295,11 +299,15 @@
if(actual)
if(!cell.use(actual / powerefficiency))
say("Not enough energy to complete operation!")
- return
+ earlyabort = TRUE
+ break
R.add_reagent(reagent, actual)
work_animation()
else
recording_recipe[key] += dispense_amount
+ logstring = logstring.Join(", ")
+ if(!recording_recipe)
+ log_reagent("DISPENSER: [key_name(usr)] dispensed recipe [params["recipe"]] with chemicals [logstring] to [beaker] ([REF(beaker)])[earlyabort? " (aborted early)":""]")
. = TRUE
if("clear_recipes")
if(!is_operational())
@@ -322,15 +330,19 @@
if(saved_recipes[name] && alert("\"[name]\" already exists, do you want to overwrite it?",, "Yes", "No") == "No")
return
if(name && recording_recipe)
+ var/logstring = list()
for(var/reagent in recording_recipe)
var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent)]
+ logstring += "[reagent_id] = [recording_recipe[reagent]]"
if(!dispensable_reagents.Find(reagent_id))
visible_message("[src] buzzes.", "You hear a faint buzz.")
to_chat(usr, "[src] cannot find [reagent]!")
playsound(src, 'sound/machines/buzz-two.ogg', 50, TRUE)
return
saved_recipes[name] = recording_recipe
+ logstring = logstring.Join(", ")
recording_recipe = null
+ log_reagent("DISPENSER: [key_name(usr)] recorded recipe [name] with chemicals [logstring]")
. = TRUE
if("cancel_recording")
if(!is_operational())
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index ec26182813..6e1b753c32 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -455,7 +455,7 @@
grinded.on_grind()
reagents.add_reagent_list(grinded.grind_results)
if(grinded.reagents) //food and pills
- grinded.reagents.trans_to(src, grinded.reagents.total_volume)
+ grinded.reagents.trans_to(src, grinded.reagents.total_volume, log = "mortar powdering")
to_chat(user, "You break [grinded] into powder.")
QDEL_NULL(grinded)
return
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 5aeac1bc38..1f89af420e 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -41,7 +41,7 @@
if(M.reagents)
var/trans = 0
if(!infinite)
- trans = reagents.trans_to(M, amount_per_transfer_from_this)
+ trans = reagents.trans_to(M, amount_per_transfer_from_this, log = TRUE)
else
trans = reagents.copy_to(M, amount_per_transfer_from_this)
@@ -427,7 +427,7 @@
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
vial.reagents.reaction(L, method, fraction)
- vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
+ vial.reagents.trans_to(target, vial.amount_per_transfer_from_this, log = TRUE)
var/long_sound = vial.amount_per_transfer_from_this >= 15
playsound(loc, long_sound ? 'sound/items/hypospray_long.ogg' : pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
to_chat(user, "You [fp_verb] [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.")
diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm
index 052e85a3d1..8d30f25db2 100644
--- a/code/modules/reagents/reagent_containers/medspray.dm
+++ b/code/modules/reagents/reagent_containers/medspray.dm
@@ -80,7 +80,7 @@
playsound(src, 'sound/effects/spray2.ogg', 50, 1, -6)
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(L, apply_type, fraction)
- reagents.trans_to(L, amount_per_transfer_from_this)
+ reagents.trans_to(L, amount_per_transfer_from_this, log = TRUE)
return
/obj/item/reagent_containers/medspray/styptic
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 3c23794e5a..a5b4e5b8ab 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -56,7 +56,7 @@
log_combat(user, M, "fed", reagents.log_list())
if(reagents.total_volume)
reagents.reaction(M, apply_type)
- reagents.trans_to(M, reagents.total_volume)
+ reagents.trans_to(M, reagents.total_volume, log = TRUE)
qdel(src)
return TRUE
@@ -76,7 +76,8 @@
user.visible_message("[user] slips something into [target]!",
"You dissolve [src] in [target].", vision_distance = 2)
- reagents.trans_to(target, reagents.total_volume)
+ log_combat(user, target, "spiked", src, reagents.log_list())
+ reagents.trans_to(target, reagents.total_volume, log = TRUE)
qdel(src)
return STOP_ATTACK_PROC_CHAIN
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index 469a8ef907..5d94e78809 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -39,7 +39,7 @@
C.visible_message("[user] is trying to smother \the [C] with \the [src]!", "[user] is trying to smother you with \the [src]!", "You hear some struggling and muffled cries of surprise.")
if(do_after(user, 20, target = C))
reagents.reaction(C, INGEST)
- reagents.trans_to(C, 5)
+ reagents.trans_to(C, 5, log = TRUE)
C.visible_message("[user] has smothered \the [C] with \the [src]!", "[user] has smothered you with \the [src]!", "You hear some struggling and a heavy breath taken.")
log_combat(user, C, "smothered", log_object)
else
@@ -107,7 +107,7 @@
reagents.clear_reagents()
else
msg += "'s liquids into \the [target]"
- reagents.trans_to(target, reagents.total_volume)
+ reagents.trans_to(target, reagents.total_volume, log = TRUE)
to_chat(user, "[msg].")
return TRUE
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 926ed27854..af053b592a 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -81,6 +81,10 @@
else
reagents.trans_to(D, amount_per_transfer_from_this, 1/range)
D.color = mix_color_from_reagents(D.reagents.reagent_list)
+ var/turf/T = get_turf(src)
+ if(!T)
+ return
+ log_reagent("SPRAY: [key_name(usr)] fired [src] ([REF(src)]) [COORD(T)] at [A] ([REF(A)]) [COORD(A)] (chempuff: [D.reagents.log_string()])")
var/wait_step = max(round(2+ spray_delay * INVERSE(range)), 2)
last_spray = world.time
INVOKE_ASYNC(src, .proc/do_spray, A, wait_step, D, range, puff_reagent_left)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index f42ae668c7..93a07b1a6e 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -113,7 +113,7 @@
to_chat(user, "You cannot directly remove reagents from [target]!")
return
- var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
+ var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, log = TRUE) // transfer from, transfer to - who cares?
to_chat(user, "You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.")
if (round(reagents.total_volume, 0.1) >= reagents.maximum_volume)
@@ -158,7 +158,7 @@
L.log_message("injected themselves ([contained]) with [src.name]", LOG_ATTACK, color="orange")
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(L, INJECT, fraction)
- reagents.trans_to(target, amount_per_transfer_from_this)
+ reagents.trans_to(target, amount_per_transfer_from_this, log = TRUE)
to_chat(user, "You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.")
if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT)
mode = SYRINGE_DRAW
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index ffa3f7478b..39ccdd23a2 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -182,7 +182,7 @@
if(W.reagents.has_reagent(/datum/reagent/fuel, W.max_fuel))
to_chat(user, "Your [W.name] is already full!")
return
- reagents.trans_to(W, W.max_fuel)
+ reagents.trans_to(W, W.max_fuel, log = TRUE)
user.visible_message("[user] refills [user.p_their()] [W.name].", "You refill [W].")
playsound(src, 'sound/effects/refill.ogg', 50, 1)
W.update_icon()
diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm
index 9d304b0727..311c886c9d 100644
--- a/code/modules/surgery/dental_implant.dm
+++ b/code/modules/surgery/dental_implant.dm
@@ -36,6 +36,6 @@
log_combat(owner, null, "swallowed an implanted pill", target)
if(target.reagents.total_volume)
target.reagents.reaction(owner, INGEST)
- target.reagents.trans_to(owner, target.reagents.total_volume)
+ target.reagents.trans_to(owner, target.reagents.total_volume, log = TRUE)
qdel(target)
return 1
From 8a471d6984c101a8848ef80fe592c667a6fc9c0c Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Thu, 31 Dec 2020 12:35:45 -0800
Subject: [PATCH 02/22] logs
---
code/modules/reagents/chemistry/machinery/chem_dispenser.dm | 2 +-
code/modules/reagents/reagent_containers/spray.dm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 7e6635af15..dda5689273 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -330,7 +330,7 @@
if(saved_recipes[name] && alert("\"[name]\" already exists, do you want to overwrite it?",, "Yes", "No") == "No")
return
if(name && recording_recipe)
- var/logstring = list()
+ var/list/logstring = list()
for(var/reagent in recording_recipe)
var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent)]
logstring += "[reagent_id] = [recording_recipe[reagent]]"
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index af053b592a..eb3b80b693 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -84,7 +84,7 @@
var/turf/T = get_turf(src)
if(!T)
return
- log_reagent("SPRAY: [key_name(usr)] fired [src] ([REF(src)]) [COORD(T)] at [A] ([REF(A)]) [COORD(A)] (chempuff: [D.reagents.log_string()])")
+ log_reagent("SPRAY: [key_name(usr)] fired [src] ([REF(src)]) [COORD(T)] at [A] ([REF(A)]) [COORD(A)] (chempuff: [D.reagents.log_list()])")
var/wait_step = max(round(2+ spray_delay * INVERSE(range)), 2)
last_spray = world.time
INVOKE_ASYNC(src, .proc/do_spray, A, wait_step, D, range, puff_reagent_left)
From fe4f184792883a81f4e8de3bb10399adcb8ec13d Mon Sep 17 00:00:00 2001
From: Xantholne
Date: Mon, 4 Jan 2021 03:50:43 -0700
Subject: [PATCH 03/22] good night disky
---
code/game/objects/structures/beds_chairs/bed.dm | 10 ++++++++++
.../antagonists/nukeop/equipment/nuclearbomb.dm | 12 ++++++++++++
2 files changed, 22 insertions(+)
diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm
index 5f01a27825..2a703ad675 100644
--- a/code/game/objects/structures/beds_chairs/bed.dm
+++ b/code/game/objects/structures/beds_chairs/bed.dm
@@ -40,6 +40,16 @@
if(istype(W, /obj/item/wrench) && !(flags_1&NODECONSTRUCT_1))
W.play_tool_sound(src)
deconstruct(TRUE)
+ else if(istype(W, /obj/item/bedsheet))
+ if(user.transferItemToLoc(W, drop_location()))
+ to_chat(user, "You make \the [src] with [W].")
+ W.pixel_x = 0
+ W.pixel_y = 0
+ else if(istype(W, /obj/item/disk/nuclear))
+ if(user.transferItemToLoc(W, drop_location()))
+ to_chat(user, "You tuck little disky into bed. Good night disky.")
+ W.pixel_x = 6 //make sure they reach the pillow
+ W.pixel_y = -6
else
return ..()
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index a18906b70b..3991a0a01c 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -634,7 +634,19 @@ This is here to make the tiles around the station mininuke change when it's arme
STOP_PROCESSING(SSobj, src)
CRASH("A fake nuke disk tried to call process(). Who the fuck and how the fuck")
var/turf/newturf = get_turf(src)
+
if(newturf && lastlocation == newturf)
+
+ // How comfy is disky?
+ var/disk_comfort_level = 0
+
+ // Checking for items that make disky comfy
+ for(var/obj/comfort_item in loc)
+ if(istype(comfort_item, /obj/item/bedsheet) || istype(comfort_item, /obj/structure/bed))
+ disk_comfort_level++
+
+ if(disk_comfort_level >= 2) //Sleep tight, disky.
+ return
if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.0001))
var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control
if(istype(loneop) && loneop.occurrences < loneop.max_occurrences)
From 18a336cec5fc83c6b9d6488344659e1bfee24de2 Mon Sep 17 00:00:00 2001
From: Xantholne
Date: Tue, 5 Jan 2021 02:47:21 -0700
Subject: [PATCH 04/22] Adds bed tucking element
---
code/datums/elements/bed_tucking.dm | 60 +++++++++++++++++++
code/game/objects/items/devices/paicard.dm | 1 +
code/game/objects/items/plushes.dm | 1 +
code/game/objects/structures/bedsheet_bin.dm | 4 ++
.../nukeop/equipment/nuclearbomb.dm | 4 +-
tgstation.dme | 1 +
6 files changed, 70 insertions(+), 1 deletion(-)
create mode 100644 code/datums/elements/bed_tucking.dm
diff --git a/code/datums/elements/bed_tucking.dm b/code/datums/elements/bed_tucking.dm
new file mode 100644
index 0000000000..602c93fab3
--- /dev/null
+++ b/code/datums/elements/bed_tucking.dm
@@ -0,0 +1,60 @@
+/// Tucking element, for things that can be tucked into bed.
+/datum/element/bed_tuckable
+ element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
+ id_arg_index = 2
+ /// our pixel_x offset - how much the item moves x when in bed (+x is closer to the pillow)
+ var/x_offset = 0
+ /// our pixel_y offset - how much the item move y when in bed (-y is closer to the middle)
+ var/y_offset = 0
+ /// our rotation degree - how much the item turns when in bed (+degrees turns it more parallel)
+ var/rotation_degree = 0
+
+/datum/element/bed_tuckable/Attach(obj/target, x = 0, y = 0, rotation = 0)
+ . = ..()
+ if(!isitem(target))
+ return ELEMENT_INCOMPATIBLE
+
+ x_offset = x
+ y_offset = y
+ rotation_degree = rotation
+ RegisterSignal(target, COMSIG_ITEM_ATTACK_OBJ, .proc/tuck_into_bed)
+
+/datum/element/bed_tuckable/Detach(obj/target)
+ . = ..()
+ UnregisterSignal(target, list(COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_PICKUP))
+
+/**
+ * Tuck our object into bed.
+ *
+ * tucked - the object being tucked
+ * target_bed - the bed we're tucking them into
+ * tucker - the guy doing the tucking
+ */
+/datum/element/bed_tuckable/proc/tuck_into_bed(obj/item/tucked, obj/structure/bed/target_bed, mob/living/tucker)
+
+
+ if(!istype(target_bed))
+ return
+
+ if(!tucker.transferItemToLoc(tucked, target_bed.drop_location()))
+ return
+
+ to_chat(tucker, "You lay [tucked] out on [target_bed].")
+ tucked.pixel_x = x_offset
+ tucked.pixel_y = y_offset
+ if(rotation_degree)
+ tucked.transform = turn(tucked.transform, rotation_degree)
+ RegisterSignal(tucked, COMSIG_ITEM_PICKUP, .proc/untuck)
+
+ return COMPONENT_NO_AFTERATTACK
+
+/**
+ * If we rotate our object, then we need to un-rotate it when it's picked up
+ *
+ * tucked - the object that is tucked
+ */
+/datum/element/bed_tuckable/proc/untuck(obj/item/tucked)
+
+
+ tucked.transform = turn(tucked.transform, -rotation_degree)
+ UnregisterSignal(tucked, COMSIG_ITEM_PICKUP)
\ No newline at end of file
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 7450cb937c..9a722feb6a 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -18,6 +18,7 @@
/obj/item/paicard/Initialize()
SSpai.pai_card_list += src
add_overlay("pai-off")
+ AddElement(/datum/element/bed_tuckable, 6, -5, 90)
return ..()
/obj/item/paicard/Destroy()
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 3588b7be63..d1174cded7 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -48,6 +48,7 @@
/obj/item/toy/plush/Initialize(mapload, set_snowflake_id)
. = ..()
AddComponent(/datum/component/squeak, squeak_override)
+ AddElement(/datum/element/bed_tuckable, 6, -5, 90)
//have we decided if Pinocchio goes in the blue or pink aisle yet?
if(gender == NEUTER)
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index e718bce620..279f581b4d 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -22,6 +22,10 @@ LINEN BINS
dog_fashion = /datum/dog_fashion/head/ghost
var/list/dream_messages = list("white")
+/obj/item/bedsheet/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/bed_tuckable, 0, 0, 0)
+
/obj/item/bedsheet/attack(mob/living/M, mob/user)
if(!attempt_initiate_surgery(src, M, user))
..()
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 3991a0a01c..bc4727ab9f 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -620,6 +620,8 @@ This is here to make the tiles around the station mininuke change when it's arme
/obj/item/disk/nuclear/Initialize()
. = ..()
+ AddElement(/datum/element/bed_tuckable, 6, -6, 0)
+
if(!fake)
GLOB.poi_list |= src
last_disk_move = world.time
@@ -646,7 +648,7 @@ This is here to make the tiles around the station mininuke change when it's arme
disk_comfort_level++
if(disk_comfort_level >= 2) //Sleep tight, disky.
- return
+ visible_message("[src] sleeps soundly. Sleep tight, disky.")
if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.0001))
var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control
if(istype(loneop) && loneop.occurrences < loneop.max_occurrences)
diff --git a/tgstation.dme b/tgstation.dme
index 71abfdea8e..f816784c21 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -586,6 +586,7 @@
#include "code\datums\elements\_element.dm"
#include "code\datums\elements\art.dm"
#include "code\datums\elements\beauty.dm"
+#include "code\datums\elements\bed_tucking.dm"
#include "code\datums\elements\bsa_blocker.dm"
#include "code\datums\elements\cleaning.dm"
#include "code\datums\elements\decal.dm"
From 108eace16ed69c880e58748e48d282adae447a8b Mon Sep 17 00:00:00 2001
From: DeltaFire
Date: Fri, 8 Jan 2021 02:37:39 +0100
Subject: [PATCH 05/22] fix
---
code/game/objects/obj_defense.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 3de28b38e8..73a21e4a25 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -109,7 +109,7 @@
return
user.do_attack_animation(src)
. = take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration)
- user.DelayNextAction()
+ user.DelayNextAction(CLICK_CD_MELEE)
/obj/attack_alien(mob/living/carbon/alien/humanoid/user)
if(attack_generic(user, 60, BRUTE, "melee", 0))
From 0d781aa71ec04fbb233e9de317938f4cfa5660d4 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 8 Jan 2021 01:17:56 -0700
Subject: [PATCH 06/22] Update chem_dispenser.dm
---
code/modules/reagents/chemistry/machinery/chem_dispenser.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index dda5689273..d1c18f0510 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -283,7 +283,7 @@
if(!LAZYLEN(chemicals_to_dispense))
return
var/list/logstring = list()
- var/earlyabort = TRUE
+ var/earlyabort = FALSE
for(var/key in chemicals_to_dispense)
var/reagent = GLOB.name2reagent[translate_legacy_chem_id(key)]
var/dispense_amount = chemicals_to_dispense[key]
From 10228378275cdb41fca543c570679cea6c08cf44 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 8 Jan 2021 01:29:20 -0700
Subject: [PATCH 07/22] Update misc.dm
---
code/game/objects/effects/decals/cleanable/misc.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm
index 0f7d7c185d..bb566f4d87 100644
--- a/code/game/objects/effects/decals/cleanable/misc.dm
+++ b/code/game/objects/effects/decals/cleanable/misc.dm
@@ -271,7 +271,7 @@
icon = 'icons/effects/atmospherics.dmi'
gender = NEUTER
mergeable_decal = TRUE
- persistent = TRUE
+ persistent = FALSE
/obj/effect/decal/cleanable/glitter/pink
name = "pink glitter"
From 56a2892fd3049f3b220dbc188581519b971d5169 Mon Sep 17 00:00:00 2001
From: DeltaFire
Date: Fri, 8 Jan 2021 23:48:32 +0100
Subject: [PATCH 08/22] sigh
---
code/modules/mob/living/simple_animal/simple_animal.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index e9b97b3597..5fa6a0c22d 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -354,7 +354,7 @@
/mob/living/simple_animal/proc/drop_loot()
if(loot.len)
for(var/i in loot)
- new i(loc, dir = src.dir)
+ new i(loc)
/mob/living/simple_animal/death(gibbed)
movement_type &= ~FLYING
From 4f3df626c65e6ea250911798356f5983a42b681d Mon Sep 17 00:00:00 2001
From: DeltaFire
Date: Sat, 9 Jan 2021 00:09:17 +0100
Subject: [PATCH 09/22] no cell no problem
---
code/game/objects/items/robot/robot_parts.dm | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index e4d1dd8516..3ee69f6a86 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -304,9 +304,10 @@
O.job = "Cyborg"
- O.cell = chest.cell
- chest.cell.forceMove(O)
- chest.cell = null
+ if(chest.cell)
+ O.cell = chest.cell
+ chest.cell.forceMove(O)
+ chest.cell = null
W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
if(O.mmi) //we delete the mmi created by robot/New()
qdel(O.mmi)
@@ -346,10 +347,10 @@
O.lawupdate = FALSE
O.make_laws()
-
- O.cell = chest.cell
- chest.cell.forceMove(O)
- chest.cell = null
+ if(chest.cell)
+ O.cell = chest.cell
+ chest.cell.forceMove(O)
+ chest.cell = null
O.locked = panel_locked
O.job = "Cyborg"
forceMove(O)
From 23c5f1744dd308d1a18bd9709161d2a7422a2e95 Mon Sep 17 00:00:00 2001
From: DeltaFire
Date: Sat, 9 Jan 2021 00:12:10 +0100
Subject: [PATCH 10/22] actually
---
code/game/objects/items/robot/robot_parts.dm | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 3ee69f6a86..86468af355 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -304,10 +304,9 @@
O.job = "Cyborg"
- if(chest.cell)
- O.cell = chest.cell
- chest.cell.forceMove(O)
- chest.cell = null
+ O.cell = chest.cell
+ chest.cell.forceMove(O)
+ chest.cell = null
W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
if(O.mmi) //we delete the mmi created by robot/New()
qdel(O.mmi)
@@ -327,6 +326,9 @@
else if(istype(W, /obj/item/borg/upgrade/ai))
var/obj/item/borg/upgrade/ai/M = W
if(check_completion())
+ if(!chest.cell)
+ to_chat(user, "The endoskeleton still needs a power cell!")
+ return
if(!isturf(loc))
to_chat(user, "You cannot install[M], the frame has to be standing on the ground to be perfectly precise!")
return
@@ -347,10 +349,9 @@
O.lawupdate = FALSE
O.make_laws()
- if(chest.cell)
- O.cell = chest.cell
- chest.cell.forceMove(O)
- chest.cell = null
+ O.cell = chest.cell
+ chest.cell.forceMove(O)
+ chest.cell = null
O.locked = panel_locked
O.job = "Cyborg"
forceMove(O)
From 9cfd3c073ecbbd814b08385d2c8183198f2575da Mon Sep 17 00:00:00 2001
From: DeltaFire
Date: Sat, 9 Jan 2021 00:33:20 +0100
Subject: [PATCH 11/22] smol fix
---
code/game/gamemodes/eldritch_cult/eldritch_cult.dm | 1 -
code/modules/antagonists/eldritch_cult/eldritch_antag.dm | 3 ++-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm
index 20a129a5a3..a3e3c54dce 100644
--- a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm
+++ b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm
@@ -41,7 +41,6 @@
break
var/datum/mind/cultie = antag_pick(antag_candidates)
antag_candidates -= cultie
- cultie.special_role = ROLE_HERETIC
cultie.restricted_roles = restricted_jobs
culties += cultie
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
index d54f008108..ea226a3cb6 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
@@ -31,6 +31,7 @@
/datum/antagonist/heretic/on_gain()
var/mob/living/current = owner.current
owner.teach_crafting_recipe(/datum/crafting_recipe/heretic/codex)
+ owner.special_role = ROLE_HERETIC
if(ishuman(current))
forge_primary_objectives()
gain_knowledge(/datum/eldritch_knowledge/spell/basic)
@@ -49,7 +50,7 @@
for(var/X in researched_knowledge)
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
EK.on_lose(owner.current)
-
+ owner.special_role = null
if(!silent)
to_chat(owner.current, "Your mind begins to flare as the otherwordly knowledge escapes your grasp!")
owner.current.log_message("has renounced the cult of the old ones!", LOG_ATTACK, color="#960000")
From 23dfce7d5b88d81ec8ac606c98c2a16311c4db5b Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Fri, 8 Jan 2021 19:09:39 -0600
Subject: [PATCH 12/22] Automatic changelog generation for PR #14005 [ci skip]
---
html/changelogs/AutoChangeLog-pr-14005.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-14005.yml
diff --git a/html/changelogs/AutoChangeLog-pr-14005.yml b/html/changelogs/AutoChangeLog-pr-14005.yml
new file mode 100644
index 0000000000..253f4e137a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14005.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Loot items mobs drop are no longer always failing to initialize."
From b52e8bf4476d7f98999b0ed1819b68e5a3b19bef Mon Sep 17 00:00:00 2001
From: TheSpaghetti <37235090+TheSpaghetti@users.noreply.github.com>
Date: Sat, 9 Jan 2021 00:18:15 -0500
Subject: [PATCH 13/22] double punctuation bad
no
---
code/modules/food_and_drinks/food/snacks_bread.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm
index 3b133d8675..f30d955b00 100644
--- a/code/modules/food_and_drinks/food/snacks_bread.dm
+++ b/code/modules/food_and_drinks/food/snacks_bread.dm
@@ -237,7 +237,7 @@
/obj/item/reagent_containers/food/snacks/store/bread/tumor_bread
name = "dead tumor bread"
- desc = "It's still within its expiration date, right?."
+ desc = "It's still within its expiration date, right?"
icon_state = "tumorbread"
slice_path = /obj/item/reagent_containers/food/snacks/breadslice/tumor_bread
list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/toxin = 10)
From 04d60c85d9cd03b479a1ab3d0e4b013a27c1c5d5 Mon Sep 17 00:00:00 2001
From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com>
Date: Sat, 9 Jan 2021 03:06:48 -0800
Subject: [PATCH 14/22] a
---
.../research/designs/medical_designs.dm | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 66ae54ae9c..1fc61c9bed 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -637,20 +637,20 @@
name = "Cybernetic Liver"
desc = "A cybernetic liver"
id = "cybernetic_liver"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
build_path = /obj/item/organ/liver/cybernetic
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cybernetic_heart
name = "Cybernetic Heart"
desc = "A cybernetic heart"
id = "cybernetic_heart"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
build_path = /obj/item/organ/heart/cybernetic
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cybernetic_heart_u
@@ -668,40 +668,40 @@
name = "Upgraded Cybernetic Liver"
desc = "An upgraded cybernetic liver"
id = "cybernetic_liver_u"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
build_path = /obj/item/organ/liver/cybernetic/upgraded
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cybernetic_lungs
name = "Cybernetic Lungs"
desc = "A pair of cybernetic lungs."
id = "cybernetic_lungs"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
build_path = /obj/item/organ/lungs/cybernetic
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cybernetic_lungs_u
name = "Upgraded Cybernetic Lungs"
desc = "A pair of upgraded cybernetic lungs."
id = "cybernetic_lungs_u"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500)
build_path = /obj/item/organ/lungs/cybernetic/upgraded
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cybernetic_tongue
name = "Cybernetic tongue"
desc = "A fancy cybernetic tongue."
id = "cybernetic_tongue"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
build_path = /obj/item/organ/tongue/cybernetic
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cybernetic_ears
@@ -925,88 +925,88 @@
name = "Surplus prosthetic left arm"
desc = "Basic outdated and fragile prosthetic left arm."
id = "basic_l_arm"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
construction_time = 20
build_path = /obj/item/bodypart/l_arm/robot/surplus
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/basic_r_arm
name = "Surplus prosthetic right arm"
desc = "Basic outdated and fragile prosthetic left arm."
id = "basic_r_arm"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
construction_time = 20
build_path = /obj/item/bodypart/r_arm/robot/surplus
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/basic_l_leg
name = "Surplus prosthetic left leg"
desc = "Basic outdated and fragile prosthetic left leg."
id = "basic_l_leg"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
construction_time = 20
build_path = /obj/item/bodypart/l_leg/robot/surplus
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/basic_r_leg
name = "Surplus prosthetic right leg"
desc = "Basic outdated and fragile prosthetic right leg."
id = "basic_r_leg"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
construction_time = 20
build_path = /obj/item/bodypart/r_leg/robot/surplus
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/adv_r_leg
name = "Advanced prosthetic right leg"
desc = "A renforced prosthetic right leg."
id = "adv_r_leg"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
construction_time = 40
build_path = /obj/item/bodypart/r_leg/robot/surplus_upgraded
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/adv_l_leg
name = "Advanced prosthetic left leg"
desc = "A renforced prosthetic left leg."
id = "adv_l_leg"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
construction_time = 40
build_path = /obj/item/bodypart/l_leg/robot/surplus_upgraded
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/adv_l_arm
name = "Advanced prosthetic left arm"
desc = "A renforced prosthetic left arm."
id = "adv_l_arm"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
construction_time = 40
build_path = /obj/item/bodypart/l_arm/robot/surplus_upgraded
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/adv_r_arm
name = "Advanced prosthetic right arm"
desc = "A renforced prosthetic right arm."
id = "adv_r_arm"
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
construction_time = 40
build_path = /obj/item/bodypart/r_arm/robot/surplus_upgraded
- category = list("Medical Designs")
+ category = list("Misc","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
From d459f6db91093ef9c456241c7818db025d39b97f Mon Sep 17 00:00:00 2001
From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
Date: Sat, 9 Jan 2021 21:30:18 +0000
Subject: [PATCH 15/22] Update looc.dm
---
code/modules/client/verbs/looc.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/modules/client/verbs/looc.dm b/code/modules/client/verbs/looc.dm
index 67563b99e5..e6e62280e2 100644
--- a/code/modules/client/verbs/looc.dm
+++ b/code/modules/client/verbs/looc.dm
@@ -17,7 +17,7 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC")
if(!msg)
return
- if(!(prefs.toggles & CHAT_OOC))
+ if(!(prefs.chat_toggles & CHAT_OOC))
to_chat(src, " You have OOC muted.")
return
if(jobban_isbanned(mob, "OOC"))
@@ -63,14 +63,14 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC")
if (isobserver(M))
continue //Also handled later.
- if(C.prefs.toggles & CHAT_OOC)
+ if(C.prefs.chat_toggles & CHAT_OOC)
if(GLOB.LOOC_COLOR)
to_chat(C, "LOOC: [src.mob.name]: [msg]")
else
to_chat(C, "LOOC: [src.mob.name]: [msg]")
for(var/client/C in GLOB.admins)
- if(C.prefs.toggles & CHAT_OOC)
+ if(C.prefs.chat_toggles & CHAT_OOC)
var/prefix = "(R)LOOC"
if (C.mob in heard)
prefix = "LOOC"
From 562dbd5802652557eff04b1ee6235da30c540cf9 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:34:08 -0600
Subject: [PATCH 16/22] Automatic changelog generation for PR #14016 [ci skip]
---
html/changelogs/AutoChangeLog-pr-14016.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-14016.yml
diff --git a/html/changelogs/AutoChangeLog-pr-14016.yml b/html/changelogs/AutoChangeLog-pr-14016.yml
new file mode 100644
index 0000000000..1aab587190
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14016.yml
@@ -0,0 +1,4 @@
+author: "timothyteakettle"
+delete-after: True
+changes:
+ - bugfix: "disabling adminhelp noises no longer disables looc"
From b0f0d52bd9d65f8f1e33c4670bb6e2f4cd6cb659 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:36:31 -0600
Subject: [PATCH 17/22] Automatic changelog generation for PR #14010 [ci skip]
---
html/changelogs/AutoChangeLog-pr-14010.yml | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-14010.yml
diff --git a/html/changelogs/AutoChangeLog-pr-14010.yml b/html/changelogs/AutoChangeLog-pr-14010.yml
new file mode 100644
index 0000000000..643f28dc99
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14010.yml
@@ -0,0 +1,5 @@
+author: "shellspeed1"
+delete-after: True
+changes:
+ - rscadd: "The exofab can now print prosthetic limbs"
+ - bugfix: "The exofab was missing access to multiple cybernetic organs. This has now been rectified."
From 1d2928ad521a0f23f4054154455c071f07717c5b Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:37:21 -0600
Subject: [PATCH 18/22] Automatic changelog generation for PR #14008 [ci skip]
---
html/changelogs/AutoChangeLog-pr-14008.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-14008.yml
diff --git a/html/changelogs/AutoChangeLog-pr-14008.yml b/html/changelogs/AutoChangeLog-pr-14008.yml
new file mode 100644
index 0000000000..836eefd99a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14008.yml
@@ -0,0 +1,4 @@
+author: "TheSpaghetti"
+delete-after: True
+changes:
+ - bugfix: "no more tumor bread double punctuation"
From b4537999187515d8287bb6f5b481d4003dcb41cf Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:37:38 -0600
Subject: [PATCH 19/22] Automatic changelog generation for PR #14007 [ci skip]
---
html/changelogs/AutoChangeLog-pr-14007.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-14007.yml
diff --git a/html/changelogs/AutoChangeLog-pr-14007.yml b/html/changelogs/AutoChangeLog-pr-14007.yml
new file mode 100644
index 0000000000..498aa6b807
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14007.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Antagging / Deantagging Heretics now properly sets their special role."
From 4d64026a88c57e219516358bc81297ff14a557a6 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:37:48 -0600
Subject: [PATCH 20/22] Automatic changelog generation for PR #14006 [ci skip]
---
html/changelogs/AutoChangeLog-pr-14006.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-14006.yml
diff --git a/html/changelogs/AutoChangeLog-pr-14006.yml b/html/changelogs/AutoChangeLog-pr-14006.yml
new file mode 100644
index 0000000000..519ad32752
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14006.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Cyborg B.o.r.i.s. installation now checks for if the chest has a cell, just like how it does with MMIs."
From 185a57cd5d518204ad2a972d9d2cf70f81f75a1e Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:38:10 -0600
Subject: [PATCH 21/22] Automatic changelog generation for PR #13995 [ci skip]
---
html/changelogs/AutoChangeLog-pr-13995.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-13995.yml
diff --git a/html/changelogs/AutoChangeLog-pr-13995.yml b/html/changelogs/AutoChangeLog-pr-13995.yml
new file mode 100644
index 0000000000..e58ee3103c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13995.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Attacking some certain objects no longer has no clickdelay."
From b50c23a82a4949d69eb1e14fae09ca4018557ff6 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 9 Jan 2021 16:39:08 -0600
Subject: [PATCH 22/22] Automatic changelog generation for PR #13965 [ci skip]
---
html/changelogs/AutoChangeLog-pr-13965.yml | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-13965.yml
diff --git a/html/changelogs/AutoChangeLog-pr-13965.yml b/html/changelogs/AutoChangeLog-pr-13965.yml
new file mode 100644
index 0000000000..69f5a90122
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13965.yml
@@ -0,0 +1,7 @@
+author: "Xantholne"
+delete-after: True
+changes:
+ - rscadd: "You can now tuck disky into bed"
+ - rscadd: "You can now make beds by applying a bed sheet to them"
+ - rscadd: "You can now tuck in pai cards into bed"
+ - rscadd: "Added bed tucking element, can be added to any held object to allow tucking into beds"