diff --git a/_maps/RandomRuins/LavaRuins/miningbase.dmm b/_maps/RandomRuins/LavaRuins/miningbase.dmm
index 33d38be9ae..636d5fb3fd 100644
--- a/_maps/RandomRuins/LavaRuins/miningbase.dmm
+++ b/_maps/RandomRuins/LavaRuins/miningbase.dmm
@@ -2533,20 +2533,20 @@ ab
ab
ab
ab
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
ak
ak
ak
ak
-ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
+ab
"}
(2,1,1) = {"
aP
@@ -2565,9 +2565,9 @@ ab
ab
ab
ab
-ac
-ac
-ac
+ab
+ab
+ab
ak
ak
ak
@@ -2576,9 +2576,9 @@ ak
ak
ak
ak
-ac
-ac
-ac
+ab
+ab
+ab
"}
(3,1,1) = {"
aP
@@ -2597,8 +2597,8 @@ ab
ab
ab
ab
-ac
-ac
+ab
+ab
ak
ak
ak
@@ -2609,8 +2609,8 @@ ak
ak
ak
ak
-ac
-ac
+ab
+ab
"}
(4,1,1) = {"
aP
@@ -2629,8 +2629,8 @@ ab
ab
ab
ab
-ac
-ac
+ab
+ab
ak
ak
ak
@@ -2661,7 +2661,7 @@ ab
ab
ab
ab
-ac
+ab
ak
ak
ak
@@ -2693,7 +2693,7 @@ ab
ab
ab
ab
-ac
+ab
ak
ak
ak
@@ -2725,7 +2725,7 @@ ab
ab
ab
ab
-ac
+ab
ak
ak
ak
@@ -2770,7 +2770,7 @@ ak
ak
ak
ac
-ac
+ab
"}
(9,1,1) = {"
ab
@@ -2802,7 +2802,7 @@ ak
ak
ak
ac
-ac
+ab
"}
(10,1,1) = {"
ab
@@ -2834,7 +2834,7 @@ ak
ak
ak
ac
-ac
+ab
"}
(11,1,1) = {"
ab
@@ -2866,7 +2866,7 @@ ak
ak
ac
ac
-ac
+ab
"}
(12,1,1) = {"
ab
@@ -2927,7 +2927,7 @@ et
vr
eu
ac
-ab
+ac
ab
ab
ab
@@ -3440,7 +3440,7 @@ LK
pN
bQ
ac
-ab
+ac
ab
ab
"}
@@ -3472,7 +3472,7 @@ FI
jQ
bQ
ac
-ab
+ac
ab
ab
"}
@@ -3630,8 +3630,8 @@ ac
ac
ac
ac
-ac
-ac
+ab
+ab
ab
ab
ab
@@ -3660,10 +3660,10 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
ab
ab
ab
@@ -3690,12 +3690,12 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
+ab
ab
ab
ab
@@ -3722,12 +3722,12 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
+ab
ab
ab
ab
@@ -3755,17 +3755,17 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
ab
ab
ab
"}
(40,1,1) = {"
-ac
+ab
ac
ac
ak
@@ -3788,17 +3788,17 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
ab
ab
ab
"}
(41,1,1) = {"
-ac
-ac
+ab
+ab
ac
ac
ak
@@ -3821,16 +3821,16 @@ ac
ac
ac
ac
-ac
-ac
-ac
+ab
+ab
+ab
ab
ab
ab
"}
(42,1,1) = {"
-ac
-ac
+ab
+ab
ac
ac
eM
@@ -3853,15 +3853,15 @@ ac
ac
ac
ac
-ac
-ac
-ac
+ab
+ab
+ab
ab
ab
ab
"}
(43,1,1) = {"
-ac
+ab
ac
ac
aw
@@ -3886,8 +3886,8 @@ ac
ac
ac
ac
-ac
-ac
+ab
+ab
ab
ab
ab
@@ -3919,7 +3919,7 @@ ac
ac
ac
ac
-ac
+ab
ab
ab
ab
@@ -3951,7 +3951,7 @@ ak
ac
ac
ac
-ac
+ab
ab
ab
ab
@@ -4176,7 +4176,7 @@ ak
ak
ak
ac
-ab
+ac
ab
ab
"}
@@ -4208,7 +4208,7 @@ ak
ak
ac
ac
-ab
+ac
ab
ab
"}
@@ -4240,7 +4240,7 @@ ak
ak
ak
ac
-ab
+ac
ab
ab
"}
@@ -4272,8 +4272,8 @@ ak
ak
ak
ak
-ab
-ab
+ac
+ac
ab
"}
(56,1,1) = {"
@@ -4304,8 +4304,8 @@ ak
ak
ak
ac
-ab
-ab
+ac
+ac
ab
"}
(57,1,1) = {"
@@ -4336,7 +4336,7 @@ ak
ak
ac
ac
-ab
+ac
ab
ab
"}
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index f61e0d1bf1..3d62c45c48 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -66,6 +66,7 @@
#define COMSIG_ATOM_NO_UPDATE_ICON_STATE 1
#define COMSIG_ATOM_NO_UPDATE_OVERLAYS 2
#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" //from base of atom/update_overlays(): (list/new_overlays)
+#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon" //from base of atom/update_icon(): (signalOut, did_anything)
#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable/entering, /atom)
#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
#define COMPONENT_ATOM_BLOCK_EXIT 1
diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm
index 7e385638c5..9693d46d00 100644
--- a/code/__DEFINES/logging.dm
+++ b/code/__DEFINES/logging.dm
@@ -41,7 +41,7 @@
//Individual logging panel pages
#define INDIVIDUAL_ATTACK_LOG (LOG_ATTACK)
#define INDIVIDUAL_SAY_LOG (LOG_SAY | LOG_WHISPER | LOG_DSAY)
-#define INDIVIDUAL_EMOTE_LOG (LOG_EMOTE)
+#define INDIVIDUAL_EMOTE_LOG (LOG_EMOTE | LOG_SUBTLER)
#define INDIVIDUAL_COMMS_LOG (LOG_PDA | LOG_CHAT | LOG_COMMENT | LOG_TELECOMMS)
#define INDIVIDUAL_OOC_LOG (LOG_OOC | LOG_ADMIN)
#define INDIVIDUAL_OWNERSHIP_LOG (LOG_OWNERSHIP)
diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm
index a26b9285d4..4ae30838e4 100644
--- a/code/__HELPERS/_cit_helpers.dm
+++ b/code/__HELPERS/_cit_helpers.dm
@@ -115,7 +115,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE)
var/new_flavor = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", flavor_text, MAX_FAVOR_LEN, TRUE)
if(!isnull(new_flavor))
- flavor_text = new_flavor
+ flavor_text = html_decode(new_flavor)
to_chat(src, "Your flavor text has been updated.")
//Flavor Text
@@ -126,7 +126,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE)
var/new_flavor = stripped_multiline_input(usr, "Set the temporary flavor text in your 'examine' verb. This should be used only for things pertaining to the current round!", "Short-Term Flavor Text", flavor_text_2, MAX_FAVOR_LEN, TRUE)
if(!isnull(new_flavor))
- flavor_text_2 = new_flavor
+ flavor_text_2 = html_decode(new_flavor)
to_chat(src, "Your temporary flavor text has been updated.")
/mob/proc/print_flavor_text(flavor,temp = FALSE)
diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm
index 858b8dbd06..0ed3a9cf26 100644
--- a/code/_onclick/hud/action_button.dm
+++ b/code/_onclick/hud/action_button.dm
@@ -72,6 +72,22 @@
var/hide_icon = 'icons/mob/actions.dmi'
var/hide_state = "hide"
var/show_state = "show"
+ var/mutable_appearance/hide_appearance
+ var/mutable_appearance/show_appearance
+
+/obj/screen/movable/action_button/hide_toggle/Initialize()
+ . = ..()
+ var/static/list/icon_cache = list()
+
+ var/cache_key = "[hide_icon][hide_state]"
+ hide_appearance = icon_cache[cache_key]
+ if(!hide_appearance)
+ hide_appearance = icon_cache[cache_key] = mutable_appearance(hide_icon, hide_state)
+
+ cache_key = "[hide_icon][show_state]"
+ show_appearance = icon_cache[cache_key]
+ if(!show_appearance)
+ show_appearance = icon_cache[cache_key] = mutable_appearance(hide_icon, show_state)
/obj/screen/movable/action_button/hide_toggle/Click(location,control,params)
if (!can_use(usr))
@@ -137,9 +153,12 @@
show_state = settings["toggle_show"]
update_icon()
-/obj/screen/movable/action_button/hide_toggle/update_icon()
- cut_overlays()
- add_overlay(mutable_appearance(hide_icon, hidden ? show_state : hide_state))
+/obj/screen/movable/action_button/hide_toggle/update_overlays()
+ . = ..()
+ if(hidden)
+ . += show_appearance
+ else
+ . += hide_appearance
/obj/screen/movable/action_button/MouseEntered(location,control,params)
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 15d1d3b717..f5eb8535a5 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -166,29 +166,27 @@
var/static/mutable_appearance/blocked_overlay = mutable_appearance('icons/mob/screen_gen.dmi', "blocked")
var/held_index = 0
-/obj/screen/inventory/hand/update_icon()
+/obj/screen/inventory/hand/update_overlays()
. = ..()
if(!handcuff_overlay)
var/state = (!(held_index % 2)) ? "markus" : "gabrielle"
handcuff_overlay = mutable_appearance('icons/mob/screen_gen.dmi', state)
- cut_overlay(list(handcuff_overlay, blocked_overlay, "hand_active"))
-
if(!hud?.mymob)
return
if(iscarbon(hud.mymob))
var/mob/living/carbon/C = hud.mymob
if(C.handcuffed)
- add_overlay(handcuff_overlay)
+ . += handcuff_overlay
if(held_index)
if(!C.has_hand_for_held_index(held_index))
- add_overlay(blocked_overlay)
+ . += blocked_overlay
if(held_index == hud.mymob.active_hand_index)
- add_overlay("hand_active")
+ . += "hand_active"
/obj/screen/inventory/hand/Click(location, control, params)
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index ecd34b7840..6cf01ec8ff 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -76,8 +76,8 @@
layer = ABOVE_HUD_LAYER
plane = ABOVE_HUD_PLANE
- var/atom/movable/focus = null
- var/mob/living/carbon/tk_user = null
+ var/atom/movable/focus
+ var/mob/living/carbon/tk_user
/obj/item/tk_grab/Initialize()
. = ..()
@@ -85,6 +85,8 @@
/obj/item/tk_grab/Destroy()
STOP_PROCESSING(SSfastprocess, src)
+ focus = null
+ tk_user = null
return ..()
/obj/item/tk_grab/process()
@@ -179,16 +181,14 @@
return
new /obj/effect/temp_visual/telekinesis(get_turf(focus))
-/obj/item/tk_grab/update_icon()
- cut_overlays()
- if(focus)
- var/old_layer = focus.layer
- var/old_plane = focus.plane
- focus.layer = layer+0.01
- focus.plane = ABOVE_HUD_PLANE
- add_overlay(focus) //this is kind of ick, but it's better than using icon()
- focus.layer = old_layer
- focus.plane = old_plane
+/obj/item/tk_grab/update_overlays()
+ . = ..()
+ if(!focus)
+ return
+ var/mutable_appearance/focus_overlay = new(focus)
+ focus_overlay.layer = layer + 0.01
+ focus_overlay.plane = ABOVE_HUD_PLANE
+ . += focus_overlay
/obj/item/tk_grab/suicide_act(mob/user)
user.visible_message("[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm
index f8ca1e7eae..d1bd7e7191 100644
--- a/code/controllers/subsystem/garbage.dm
+++ b/code/controllers/subsystem/garbage.dm
@@ -27,6 +27,7 @@ SUBSYSTEM_DEF(garbage)
#ifdef TESTING
var/list/reference_find_on_fail = list()
+ var/list/reference_find_on_fail_types = list()
#endif
@@ -98,9 +99,6 @@ SUBSYSTEM_DEF(garbage)
state = SS_RUNNING
break
-
-
-
/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK)
if (level == GC_QUEUE_CHECK)
delslasttick = 0
@@ -183,6 +181,11 @@ SUBSYSTEM_DEF(garbage)
var/gctime = world.time
var/refid = "\ref[D]"
+#ifdef TESTING
+ if(reference_find_on_fail_types[D.type])
+ reference_find_on_fail["\ref[D]"] = TRUE
+#endif
+
D.gc_destroyed = gctime
var/list/queue = queues[level]
if (queue[refid])
@@ -190,6 +193,21 @@ SUBSYSTEM_DEF(garbage)
queue[refid] = gctime
+#ifdef TESTING
+/datum/controller/subsystem/garbage/proc/add_type_to_findref(type)
+ if(!ispath(type))
+ return "NOT A VAILD PATH"
+ reference_find_on_fail_types |= typecacheof(type)
+
+/datum/controller/subsystem/garbage/proc/remove_type_from_findref(type)
+ if(!ispath(type))
+ return "NOT A VALID PATH"
+ reference_find_on_fail_types -= typesof(type)
+
+/datum/controller/subsystem/garbage/proc/clear_findref_types()
+ reference_find_on_fail_types = list()
+#endif
+
//this is mainly to separate things profile wise.
/datum/controller/subsystem/garbage/proc/HardDelete(datum/D)
var/time = world.timeofday
@@ -244,7 +262,7 @@ SUBSYSTEM_DEF(garbage)
#ifdef TESTING
/proc/qdel_and_find_ref_if_fail(datum/D, force = FALSE)
- SSgarbage.reference_find_on_fail[REF(D)] = TRUE
+ SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE
qdel(D, force)
#endif
@@ -309,7 +327,7 @@ SUBSYSTEM_DEF(garbage)
if (QDEL_HINT_IFFAIL_FINDREFERENCE)
SSgarbage.Queue(D)
#ifdef TESTING
- SSgarbage.reference_find_on_fail[REF(D)] = TRUE
+ SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE
#endif
else
#ifdef TESTING
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 5d960964a0..2ef9608a96 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -701,6 +701,7 @@ SUBSYSTEM_DEF(ticker)
round_end_sound = pick(\
'sound/roundend/newroundsexy.ogg',
'sound/roundend/apcdestroyed.ogg',
+ 'sound/roundend/seeyoulaterokay.ogg',
'sound/roundend/bangindonk.ogg',
'sound/roundend/leavingtg.ogg',
'sound/roundend/its_only_game.ogg',
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 742e149275..f1df2a80d8 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -32,6 +32,7 @@
/datum/action/proc/link_to(Target)
target = Target
+ RegisterSignal(Target, COMSIG_ATOM_UPDATED_ICON, .proc/OnUpdatedIcon)
/datum/action/Destroy()
if(owner)
@@ -157,6 +158,9 @@
var/mob/M = target
M.ghostize(1)
+/datum/action/proc/OnUpdatedIcon()
+ UpdateButtonIcon()
+
//Presets for item actions
/datum/action/item_action
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_LYING|AB_CHECK_CONSCIOUS
@@ -829,4 +833,4 @@
for(var/datum/action/A in M.actions)
if(istype(A, action_type))
return A
- return
+ return
diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm
index 975b52dcb9..f026c89c60 100644
--- a/code/datums/components/armor_plate.dm
+++ b/code/datums/components/armor_plate.dm
@@ -12,6 +12,8 @@
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate)
RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates)
+ if(istype(parent, /obj/mecha/working/ripley))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_mech_overlays)
if(_maxamount)
maxamount = _maxamount
@@ -75,4 +77,13 @@
/datum/component/armor_plate/proc/dropplates(datum/source, force)
if(ismecha(parent)) //items didn't drop the plates before and it causes erroneous behavior for the time being with collapsible helmets
for(var/i in 1 to amount)
- new upgrade_item(get_turf(parent))
\ No newline at end of file
+ new upgrade_item(get_turf(parent))
+
+/datum/component/armor_plate/proc/apply_mech_overlays(obj/mecha/mech, list/overlays)
+ if(amount)
+ var/overlay_string = "ripley-g"
+ if(amount >= 3)
+ overlay_string += "-full"
+ if(!mech.occupant)
+ overlay_string += "-open"
+ overlays += overlay_string
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 0b6d4e3404..a7a61802d3 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -21,7 +21,7 @@
return FALSE
- if(!(type in D.viable_mobtypes))
+ if(!D.viable_mobtypes[type])
return FALSE
return TRUE
diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index 940b61c9fe..9145a53642 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -18,7 +18,7 @@
var/stage_prob = 4
//Other
- var/list/viable_mobtypes = list() //typepaths of viable mobs
+ var/list/viable_mobtypes = list() //typecache of viable mobs
var/mob/living/carbon/affected_mob = null
var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids
var/infectivity = 65
@@ -34,6 +34,10 @@
var/process_dead = FALSE //if this ticks while the host is dead
var/copy_type = null //if this is null, copies will use the type of the instance being copied
+/datum/disease/New(make_typecache = TRUE)
+ if(make_typecache && length(viable_mobtypes))
+ viable_mobtypes = typecacheof(viable_mobtypes)
+
/datum/disease/Destroy()
. = ..()
if(affected_mob)
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 1c21fb9528..330a3494d9 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -80,7 +80,8 @@
*/
-/datum/disease/advance/New()
+/datum/disease/advance/New(make_typecache = TRUE)
+ ..()
Refresh()
/datum/disease/advance/Destroy()
diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm
index 68c3ceffea..b12b657101 100644
--- a/code/datums/diseases/advance/presets.dm
+++ b/code/datums/diseases/advance/presets.dm
@@ -2,7 +2,7 @@
/datum/disease/advance/cold
copy_type = /datum/disease/advance
-/datum/disease/advance/cold/New()
+/datum/disease/advance/cold/New(make_typecache = TRUE)
name = "Cold"
symptoms = list(new/datum/symptom/sneeze)
..()
@@ -11,7 +11,7 @@
/datum/disease/advance/flu
copy_type = /datum/disease/advance
-/datum/disease/advance/flu/New()
+/datum/disease/advance/flu/New(make_typecache = TRUE)
name = "Flu"
symptoms = list(new/datum/symptom/cough)
..()
@@ -21,7 +21,7 @@
name = "Experimental Disease"
copy_type = /datum/disease/advance
-/datum/disease/advance/random/New(max_symptoms, max_level = 8)
+/datum/disease/advance/random/New(make_typecache = TRUE, max_symptoms, max_level = 8)
if(!max_symptoms)
max_symptoms = rand(1, VIRUS_SYMPTOM_LIMIT)
var/list/datum/symptom/possible_symptoms = list()
@@ -37,6 +37,6 @@
if(chosen_symptom)
var/datum/symptom/S = new chosen_symptom
symptoms += S
- Refresh()
- name = "Sample #[rand(1,10000)]"
\ No newline at end of file
+ name = "Sample #[rand(1,10000)]"
+ ..()
\ No newline at end of file
diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm
index 160a9f98ad..5a638fcf1b 100644
--- a/code/datums/diseases/retrovirus.dm
+++ b/code/datums/diseases/retrovirus.dm
@@ -13,7 +13,7 @@
stage_prob = 2
var/restcure = 0
-/datum/disease/dna_retrovirus/New()
+/datum/disease/dna_retrovirus/New(make_typecache = TRUE)
..()
agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]"
if(prob(40))
diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm
index 8687d89b2f..06ff0c1386 100644
--- a/code/datums/elements/mob_holder.dm
+++ b/code/datums/elements/mob_holder.dm
@@ -150,7 +150,8 @@
L.forceMove(get_turf(L))
L.reset_perspective()
L.setDir(SOUTH)
- qdel(src)
+ if(!QDELETED(src))
+ qdel(src)
/obj/item/clothing/head/mob_holder/relaymove(mob/user)
return
diff --git a/code/datums/elements/update_icon_blocker.dm b/code/datums/elements/update_icon_blocker.dm
new file mode 100644
index 0000000000..c30dc9efad
--- /dev/null
+++ b/code/datums/elements/update_icon_blocker.dm
@@ -0,0 +1,10 @@
+//Prevents calling anything in update_icon() like update_icon_state() or update_overlays()
+
+/datum/element/update_icon_blocker/Attach(datum/target)
+ . = ..()
+ if(!istype(target, /atom))
+ return ELEMENT_INCOMPATIBLE
+ RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON, .proc/block_update_icon)
+
+/datum/element/update_icon_blocker/proc/block_update_icon()
+ return COMSIG_ATOM_NO_UPDATE_ICON_STATE | COMSIG_ATOM_NO_UPDATE_OVERLAYS
\ No newline at end of file
diff --git a/code/datums/elements/update_icon_updates_onmob.dm b/code/datums/elements/update_icon_updates_onmob.dm
new file mode 100644
index 0000000000..ca0e8b1641
--- /dev/null
+++ b/code/datums/elements/update_icon_updates_onmob.dm
@@ -0,0 +1,16 @@
+//update_icon() may change the onmob icons
+//Very good name, I know
+
+/datum/element/update_icon_updates_onmob/Attach(datum/target)
+ . = ..()
+ if(!istype(target, /obj/item))
+ return ELEMENT_INCOMPATIBLE
+ RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, .proc/update_onmob)
+
+/datum/element/update_icon_updates_onmob/proc/update_onmob(obj/item/target)
+ if(ismob(target.loc))
+ var/mob/M = target.loc
+ if(M.is_holding(target))
+ M.update_inv_hands()
+ else
+ M.regenerate_icons() //yeah this is shit, but we don't know which update_foo() proc to call instead so we'll call them all
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index 81ee5c3989..1464927c3a 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -243,6 +243,11 @@
description = "I have been scorched by the unforgiving rays of the sun.\n"
mood_change = -6
timeout = 15 MINUTES
+
+/datum/mood_event/bloodsucker_disgust
+ description = "Something I recently ate was horrifyingly disgusting.\n"
+ mood_change = -5
+ timeout = 5 MINUTES
/datum/mood_event/nanite_sadness
description = "+++++++HAPPINESS SUPPRESSION+++++++\n"
diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm
index be2dce91a2..7a0203be7b 100644
--- a/code/game/area/Space_Station_13_areas.dm
+++ b/code/game/area/Space_Station_13_areas.dm
@@ -849,6 +849,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Medbay Treatment Center"
icon_state = "exam_room"
+/area/medical/paramedic
+ name = "Paramedic Station"
+ icon_state = "paramedic"
+
//Security
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index d4407dea9e..9da1b5efbb 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -333,9 +333,11 @@
/atom/proc/update_icon()
// I expect we're going to need more return flags and options in this proc
var/signalOut = SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON)
+ . = FALSE
if(!(signalOut & COMSIG_ATOM_NO_UPDATE_ICON_STATE))
update_icon_state()
+ . = TRUE
if(!(signalOut & COMSIG_ATOM_NO_UPDATE_OVERLAYS))
var/list/new_overlays = update_overlays()
@@ -345,6 +347,9 @@
if(length(new_overlays))
managed_overlays = new_overlays
add_overlay(new_overlays)
+ . = TRUE
+
+ SEND_SIGNAL(src, COMSIG_ATOM_UPDATED_ICON, signalOut, .)
/// Updates the icon state of the atom
/atom/proc/update_icon_state()
diff --git a/code/game/gamemodes/clown_ops/bananium_bomb.dm b/code/game/gamemodes/clown_ops/bananium_bomb.dm
index b63d5b2e79..baecd6a1de 100644
--- a/code/game/gamemodes/clown_ops/bananium_bomb.dm
+++ b/code/game/gamemodes/clown_ops/bananium_bomb.dm
@@ -4,23 +4,17 @@
icon = 'icons/obj/machines/nuke.dmi'
icon_state = "bananiumbomb_base"
-/obj/machinery/nuclearbomb/syndicate/bananium/update_icon()
- if(deconstruction_state == NUKESTATE_INTACT)
- switch(get_nuke_state())
- if(NUKE_OFF_LOCKED, NUKE_OFF_UNLOCKED)
- icon_state = "bananiumbomb_base"
- update_icon_interior()
- update_icon_lights()
- if(NUKE_ON_TIMING)
- cut_overlays()
- icon_state = "bananiumbomb_timing"
- if(NUKE_ON_EXPLODING)
- cut_overlays()
- icon_state = "bananiumbomb_exploding"
- else
+/obj/machinery/nuclearbomb/syndicate/bananium/update_icon_state()
+ if(deconstruction_state != NUKESTATE_INTACT)
icon_state = "bananiumbomb_base"
- update_icon_interior()
- update_icon_lights()
+ return
+ switch(get_nuke_state())
+ if(NUKE_OFF_LOCKED, NUKE_OFF_UNLOCKED)
+ icon_state = "bananiumbomb_base"
+ if(NUKE_ON_TIMING)
+ icon_state = "bananiumbomb_timing"
+ if(NUKE_ON_EXPLODING)
+ icon_state = "bananiumbomb_exploding"
/obj/machinery/nuclearbomb/syndicate/bananium/get_cinematic_type(off_station)
switch(off_station)
diff --git a/code/game/gamemodes/gangs/gang_items.dm b/code/game/gamemodes/gangs/gang_items.dm
index 4dba8dae93..d3ccb5a355 100644
--- a/code/game/gamemodes/gangs/gang_items.dm
+++ b/code/game/gamemodes/gangs/gang_items.dm
@@ -220,11 +220,11 @@ datum/gang_item/clothing/shades //Addition: Why not have cool shades on a gang m
cost = 15
item_path = /obj/item/ammo_box/magazine/sniper_rounds
-/datum/gang_item/weapon/ammo/sleeper_ammo
+/*/datum/gang_item/weapon/ammo/sleeper_ammo //no. absolutely no.
name = "Illicit Soporific Cartridges"
id = "sniper_ammo"
- cost = 15
- item_path = /obj/item/ammo_box/magazine/sniper_rounds/soporific
+ cost = 15 //who the fuck thought a ONE-HIT K.O. for 15 gbp IN AN ENVIRONMENT WHERE WE'RE GETTING RID OF HARDSTUNS is a GOOD IDEA
+ item_path = /obj/item/ammo_box/magazine/sniper_rounds/soporific*/
/datum/gang_item/weapon/machinegun
name = "Mounted Machine Gun"
diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm
index 84eda82ef5..e9968dadd4 100644
--- a/code/game/machinery/Beacon.dm
+++ b/code/game/machinery/Beacon.dm
@@ -28,7 +28,7 @@
update_icon()
// update the icon_state
-/obj/machinery/bluespace_beacon/update_icon()
+/obj/machinery/bluespace_beacon/update_icon_state()
var/state="floor_beacon"
if(invisibility)
diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm
index 20efee9420..88dc0ebb56 100644
--- a/code/game/machinery/PDApainter.dm
+++ b/code/game/machinery/PDApainter.dm
@@ -9,16 +9,12 @@
var/list/colorlist = list()
-/obj/machinery/pdapainter/update_icon()
- cut_overlays()
+/obj/machinery/pdapainter/update_icon_state()
if(stat & BROKEN)
icon_state = "[initial(icon_state)]-broken"
return
- if(storedpda)
- add_overlay("[initial(icon_state)]-closed")
-
if(powered())
icon_state = initial(icon_state)
else
@@ -26,6 +22,15 @@
return
+/obj/machinery/pdapainter/update_overlays()
+ . = ..()
+
+ if(stat & BROKEN)
+ return
+
+ if(storedpda)
+ . += "[initial(icon_state)]-closed"
+
/obj/machinery/pdapainter/Initialize()
. = ..()
var/list/blocked = list(
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 19a20f0cfa..cdae0ea713 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -71,7 +71,7 @@
reagents.maximum_volume = (500*E)
-/obj/machinery/sleeper/update_icon()
+/obj/machinery/sleeper/update_icon_state()
icon_state = initial(icon_state)
if(state_open)
icon_state += "-open"
diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm
index 69dbdcd50c..557adf488b 100644
--- a/code/game/machinery/airlock_control.dm
+++ b/code/game/machinery/airlock_control.dm
@@ -113,7 +113,7 @@
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR
master_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER
-/obj/machinery/airlock_sensor/update_icon()
+/obj/machinery/airlock_sensor/update_icon_state()
if(on)
if(alert)
icon_state = "airlock_sensor_alert"
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 84e5910731..7eef48ebdd 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -32,22 +32,22 @@ GLOBAL_LIST_EMPTY(announcement_systems)
radio = new /obj/item/radio/headset/silicon/ai(src)
update_icon()
-/obj/machinery/announcement_system/update_icon()
+/obj/machinery/announcement_system/update_icon_state()
if(is_operational())
icon_state = (panel_open ? "AAS_On_Open" : "AAS_On")
else
icon_state = (panel_open ? "AAS_Off_Open" : "AAS_Off")
-
- cut_overlays()
+/obj/machinery/announcement_system/update_overlays()
+ . =..()
if(arrivalToggle)
- add_overlay(greenlight)
+ . += greenlight
if(newheadToggle)
- add_overlay(pinklight)
+ . += pinklight
if(stat & BROKEN)
- add_overlay(errorlight)
+ . += errorlight
/obj/machinery/announcement_system/Destroy()
QDEL_NULL(radio)
diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm
index b41910f010..b95e3149ea 100644
--- a/code/game/machinery/aug_manipulator.dm
+++ b/code/game/machinery/aug_manipulator.dm
@@ -19,21 +19,21 @@
initial_icon_state = initial(icon_state)
return ..()
-/obj/machinery/aug_manipulator/update_icon()
- cut_overlays()
-
+/obj/machinery/aug_manipulator/update_icon_state()
if(stat & BROKEN)
icon_state = "[initial_icon_state]-broken"
return
- if(storedpart)
- add_overlay("[initial_icon_state]-closed")
-
if(powered())
icon_state = initial_icon_state
else
icon_state = "[initial_icon_state]-off"
+/obj/machinery/aug_manipulator/update_overlays()
+ . = ..()
+ if(storedpart)
+ . += "[initial_icon_state]-closed"
+
/obj/machinery/aug_manipulator/Destroy()
QDEL_NULL(storedpart)
return ..()
diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm
index 19632711fc..31fac02d83 100644
--- a/code/game/machinery/bloodbankgen.dm
+++ b/code/game/machinery/bloodbankgen.dm
@@ -54,16 +54,17 @@
efficiency = E
productivity = P
-/obj/machinery/bloodbankgen/update_icon()
- cut_overlays()
+/obj/machinery/bloodbankgen/update_icon_state()
if(is_operational())
- icon_state = "bloodbank-on"
+ icon_state = "bloodbank-[is_operational() ? "on" : "off"]"
+/obj/machinery/bloodbankgen/update_overlays()
+ . = ..()
if(panel_open)
- add_overlay("bloodbank-panel")
+ . += "bloodbank-panel"
- if(src.bag)
- add_overlay("bloodbag-input")
+ if(bag)
+ . += "bloodbag-input"
if(bag.reagents.total_volume)
var/mutable_appearance/filling_overlay = mutable_appearance(icon, "input-reagent")
@@ -85,10 +86,10 @@
filling_overlay.icon_state = "input-reagent100"
filling_overlay.color = list(mix_color_from_reagents(bag.reagents.reagent_list))
- add_overlay(filling_overlay)
+ . += filling_overlay
- if(src.outbag)
- add_overlay("bloodbag-output")
+ if(outbag)
+ . += "bloodbag-output"
if(outbag.reagents.total_volume)
var/mutable_appearance/filling_overlay = mutable_appearance(icon, "output-reagent")
@@ -110,8 +111,7 @@
filling_overlay.icon_state = "output-reagent100"
filling_overlay.color = list(mix_color_from_reagents(outbag.reagents.reagent_list))
- add_overlay(filling_overlay)
- return
+ . += filling_overlay
/obj/machinery/bloodbankgen/process()
if(!is_operational())
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 991577e123..670efa929e 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -10,18 +10,19 @@
circuit = /obj/item/circuitboard/machine/cell_charger
pass_flags = PASSTABLE
var/obj/item/stock_parts/cell/charging = null
- var/chargelevel = -1
var/charge_rate = 500
-/obj/machinery/cell_charger/update_icon()
- cut_overlays()
- if(charging)
- add_overlay(image(charging.icon, charging.icon_state))
- add_overlay("ccharger-on")
- if(!(stat & (BROKEN|NOPOWER)))
- var/newlevel = round(charging.percent() * 4 / 100)
- chargelevel = newlevel
- add_overlay("ccharger-o[newlevel]")
+/obj/machinery/cell_charger/update_overlays()
+ . += ..()
+
+ if(!charging)
+ return
+
+ . += image(charging.icon, charging.icon_state)
+ . += "ccharger-on"
+ if(!(stat & (BROKEN|NOPOWER)))
+ var/newlevel = round(charging.percent() * 4 / 100)
+ . += "ccharger-o[newlevel]"
/obj/machinery/cell_charger/examine(mob/user)
. = ..()
@@ -54,7 +55,6 @@
charging = W
user.visible_message("[user] inserts a cell into [src].", "You insert a cell into [src].")
- chargelevel = -1
update_icon()
else
if(!charging && default_deconstruction_screwdriver(user, icon_state, icon_state, W))
@@ -77,7 +77,6 @@
/obj/machinery/cell_charger/proc/removecell()
charging.update_icon()
charging = null
- chargelevel = -1
update_icon()
/obj/machinery/cell_charger/attack_hand(mob/user)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 62304112b2..b42b5cf41f 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -477,24 +477,30 @@
flesh_number = unattached_flesh.len
-/obj/machinery/clonepod/update_icon()
- cut_overlays()
-
+/obj/machinery/clonepod/update_icon_state()
if(mess)
icon_state = "pod_g"
+ else if(occupant)
+ icon_state = "pod_1"
+ else
+ icon_state = "pod_0"
+
+ if(panel_open)
+ icon_state = "pod_0_maintenance"
+
+/obj/machinery/clonepod/update_overlays()
+ . = ..()
+ if(mess)
var/image/gib1 = image(CRYOMOBS, "gibup")
var/image/gib2 = image(CRYOMOBS, "gibdown")
gib1.pixel_y = 27 + round(sin(world.time) * 3)
gib1.pixel_x = round(sin(world.time * 3))
gib2.pixel_y = 27 + round(cos(world.time) * 3)
gib2.pixel_x = round(cos(world.time * 3))
- add_overlay(gib2)
- add_overlay(gib1)
- add_overlay("cover-on")
-
+ . += gib2
+ . += gib1
+ . += "cover-on"
else if(occupant)
- icon_state = "pod_1"
-
var/image/occupant_overlay
var/completion = (flesh_number - unattached_flesh.len) / flesh_number
@@ -513,15 +519,9 @@
occupant_overlay.pixel_y = 27 + round(sin(world.time) * 3)
occupant_overlay.pixel_x = round(sin(world.time * 3))
- add_overlay(occupant_overlay)
- add_overlay("cover-on")
- else
- icon_state = "pod_0"
-
- if(panel_open)
- icon_state = "pod_0_maintenance"
-
- add_overlay("panel")
+ . += occupant_overlay
+ . += "cover-on"
+ . += "panel"
/*
* Manual -- A big ol' manual.
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index c748270793..675fbcf288 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -48,13 +48,13 @@
icon_state = initial(icon_state)
update_icon()
-/obj/machinery/computer/update_icon()
- cut_overlays()
+/obj/machinery/computer/update_overlays()
+ . = ..()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
if(stat & NOPOWER)
- add_overlay("[icon_keyboard]_off")
+ . += "[icon_keyboard]_off"
return
- add_overlay(icon_keyboard)
+ . += icon_keyboard
// This whole block lets screens ignore lighting and be visible even in the darkest room
// We can't do this for many things that emit light unfortunately because it layers over things that would be on top of it
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index 8bb0894cdb..9ff46c021b 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -103,21 +103,20 @@
add_fingerprint(usr)
updateUsrDialog()
-/obj/machinery/computer/aifixer/update_icon()
- ..()
+/obj/machinery/computer/aifixer/update_overlays()
+ . = ..()
if(stat & (NOPOWER|BROKEN))
return
+ if(active)
+ . += "ai-fixer-on"
+ if (occupier)
+ switch (occupier.stat)
+ if (0)
+ . += "ai-fixer-full"
+ if (2)
+ . += "ai-fixer-404"
else
- if(active)
- add_overlay("ai-fixer-on")
- if (occupier)
- switch (occupier.stat)
- if (0)
- add_overlay("ai-fixer-full")
- if (2)
- add_overlay("ai-fixer-404")
- else
- add_overlay("ai-fixer-empty")
+ . += "ai-fixer-empty"
/obj/machinery/computer/aifixer/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card)
if(!..())
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index 4c9e9aed19..679f112bff 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -78,23 +78,20 @@
update_icon()
return
-/obj/machinery/computer/atmos_alert/update_icon()
- ..()
- cut_overlays()
+/obj/machinery/computer/atmos_alert/update_overlays()
+ . = ..()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
var/overlay_state = icon_screen
if(stat & (NOPOWER|BROKEN))
- add_overlay("[icon_keyboard]_off")
+ . |= "[icon_keyboard]_off"
return
- add_overlay(icon_keyboard)
+ . |= icon_keyboard
if(priority_alarms.len)
overlay_state = "alert:2"
- add_overlay("alert:2")
else if(minor_alarms.len)
overlay_state = "alert:1"
- add_overlay("alert:1")
else
overlay_state = "alert:0"
- add_overlay("alert:0")
+ . |= overlay_state
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index d6ce850da8..22e102b54b 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -41,7 +41,7 @@
name = "incinerator chamber gas sensor"
id_tag = ATMOS_GAS_MONITOR_SENSOR_INCINERATOR
-/obj/machinery/air_sensor/update_icon()
+/obj/machinery/air_sensor/update_icon_state()
icon_state = "gsensor[on]"
/obj/machinery/air_sensor/process_atmos()
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 211ff13486..47c761fa52 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -175,11 +175,10 @@
clockwork = TRUE //it'd look very weird
light_power = 0
-/obj/machinery/computer/security/telescreen/update_icon()
+/obj/machinery/computer/security/telescreen/update_icon_state()
icon_state = initial(icon_state)
if(stat & BROKEN)
icon_state += "b"
- return
/obj/machinery/computer/security/telescreen/entertainment
name = "entertainment monitor"
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index f8dac1b100..d8a5f856f1 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -145,7 +145,7 @@
if(5)
dat += "
Virus Database"
for(var/Dt in typesof(/datum/disease/))
- var/datum/disease/Dis = new Dt(0)
+ var/datum/disease/Dis = new Dt(FALSE)
if(istype(Dis, /datum/disease/advance))
continue // TODO (tm): Add advance diseases to the virus database which no one uses.
if(!Dis.desc)
@@ -248,7 +248,7 @@
else if(href_list["vir"])
var/type = href_list["vir"]
- var/datum/disease/Dis = new type(0)
+ var/datum/disease/Dis = new type(FALSE)
var/AfS = ""
for(var/mob/M in Dis.viable_mobtypes)
AfS += " [initial(M.name)];"
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index c3fef3ff92..f3e27d650e 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -75,25 +75,23 @@
L -= I
return !cleared
-/obj/machinery/computer/station_alert/update_icon()
- ..()
- cut_overlays()
+/obj/machinery/computer/station_alert/update_overlays()
+ . = ..()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
var/overlay_state = icon_screen
if(stat & (NOPOWER|BROKEN))
- add_overlay("[icon_keyboard]_off")
+ . |= "[icon_keyboard]_off"
return
- add_overlay(icon_keyboard)
+ . |= icon_keyboard
var/active_alarms = FALSE
for(var/cat in alarms)
- var/list/L = alarms[cat]
- if(L.len)
+ if(length(alarms[cat]))
active_alarms = TRUE
+ break
if(active_alarms)
overlay_state = "alert:2"
- add_overlay("alert:2")
else
overlay_state = "alert:0"
- add_overlay("alert:0")
+ . |= overlay_state
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)
+ SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)
\ No newline at end of file
diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm
index 72c8979006..82e8f46ab6 100644
--- a/code/game/machinery/computer/telecrystalconsoles.dm
+++ b/code/game/machinery/computer/telecrystalconsoles.dm
@@ -44,8 +44,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
else
to_chat(user, "[I] doesn't appear to be an uplink...")
-/obj/machinery/computer/telecrystals/uplinker/update_icon()
- ..()
+/obj/machinery/computer/telecrystals/uplinker/update_overlays()
+ . = ..()
if(uplinkholder)
add_overlay("[initial(icon_state)]-closed")
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index c2d7bfe2a8..6a5853a9ae 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -45,7 +45,7 @@
return
return ..()
-/obj/machinery/jukebox/update_icon()
+/obj/machinery/jukebox/update_icon_state()
if(active)
icon_state = "[initial(icon_state)]-active"
else
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 60b5a52a10..ed61e13596 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -34,7 +34,7 @@
if(scan_level >= 3)
. += "Scanner has been upgraded to support autoprocessing."
-/obj/machinery/dna_scannernew/update_icon()
+/obj/machinery/dna_scannernew/update_icon_state()
//no power or maintenance
if(stat & (NOPOWER|BROKEN))
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 3bc8aff809..555f46f85f 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -428,7 +428,7 @@
else
return FALSE
-/obj/machinery/door/airlock/update_icon(state=0, override=0)
+/obj/machinery/door/airlock/update_icon_state(state=0, override=0)
if(operating && !override)
return
switch(state)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index f89f65ec85..c4c712ca25 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -230,7 +230,7 @@
/obj/machinery/door/proc/unelectrify()
secondsElectrified = 0
-/obj/machinery/door/update_icon()
+/obj/machinery/door/update_icon_state()
if(density)
icon_state = "door1"
else
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index cb133978b2..1b83bb4b96 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -171,16 +171,20 @@
if("closing")
flick("door_closing", src)
-/obj/machinery/door/firedoor/update_icon()
- cut_overlays()
+/obj/machinery/door/firedoor/update_icon_state()
if(density)
icon_state = "door_closed"
- if(welded)
- add_overlay("welded")
else
icon_state = "door_open"
- if(welded)
- add_overlay("welded_open")
+
+/obj/machinery/door/firedoor/update_overlays()
+ . = ..()
+ if(!welded)
+ return
+ if(density)
+ . += "welded"
+ else
+ . += "welded_open"
/obj/machinery/door/firedoor/open()
. = ..()
@@ -283,8 +287,7 @@
if(CONSTRUCTION_NOCIRCUIT)
. += "There are no firelock electronics in the frame. The frame could be cut apart."
-/obj/structure/firelock_frame/update_icon()
- ..()
+/obj/structure/firelock_frame/update_icon_state()
icon_state = "frame[constructionStep]"
/obj/structure/firelock_frame/attackby(obj/item/C, mob/user)
diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm
index 2ce2711cb4..60652981cf 100644
--- a/code/game/machinery/doors/passworddoor.dm
+++ b/code/game/machinery/doors/passworddoor.dm
@@ -42,7 +42,7 @@
else
do_animate("deny")
-/obj/machinery/door/password/update_icon()
+/obj/machinery/door/password/update_icon_state()
if(density)
icon_state = "closed"
else
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index af95ee230c..c032ded6b0 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -77,7 +77,7 @@
flick("closing", src)
playsound(src, 'sound/machines/blastdoor.ogg', 30, 1)
-/obj/machinery/door/poddoor/update_icon()
+/obj/machinery/door/poddoor/update_icon_state()
if(density)
icon_state = "closed"
else
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index bd9b7325fb..492e90720c 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -48,7 +48,7 @@
electronics = null
return ..()
-/obj/machinery/door/window/update_icon()
+/obj/machinery/door/window/update_icon_state()
if(density)
icon_state = base_state
else
diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm
index 54be67f3c1..33ea273e9d 100644
--- a/code/game/machinery/droneDispenser.dm
+++ b/code/game/machinery/droneDispenser.dm
@@ -199,7 +199,7 @@
if(istype(a, dispense_type))
.++
-/obj/machinery/droneDispenser/update_icon()
+/obj/machinery/droneDispenser/update_icon_state()
if(stat & (BROKEN|NOPOWER))
icon_state = icon_off
else if(mode == DRONE_RECHARGING)
diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm
index ad49abb398..f74de23171 100644
--- a/code/game/machinery/embedded_controller/access_controller.dm
+++ b/code/game/machinery/embedded_controller/access_controller.dm
@@ -84,7 +84,7 @@
busy = FALSE
update_icon()
-/obj/machinery/doorButtons/access_button/update_icon()
+/obj/machinery/doorButtons/access_button/update_icon_state()
if(stat & NOPOWER)
icon_state = "access_button_off"
else
@@ -249,7 +249,7 @@
else if(A.id_tag == idExterior)
exteriorAirlock = A
-/obj/machinery/doorButtons/airlock_controller/update_icon()
+/obj/machinery/doorButtons/airlock_controller/update_icon_state()
if(stat & NOPOWER)
icon_state = "access_control_off"
return
diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm
index 9f1ebe67a9..ea39133112 100644
--- a/code/game/machinery/embedded_controller/airlock_controller.dm
+++ b/code/game/machinery/embedded_controller/airlock_controller.dm
@@ -255,7 +255,7 @@
new_prog.master = src
program = new_prog
-/obj/machinery/embedded_controller/radio/airlock_controller/update_icon()
+/obj/machinery/embedded_controller/radio/airlock_controller/update_icon_state()
if(on && program)
if(program.memory["processing"])
icon_state = "airlock_control_process"
diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm
index f1a2ef9acc..6fd351bcff 100644
--- a/code/game/machinery/embedded_controller/embedded_controller_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm
@@ -33,8 +33,6 @@
popup.set_content(return_text())
popup.open()
-/obj/machinery/embedded_controller/update_icon()
-
/obj/machinery/embedded_controller/proc/return_text()
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm
index 33be1e3f79..6c8467dbd3 100644
--- a/code/game/machinery/embedded_controller/simple_vent_controller.dm
+++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm
@@ -54,7 +54,7 @@
new_prog.master = src
program = new_prog
-/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon()
+/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon_state()
if(on && program)
icon_state = "airlock_control_standby"
else
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 83bc055cd7..befa9545ed 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -55,10 +55,7 @@
..()
update_icon()
-/obj/machinery/firealarm/update_icon()
- cut_overlays()
- SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
-
+/obj/machinery/firealarm/update_icon_state()
if(panel_open)
icon_state = "fire_b[buildstage]"
return
@@ -72,26 +69,30 @@
if(stat & NOPOWER)
return
- add_overlay("fire_overlay")
+/obj/machinery/firealarm/update_overlays()
+ . = ..()
+ SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
+
+ . += "fire_overlay"
if(is_station_level(z))
- add_overlay("fire_[GLOB.security_level]")
+ . += "fire_[GLOB.security_level]"
SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
else
- add_overlay("fire_[SEC_LEVEL_GREEN]")
+ . += "fire_[SEC_LEVEL_GREEN]"
SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
var/area/A = src.loc
A = A.loc
if(!detecting || !A.fire)
- add_overlay("fire_off")
+ . += "fire_off"
SSvis_overlays.add_vis_overlay(src, icon, "fire_off", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
else if(obj_flags & EMAGGED)
- add_overlay("fire_emagged")
+ . += "fire_emagged"
SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
else
- add_overlay("fire_on")
+ . += "fire_on"
SSvis_overlays.add_vis_overlay(src, icon, "fire_on", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
/obj/machinery/firealarm/emp_act(severity)
diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm
index a2d0460d25..fb41ac986d 100644
--- a/code/game/machinery/gulag_teleporter.dm
+++ b/code/game/machinery/gulag_teleporter.dm
@@ -68,7 +68,7 @@ The console is located at computer/gulag_teleporter.dm
return ..()
-/obj/machinery/gulag_teleporter/update_icon()
+/obj/machinery/gulag_teleporter/update_icon_state()
icon_state = initial(icon_state) + (state_open ? "_open" : "")
//no power or maintenance
if(stat & (NOPOWER|BROKEN))
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index 8275e981de..244c300905 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -11,6 +11,7 @@
light_color = LIGHT_COLOR_BLUE
var/interval = 20
var/harvesting = FALSE
+ var/warming_up = FALSE
var/list/operation_order = list() //Order of wich we harvest limbs.
var/allow_clothing = FALSE
var/allow_living = FALSE
@@ -27,12 +28,11 @@
max_time -= L.rating
interval = max(max_time,1)
-/obj/machinery/harvester/update_icon(warming_up)
- if(warming_up)
- icon_state = initial(icon_state)+"-charging"
- return
+/obj/machinery/harvester/update_icon_state()
if(state_open)
icon_state = initial(icon_state)+"-open"
+ else if(warming_up)
+ icon_state = initial(icon_state)+"-charging"
else if(harvesting)
icon_state = initial(icon_state)+"-active"
else
@@ -43,6 +43,7 @@
return
. = ..()
harvesting = FALSE
+ warming_up = FALSE
/obj/machinery/harvester/attack_hand(mob/user)
if(state_open)
@@ -86,13 +87,15 @@
return
var/mob/living/carbon/C = occupant
operation_order = reverseList(C.bodyparts) //Chest and head are first in bodyparts, so we invert it to make them suffer more
+ warming_up = TRUE
harvesting = TRUE
visible_message("The [name] begins warming up!")
say("Initializing harvest protocol.")
- update_icon(TRUE)
+ update_icon()
addtimer(CALLBACK(src, .proc/harvest), interval)
/obj/machinery/harvester/proc/harvest()
+ warming_up = FALSE
update_icon()
if(!harvesting || state_open || !powered(EQUIP) || !occupant || !iscarbon(occupant))
return
@@ -127,6 +130,7 @@
addtimer(CALLBACK(src, .proc/harvest), interval)
/obj/machinery/harvester/proc/end_harvesting()
+ warming_up = FALSE
harvesting = FALSE
open_machine()
say("Subject has been successfully harvested.")
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index f3e446c686..067f10fa0f 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -441,7 +441,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
set_light(0)
update_icon()
-/obj/machinery/holopad/update_icon()
+/obj/machinery/holopad/update_icon_state()
var/total_users = LAZYLEN(masters) + LAZYLEN(holo_calls)
if(ringing)
icon_state = "holopad_ringing"
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index b3f0ce9693..ad5df7cea0 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -24,7 +24,7 @@
QDEL_NULL(beaker)
return ..()
-/obj/machinery/iv_drip/update_icon()
+/obj/machinery/iv_drip/update_icon_state()
if(attached)
if(mode)
icon_state = "injecting"
@@ -36,13 +36,14 @@
else
icon_state = "donateidle"
- cut_overlays()
+/obj/machinery/iv_drip/update_overlays()
+ . = ..()
if(beaker)
if(attached)
- add_overlay("beakeractive")
+ . += "beakeractive"
else
- add_overlay("beakeridle")
+ . += "beakeridle"
if(beaker.reagents.total_volume)
var/mutable_appearance/filling_overlay = mutable_appearance('icons/obj/iv_drip.dmi', "reagent")
@@ -64,7 +65,7 @@
filling_overlay.icon_state = "reagent100"
filling_overlay.color = mix_color_from_reagents(beaker.reagents.reagent_list)
- add_overlay(filling_overlay)
+ . += filling_overlay
/obj/machinery/iv_drip/MouseDrop(mob/living/target)
. = ..()
@@ -227,9 +228,9 @@
desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate. This one is telescopic, and can be picked up and put down."
icon_state = "iv_drip"
-/obj/machinery/iv_drip/telescopic/update_icon()
+/obj/machinery/iv_drip/telescopic/update_icon_state()
..()
- icon_state = icon_state + "_tele"
+ icon_state += "_tele"
/obj/machinery/iv_drip/telescopic/AltClick(mob/user)
if (attached || beaker || !user.canUseTopic(src, BE_CLOSE))
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index e14033a959..b2a35dcf41 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -23,7 +23,7 @@
on = area.lightswitch
update_icon()
-/obj/machinery/light_switch/update_icon()
+/obj/machinery/light_switch/update_icon_state()
if(stat & NOPOWER)
icon_state = "light-p"
else
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index b010f77cac..50edbe5891 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -49,7 +49,7 @@
update_icon()
// update the icon_state
-/obj/machinery/magnetic_module/update_icon()
+/obj/machinery/magnetic_module/update_icon_state()
var/state="floor_magnet"
var/onstate=""
if(!on)
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 93c94ae8b6..766943de36 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -75,7 +75,7 @@
update_icon()
// update the icon_state
-/obj/machinery/navbeacon/update_icon()
+/obj/machinery/navbeacon/update_icon_state()
var/state="navbeacon[open]"
if(invisibility)
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 3d0fdb06da..f07f946d0f 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -99,8 +99,7 @@
if(!has_cover)
INVOKE_ASYNC(src, .proc/popUp)
-/obj/machinery/porta_turret/update_icon()
- cut_overlays()
+/obj/machinery/porta_turret/update_icon_state()
if(!anchored)
icon_state = "turretCover"
return
@@ -970,8 +969,7 @@
..()
update_icon()
-/obj/machinery/turretid/update_icon()
- ..()
+/obj/machinery/turretid/update_icon_state()
if(stat & NOPOWER)
icon_state = "control_off"
else if (enabled)
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index aa97aa821a..24fd956677 100755
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -10,6 +10,7 @@
pass_flags = PASSTABLE
var/obj/item/charging = null
var/recharge_coeff = 1
+ var/using_power = FALSE //Did we put power into "charging" last process()?
var/static/list/allowed_devices = typecacheof(list(
/obj/item/gun/energy,
@@ -45,9 +46,11 @@
if (new_charging)
START_PROCESSING(SSmachines, src)
use_power = ACTIVE_POWER_USE
- update_icon(scan = TRUE)
+ using_power = TRUE
+ update_icon()
else
use_power = IDLE_POWER_USE
+ using_power = FALSE
update_icon()
/obj/machinery/recharger/attackby(obj/item/G, mob/user, params)
@@ -120,23 +123,23 @@
if(stat & (NOPOWER|BROKEN) || !anchored)
return PROCESS_KILL
- var/using_power = 0
+ using_power = FALSE
if(charging)
var/obj/item/stock_parts/cell/C = charging.get_cell()
if(C)
if(C.charge < C.maxcharge)
C.give(C.chargerate * recharge_coeff)
use_power(250 * recharge_coeff)
- using_power = 1
- update_icon(using_power)
+ using_power = TRUE
+ update_icon()
if(istype(charging, /obj/item/ammo_box/magazine/recharge))
var/obj/item/ammo_box/magazine/recharge/R = charging
if(R.stored_ammo.len < R.max_ammo)
R.stored_ammo += new R.ammo_type(R)
use_power(200 * recharge_coeff)
- using_power = 1
- update_icon(using_power)
+ using_power = TRUE
+ update_icon()
return
else
return PROCESS_KILL
@@ -161,20 +164,15 @@
B.cell.charge = 0
-/obj/machinery/recharger/update_icon(using_power = 0, scan) //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier.
+/obj/machinery/recharger/update_icon_state()
if(stat & (NOPOWER|BROKEN) || !anchored)
icon_state = "rechargeroff"
- return
- if(scan)
- icon_state = "rechargeroff"
- return
- if(panel_open)
+ else if(panel_open)
icon_state = "rechargeropen"
- return
- if(charging)
+ else if(charging)
if(using_power)
icon_state = "recharger1"
else
icon_state = "recharger2"
- return
- icon_state = "recharger0"
+ else
+ icon_state = "recharger0"
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 374c0c71b9..bbafe99006 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -112,7 +112,7 @@
use_power = ACTIVE_POWER_USE
add_fingerprint(occupant)
-/obj/machinery/recharge_station/update_icon()
+/obj/machinery/recharge_station/update_icon_state()
if(is_operational())
if(state_open)
icon_state = "borgcharger0"
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index c14e70f831..a2c128437f 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -77,8 +77,7 @@
to_chat(user, "You use the cryptographic sequencer on [src].")
return TRUE
-/obj/machinery/recycler/update_icon()
- ..()
+/obj/machinery/recycler/update_icon_state()
var/is_powered = !(stat & (BROKEN|NOPOWER))
if(safety_mode)
is_powered = FALSE
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 6b191ef14d..c05fbe229c 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
..()
update_icon()
-/obj/machinery/requests_console/update_icon()
+/obj/machinery/requests_console/update_icon_state()
if(stat & NOPOWER)
set_light(0)
else
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index b4288310b0..c152e302fe 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -208,7 +208,7 @@
to_chat(user, "You short out the access controller.")
return TRUE
-/obj/machinery/shieldgen/update_icon()
+/obj/machinery/shieldgen/update_icon_state()
if(active)
icon_state = (stat & BROKEN) ? "shieldonbr":"shieldon"
else
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 115c61e9b9..84b205b585 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -56,7 +56,7 @@
money++ //SPESSH MAJICKS
-/obj/machinery/computer/slot_machine/update_icon()
+/obj/machinery/computer/slot_machine/update_icon_state()
if(stat & NOPOWER)
icon_state = "slots0"
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 6eca52aa0e..41dfe8e3ac 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -53,17 +53,18 @@
else
. += "There is no power cell installed."
if(in_range(user, src) || isobserver(user))
- . += "The status display reads: Temperature range at [settableTemperatureRange]°C.
Heating power at [heatingPower*0.001]kJ.
Power consumption at [(efficiency*-0.0025)+150]%." //100%, 75%, 50%, 25%
+ . += "The status display reads: Temperature range at [settableTemperatureRange]°C.
Heating power at [heatingPower*0.001]kJ.
Power consumption at [(efficiency*-0.0025)+150]%." //100%, 75%, 50%, 25%
-/obj/machinery/space_heater/update_icon()
+/obj/machinery/space_heater/update_icon_state()
if(on)
icon_state = "sheater-[mode]"
else
icon_state = "sheater-off"
- cut_overlays()
+/obj/machinery/space_heater/update_overlays()
+ . = ..()
if(panel_open)
- add_overlay("sheater-open")
+ . += "sheater-open"
/obj/machinery/space_heater/process()
if(!on || !is_operational())
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 3a2ce43315..cf6b2b4bf4 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -75,6 +75,12 @@
suit_type = /obj/item/clothing/suit/space/hardsuit/medical
mask_type = /obj/item/clothing/mask/breath
+/obj/machinery/suit_storage_unit/paramedic
+ name = "paramedic suit storage unit"
+ suit_type = /obj/item/clothing/suit/space/eva/paramedic
+ helmet_type = /obj/item/clothing/head/helmet/space/eva/paramedic
+ mask_type = /obj/item/clothing/mask/breath
+
/obj/machinery/suit_storage_unit/rd
suit_type = /obj/item/clothing/suit/space/hardsuit/rd
mask_type = /obj/item/clothing/mask/breath
@@ -134,29 +140,28 @@
QDEL_NULL(storage)
return ..()
-/obj/machinery/suit_storage_unit/update_icon()
- cut_overlays()
-
+/obj/machinery/suit_storage_unit/update_overlays()
+ . = ..()
if(uv)
if(uv_super)
- add_overlay("super")
+ . += "super"
else if(occupant)
- add_overlay("uvhuman")
+ . += "uvhuman"
else
- add_overlay("uv")
+ . += "uv"
else if(state_open)
if(stat & BROKEN)
- add_overlay("broken")
+ . += "broken"
else
- add_overlay("open")
+ . += "open"
if(suit)
- add_overlay("suit")
+ . += "suit"
if(helmet)
- add_overlay("helm")
+ . += "helm"
if(storage)
- add_overlay("storage")
+ . += "storage"
else if(occupant)
- add_overlay("human")
+ . += "human"
/obj/machinery/suit_storage_unit/power_change()
..()
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 221e35118e..b8d4ef26e8 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -102,7 +102,7 @@
. = ..()
. += "A digital display on it reads \"[seconds_remaining()]\"."
-/obj/machinery/syndicatebomb/update_icon()
+/obj/machinery/syndicatebomb/update_icon_state()
icon_state = "[initial(icon_state)][active ? "-active" : "-inactive"][open_panel ? "-wires" : ""]"
/obj/machinery/syndicatebomb/proc/seconds_remaining()
diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm
index 1960080856..a6c2a0f126 100644
--- a/code/game/machinery/telecomms/machines/message_server.dm
+++ b/code/game/machinery/telecomms/machines/message_server.dm
@@ -74,7 +74,7 @@
if(!relay_information(signal, /obj/machinery/telecomms/hub))
relay_information(signal, /obj/machinery/telecomms/broadcaster)
-/obj/machinery/telecomms/message_server/update_icon()
+/obj/machinery/telecomms/message_server/update_icon_state()
if((stat & (BROKEN|NOPOWER)))
icon_state = "server-nopower"
else if (!toggled)
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index 7a9f682d34..70b785ea21 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -109,7 +109,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
links |= T
T.links |= src
-/obj/machinery/telecomms/update_icon()
+/obj/machinery/telecomms/update_icon_state()
if(on)
if(panel_open)
icon_state = "[initial(icon_state)]_o"
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 3cc71df0f1..985c1166b7 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -85,7 +85,7 @@
calibrated = FALSE
return
-/obj/machinery/teleport/hub/update_icon()
+/obj/machinery/teleport/hub/update_icon_state()
if(panel_open)
icon_state = "tele-o"
else if(is_ready())
@@ -218,7 +218,7 @@
if(teleporter_hub)
teleporter_hub.update_icon()
-/obj/machinery/teleport/station/update_icon()
+/obj/machinery/teleport/station/update_icon_state()
if(panel_open)
icon_state = "controller-o"
else if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 4ed2473260..a2d4b9eb7e 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -38,8 +38,7 @@
..()
update_icon()
-/obj/machinery/transformer/update_icon()
- ..()
+/obj/machinery/transformer/update_icon_state()
if(stat & (BROKEN|NOPOWER) || cooldown == 1)
icon_state = "separator-AO0"
else
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index b5eed68ab0..ff5ba14810 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -199,8 +199,7 @@
-/obj/machinery/washing_machine/update_icon()
- cut_overlays()
+/obj/machinery/washing_machine/update_icon_state()
if(busy)
icon_state = "wm_running_[bloody_mess]"
else if(bloody_mess)
@@ -208,8 +207,11 @@
else
var/full = contents.len ? 1 : 0
icon_state = "wm_[state_open]_[full]"
+
+/obj/machinery/washing_machine/update_overlays()
+ . = ..()
if(panel_open)
- add_overlay("wm_panel")
+ . += "wm_panel"
/obj/machinery/washing_machine/attackby(obj/item/W, mob/user, params)
if(panel_open && !busy && default_unfasten_wrench(user, W))
diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm
index facf687cc4..bcf1b948e2 100644
--- a/code/game/mecha/mech_bay.dm
+++ b/code/game/mecha/mech_bay.dm
@@ -128,11 +128,11 @@
else
recharge_port = null
-/obj/machinery/computer/mech_bay_power_console/update_icon()
- ..()
+/obj/machinery/computer/mech_bay_power_console/update_overlays()
+ . = ..()
if(!recharge_port || !recharge_port.recharging_mech || !recharge_port.recharging_mech.cell || !(recharge_port.recharging_mech.cell.charge < recharge_port.recharging_mech.cell.maxcharge) || stat & (NOPOWER|BROKEN))
return
- add_overlay("recharge_comp_on")
+ . += "recharge_comp_on"
/obj/machinery/computer/mech_bay_power_console/Initialize()
. = ..()
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index 845b208db1..5f54f0c93d 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -45,16 +45,6 @@
..()
update_icon()
-/obj/mecha/working/ripley/update_icon()
- ..()
- var/datum/component/armor_plate/C = GetComponent(/datum/component/armor_plate)
- if (C.amount)
- cut_overlays()
- if(C.amount < 3)
- add_overlay(occupant ? "ripley-g" : "ripley-g-open")
- else
- add_overlay(occupant ? "ripley-g-full" : "ripley-g-full-open")
-
/obj/mecha/working/ripley/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate,3,/obj/item/stack/sheet/animalhide/goliath_hide,list("melee" = 10, "bullet" = 5, "laser" = 5))
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index cdf6b77a76..53adc46239 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -139,13 +139,6 @@
/obj/effect/temp_visual/dir_setting/curse/hand
icon_state = "cursehand"
-/obj/effect/temp_visual/dir_setting/curse/hand/Initialize(mapload, set_dir, handedness)
- . = ..()
- update_icon()
-
-/obj/item/projectile/curse_hand/update_icon()
- icon_state = "[icon_state][handedness]"
-
/obj/effect/temp_visual/wizard
name = "water"
icon = 'icons/mob/mob.dmi'
@@ -474,7 +467,7 @@
else
update_icon()
-/obj/effect/constructing_effect/update_icon()
+/obj/effect/constructing_effect/update_icon_state()
icon_state = "rcd"
if (delay < 10)
icon_state += "_shortest"
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 9f1d425d6c..d248556a9c 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -552,8 +552,8 @@ RLD
explosion(src, 0, 0, 3, 1, flame_range = 1)
qdel(src)
-/obj/item/construction/rcd/update_icon()
- ..()
+/obj/item/construction/rcd/update_overlays()
+ . = ..()
if(has_ammobar)
var/ratio = CEILING((matter / max_matter) * ammo_sections, 1)
cut_overlays() //To prevent infinite stacking of overlays
@@ -707,11 +707,10 @@ RLD
else
..()
-/obj/item/construction/rld/update_icon()
- ..()
+/obj/item/construction/rld/update_overlays()
+ . = ..()
var/ratio = CEILING((matter / max_matter) * ammo_sections, 1)
- cut_overlays() //To prevent infinite stacking of overlays
- add_overlay("rld_light[ratio]")
+ . += "rld_light[ratio]"
/obj/item/construction/rld/attack_self(mob/user)
..()
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index 0eb97a8dee..e4c7382b3b 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -23,6 +23,10 @@
var/datum/radial_menu/persistent/wiring_gui_menu
var/mob/listeningTo
+/obj/item/twohanded/rcl/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+
/obj/item/twohanded/rcl/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
@@ -90,34 +94,20 @@
QDEL_NULL(wiring_gui_menu)
return ..()
-/obj/item/twohanded/rcl/update_icon()
- if(!loaded)
- icon_state = "rcl-empty"
- item_state = "rcl-empty"
+/obj/item/twohanded/rcl/update_icon_state()
+ icon_state = initial(icon_state)
+ item_state = initial(item_state)
+ if(!loaded || !loaded.amount)
+ icon_state += "-empty"
+ item_state += "-0"
+
+/obj/item/twohanded/rcl/update_overlays()
+ . = ..()
+ if(!loaded || !loaded.amount)
return
- cut_overlays()
- var/cable_amount = 0
- switch(loaded.amount)
- if(61 to INFINITY)
- cable_amount = 3
- if(31 to 60)
- cable_amount = 2
- if(1 to 30)
- cable_amount = 1
- else
- cable_amount = 0
-
- var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[cable_amount]")
+ var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[max(CEILING(loaded.amount/(max_amount/3), 1), 3)]")
cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
- if(cable_amount >= 1)
- icon_state = "rcl"
- item_state = "rcl"
- add_overlay(cable_overlay)
- else
- icon_state = "rcl-empty"
- item_state = "rcl-0"
- add_overlay(cable_overlay)
-
+ . += cable_overlay
/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
update_icon()
@@ -323,33 +313,6 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
actions_types = list()
max_amount = 30
name = "makeshift rapid cable layer"
+ icon_state = "rclg"
+ item_state = "rclg"
ghetto = TRUE
-
-/obj/item/twohanded/rcl/ghetto/update_icon()
- if(!loaded)
- icon_state = "rclg-empty"
- item_state = "rclg-0"
- return
- cut_overlays()
- var/cable_amount = 0
- switch(loaded.amount)
- if(20 to INFINITY)
- cable_amount = 3
- if(10 to 19)
- cable_amount = 2
- if(1 to 9)
- cable_amount = 1
- else
- cable_amount = 0
-
- var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[cable_amount]")
- cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
- if(cable_amount >= 1)
- icon_state = "rclg"
- item_state = "rclg"
- add_overlay(cable_overlay)
- else
- icon_state = "rclg-empty"
- item_state = "rclg-0"
- add_overlay(cable_overlay)
-
diff --git a/code/game/objects/items/boombox.dm b/code/game/objects/items/boombox.dm
index 3b93480e43..49e2375c1a 100644
--- a/code/game/objects/items/boombox.dm
+++ b/code/game/objects/items/boombox.dm
@@ -37,7 +37,7 @@
SSjukeboxes.removejukebox(SSjukeboxes.findjukeboxindex(src))
. = ..()
-/obj/item/boombox/update_icon()
+/obj/item/boombox/update_icon_state()
icon_state = "[baseiconstate]_[boomingandboxing ? "on" : "off"]"
return
@@ -48,8 +48,11 @@
baseiconstate = "raiqbawks"
availabletrackids = list("hotline.ogg","chiptune.ogg","genesis.ogg")
-/obj/item/boombox/raiq/update_icon()
+/obj/item/boombox/raiq/Initialize()
. = ..()
+ RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, .proc/start_party)
+
+/obj/item/boombox/raiq/proc/start_party()
if(boomingandboxing)
START_PROCESSING(SSobj, src)
else
@@ -58,4 +61,3 @@
/obj/item/boombox/raiq/process()
set_light(5,0.95,pick("#d87aff","#7a7aff","#89ecff","#b88eff","#ff59ad"))
- return
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index 78be7f78e8..11ab008c41 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -19,7 +19,7 @@
if(start_lit)
light()
-/obj/item/candle/update_icon()
+/obj/item/candle/update_icon_state()
icon_state = "candle[(wax > 400) ? ((wax > 750) ? 1 : 2) : 3][lit ? "_lit" : ""]"
/obj/item/candle/attackby(obj/item/W, mob/user, params)
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 4de3e4ff96..20e0b09d26 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -40,13 +40,13 @@
.=..()
update_icon()
-/obj/item/card/data/update_icon()
- cut_overlays()
+/obj/item/card/data/update_overlays()
+ . = ..()
if(detail_color == COLOR_FLOORTILE_GRAY)
return
var/mutable_appearance/detail_overlay = mutable_appearance('icons/obj/card.dmi', "[icon_state]-color")
detail_overlay.color = detail_color
- add_overlay(detail_overlay)
+ . += detail_overlay
/obj/item/card/data/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/integrated_electronics/detailer))
@@ -517,10 +517,16 @@ update_label("John Doe", "Clowny")
//Polychromatic Knight Badge
/obj/item/card/id/knight
- var/id_color = "#00FF00" //defaults to green
name = "knight badge"
icon_state = "knight"
desc = "A badge denoting the owner as a knight! It has a strip for swiping like an ID"
+ var/id_color = "#00FF00" //defaults to green
+ var/mutable_appearance/id_overlay
+
+/obj/item/card/id/knight/Initialize()
+ . = ..()
+ id_overlay = mutable_appearance(icon, "knight_overlay")
+ update_icon()
/obj/item/card/id/knight/update_label(newname, newjob)
if(newname || newjob)
@@ -529,14 +535,10 @@ update_label("John Doe", "Clowny")
name = "[(!registered_name) ? "knight badge" : "[registered_name]'s Knight Badge"][(!assignment) ? "" : " ([assignment])"]"
-/obj/item/card/id/knight/update_icon()
- var/mutable_appearance/id_overlay = mutable_appearance(icon, "knight_overlay")
-
- if(id_color)
- id_overlay.color = id_color
- cut_overlays()
-
- add_overlay(id_overlay)
+/obj/item/card/id/knight/update_overlays()
+ . = ..()
+ id_overlay.color = id_color
+ . += id_overlay
/obj/item/card/id/knight/AltClick(mob/living/user)
. = ..()
@@ -556,10 +558,6 @@ update_label("John Doe", "Clowny")
update_icon()
return TRUE
-/obj/item/card/id/knight/Initialize()
- . = ..()
- update_icon()
-
/obj/item/card/id/knight/examine(mob/user)
. = ..()
. += "Alt-click to recolor it."
diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm
index 2dcb495701..7b8c53484a 100644
--- a/code/game/objects/items/chrono_eraser.dm
+++ b/code/game/objects/items/chrono_eraser.dm
@@ -65,8 +65,9 @@
TED = new(src.loc)
return INITIALIZE_HINT_QDEL
-/obj/item/gun/energy/chrono_gun/update_icon()
- return
+/obj/item/gun/energy/chrono_gun/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_blocker)
/obj/item/gun/energy/chrono_gun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
if(field)
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index f9f0db4875..5b7c70b1b6 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -522,11 +522,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.visible_message("[user] begins whacking [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
return BRUTELOSS
-/obj/item/lighter/update_icon()
- cut_overlays()
- var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]")
+/obj/item/lighter/update_icon_state()
icon_state = "[initial(icon_state)][lit ? "-on" : ""]"
- add_overlay(lighter_overlay)
+
+/obj/item/lighter/update_overlays()
+ . = ..()
+ var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]")
+ . += lighter_overlay
/obj/item/lighter/ignition_effect(atom/A, mob/user)
if(get_temperature())
@@ -645,12 +647,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lighter_color = pick(color_list)
update_icon()
-/obj/item/lighter/greyscale/update_icon()
- cut_overlays()
- var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]")
+/obj/item/lighter/greyscale/update_icon_state()
icon_state = "[initial(icon_state)][lit ? "-on" : ""]"
+
+/obj/item/lighter/greyscale/update_overlays()
+ . = ..()
+ var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]")
lighter_overlay.color = lighter_color
- add_overlay(lighter_overlay)
+ . += lighter_overlay
/obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user)
if(get_temperature())
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index a56c4151f1..f5b13d4e3e 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -577,8 +577,8 @@
new /obj/item/toy/crayon/black(src)
update_icon()
-/obj/item/storage/crayons/update_icon()
- cut_overlays()
+/obj/item/storage/crayons/update_overlays()
+ . = ..()
for(var/obj/item/toy/crayon/crayon in contents)
add_overlay(mutable_appearance('icons/obj/crayons.dmi', crayon.item_color))
@@ -735,13 +735,15 @@
. = ..()
-/obj/item/toy/crayon/spraycan/update_icon()
+/obj/item/toy/crayon/spraycan/update_icon_state()
icon_state = is_capped ? icon_capped : icon_uncapped
+
+/obj/item/toy/crayon/spraycan/update_overlays()
+ . = ..()
if(use_overlays)
- cut_overlays()
var/mutable_appearance/spray_overlay = mutable_appearance('icons/obj/crayons.dmi', "[is_capped ? "spraycan_cap_colors" : "spraycan_colors"]")
spray_overlay.color = paint_color
- add_overlay(spray_overlay)
+ . += spray_overlay
/obj/item/toy/crayon/spraycan/borg
name = "cyborg spraycan"
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index f0c94d1e5e..3ac3347222 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -20,7 +20,7 @@
var/safety = TRUE //if you can zap people with the defibs on harm mode
var/powered = FALSE //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
var/obj/item/twohanded/shockpaddles/paddles
- var/obj/item/stock_parts/cell/high/cell
+ var/obj/item/stock_parts/cell/cell
var/combat = FALSE //can we revive through space suits?
var/grab_ghost = FALSE // Do we pull the ghost back into their body?
var/healdisk = FALSE // Will we shock people dragging the body?
@@ -35,19 +35,14 @@
/obj/item/defibrillator/Initialize() //starts without a cell for rnd
. = ..()
+ if(cell)
+ cell = new cell(src)
paddles = make_paddles()
- update_icon()
- return
-
-/obj/item/defibrillator/loaded/Initialize() //starts with hicap
- . = ..()
- cell = new(src)
- update_icon()
- return
-
-/obj/item/defibrillator/update_icon()
update_power()
- return ..()
+ return
+
+/obj/item/defibrillator/loaded
+ cell = /obj/item/stock_parts/cell/high
/obj/item/defibrillator/proc/update_power()
if(!QDELETED(cell))
@@ -57,6 +52,7 @@
powered = TRUE
else
powered = FALSE
+ update_icon()
/obj/item/defibrillator/update_overlays()
. = ..()
@@ -76,7 +72,7 @@
/obj/item/defibrillator/CheckParts(list/parts_list)
..()
cell = locate(/obj/item/stock_parts/cell) in contents
- update_icon()
+ update_power()
/obj/item/defibrillator/ui_action_click()
toggle_paddles()
@@ -124,7 +120,7 @@
return
cell = W
to_chat(user, "You install a cell in [src].")
- update_icon()
+ update_power()
else if(istype(W, /obj/item/screwdriver))
if(cell)
@@ -132,7 +128,7 @@
cell.forceMove(get_turf(src))
cell = null
to_chat(user, "You remove the cell from [src].")
- update_icon()
+ update_power()
else
return ..()
@@ -157,7 +153,7 @@
safety = TRUE
visible_message("[src] beeps: Safety protocols enabled!")
playsound(src, 'sound/machines/defib_saftyOn.ogg', 50, 0)
- update_icon()
+ update_power()
/obj/item/defibrillator/proc/toggle_paddles()
set name = "Toggle Paddles"
@@ -170,14 +166,14 @@
if(!usr.put_in_hands(paddles))
on = FALSE
to_chat(user, "You need a free hand to hold the paddles!")
- update_icon()
+ update_power()
return
else
//Remove from their hands and back onto the defib unit
paddles.unwield()
remove_paddles(user)
- update_icon()
+ update_power()
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
@@ -189,7 +185,7 @@
..()
if((slot_flags == ITEM_SLOT_BACK && slot != SLOT_BACK) || (slot_flags == ITEM_SLOT_BELT && slot != SLOT_BELT))
remove_paddles(user)
- update_icon()
+ update_power()
/obj/item/defibrillator/item_action_slot_check(slot, mob/user, datum/action/A)
if(slot == user.getBackSlot())
@@ -213,12 +209,12 @@
if(cell)
if(cell.charge < (paddles.revivecost+chrgdeductamt))
powered = FALSE
- update_icon()
+ update_power()
if(cell.use(chrgdeductamt))
- update_icon()
+ update_power()
return TRUE
else
- update_icon()
+ update_power()
return FALSE
/obj/item/defibrillator/proc/cooldowncheck(mob/user)
@@ -232,7 +228,7 @@
playsound(src, 'sound/machines/defib_failed.ogg', 50, 0)
paddles.cooldown = FALSE
paddles.update_icon()
- update_icon()
+ update_power()
/obj/item/defibrillator/compact
name = "compact defibrillator"
@@ -246,10 +242,8 @@
if(slot == user.getBeltSlot())
return TRUE
-/obj/item/defibrillator/compact/loaded/Initialize()
- . = ..()
- cell = new(src)
- update_icon()
+/obj/item/defibrillator/compact/loaded
+ cell = /obj/item/stock_parts/cell/high
/obj/item/defibrillator/compact/combat
name = "combat defibrillator"
@@ -258,17 +252,12 @@
safety = FALSE
always_emagged = TRUE
disarm_shock_time = 0
-
-/obj/item/defibrillator/compact/combat/loaded/Initialize()
- . = ..()
- cell = new /obj/item/stock_parts/cell/infinite(src)
- update_icon()
+ cell = /obj/item/stock_parts/cell/infinite
/obj/item/defibrillator/compact/combat/loaded/attackby(obj/item/W, mob/user, params)
if(W == paddles)
paddles.unwield()
toggle_paddles()
- update_icon()
return
//paddles
@@ -298,6 +287,10 @@
var/mob/listeningTo
+/obj/item/twohanded/shockpaddles/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+
/obj/item/twohanded/shockpaddles/equipped(mob/user, slot)
. = ..()
if(!req_defib)
@@ -339,14 +332,11 @@
busy = FALSE
update_icon()
-/obj/item/twohanded/shockpaddles/update_icon()
+/obj/item/twohanded/shockpaddles/update_icon_state()
icon_state = "defibpaddles[wielded]"
item_state = "defibpaddles[wielded]"
if(cooldown)
icon_state = "defibpaddles[wielded]_cooldown"
- if(iscarbon(loc))
- var/mob/living/carbon/C = loc
- C.update_inv_hands()
/obj/item/twohanded/shockpaddles/suicide_act(mob/user)
user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -373,7 +363,7 @@
return
defib.on = FALSE
forceMove(defib)
- defib.update_icon()
+ defib.update_power()
/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, mob/living/carbon/M, obj/O)
if(!req_defib)
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index a01fc5e404..9adc93a4da 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -41,6 +41,11 @@ GLOBAL_LIST_EMPTY(PDAs)
var/mode = 0 //Controls what menu the PDA will display. 0 is hub; the rest are either built in or based on cartridge.
var/list/overlays_icons = list('icons/obj/pda_alt.dmi' = list("pda-r", "screen_default", "id_overlay", "insert_overlay", "light_overlay", "pai_overlay"))
var/current_overlays = PDA_STANDARD_OVERLAYS
+
+ //variables exclusively used on 'update_overlays' (which should never be called directly, and 'update_icon' doesn't use args anyway)
+ var/new_overlays = FALSE
+ var/new_alert = FALSE
+
var/font_index = 0 //This int tells DM which font is currently selected and lets DM know when the last font has been selected so that it can cycle back to the first font when "toggle font" is pressed again.
var/font_mode = "font-family:monospace;" //The currently selected font.
var/background_color = "#808000" //The currently selected background color.
@@ -123,7 +128,8 @@ GLOBAL_LIST_EMPTY(PDAs)
inserted_item = new inserted_item(src)
else
inserted_item = new /obj/item/pen(src)
- update_icon(FALSE, TRUE)
+ new_overlays = TRUE
+ update_icon()
/obj/item/pda/CtrlShiftClick(mob/living/user)
. = ..()
@@ -144,7 +150,8 @@ GLOBAL_LIST_EMPTY(PDAs)
if(QDELETED(src) || isnull(new_icon) || new_icon == icon || !M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
icon = new_icon
- update_icon(FALSE, TRUE)
+ new_overlays = TRUE
+ update_icon()
to_chat(M, "[src] is now skinned as '[choice]'.")
/obj/item/pda/proc/set_new_overlays()
@@ -188,7 +195,8 @@ GLOBAL_LIST_EMPTY(PDAs)
var/pref_skin = GLOB.pda_reskins[C.prefs.pda_skin]
if(icon != pref_skin)
icon = pref_skin
- update_icon(FALSE, TRUE)
+ new_overlays = TRUE
+ update_icon()
equipped = TRUE
/obj/item/pda/proc/update_label()
@@ -215,25 +223,27 @@ GLOBAL_LIST_EMPTY(PDAs)
return TRUE
return FALSE
-/obj/item/pda/update_icon(alert = FALSE, new_overlays = FALSE)
+/obj/item/pda/update_overlays()
+ . = ..()
if(new_overlays)
set_new_overlays()
- cut_overlays()
- add_overlay(alert ? current_overlays[PDA_OVERLAY_ALERT] : current_overlays[PDA_OVERLAY_SCREEN])
+ . += new_alert ? current_overlays[PDA_OVERLAY_ALERT] : current_overlays[PDA_OVERLAY_SCREEN]
var/mutable_appearance/overlay = new()
overlay.pixel_x = overlays_x_offset
if(id)
overlay.icon_state = current_overlays[PDA_OVERLAY_ID]
- add_overlay(new /mutable_appearance(overlay))
+ . += new /mutable_appearance(overlay)
if(inserted_item)
overlay.icon_state = current_overlays[PDA_OVERLAY_ITEM]
- add_overlay(new /mutable_appearance(overlay))
+ . += new /mutable_appearance(overlay)
if(fon)
overlay.icon_state = current_overlays[PDA_OVERLAY_LIGHT]
- add_overlay(new /mutable_appearance(overlay))
+ . += new /mutable_appearance(overlay)
if(pai)
overlay.icon_state = "[current_overlays[PDA_OVERLAY_PAI]][pai.pai ? "" : "_off"]"
- add_overlay(new /mutable_appearance(overlay))
+ . += new /mutable_appearance(overlay)
+ new_overlays = FALSE
+ new_alert = FALSE
/obj/item/pda/MouseDrop(mob/over, src_location, over_location)
var/mob/M = usr
@@ -849,6 +859,7 @@ GLOBAL_LIST_EMPTY(PDAs)
to_chat(L, "[icon2html(src)] Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], [inbound_message] (Reply) (BLOCK/UNBLOCK)")
+ new_alert = TRUE
update_icon(TRUE)
/obj/item/pda/proc/send_to_all(mob/living/U)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 82644cb0fe..bf023c2c07 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -454,7 +454,7 @@
on = FALSE
update_icon()
-/obj/item/flashlight/glowstick/update_icon()
+/obj/item/flashlight/glowstick/update_icon_state()
item_state = "glowstick"
cut_overlays()
if(!fuel)
diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm
index 6168e2dabe..9eb51ffaeb 100644
--- a/code/game/objects/items/devices/geiger_counter.dm
+++ b/code/game/objects/items/devices/geiger_counter.dm
@@ -87,27 +87,25 @@
. += "The last radiation amount detected was [last_tick_amount]"
-/obj/item/geiger_counter/update_icon()
+/obj/item/geiger_counter/update_icon_state()
if(!scanning)
icon_state = "geiger_off"
- return 1
- if(obj_flags & EMAGGED)
+ else if(obj_flags & EMAGGED)
icon_state = "geiger_on_emag"
- return 1
- switch(radiation_count)
- if(-INFINITY to RAD_LEVEL_NORMAL)
- icon_state = "geiger_on_1"
- if(RAD_LEVEL_NORMAL + 1 to RAD_LEVEL_MODERATE)
- icon_state = "geiger_on_2"
- if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH)
- icon_state = "geiger_on_3"
- if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH)
- icon_state = "geiger_on_4"
- if(RAD_LEVEL_VERY_HIGH + 1 to RAD_LEVEL_CRITICAL)
- icon_state = "geiger_on_4"
- if(RAD_LEVEL_CRITICAL + 1 to INFINITY)
- icon_state = "geiger_on_5"
- ..()
+ else
+ switch(radiation_count)
+ if(-INFINITY to RAD_LEVEL_NORMAL)
+ icon_state = "geiger_on_1"
+ if(RAD_LEVEL_NORMAL + 1 to RAD_LEVEL_MODERATE)
+ icon_state = "geiger_on_2"
+ if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH)
+ icon_state = "geiger_on_3"
+ if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH)
+ icon_state = "geiger_on_4"
+ if(RAD_LEVEL_VERY_HIGH + 1 to RAD_LEVEL_CRITICAL)
+ icon_state = "geiger_on_4"
+ if(RAD_LEVEL_CRITICAL + 1 to INFINITY)
+ icon_state = "geiger_on_5"
/obj/item/geiger_counter/proc/update_sound()
var/datum/looping_sound/geiger/loop = soundloop
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 30eaca2ba2..bee59b254c 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -158,7 +158,7 @@
/obj/item/lightreplacer/attack_self(mob/user)
to_chat(user, status_string())
-/obj/item/lightreplacer/update_icon()
+/obj/item/lightreplacer/update_icon_state()
icon_state = "lightreplacer[(obj_flags & EMAGGED ? 1 : 0)]"
/obj/item/lightreplacer/proc/status_string()
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 65c3a96572..63092b5a13 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -67,7 +67,7 @@
to_chat(user, "You clear the wired connection from the multitool.")
update_icon()
-/obj/item/multitool/update_icon()
+/obj/item/multitool/update_icon_state()
if(selected_io)
icon_state = "multitool_red"
else
@@ -149,7 +149,7 @@
/obj/item/multitool/ai_detect/ui_action_click()
return
-/obj/item/multitool/ai_detect/update_icon()
+/obj/item/multitool/ai_detect/update_icon_state()
if(selected_io)
icon_state = "multitool_red"
else
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index ba877f1dd7..352c998699 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -26,7 +26,7 @@
var/obj/structure/cable/attached // the attached cable
-/obj/item/powersink/update_icon()
+/obj/item/powersink/update_icon_state()
icon_state = "powersink[mode == OPERATING]"
/obj/item/powersink/proc/set_mode(value)
diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm
index 33f839fa39..33f6dc877a 100644
--- a/code/game/objects/items/devices/quantum_keycard.dm
+++ b/code/game/objects/items/devices/quantum_keycard.dm
@@ -27,7 +27,7 @@
qpad = null
return TRUE
-/obj/item/quantum_keycard/update_icon()
+/obj/item/quantum_keycard/update_icon_state()
if(qpad)
icon_state = "quantum_keycard_on"
else
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index fc8679aa03..78a1a3bfda 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -83,7 +83,7 @@
eject(usr)
-/obj/item/taperecorder/update_icon()
+/obj/item/taperecorder/update_icon_state()
if(!mytape)
icon_state = "taperecorder_empty"
else if(recording)
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index b1dd9be376..f572d0a841 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -134,8 +134,9 @@
w_class = WEIGHT_CLASS_SMALL
sides = 100
-/obj/item/dice/d100/update_icon()
- return
+/obj/item/dice/d100/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_blocker)
/obj/item/dice/eightbd20
name = "strange d20"
@@ -144,8 +145,9 @@
sides = 20
special_faces = list("It is certain","It is decidedly so","Without a doubt","Yes, definitely","You may rely on it","As I see it, yes","Most likely","Outlook good","Yes","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful")
-/obj/item/dice/eightbd20/update_icon()
- return
+/obj/item/dice/eightbd20/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_blocker)
/obj/item/dice/fourdd6
name = "4d d6"
@@ -154,8 +156,9 @@
sides = 48
special_faces = list("Cube-Side: 1-1","Cube-Side: 1-2","Cube-Side: 1-3","Cube-Side: 1-4","Cube-Side: 1-5","Cube-Side: 1-6","Cube-Side: 2-1","Cube-Side: 2-2","Cube-Side: 2-3","Cube-Side: 2-4","Cube-Side: 2-5","Cube-Side: 2-6","Cube-Side: 3-1","Cube-Side: 3-2","Cube-Side: 3-3","Cube-Side: 3-4","Cube-Side: 3-5","Cube-Side: 3-6","Cube-Side: 4-1","Cube-Side: 4-2","Cube-Side: 4-3","Cube-Side: 4-4","Cube-Side: 4-5","Cube-Side: 4-6","Cube-Side: 5-1","Cube-Side: 5-2","Cube-Side: 5-3","Cube-Side: 5-4","Cube-Side: 5-5","Cube-Side: 5-6","Cube-Side: 6-1","Cube-Side: 6-2","Cube-Side: 6-3","Cube-Side: 6-4","Cube-Side: 6-5","Cube-Side: 6-6","Cube-Side: 7-1","Cube-Side: 7-2","Cube-Side: 7-3","Cube-Side: 7-4","Cube-Side: 7-5","Cube-Side: 7-6","Cube-Side: 8-1","Cube-Side: 8-2","Cube-Side: 8-3","Cube-Side: 8-4","Cube-Side: 8-5","Cube-Side: 8-6")
-/obj/item/dice/fourdd6/update_icon()
- return
+/obj/item/dice/fourdd6/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_blocker)
/obj/item/dice/attack_self(mob/user)
diceroll(user)
@@ -187,9 +190,9 @@
else if(!src.throwing) //Dice was thrown and is coming to rest
visible_message("[src] rolls to a stop, landing on [result]. [comment]")
-/obj/item/dice/update_icon()
- cut_overlays()
- add_overlay("[src.icon_state]-[src.result]")
+/obj/item/dice/update_overlays()
+ . = ..()
+ . += "[icon_state]-[result]"
/obj/item/dice/microwave_act(obj/machinery/microwave/M)
if(can_be_rigged)
diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm
index e307b9d626..b0882b6e5d 100644
--- a/code/game/objects/items/flamethrower.dm
+++ b/code/game/objects/items/flamethrower.dm
@@ -27,6 +27,10 @@
var/igniter_type = /obj/item/assembly/igniter
trigger_guard = TRIGGER_GUARD_NORMAL
+/obj/item/flamethrower/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+
/obj/item/flamethrower/Destroy()
if(weldtool)
qdel(weldtool)
@@ -48,22 +52,17 @@
if(isturf(location)) //start a fire if possible
igniter.flamethrower_process(location)
+/obj/item/flamethrower/update_icon_state()
+ item_state = "flamethrower_[lit]"
-/obj/item/flamethrower/update_icon()
- cut_overlays()
+/obj/item/flamethrower/update_overlays()
+ . = ..()
if(igniter)
- add_overlay("+igniter[status]")
+ . += "+igniter[status]"
if(ptank)
- add_overlay("+ptank")
+ . += "+ptank"
if(lit)
- add_overlay("+lit")
- item_state = "flamethrower_1"
- else
- item_state = "flamethrower_0"
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
- return
+ . += "+lit"
/obj/item/flamethrower/afterattack(atom/target, mob/user, flag)
. = ..()
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index 75e4e0b477..eaecae5a92 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -158,7 +158,7 @@
user.gib(1, 1)
qdel(src)
-/obj/item/grenade/plastic/update_icon()
+/obj/item/grenade/plastic/update_icon_state()
if(nadeassembly)
icon_state = "[item_state]1"
else
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index d942c6d22b..ee25cbb985 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -128,9 +128,6 @@
item_color = param_color || item_color || pick(cable_colors)
if(cable_colors[item_color])
item_color = cable_colors[item_color]
- update_icon()
-
-/obj/item/restraints/handcuffs/cable/update_icon()
color = null
add_atom_colour(item_color, FIXED_COLOUR_PRIORITY)
diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm
index daed8ccf80..5f74830c99 100644
--- a/code/game/objects/items/hot_potato.dm
+++ b/code/game/objects/items/hot_potato.dm
@@ -153,7 +153,7 @@
colorize(null)
active = FALSE
-/obj/item/hot_potato/update_icon()
+/obj/item/hot_potato/update_icon_state()
icon_state = active? icon_on : icon_off
/obj/item/hot_potato/syndicate
diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm
index c1734cb24e..481f1a4181 100644
--- a/code/game/objects/items/implants/implantcase.dm
+++ b/code/game/objects/items/implants/implantcase.dm
@@ -10,18 +10,14 @@
throw_range = 5
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/glass=500)
- var/obj/item/implant/imp = null
+ var/obj/item/implant/imp
var/imp_type
-
-/obj/item/implantcase/update_icon()
+/obj/item/implantcase/update_icon_state()
if(imp)
icon_state = "implantcase-[imp.item_color]"
- reagents = imp.reagents
else
icon_state = "implantcase-0"
- reagents = null
-
/obj/item/implantcase/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/pen))
@@ -46,6 +42,7 @@
imp = I.imp
I.imp = null
update_icon()
+ reagents = imp.reagents
I.update_icon()
else
if(imp)
@@ -54,6 +51,7 @@
imp.forceMove(I)
I.imp = imp
imp = null
+ reagents = null
update_icon()
I.update_icon()
diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm
index 46a6cb2c35..3ea27c84bb 100644
--- a/code/game/objects/items/implants/implantchair.dm
+++ b/code/game/objects/items/implants/implantchair.dm
@@ -96,16 +96,17 @@
visible_message("[M] has been implanted by [src].")
return TRUE
-/obj/machinery/implantchair/update_icon()
+/obj/machinery/implantchair/update_icon_state()
icon_state = initial(icon_state)
if(state_open)
icon_state += "_open"
if(occupant)
icon_state += "_occupied"
+
+/obj/machinery/implantchair/update_overlays()
+ . = ..()
if(ready)
- add_overlay("ready")
- else
- cut_overlays()
+ . += "ready"
/obj/machinery/implantchair/proc/replenish()
if(ready_implants < max_implants)
diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm
index 414bb3ea69..b57ffa27c0 100644
--- a/code/game/objects/items/implants/implanter.dm
+++ b/code/game/objects/items/implants/implanter.dm
@@ -14,13 +14,12 @@
var/imp_type = null
-/obj/item/implanter/update_icon()
+/obj/item/implanter/update_icon_state()
if(imp)
icon_state = "implanter1"
else
icon_state = "implanter0"
-
/obj/item/implanter/attack(mob/living/M, mob/user)
if(!istype(M))
return
diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm
index c49e4d8d42..7c863017a1 100644
--- a/code/game/objects/items/implants/implantpad.dm
+++ b/code/game/objects/items/implants/implantpad.dm
@@ -18,7 +18,7 @@
if(case)
. += "Alt-click [src] to remove the inserted implant case."
-/obj/item/implantpad/update_icon()
+/obj/item/implantpad/update_icon_state()
icon_state = "implantpad-[case ? TRUE : FALSE]"
/obj/item/implantpad/AltClick(mob/user)
diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm
index 079e0d79e9..8a596b2e6e 100644
--- a/code/game/objects/items/inducer.dm
+++ b/code/game/objects/items/inducer.dm
@@ -163,13 +163,14 @@
if(opened)
. += "Its battery compartment is open."
-/obj/item/inducer/update_icon()
- cut_overlays()
- if(opened)
- if(!cell)
- add_overlay("inducer-nobat")
- else
- add_overlay("inducer-bat")
+/obj/item/inducer/update_overlays()
+ . = ..()
+ if(!opened)
+ return
+ if(!cell)
+ . += "inducer-nobat"
+ else
+ . += "inducer-bat"
/obj/item/inducer/sci
icon_state = "inducer-sci"
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 3ca489542f..405e3737d0 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -259,6 +259,10 @@
light_color = "#37FFF7"
actions_types = list()
+/obj/item/melee/transforming/energy/sword/cx/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+
/obj/item/melee/transforming/energy/sword/cx/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
altafterattack(A, user, TRUE, params)
return TRUE
@@ -301,7 +305,8 @@
if(!supress_message_text)
to_chat(user, "[src] [active ? "is now active":"can now be concealed"].")
-/obj/item/melee/transforming/energy/sword/cx/update_icon()
+/obj/item/melee/transforming/energy/sword/cx/update_overlays()
+ . = ..()
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "cxsword_blade")
var/mutable_appearance/gem_overlay = mutable_appearance(icon, "cxsword_gem")
@@ -309,15 +314,10 @@
blade_overlay.color = light_color
gem_overlay.color = light_color
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(gem_overlay)
+ . += gem_overlay
if(active)
- add_overlay(blade_overlay)
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
+ . += blade_overlay
/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user)
. = ..()
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index f6f1b54222..6d2821398d 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -453,12 +453,10 @@
held_sausage = null
update_icon()
-/obj/item/melee/roastingstick/update_icon()
+/obj/item/melee/roastingstick/update_overlays()
. = ..()
- cut_overlays()
if (held_sausage)
- var/mutable_appearance/sausage = mutable_appearance(icon, "roastingstick_sausage")
- add_overlay(sausage)
+ . += mutable_appearance(icon, "roastingstick_sausage")
/obj/item/melee/roastingstick/proc/extend(user)
to_chat(user, "You extend [src].")
diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm
index 5f49f6b06d..9d9409acf0 100644
--- a/code/game/objects/items/pet_carrier.dm
+++ b/code/game/objects/items/pet_carrier.dm
@@ -143,14 +143,16 @@
update_icon()
remove_occupant(user)
-/obj/item/pet_carrier/update_icon()
- cut_overlay("unlocked")
- cut_overlay("locked")
+/obj/item/pet_carrier/update_icon_state()
if(open)
icon_state = initial(icon_state)
else
icon_state = "pet_carrier_[!occupants.len ? "closed" : "occupied"]"
- add_overlay("[locked ? "" : "un"]locked")
+
+/obj/item/pet_carrier/update_overlays()
+ . = ..()
+ if(!open)
+ . += "[locked ? "" : "un"]locked"
/obj/item/pet_carrier/MouseDrop(atom/over_atom)
if(isopenturf(over_atom) && usr.canUseTopic(src, BE_CLOSE, ismonkey(usr)) && usr.Adjacent(over_atom) && open && occupants.len)
diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm
index 57f247cdb2..65eb7ab658 100644
--- a/code/game/objects/items/pinpointer.dm
+++ b/code/game/objects/items/pinpointer.dm
@@ -49,29 +49,29 @@
/obj/item/pinpointer/proc/scan_for_target()
return
-/obj/item/pinpointer/update_icon()
- cut_overlays()
+/obj/item/pinpointer/update_overlays()
+ . = ..()
if(!active)
return
if(!target)
- add_overlay("pinon[alert ? "alert" : ""]null")
+ . += "pinon[alert ? "alert" : ""]null"
return
var/turf/here = get_turf(src)
var/turf/there = get_turf(target)
if(!here || !there || here.z != there.z)
- add_overlay("pinon[alert ? "alert" : ""]null")
+ . += "pinon[alert ? "alert" : ""]null"
return
if(get_dist_euclidian(here,there) <= minimum_range)
- add_overlay("pinon[alert ? "alert" : ""]direct")
+ . += "pinon[alert ? "alert" : ""]direct"
else
setDir(get_dir(here, there))
switch(get_dist(here, there))
if(1 to 8)
- add_overlay("pinon[alert ? "alert" : "close"]")
+ . += "pinon[alert ? "alert" : "close"]"
if(9 to 16)
- add_overlay("pinon[alert ? "alert" : "medium"]")
+ . += "pinon[alert ? "alert" : "medium"]"
if(16 to INFINITY)
- add_overlay("pinon[alert ? "alert" : "far"]")
+ . += "pinon[alert ? "alert" : "far"]"
/obj/item/pinpointer/crew // A replacement for the old crew monitoring consoles
name = "crew pinpointer"
diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm
index 630ca1bcbd..342f756ffc 100644
--- a/code/game/objects/items/pneumaticCannon.dm
+++ b/code/game/objects/items/pneumaticCannon.dm
@@ -241,11 +241,11 @@
tank = thetank
update_icon()
-/obj/item/pneumatic_cannon/update_icon()
- cut_overlays()
+/obj/item/pneumatic_cannon/update_overlays()
+ . = ..()
if(!tank)
return
- add_overlay(tank.icon_state)
+ . += tank.icon_state
/obj/item/pneumatic_cannon/proc/fill_with_type(type, amount)
if(!ispath(type, /obj) && !ispath(type, /mob))
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index 7e718a4ded..d3e966f2fa 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -151,11 +151,7 @@
var/static/list/charge_machines = typecacheof(list(/obj/machinery/cell_charger, /obj/machinery/recharger, /obj/machinery/recharge_station, /obj/machinery/mech_bay_recharge_port))
var/static/list/charge_items = typecacheof(list(/obj/item/stock_parts/cell, /obj/item/gun/energy))
-/obj/item/borg/charger/Initialize()
- . = ..()
-
-/obj/item/borg/charger/update_icon()
- ..()
+/obj/item/borg/charger/update_icon_state()
icon_state = "charger_[mode]"
/obj/item/borg/charger/attack_self(mob/user)
@@ -593,7 +589,7 @@
update_icon()
to_chat(user, "You [active? "activate":"deactivate"] [src].")
-/obj/item/borg/projectile_dampen/update_icon()
+/obj/item/borg/projectile_dampen/update_icon_state()
icon_state = "[initial(icon_state)][active]"
/obj/item/borg/projectile_dampen/proc/activate_field()
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 88c8db5cdc..37d9e376a2 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -39,20 +39,20 @@
chest.cell = new /obj/item/stock_parts/cell/high/plus(chest)
..()
-/obj/item/robot_suit/update_icon()
- cut_overlays()
+/obj/item/robot_suit/update_overlays()
+ . = ..()
if(l_arm)
- add_overlay("[l_arm.icon_state]+o")
+ . += "[l_arm.icon_state]+o"
if(r_arm)
- add_overlay("[r_arm.icon_state]+o")
+ . += "[r_arm.icon_state]+o"
if(chest)
- add_overlay("[chest.icon_state]+o")
+ . += "[chest.icon_state]+o"
if(l_leg)
- add_overlay("[l_leg.icon_state]+o")
+ . += "[l_leg.icon_state]+o"
if(r_leg)
- add_overlay("[r_leg.icon_state]+o")
+ . += "[r_leg.icon_state]+o"
if(head)
- add_overlay("[head.icon_state]+o")
+ . += "[head.icon_state]+o"
/obj/item/robot_suit/proc/check_completion()
if(src.l_arm && src.r_arm)
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index b089dded00..56af03139a 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -364,12 +364,9 @@
to_chat(toggle_action.owner, "You activate the self-repair module.")
activate_sr()
-/obj/item/borg/upgrade/selfrepair/update_icon()
+/obj/item/borg/upgrade/selfrepair/update_icon_state()
if(toggle_action)
icon_state = "selfrepair_[on ? "on" : "off"]"
- for(var/X in actions)
- var/datum/action/A = X
- A.UpdateButtonIcon()
else
icon_state = "cyborg_upgrade5"
diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm
index 86f0ad4936..4c64ed9dd4 100644
--- a/code/game/objects/items/singularityhammer.dm
+++ b/code/game/objects/items/singularityhammer.dm
@@ -31,7 +31,7 @@
charged++
return
-/obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
+/obj/item/twohanded/singularityhammer/update_icon_state() //Currently only here to fuck with the on-mob icons.
icon_state = "mjollnir[wielded]"
return
@@ -110,6 +110,6 @@
if(isliving(hit_atom))
shock(hit_atom)
-/obj/item/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons.
+/obj/item/twohanded/mjollnir/update_icon_state() //Currently only here to fuck with the on-mob icons.
icon_state = "mjollnir[wielded]"
return
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index fb5adea3b0..e919f3fe02 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -35,9 +35,9 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
. = ..()
. += GLOB.rod_recipes
-/obj/item/stack/rods/update_icon()
+/obj/item/stack/rods/update_icon_state()
var/amount = get_amount()
- if((amount <= 5) && (amount > 0))
+ if(amount <= 5)
icon_state = "rods-[amount]"
else
icon_state = "rods"
@@ -77,8 +77,9 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
is_cyborg = 1
cost = 250
-/obj/item/stack/rods/cyborg/update_icon()
- return
+/obj/item/stack/rods/cyborg/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_blocker)
/obj/item/stack/rods/ten
amount = 10
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 131980e43a..f07b9bfd33 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -77,16 +77,15 @@
else
w_class = full_w_class
-/obj/item/stack/update_icon()
+/obj/item/stack/update_icon_state()
if(novariants)
- return ..()
+ return
if(amount <= (max_amount * (1/3)))
icon_state = initial(icon_state)
else if (amount <= (max_amount * (2/3)))
icon_state = "[initial(icon_state)]_2"
else
icon_state = "[initial(icon_state)]_3"
- ..()
/obj/item/stack/Destroy()
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 52a4ceeb01..e0bb27fb1c 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -57,14 +57,16 @@
playsound(loc, 'sound/items/eatfood.ogg', 50, 1, -1)
return (TOXLOSS)
-/obj/item/storage/bag/trash/update_icon()
- if(contents.len == 0)
- icon_state = "[initial(icon_state)]"
- else if(contents.len < 12)
- icon_state = "[initial(icon_state)]1"
- else if(contents.len < 21)
- icon_state = "[initial(icon_state)]2"
- else icon_state = "[initial(icon_state)]3"
+/obj/item/storage/bag/trash/update_icon_state()
+ switch(contents.len)
+ if(0)
+ icon_state = "[initial(icon_state)]"
+ if(0 to 11)
+ icon_state = "[initial(icon_state)]1"
+ if(11 to 20)
+ icon_state = "[initial(icon_state)]2"
+ else
+ icon_state = "[initial(icon_state)]3"
/obj/item/storage/bag/trash/cyborg
insertable = FALSE
@@ -355,10 +357,13 @@
M.DefaultCombatKnockdown(40)
update_icon()
-/obj/item/storage/bag/tray/update_icon()
- cut_overlays()
+/obj/item/storage/bag/tray/update_overlays()
+ . = ..()
for(var/obj/item/I in contents)
- add_overlay(new /mutable_appearance(I))
+ var/mutable_appearance/I_copy = new(I)
+ I_copy.plane = FLOAT_PLANE
+ I_copy.layer = FLOAT_LAYER
+ . += I_copy
/obj/item/storage/bag/tray/Entered()
. = ..()
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 829c89be0e..4e03d029a8 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -10,23 +10,21 @@
attack_verb = list("whipped", "lashed", "disciplined")
max_integrity = 300
var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding
- var/worn_overlays = FALSE //worn counterpart of the above.
+ var/onmob_overlays = FALSE //worn counterpart of the above.
/obj/item/storage/belt/suicide_act(mob/living/carbon/user)
user.visible_message("[user] begins belting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
return BRUTELOSS
-/obj/item/storage/belt/update_icon()
- cut_overlays()
+/obj/item/storage/belt/update_overlays()
+ . = ..()
if(content_overlays)
for(var/obj/item/I in contents)
- var/mutable_appearance/M = I.get_belt_overlay()
- add_overlay(M)
- ..()
+ . += I.get_belt_overlay()
/obj/item/storage/belt/worn_overlays(isinhands, icon_file, style_flags = NONE)
. = ..()
- if(!isinhands && worn_overlays)
+ if(!isinhands && onmob_overlays)
for(var/obj/item/I in contents)
. += I.get_worn_belt_overlay(icon_file)
@@ -34,6 +32,11 @@
. = ..()
update_icon()
+/obj/item/storage/belt/ComponentInitialize()
+ . = ..()
+ if(onmob_overlays)
+ AddElement(/datum/element/update_icon_updates_onmob)
+
/obj/item/storage/belt/utility
name = "toolbelt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
desc = "Holds tools."
@@ -769,7 +772,7 @@
item_state = "sheath"
w_class = WEIGHT_CLASS_BULKY
content_overlays = TRUE
- worn_overlays = TRUE
+ onmob_overlays = TRUE
var/list/fitting_swords = list(/obj/item/melee/sabre, /obj/item/melee/baton/stunsword)
var/starting_sword = /obj/item/melee/sabre
@@ -787,12 +790,6 @@
if(length(contents))
. += "Alt-click it to quickly draw the blade."
-/obj/item/storage/belt/sabre/update_icon()
- . = ..()
- if(isliving(loc))
- var/mob/living/L = loc
- L.regenerate_icons()
-
/obj/item/storage/belt/sabre/PopulateContents()
new starting_sword(src)
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index c4e6c57318..01a4f03108 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -50,11 +50,10 @@
user.visible_message("[user] beating [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
return BRUTELOSS
-/obj/item/storage/box/update_icon()
+/obj/item/storage/box/update_overlays()
. = ..()
if(illustration)
- cut_overlays()
- add_overlay(illustration)
+ . += illustration
/obj/item/storage/box/attack_self(mob/user)
..()
@@ -866,10 +865,11 @@
foldable = null
var/design = NODESIGN
-/obj/item/storage/box/papersack/update_icon()
+/obj/item/storage/box/papersack/update_icon_state()
if(contents.len == 0)
icon_state = "[item_state]"
- else icon_state = "[item_state]_closed"
+ else
+ icon_state = "[item_state]_closed"
/obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/pen))
diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm
index 92e09022b2..b4fe6b8f85 100644
--- a/code/game/objects/items/storage/fancy.dm
+++ b/code/game/objects/items/storage/fancy.dm
@@ -30,7 +30,7 @@
for(var/i = 1 to STR.max_items)
new spawn_type(src)
-/obj/item/storage/fancy/update_icon()
+/obj/item/storage/fancy/update_icon_state()
if(fancy_open)
icon_state = "[icon_type]box[contents.len]"
else
@@ -160,30 +160,31 @@
to_chat(user, "There are no [icon_type]s left in the pack.")
return TRUE
-/obj/item/storage/fancy/cigarettes/update_icon()
- if(fancy_open || !contents.len)
- cut_overlays()
- if(!contents.len)
- icon_state = "[initial(icon_state)]_empty"
+/obj/item/storage/fancy/cigarettes/update_icon_state()
+ if(!contents.len)
+ icon_state = "[initial(icon_state)]_empty"
+ else if(fancy_open)
+ icon_state = initial(icon_state)
+
+/obj/item/storage/fancy/cigarettes/update_overlays()
+ . = ..()
+ if(!fancy_open || !contents.len)
+ return
+ . *= "[icon_state]_open"
+ var/cig_position = 1
+ for(var/C in contents)
+ var/mutable_appearance/inserted_overlay = mutable_appearance(icon)
+
+ if(istype(C, /obj/item/lighter/greyscale))
+ inserted_overlay.icon_state = "lighter_in"
+ else if(istype(C, /obj/item/lighter))
+ inserted_overlay.icon_state = "zippo_in"
else
- icon_state = initial(icon_state)
- add_overlay("[icon_state]_open")
- var/cig_position = 1
- for(var/C in contents)
- var/mutable_appearance/inserted_overlay = mutable_appearance(icon)
+ inserted_overlay.icon_state = "cigarette"
- if(istype(C, /obj/item/lighter/greyscale))
- inserted_overlay.icon_state = "lighter_in"
- else if(istype(C, /obj/item/lighter))
- inserted_overlay.icon_state = "zippo_in"
- else
- inserted_overlay.icon_state = "cigarette"
-
- inserted_overlay.icon_state = "[inserted_overlay.icon_state]_[cig_position]"
- add_overlay(inserted_overlay)
- cig_position++
- else
- cut_overlays()
+ inserted_overlay.icon_state = "[inserted_overlay.icon_state]_[cig_position]"
+ . += inserted_overlay
+ cig_position++
/obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!ismob(M))
@@ -282,10 +283,10 @@
STR.max_items = 10
STR.can_hold = typecacheof(list(/obj/item/rollingpaper))
-/obj/item/storage/fancy/rollingpapers/update_icon()
- cut_overlays()
+/obj/item/storage/fancy/rollingpapers/update_overlays()
+ . = ..()
if(!contents.len)
- add_overlay("[icon_state]_empty")
+ . += "[icon_state]_empty"
/////////////
//CIGAR BOX//
@@ -306,21 +307,23 @@
STR.max_items = 5
STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette/cigar))
-/obj/item/storage/fancy/cigarettes/cigars/update_icon()
- cut_overlays()
+/obj/item/storage/fancy/cigarettes/cigars/update_icon_state()
if(fancy_open)
icon_state = "[initial(icon_state)]_open"
-
- var/cigar_position = 0 //to keep track of the pixel_x offset of each new overlay.
- for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents)
- var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]")
- cigar_overlay.pixel_x = 3 * cigar_position
- add_overlay(cigar_overlay)
- cigar_position++
-
else
icon_state = "[initial(icon_state)]"
+/obj/item/storage/fancy/cigarettes/cigars/update_overlays()
+ . = ..()
+ if(!fancy_open)
+ return
+ var/cigar_position = 0 //to keep track of the pixel_x offset of each new overlay.
+ for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents)
+ var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]")
+ cigar_overlay.pixel_x = 3 * cigar_position
+ . += cigar_overlay
+ cigar_position++
+
/obj/item/storage/fancy/cigarettes/cigars/cohiba
name = "\improper Cohiba Robusto cigar case"
desc = "A case of imported Cohiba cigars, renowned for their strong flavor."
@@ -382,4 +385,4 @@
icon_state = "silver ringbox"
icon_type = "silver ring"
spawn_type = /obj/item/clothing/gloves/ring/silver
-
+
diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm
index 454942f00b..5b6089d430 100644
--- a/code/game/objects/items/storage/lockbox.dm
+++ b/code/game/objects/items/storage/lockbox.dm
@@ -132,29 +132,34 @@
for(var/i in 1 to 3)
new /obj/item/clothing/accessory/medal/conduct(src)
-/obj/item/storage/lockbox/medal/update_icon()
- cut_overlays()
+/obj/item/storage/lockbox/medal/update_icon_state()
var/locked = SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED)
if(locked)
icon_state = "medalbox+l"
- open = FALSE
else
icon_state = "medalbox"
if(open)
icon_state += "open"
if(broken)
icon_state += "+b"
- if(contents && open)
- for (var/i in 1 to contents.len)
- var/obj/item/clothing/accessory/medal/M = contents[i]
- var/mutable_appearance/medalicon = mutable_appearance(initial(icon), M.medaltype)
- if(i > 1 && i <= 5)
- medalicon.pixel_x += ((i-1)*3)
- else if(i > 5)
- medalicon.pixel_y -= 7
- medalicon.pixel_x -= 2
- medalicon.pixel_x += ((i-6)*3)
- add_overlay(medalicon)
+
+/obj/item/storage/lockbox/medal/update_overlays()
+ . = ..()
+ if(!contents || !open)
+ return
+ var/locked = SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED)
+ if(locked)
+ return
+ for (var/i in 1 to contents.len)
+ var/obj/item/clothing/accessory/medal/M = contents[i]
+ var/mutable_appearance/medalicon = mutable_appearance(initial(icon), M.medaltype)
+ if(i > 1 && i <= 5)
+ medalicon.pixel_x += ((i-1)*3)
+ else if(i > 5)
+ medalicon.pixel_y -= 7
+ medalicon.pixel_x -= 2
+ medalicon.pixel_x += ((i-6)*3)
+ . += medalicon
/obj/item/storage/lockbox/medal/sec
name = "security medal box"
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index f1db164b31..4f7948c738 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -33,14 +33,11 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
. = ..()
update_icon()
-/obj/item/storage/toolbox/update_icon()
- ..()
- cut_overlays()
- if(length(blood_DNA))
- add_blood_overlay()
+/obj/item/storage/toolbox/update_overlays()
+ . = ..()
if(has_latches)
var/icon/I = icon('icons/obj/storage.dmi', latches)
- add_overlay(I)
+ . += I
/obj/item/storage/toolbox/suicide_act(mob/user)
diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm
index 2dbe42c159..27cd9c8908 100644
--- a/code/game/objects/items/storage/wallets.dm
+++ b/code/game/objects/items/storage/wallets.dm
@@ -66,7 +66,7 @@
. = ..()
refreshID()
-/obj/item/storage/wallet/update_icon()
+/obj/item/storage/wallet/update_icon_state()
var/new_state = "wallet"
if(front_id)
new_state = "wallet_id"
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 191b5ce73b..78ba6d4f5f 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -84,7 +84,7 @@
/obj/item/melee/baton/process()
deductcharge(round(hitcost * STUNBATON_DEPLETION_RATE), FALSE, FALSE)
-/obj/item/melee/baton/update_icon()
+/obj/item/melee/baton/update_icon_state()
if(status)
icon_state = "[initial(name)]_active"
else if(!cell)
@@ -195,7 +195,7 @@
L.adjustStaminaLoss(stunpwr)
else
L.drop_all_held_items() //no knockdown/stamina damage, instead disarm.
-
+
L.apply_effect(EFFECT_STUTTER, stamforce)
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
if(user)
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index 9b9fae7c8f..6fbf9316ed 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -246,7 +246,7 @@
QDEL_NULL(sliver)
return ..()
-/obj/item/hemostat/supermatter/update_icon()
+/obj/item/hemostat/supermatter/update_icon_state()
if(sliver)
icon_state = "supermatter_tongs_loaded"
else
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index a36314ccb7..0d2892cb4a 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -45,13 +45,13 @@
if(prob(75))
pixel_y = rand(0, 16)
-/obj/item/screwdriver/update_icon()
+/obj/item/screwdriver/update_overlays()
+ . = ..()
if(!random_color) //icon override
return
- cut_overlays()
var/mutable_appearance/base_overlay = mutable_appearance(icon, "screwdriver_screwybits")
base_overlay.appearance_flags = RESET_COLOR
- add_overlay(base_overlay)
+ . += base_overlay
/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
. = list()
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index b172cc25dd..9560f7fab3 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -40,24 +40,24 @@
reagents.add_reagent(/datum/reagent/fuel, max_fuel)
update_icon()
+/obj/item/weldingtool/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
-/obj/item/weldingtool/proc/update_torch()
+/obj/item/weldingtool/update_icon_state()
if(welding)
- add_overlay("[initial(icon_state)]-on")
item_state = "[initial(item_state)]1"
else
item_state = "[initial(item_state)]"
-
-/obj/item/weldingtool/update_icon()
- cut_overlays()
+/obj/item/weldingtool/update_overlays()
+ . = ..()
if(change_icons)
var/ratio = get_fuel() / max_fuel
ratio = CEILING(ratio*4, 1) * 25
- add_overlay("[initial(icon_state)][ratio]")
- update_torch()
- return
-
+ . += "[initial(icon_state)][ratio]"
+ if(welding)
+ . += "[initial(icon_state)]-on"
/obj/item/weldingtool/process()
switch(welding)
@@ -177,11 +177,6 @@
if(get_fuel() <= 0 && welding)
switched_on(user)
update_icon()
- //mob icon update
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands(0)
-
return 0
return 1
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index 37d8fe8824..ac5a02b9fc 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -40,13 +40,13 @@
add_atom_colour(wirecutter_colors[our_color], FIXED_COLOUR_PRIORITY)
update_icon()
-/obj/item/wirecutters/update_icon()
+/obj/item/wirecutters/update_overlays()
+ . = ..()
if(!random_color) //icon override
return
- cut_overlays()
var/mutable_appearance/base_overlay = mutable_appearance(icon, "cutters_cutty_thingy")
base_overlay.appearance_flags = RESET_COLOR
- add_overlay(base_overlay)
+ . += base_overlay
/obj/item/wirecutters/attack(mob/living/carbon/C, mob/user)
if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable))
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 0d6797175f..be923be2b9 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -44,9 +44,13 @@
item_state = "balloon-empty"
-/obj/item/toy/balloon/New()
+/obj/item/toy/balloon/Initialize()
+ . = ..()
create_reagents(10)
- ..()
+
+/obj/item/toy/balloon/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
/obj/item/toy/balloon/attack(mob/living/carbon/human/M, mob/user)
return
@@ -102,7 +106,7 @@
icon_state = "burst"
qdel(src)
-/obj/item/toy/balloon/update_icon()
+/obj/item/toy/balloon/update_icon_state()
if(src.reagents.total_volume >= 1)
icon_state = "waterballoon"
item_state = "balloon"
@@ -200,8 +204,8 @@
custom_materials = list(/datum/material/iron=10, /datum/material/glass=10)
var/amount_left = 7
-/obj/item/toy/ammo/gun/update_icon()
- src.icon_state = text("357OLD-[]", src.amount_left)
+/obj/item/toy/ammo/gun/update_icon_state()
+ icon_state = "357OLD-[amount_left]"
/obj/item/toy/ammo/gun/examine(mob/user)
. = ..()
@@ -319,7 +323,8 @@
add_fingerprint(user)
-/obj/item/toy/sword/cx/update_icon()
+/obj/item/toy/sword/cx/update_overlays()
+ . = ..()
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "cxsword_blade")
var/mutable_appearance/gem_overlay = mutable_appearance(icon, "cxsword_gem")
@@ -327,15 +332,10 @@
blade_overlay.color = light_color
gem_overlay.color = light_color
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(gem_overlay)
+ . += gem_overlay
if(active)
- add_overlay(blade_overlay)
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
+ . += blade_overlay
/obj/item/toy/sword/cx/AltClick(mob/living/user)
. = ..()
@@ -843,15 +843,16 @@
user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.")
update_icon()
-/obj/item/toy/cards/deck/update_icon()
- if(cards.len > 26)
- icon_state = "deck_[deckstyle]_full"
- else if(cards.len > 10)
- icon_state = "deck_[deckstyle]_half"
- else if(cards.len > 0)
- icon_state = "deck_[deckstyle]_low"
- else if(cards.len == 0)
- icon_state = "deck_[deckstyle]_empty"
+/obj/item/toy/cards/deck/update_icon_state()
+ switch(cards.len)
+ if(27 to INFINITY)
+ icon_state = "deck_[deckstyle]_full"
+ if(11 to 27)
+ icon_state = "deck_[deckstyle]_half"
+ if(1 to 11)
+ icon_state = "deck_[deckstyle]_low"
+ else
+ icon_state = "deck_[deckstyle]_empty"
/obj/item/toy/cards/deck/attack_self(mob/user)
if(cooldown < world.time - 50)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index 06b81a424d..23bd6ed359 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -97,9 +97,6 @@
return
unwield(user)
-/obj/item/twohanded/update_icon()
- return
-
/obj/item/twohanded/attack_self(mob/user)
. = ..()
if(wielded) //Trying to unwield it
@@ -241,7 +238,7 @@
. = ..()
AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools
-/obj/item/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons.
+/obj/item/twohanded/fireaxe/update_icon_state() //Currently only here to fuck with the on-mob icons.
icon_state = "fireaxe[wielded]"
return
@@ -342,7 +339,7 @@
STOP_PROCESSING(SSobj, src)
. = ..()
-/obj/item/twohanded/dualsaber/update_icon()
+/obj/item/twohanded/dualsaber/update_icon_state()
if(wielded)
icon_state = "dualsaber[item_color][wielded]"
else
@@ -492,23 +489,9 @@
spinnable = FALSE
total_mass_on = 4
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain
- name = "\improper divine lightblade"
- desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
- force = 5
- force_unwielded = 5
- force_wielded = 20
- block_chance = 50
- armour_penetration = 0
- var/chaplain_spawnable = TRUE
- obj_flags = UNIQUE_RENAME
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain/Initialize()
+/obj/item/twohanded/dualsaber/hypereutactic/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect()
- return FALSE
+ AddElement(/datum/element/update_icon_updates_onmob)
/obj/item/twohanded/dualsaber/hypereutactic/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
altafterattack(A, user, TRUE, params)
@@ -519,7 +502,11 @@
user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].")
return TRUE
-/obj/item/twohanded/dualsaber/hypereutactic/update_icon()
+/obj/item/twohanded/dualsaber/hypereutactic/update_icon_state()
+ return
+
+/obj/item/twohanded/dualsaber/hypereutactic/update_overlays()
+ . = ..()
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "hypereutactic_blade")
var/mutable_appearance/gem_overlay = mutable_appearance(icon, "hypereutactic_gem")
@@ -527,15 +514,10 @@
blade_overlay.color = light_color
gem_overlay.color = light_color
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(gem_overlay)
+ . += gem_overlay
if(wielded)
- add_overlay(blade_overlay)
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
+ . += blade_overlay
clean_blood()
@@ -576,6 +558,24 @@
update_icon()
update_light()
+/obj/item/twohanded/dualsaber/hypereutactic/chaplain
+ name = "divine lightblade"
+ desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
+ force = 5
+ force_unwielded = 5
+ force_wielded = 20
+ block_chance = 50
+ armour_penetration = 0
+ var/chaplain_spawnable = TRUE
+ obj_flags = UNIQUE_RENAME
+
+/obj/item/twohanded/dualsaber/hypereutactic/chaplain/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
+
+/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect()
+ return FALSE
+
//spears
/obj/item/twohanded/spear
icon_state = "spearglass0"
@@ -639,7 +639,7 @@
if(explosive)
. += "Use in your hands to activate the attached explosive.
Alt-click to set your war cry.
Right-click in combat mode to wield"
-/obj/item/twohanded/spear/update_icon()
+/obj/item/twohanded/spear/update_icon_state()
if(explosive)
icon_state = "spearbomb[wielded]"
else
@@ -717,9 +717,10 @@
tool_behaviour = TOOL_SAW
toolspeed = 0.5
-/obj/item/twohanded/required/chainsaw/Initialize()
+/obj/item/twohanded/required/chainsaw/ComponentInitialize()
. = ..()
AddComponent(/datum/component/butchering, 30, 100, 0, 'sound/weapons/chainsawhit.ogg', TRUE)
+ AddElement(/datum/element/update_icon_updates_onmob)
/obj/item/twohanded/required/chainsaw/suicide_act(mob/living/carbon/user)
if(on)
@@ -738,7 +739,7 @@
to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
force = on ? force_on : initial(force)
throwforce = on ? force_on : force
- icon_state = "chainsaw_[on ? "on" : "off"]"
+ update_icon()
var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
butchering.butchering_enabled = on
@@ -747,11 +748,8 @@
else
hitsound = "swing_hit"
- if(src == user.get_active_held_item()) //update inhands
- user.update_inv_hands()
- for(var/X in actions)
- var/datum/action/A = X
- A.UpdateButtonIcon()
+/obj/item/twohanded/required/chainsaw/update_icon_state()
+ icon_state = "chainsaw_[on ? "on" : "off"]"
/obj/item/twohanded/required/chainsaw/get_dismemberment_chance()
if(wielded)
@@ -844,7 +842,7 @@
force_unwielded = 100
force_wielded = 500000 // Kills you DEAD.
-/obj/item/twohanded/pitchfork/update_icon()
+/obj/item/twohanded/pitchfork/update_icon_state()
icon_state = "pitchfork[wielded]"
/obj/item/twohanded/pitchfork/suicide_act(mob/user)
@@ -918,7 +916,7 @@
return 1
return 0
-/obj/item/twohanded/vibro_weapon/update_icon()
+/obj/item/twohanded/vibro_weapon/update_icon_state()
icon_state = "hfrequency[wielded]"
/*
@@ -930,7 +928,7 @@
desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters."
force_wielded = 23
-/obj/item/twohanded/fireaxe/boneaxe/update_icon()
+/obj/item/twohanded/fireaxe/boneaxe/update_icon_state()
icon_state = "bone_axe[wielded]"
/*
@@ -956,7 +954,7 @@
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
sharpness = IS_SHARP
-/obj/item/twohanded/bonespear/update_icon()
+/obj/item/twohanded/bonespear/update_icon_state()
icon_state = "bone_spear[wielded]"
/obj/item/twohanded/binoculars
@@ -1120,7 +1118,7 @@
turn_off(user)
add_fingerprint(user)
-/obj/item/twohanded/electrostaff/update_icon()
+/obj/item/twohanded/electrostaff/update_icon_state()
. = ..()
if(!wielded)
icon_state = "electrostaff_3"
@@ -1314,6 +1312,8 @@
target = A
else
target = A.loc
+ if(!isturf(target)) //read: Mob inventories.
+ return
else
target = user.loc
if (locate(/obj/structure/table) in target.contents)
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index a5857029f5..fae3625ccc 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -216,7 +216,7 @@
for(var/i in 1 to 3)
new /obj/item/clothing/suit/toggle/labcoat(src)
for(var/i in 1 to 3)
- new /obj/item/clothing/suit/toggle/labcoat/emt(src)
+ new /obj/item/clothing/suit/toggle/labcoat/paramedic(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/white(src)
for(var/i in 1 to 3)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
index c3a23cb171..ff3f4d8793 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
@@ -4,10 +4,10 @@
/obj/structure/closet/secure_closet/freezer/Destroy()
recursive_organ_check(src)
- ..()
+ return ..()
/obj/structure/closet/secure_closet/freezer/Initialize()
- ..()
+ . = ..()
recursive_organ_check(src)
/obj/structure/closet/secure_closet/freezer/open(mob/living/user)
@@ -17,14 +17,15 @@
return ..()
/obj/structure/closet/secure_closet/freezer/close(mob/living/user)
- if(..()) //if we actually closed the locker
+ . = ..()
+ if(.) //if we actually closed the locker
recursive_organ_check(src)
/obj/structure/closet/secure_closet/freezer/ex_act()
if(!jones)
jones = TRUE
else
- ..()
+ return ..()
/obj/structure/closet/secure_closet/freezer/kitchen
name = "kitchen Cabinet"
diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm
index 3a474f339c..dd2b9dfa18 100644
--- a/code/game/turfs/simulated/lava.dm
+++ b/code/game/turfs/simulated/lava.dm
@@ -23,6 +23,10 @@
/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
return
+/turf/open/lava/Melt()
+ to_be_destroyed = FALSE
+ return src
+
/turf/open/lava/acid_act(acidpwr, acid_volume)
return
diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm
index 83fade33b2..c8ea60c712 100644
--- a/code/game/turfs/simulated/river.dm
+++ b/code/game/turfs/simulated/river.dm
@@ -6,7 +6,7 @@
#define RIVERGEN_SAFETY_LOCK 1000000
-/proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/open/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors/unexplored, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y)
+/proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/open/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors/unexplored, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y, new_baseturfs)
var/list/river_nodes = list()
var/num_spawned = 0
var/list/possible_locs = block(locate(min_x, min_y, target_z), locate(max_x, max_y, target_z))
@@ -28,7 +28,7 @@
continue
W.connected = 1
var/turf/cur_turf = get_turf(W)
- cur_turf.ChangeTurf(turf_type, null, CHANGETURF_IGNORE_AIR)
+ cur_turf.ChangeTurf(turf_type, new_baseturfs, CHANGETURF_IGNORE_AIR)
var/turf/target_turf = get_turf(pick(river_nodes - W))
if(!target_turf)
break
@@ -57,7 +57,7 @@
cur_turf = get_step(cur_turf, cur_dir)
continue
else
- var/turf/river_turf = cur_turf.ChangeTurf(turf_type, null, CHANGETURF_IGNORE_AIR)
+ var/turf/river_turf = cur_turf.ChangeTurf(turf_type, new_baseturfs, CHANGETURF_IGNORE_AIR)
river_turf.Spread(25, 11, whitelist_area)
for(var/WP in river_nodes)
@@ -93,16 +93,16 @@
for(var/F in cardinal_turfs) //cardinal turfs are always changed but don't always spread
var/turf/T = F
- if(!istype(T, logged_turf_type) && T.ChangeTurf(type, null, CHANGETURF_IGNORE_AIR) && prob(probability))
+ if(!istype(T, logged_turf_type) && T.ChangeTurf(type, baseturfs, CHANGETURF_IGNORE_AIR) && prob(probability))
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
for(var/F in diagonal_turfs) //diagonal turfs only sometimes change, but will always spread if changed
var/turf/T = F
- if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type, null, CHANGETURF_IGNORE_AIR))
+ if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type, baseturfs, CHANGETURF_IGNORE_AIR))
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
else if(ismineralturf(T))
var/turf/closed/mineral/M = T
- M.ChangeTurf(M.turf_type, null, CHANGETURF_IGNORE_AIR)
+ M.ChangeTurf(M.turf_type, M.baseturfs, CHANGETURF_IGNORE_AIR)
#undef RANDOM_UPPER_X
diff --git a/code/modules/NTNet/relays.dm b/code/modules/NTNet/relays.dm
index 373f6451b9..0d855f15bb 100644
--- a/code/modules/NTNet/relays.dm
+++ b/code/modules/NTNet/relays.dm
@@ -35,7 +35,7 @@
return FALSE
return TRUE
-/obj/machinery/ntnet_relay/update_icon()
+/obj/machinery/ntnet_relay/update_icon_state()
if(is_operational())
icon_state = "bus"
else
diff --git a/code/modules/antagonists/blob/blob/powers.dm b/code/modules/antagonists/blob/blob/powers.dm
index aeb1392432..fe492831b8 100644
--- a/code/modules/antagonists/blob/blob/powers.dm
+++ b/code/modules/antagonists/blob/blob/powers.dm
@@ -321,7 +321,7 @@
set category = "Blob"
set name = "Blob Broadcast"
set desc = "Speak with your blob spores and blobbernauts as your mouthpieces."
- var/speak_text = input(src, "What would you like to say with your minions?", "Blob Broadcast", null) as text
+ var/speak_text = stripped_input(src, "What would you like to say with your minions?", "Blob Broadcast", null)
if(!speak_text)
return
else
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
index 0179c60ef1..e774cf4250 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
@@ -315,7 +315,7 @@
bloodsuckerdatum.handle_eat_human_food(food_nutrition)
-/datum/antagonist/bloodsucker/proc/handle_eat_human_food(var/food_nutrition) // Called from snacks.dm and drinks.dm
+/datum/antagonist/bloodsucker/proc/handle_eat_human_food(food_nutrition, puke_blood = TRUE, masquerade_override) // Called from snacks.dm and drinks.dm
set waitfor = FALSE
if(!owner.current || !iscarbon(owner.current))
return
@@ -324,14 +324,14 @@
C.nutrition -= food_nutrition
foodInGut += food_nutrition
// Already ate some bad clams? Then we can back out, because we're already sick from it.
- if (foodInGut != food_nutrition)
+ if(foodInGut != food_nutrition)
return
// Haven't eaten, but I'm in a Human Disguise.
- else if (poweron_masquerade)
+ else if(poweron_masquerade && !masquerade_override)
to_chat(C, "Your stomach turns, but your \"human disguise\" keeps the food down...for now.")
// Keep looping until we purge. If we have activated our Human Disguise, we ignore the food. But it'll come up eventually...
var/sickphase = 0
- while (foodInGut)
+ while(foodInGut)
sleep(50)
C.adjust_disgust(10 * sickphase)
// Wait an interval...
@@ -340,24 +340,29 @@
if(C.stat == DEAD)
return
// Put up disguise? Then hold off the vomit.
- if(poweron_masquerade)
+ if(poweron_masquerade && !masquerade_override)
if(sickphase > 0)
to_chat(C, "Your stomach settles temporarily. You regain your composure...for now.")
sickphase = 0
continue
switch(sickphase)
- if (1)
+ if(1)
to_chat(C, "You feel unwell. You can taste ash on your tongue.")
C.Stun(10)
- if (2)
+ if(2)
to_chat(C, "Your stomach turns. Whatever you ate tastes of grave dirt and brimstone.")
C.Dizzy(15)
C.Stun(13)
- if (3)
+ if(3)
to_chat(C, "You purge the food of the living from your viscera! You've never felt worse.")
- C.vomit(foodInGut * 4, foodInGut * 2, 0) // (var/lost_nutrition = 10, var/blood = 0, var/stun = 1, var/distance = 0, var/message = 1, var/toxic = 0)
- C.blood_volume = max(0, C.blood_volume - foodInGut * 2)
+ //Puke blood only if puke_blood is true, and loose some blood, else just puke normally.
+ if(puke_blood)
+ C.blood_volume = max(0, C.blood_volume - foodInGut * 2)
+ C.vomit(foodInGut * 4, foodInGut * 2, 0)
+ else
+ C.vomit(foodInGut * 4, FALSE, 0)
C.Stun(30)
//C.Dizzy(50)
foodInGut = 0
+ SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "vampdisgust", /datum/mood_event/bloodsucker_disgust)
sickphase ++
diff --git a/code/modules/antagonists/bloodsucker/powers/cloak.dm b/code/modules/antagonists/bloodsucker/powers/cloak.dm
index 23b35d1eaa..1bb7b02357 100644
--- a/code/modules/antagonists/bloodsucker/powers/cloak.dm
+++ b/code/modules/antagonists/bloodsucker/powers/cloak.dm
@@ -10,6 +10,7 @@
amToggle = TRUE
warn_constant_cost = TRUE
var/moveintent_was_run
+ var/runintent
var/walk_threshold = 0.4 // arbitrary number, to be changed. edit in last commit: this is fine after testing on box station for a bit
var/lum
@@ -31,23 +32,25 @@
var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
var/mob/living/user = owner
+ moveintent_was_run = (user.m_intent == MOVE_INTENT_RUN)
+
while(bloodsuckerdatum && ContinueActive(user))
// Pay Blood Toll (if awake)
owner.alpha = max(35, owner.alpha - min(75, 10 + 5 * level_current))
bloodsuckerdatum.AddBloodVolume(-0.2)
- moveintent_was_run = (user.m_intent == MOVE_INTENT_RUN)
+ runintent = (user.m_intent == MOVE_INTENT_RUN)
var/turf/T = get_turf(user)
lum = T.get_lumcount()
if(istype(owner.loc))
if(lum > walk_threshold)
- if(moveintent_was_run)
+ if(runintent)
user.toggle_move_intent()
ADD_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness")
if(lum < walk_threshold)
- if(!moveintent_was_run)
+ if(!runintent)
user.toggle_move_intent()
REMOVE_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness")
@@ -65,5 +68,8 @@
..()
REMOVE_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness")
user.alpha = 255
- if(!moveintent_was_run)
+
+ runintent = (user.m_intent == MOVE_INTENT_RUN)
+
+ if(!runintent && moveintent_was_run)
user.toggle_move_intent()
diff --git a/code/modules/antagonists/bloodsucker/powers/lunge.dm b/code/modules/antagonists/bloodsucker/powers/lunge.dm
index a8df8952ee..cc9363bbaf 100644
--- a/code/modules/antagonists/bloodsucker/powers/lunge.dm
+++ b/code/modules/antagonists/bloodsucker/powers/lunge.dm
@@ -7,7 +7,7 @@
button_icon_state = "power_lunge"
bloodcost = 10
cooldown = 120
- target_range = 5
+ target_range = 3
power_activates_immediately = TRUE
message_Trigger = "Whom will you ensnare within your grasp?"
must_be_capacitated = TRUE
@@ -62,7 +62,7 @@
addtimer(CALLBACK(owner, .proc/_walk, 0), 2 SECONDS)
target.playsound_local(get_turf(owner), 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // target-only telegraphing
owner.playsound_local(owner, 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // audio feedback to the user
- if(do_mob(owner, owner, 6, TRUE, TRUE))
+ if(do_mob(owner, owner, 7, TRUE, TRUE))
walk_towards(owner, T, 0.1, 10) // yes i know i shouldn't use this but i don't know how to work in anything better
if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(L, MOBILITY_STAND))
var/send_dir = get_dir(owner, T)
@@ -81,7 +81,7 @@
target.grabbedby(owner) // Taken from mutations.dm under changelings
target.grippedby(owner, instant = TRUE) //instant aggro grab
break
- sleep(i*3)
+ sleep(3)
/datum/action/bloodsucker/targeted/lunge/DeactivatePower(mob/living/user = owner, mob/living/target)
..() // activate = FALSE
diff --git a/code/modules/antagonists/bloodsucker/powers/mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
index f6c4020d39..d5354c1af9 100644
--- a/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
+++ b/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
@@ -11,7 +11,7 @@
button_icon_state = "power_mez"
bloodcost = 30
cooldown = 300
- target_range = 3
+ target_range = 2
power_activates_immediately = TRUE
message_Trigger = "Whom will you subvert to your will?"
must_be_capacitated = TRUE
@@ -73,7 +73,7 @@
to_chat(owner, "You're too far outside your victim's view.")
return FALSE
- if(target.has_status_effect(STATUS_EFFECT_MESMERIZE)) // ?
+ if(target.has_status_effect(STATUS_EFFECT_MESMERIZE)) // ignores facing once the windup has started
return TRUE
// Check: Facing target?
@@ -88,39 +88,53 @@
return FALSE
return TRUE
+/datum/action/bloodsucker/targeted/mesmerize/proc/ContinueTarget(atom/A)
+ var/mob/living/carbon/target = A
+ var/mob/living/user = owner
+
+ var/cancontinue=CheckCanTarget(target)
+ if(!cancontinue)
+ success = FALSE
+ target.remove_status_effect(STATUS_EFFECT_MESMERIZE)
+ user.remove_status_effect(STATUS_EFFECT_MESMERIZE)
+ DeactivatePower()
+ DeactivateRangedAbility()
+ StartCooldown()
+ to_chat(user, "[target] has escaped your gaze!")
+ UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
+
/datum/action/bloodsucker/targeted/mesmerize/FireTargetedPower(atom/A)
// set waitfor = FALSE <---- DONT DO THIS!We WANT this power to hold up ClickWithPower(), so that we can unlock the power when it's done.
var/mob/living/carbon/target = A
var/mob/living/user = owner
if(istype(target))
+ success = TRUE
var/power_time = 138 + level_current * 12
target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
user.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
- if(do_mob(user, target, 30, TRUE, TRUE)) // 3 seconds windup
- success = CheckCanTarget(target)
- if(success) // target just has to be out of view when it is fully charged in order to avoid
- PowerActivatedSuccessfully() // blood & cooldown only altered if power activated successfully - less "fuck you"-y
- target.face_atom(user)
- target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time) // pretty much purely cosmetic
- target.Stun(power_time)
- to_chat(user, "[target] is fixed in place by your hypnotic gaze.")
- target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm
- target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze.
- else
- to_chat(user, "[target] has escaped your gaze!")
- DeactivatePower()
- DeactivateRangedAbility()
- StartCooldown()
- // oops! if they knew how they could just spam stun the victim and themselves.
+
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/ContinueTarget)
- spawn(power_time)
- if(istype(target) && success)
- target.notransform = FALSE
- // They Woke Up! (Notice if within view)
- if(istype(user) && target.stat == CONSCIOUS && (target in view(10, get_turf(user))) )
+ // 3 second windup
+ sleep(30)
+ if(success)
+ PowerActivatedSuccessfully() // blood & cooldown only altered if power activated successfully - less "fuck you"-y
+ target.face_atom(user)
+ target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time) // pretty much purely cosmetic
+ target.Stun(power_time)
+ to_chat(user, "[target] is fixed in place by your hypnotic gaze.")
+ target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm
+ target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze.
+
+ UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
+
+ spawn(power_time)
+ if(istype(target) && success)
+ target.notransform = FALSE
+ // They Woke Up! (Notice if within view)
+ if(istype(user) && target.stat == CONSCIOUS && (target in view(10, get_turf(user))) )
to_chat(user, "[target] has snapped out of their trance.")
-
/datum/action/bloodsucker/targeted/mesmerize/ContinueActive(mob/living/user, mob/living/target)
return ..() && CheckCanUse() && CheckCanTarget(target)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 0d815703c5..c6c29a385b 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -178,23 +178,22 @@
else
return NUKE_OFF_UNLOCKED
-/obj/machinery/nuclearbomb/update_icon()
- if(deconstruction_state == NUKESTATE_INTACT)
- switch(get_nuke_state())
- if(NUKE_OFF_LOCKED, NUKE_OFF_UNLOCKED)
- icon_state = "nuclearbomb_base"
- update_icon_interior()
- update_icon_lights()
- if(NUKE_ON_TIMING)
- cut_overlays()
- icon_state = "nuclearbomb_timing"
- if(NUKE_ON_EXPLODING)
- cut_overlays()
- icon_state = "nuclearbomb_exploding"
- else
+/obj/machinery/nuclearbomb/update_icon_state()
+ if(deconstruction_state != NUKESTATE_INTACT)
icon_state = "nuclearbomb_base"
- update_icon_interior()
- update_icon_lights()
+ return
+ switch(get_nuke_state())
+ if(NUKE_OFF_LOCKED, NUKE_OFF_UNLOCKED)
+ icon_state = "nuclearbomb_base"
+ if(NUKE_ON_TIMING)
+ icon_state = "nuclearbomb_timing"
+ if(NUKE_ON_EXPLODING)
+ icon_state = "nuclearbomb_exploding"
+
+/obj/machinery/nuclearbomb/update_overlays()
+ . = ..()
+ update_icon_interior()
+ update_icon_lights()
/obj/machinery/nuclearbomb/proc/update_icon_interior()
cut_overlay(interior)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 793a72c1f7..cdc3fbc5b9 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1474,8 +1474,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("flavor_text")
var/msg = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", features["flavor_text"], MAX_FAVOR_LEN, TRUE)
- if(msg)
- features["flavor_text"] = msg
+ if(!isnull(msg))
+ features["flavor_text"] = html_decode(msg)
if("hair")
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 1acb7628a3..59747d59ba 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -58,6 +58,12 @@
/obj/item/clothing/shoes/magboots/advance/debug/Initialize()
attack_self(src)
+/obj/item/clothing/shoes/magboots/paramedic
+ desc = "A pair of magboots decked in colors matching the equipment of an emergency medical technician."
+ name = "paramedic magboots"
+ icon_state = "para_magboots0"
+ magboot_state = "para_magboots"
+
/obj/item/clothing/shoes/magboots/syndie
desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders."
name = "blood-red magboots"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index f9e35ca37f..8c39427c49 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -465,3 +465,16 @@ Contains:
torn = TRUE
playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1)
playsound(loc, 'sound/effects/refill.ogg', 50, 1)
+
+/obj/item/clothing/suit/space/eva/paramedic
+ name = "paramedic EVA suit"
+ icon_state = "paramedic-eva"
+ item_state = "paramedic-eva"
+ desc = "A deep blue space suit decorated with red and white crosses to indicate that the wearer is trained emergency medical personnel."
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/roller)
+
+/obj/item/clothing/head/helmet/space/eva/paramedic
+ name = "paramedic EVA helmet"
+ desc = "A deep blue space helmet with a large red cross on the faceplate to designate the wearer as trained emergency medical personnel."
+ icon_state = "paramedic-eva-helmet"
+ item_state = "paramedic-eva-helmet"
\ No newline at end of file
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 48fd8ccf1c..efadb8a035 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -195,3 +195,18 @@
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS
mutantrace_variation = STYLE_MUZZLE
+
+
+//Paramedic
+
+/obj/item/clothing/suit/toggle/labcoat/paramedic
+ name = "paramedic vest"
+ desc = "A dark blue vest with reflective strips for emergency medical technicians."
+ icon_state = "paramedic-vest"
+ item_state = "paramedic-vest"
+
+/obj/item/clothing/suit/toggle/labcoat/emt
+ name = "emt vest"
+ desc = "A dark blue vest with reflective strips for emergency medical technicians."
+ icon_state = "labcoat_emt"
+ item_state = "labcoat_emt"
\ No newline at end of file
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 022bc7c95c..195712b814 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -37,12 +37,6 @@
icon_state = "labcoat_cmo"
item_state = "labcoat_cmo"
-/obj/item/clothing/suit/toggle/labcoat/emt
- name = "\improper EMT's jacket"
- desc = "A dark blue jacket with reflective strips for emergency medical technicians."
- icon_state = "labcoat_emt"
- item_state = "labcoat_cmo"
-
/obj/item/clothing/suit/toggle/labcoat/mad
name = "\proper The Mad's labcoat"
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 4d3e8acb28..6f61bf56cb 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -480,8 +480,6 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
allowed = list(/obj/item/clothing/mask/facehugger/toy)
-
-
// WINTER COATS
/obj/item/clothing/suit/hooded/wintercoat
@@ -521,6 +519,7 @@
/obj/item/clothing/suit/hooded/wintercoat/captain
name = "captain's winter coat"
+ desc = "A luxuriant winter coat, stuffed with the down of the endangered Uka bird and trimmed with genuine sable. The fabric is an indulgently soft micro-fiber, and the deep ultramarine color is only one that could be achieved with minute amounts of crystalline bluespace dust woven into the thread between the plectrums. Extremely lavish, and extremely durable. The tiny flakes of protective material make it nothing short of extremely light lamellar armor."
icon_state = "coatcaptain"
item_state = "coatcaptain"
armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
@@ -531,20 +530,24 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/captain
+ desc = "A blue and yellow hood attached to a heavy winter jacket."
icon_state = "winterhood_captain"
/obj/item/clothing/suit/hooded/wintercoat/hop
name = "head of personnel's winter coat"
+ desc = "A cozy winter coat, covered in thick fur. The breast features a proud yellow chevron, reminding everyone that you're the second banana."
icon_state = "coathop"
item_state = "coathop"
armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 5, "bio" = 5, "rad" = 0, "fire" = 0, "acid" = 5)
hoodtype = /obj/item/clothing/head/hooded/winterhood/hop
/obj/item/clothing/head/hooded/winterhood/hop
+ desc = "A cozy winter hood attached to a heavy winter jacket."
icon_state = "winterhood_hop"
/obj/item/clothing/suit/hooded/wintercoat/security
name = "security winter coat"
+ desc = "A red, armor-padded winter coat. It glitters with a mild ablative coating and a robust air of authority. The zipper tab is a pair of jingly little handcuffs and got annoying after the first ten seconds."
icon_state = "coatsecurity"
item_state = "coatsecurity"
armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
@@ -555,10 +558,12 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/security
+ desc = "A red, armor-padded winter hood."
icon_state = "winterhood_security"
/obj/item/clothing/suit/hooded/wintercoat/hos
name = "head of security's winter coat"
+ desc = "A red, armor-padded winter coat, lovingly woven with a Kevlar interleave and reinforced with semi-ablative polymers and a silver azide fill material. The zipper tab looks like a tiny replica of Beepsky."
icon_state = "coathos"
item_state = "coathos"
armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 15, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 55)
@@ -569,10 +574,12 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/hos
+ desc = "A red, armor-padded winter hood, lovingly woven with a Kevlar interleave. Definitely not bulletproof, especially not the part where your face goes."
icon_state = "winterhood_hos"
/obj/item/clothing/suit/hooded/wintercoat/medical
name = "medical winter coat"
+ desc = "An arctic white winter coat with a small blue caduceus instead of a plastic zipper tab. Snazzy."
icon_state = "coatmedical"
item_state = "coatmedical"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -580,10 +587,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical
/obj/item/clothing/head/hooded/winterhood/medical
+ desc = "A white winter coat hood."
icon_state = "winterhood_medical"
/obj/item/clothing/suit/hooded/wintercoat/cmo
name = "chief medical officer's winter coat"
+ desc = "An arctic white winter coat with a small blue caduceus instead of a plastic zipper tab. The normal liner is replaced with an exceptionally thick, soft layer of fur."
icon_state = "coatcmo"
item_state = "coatcmo"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -591,10 +600,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/cmo
/obj/item/clothing/head/hooded/winterhood/cmo
+ desc = "A white winter coat hood."
icon_state = "winterhood_cmo"
/obj/item/clothing/suit/hooded/wintercoat/chemistry
name = "chemistry winter coat"
+ desc = "A lab-grade winter coat made with acid resistant polymers. For the enterprising chemist who was exiled to a frozen wasteland on the go."
icon_state = "coatchemistry"
item_state = "coatchemistry"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -602,10 +613,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/chemistry
/obj/item/clothing/head/hooded/winterhood/chemistry
+ desc = "A white winter coat hood."
icon_state = "winterhood_chemistry"
/obj/item/clothing/suit/hooded/wintercoat/viro
name = "virology winter coat"
+ desc = "A white winter coat with green markings. Warm, but wont fight off the common cold or any other disease. Might make people stand far away from you in the hallway. The zipper tab looks like an oversized bacteriophage."
icon_state = "coatviro"
item_state = "coatviro"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -613,10 +626,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/viro
/obj/item/clothing/head/hooded/winterhood/viro
+ desc = "A white winter coat hood with green markings."
icon_state = "winterhood_viro"
/obj/item/clothing/suit/hooded/wintercoat/science
name = "science winter coat"
+ desc = "A white winter coat with an outdated atomic model instead of a plastic zipper tab."
icon_state = "coatscience"
item_state = "coatscience"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -624,10 +639,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/science
/obj/item/clothing/head/hooded/winterhood/science
+ desc = "A white winter coat hood. This one will keep your brain warm. About as much as the others, really."
icon_state = "winterhood_science"
/obj/item/clothing/suit/hooded/wintercoat/robotics
name = "robotics winter coat"
+ desc = "A black winter coat with a badass flaming robotic skull for the zipper tab. This one has bright red designs and a few useless buttons."
icon_state = "coatrobotics"
item_state = "coatrobotics"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/screwdriver, /obj/item/crowbar, /obj/item/wrench, /obj/item/stack/cable_coil, /obj/item/weldingtool, /obj/item/multitool)
@@ -635,20 +652,24 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/robotics
/obj/item/clothing/head/hooded/winterhood/robotics
+ desc = "A black winter coat hood. You can pull it down over your eyes and pretend that you're an outdated, late 1980s interpretation of a futuristic mechanized police force. They'll fix you. They fix everything."
icon_state = "winterhood_robotics"
/obj/item/clothing/suit/hooded/wintercoat/genetics
name = "genetics winter coat"
+ desc = "A white winter coat with a DNA helix for the zipper tab. "
icon_state = "coatgenetics"
item_state = "coatgenetics"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
hoodtype = /obj/item/clothing/head/hooded/winterhood/genetics
/obj/item/clothing/head/hooded/winterhood/genetics
+ desc = "A white winter coat hood. It's warm."
icon_state = "winterhood_genetics"
/obj/item/clothing/suit/hooded/wintercoat/rd
name = "research director's winter coat"
+ desc = "A thick arctic winter coat with an outdated atomic model instead of a plastic zipper tab. Most in the know are heavily aware that Bohr's model of the atom was outdated by the time of the 1930s when the Heisenbergian and Schrodinger models were generally accepted for true. Nevertheless, we still see its use in anachronism, roleplaying, and, in this case, as a zipper tab. At least it should keep you warm on your ivory pillar."
icon_state = "coatrd"
item_state = "coatrd"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -656,10 +677,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/rd
/obj/item/clothing/head/hooded/winterhood/rd
+ desc = "A white winter coat hood. It smells faintly of hair gel."
icon_state = "winterhood_rd"
/obj/item/clothing/suit/hooded/wintercoat/ce
name = "chief engineer's winter coat"
+ desc = "A white winter coat with reflective green and yellow stripes. Stuffed with asbestos, treated with fire retardant PBDE, lined with a micro thin sheet of lead foil and snugly fitted to your body's measurements. This baby's ready to save you from anything except the thyroid cancer and systemic fibrosis you'll get from wearing it. The zipper tab is a tiny golden wrench."
icon_state = "coatce"
item_state = "coatce"
armor = list("melee" = 0, "bullet" = 0, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 30, "fire" = 35, "acid" = 45)
@@ -667,10 +690,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/ce
/obj/item/clothing/head/hooded/winterhood/ce
+ desc = "A white winter coat hood. Feels surprisingly heavy. The tag says that it's not child safe."
icon_state = "winterhood_ce"
/obj/item/clothing/suit/hooded/wintercoat/engineering
name = "engineering winter coat"
+ desc = "A surprisingly heavy yellow winter coat with reflective orange stripes. It has a small wrench for its zipper tab, and the inside layer is covered with a radiation-resistant silver-nylon blend. Because you're worth it."
icon_state = "coatengineer"
item_state = "coatengineer"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45)
@@ -678,29 +703,35 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
/obj/item/clothing/head/hooded/winterhood/engineering
+ desc = "A yellow winter coat hood. Definitely not a replacement for a hard hat."
icon_state = "winterhood_engineer"
/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
name = "atmospherics winter coat"
+ desc = "A yellow and blue winter coat. The zipper pull-tab is made to look like a miniature breath mask."
icon_state = "coatatmos"
item_state = "coatatmos"
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering/atmos
/obj/item/clothing/head/hooded/winterhood/engineering/atmos
+ desc = "A yellow and blue winter coat hood."
icon_state = "winterhood_atmos"
/obj/item/clothing/suit/hooded/wintercoat/hydro
name = "hydroponics winter coat"
+ desc = "A green and blue winter coat. The zipper tab looks like the flower from a member of Rosa Hesperrhodos, a pretty pink-and-white rose. The colors absolutely clash."
icon_state = "coathydro"
item_state = "coathydro"
allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro
/obj/item/clothing/head/hooded/winterhood/hydro
+ desc = "A green winter coat hood."
icon_state = "winterhood_hydro"
/obj/item/clothing/suit/hooded/wintercoat/cosmic
name = "cosmic winter coat"
+ desc = "A starry winter coat that even glows softly."
icon_state = "coatcosmic"
item_state = "coatcosmic"
hoodtype = /obj/item/clothing/head/hooded/winterhood/cosmic
@@ -708,48 +739,58 @@
light_range = 1.2
/obj/item/clothing/head/hooded/winterhood/cosmic
+ desc = "A starry winter hood."
icon_state = "winterhood_cosmic"
/obj/item/clothing/suit/hooded/wintercoat/janitor
name = "janitors winter coat"
+ desc = "A purple-and-beige winter coat that smells of space cleaner."
icon_state = "coatjanitor"
item_state = "coatjanitor"
allowed = list(/obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter,/obj/item/grenade/chem_grenade,/obj/item/lightreplacer,/obj/item/flashlight,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/spray,/obj/item/soap,/obj/item/holosign_creator,/obj/item/key/janitor,/obj/item/melee/flyswatter,/obj/item/paint/paint_remover,/obj/item/storage/bag/trash,/obj/item/reagent_containers/glass/bucket)
hoodtype = /obj/item/clothing/head/hooded/winterhood/janitor
/obj/item/clothing/head/hooded/winterhood/janitor
+ desc = "A purple hood that smells of space cleaner."
icon_state = "winterhood_janitor"
/obj/item/clothing/suit/hooded/wintercoat/cargo
name = "cargo winter coat"
+ desc = "A tan-and-grey winter coat that has a crate for its zipper pull tab. It fills you with the warmth of a fierce independence."
icon_state = "coatcargo"
item_state = "coatcargo"
hoodtype = /obj/item/clothing/head/hooded/winterhood/cargo
/obj/item/clothing/head/hooded/winterhood/cargo
+ desc = "A grey hood for a winter coat."
icon_state = "winterhood_cargo"
/obj/item/clothing/suit/hooded/wintercoat/qm
name = "quartermaster's winter coat"
+ desc = "A dark brown winter coat that has a golden crate pin for its zipper pully."
icon_state = "coatqm"
item_state = "coatqm"
hoodtype = /obj/item/clothing/head/hooded/winterhood/qm
/obj/item/clothing/head/hooded/winterhood/qm
+ desc = "A dark brown winter hood"
icon_state = "winterhood_qm"
/obj/item/clothing/suit/hooded/wintercoat/aformal
name = "assistant's formal winter coat"
+ desc = "A black button up winter coat."
icon_state = "coataformal"
item_state = "coataformal"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter,/obj/item/clothing/gloves/color/yellow)
hoodtype = /obj/item/clothing/head/hooded/winterhood/aformal
/obj/item/clothing/head/hooded/winterhood/aformal
+ desc = "A black winter coat hood."
icon_state = "winterhood_aformal"
/obj/item/clothing/suit/hooded/wintercoat/miner
name = "mining winter coat"
+ desc = "A dusty button up winter coat. The zipper tab looks like a tiny pickaxe."
icon_state = "coatminer"
item_state = "coatminer"
allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
@@ -757,10 +798,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/miner
/obj/item/clothing/head/hooded/winterhood/miner
+ desc = "A dusty winter coat hood."
icon_state = "winterhood_miner"
/obj/item/clothing/suit/hooded/wintercoat/ratvar
name = "ratvarian winter coat"
+ desc = "A brass-plated button up winter coat. Instead of a zipper tab, it has a brass cog with a tiny red gemstone inset."
icon_state = "coatratvar"
item_state = "coatratvar"
armor = list("melee" = 30, "bullet" = 45, "laser" = -10, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
@@ -770,6 +813,7 @@
/obj/item/clothing/head/hooded/winterhood/ratvar
icon_state = "winterhood_ratvar"
+ desc = "A brass-plated winter hood that glows softly, hinting at its divinity."
light_range = 3
light_power = 1
light_color = "#B18B25" //clockwork slab background top color
@@ -788,6 +832,7 @@
/obj/item/clothing/suit/hooded/wintercoat/narsie
name = "narsian winter coat"
+ desc = "A somber button-up in tones of grey entropy and a wicked crimson zipper. When pulled all the way up, the zipper looks like a bloody gash. The zipper pull looks like a single drop of blood."
icon_state = "coatnarsie"
item_state = "coatnarsie"
armor = list("melee" = 30, "bullet" = 20, "laser" = 30,"energy" = 10, "bomb" = 30, "bio" = 10, "rad" = 10, "fire" = 30, "acid" = 30)
@@ -808,10 +853,12 @@
user.adjustBruteLoss(rand(10,16))
/obj/item/clothing/head/hooded/winterhood/narsie
+ desc = "A black winter hood full of whispering secrets that only She shall ever know."
icon_state = "winterhood_narsie"
/obj/item/clothing/suit/hooded/wintercoat/ratvar/fake
name = "brass winter coat"
+ desc = "A brass-plated button up winter coat. Instead of a zipper tab, it has a brass cog with a tiny red piece of plastic as an inset."
icon_state = "coatratvar"
item_state = "coatratvar"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
@@ -820,6 +867,7 @@
/obj/item/clothing/suit/hooded/wintercoat/narsie/fake
name = "runed winter coat"
+ desc = "A dusty button up winter coat in the tones of oblivion and ash. The zipper pull looks like a single drop of blood."
icon_state = "coatnarsie"
item_state = "coatnarsie"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
@@ -842,7 +890,6 @@
icon_state = "winterhood_durathread"
armor = list("melee" = 20, "bullet" = 8, "laser" = 15, "energy" = 8, "bomb" = 25, "bio" = 10, "rad" = 15, "fire" = 75, "acid" = 37)
-
/obj/item/clothing/suit/spookyghost
name = "spooky ghost"
desc = "This is obviously just a bedsheet, but maybe try it on?"
diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm
index 971112ac38..3f31fb4717 100644
--- a/code/modules/clothing/under/jobs/medsci.dm
+++ b/code/modules/clothing/under/jobs/medsci.dm
@@ -159,22 +159,36 @@
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/medical/paramedic
- desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
+ desc = "It's made of a special fiber that provides minor protection against biohazards. It has a white cross on the chest denoting that the wearer is a trained paramedic."
name = "paramedic jumpsuit"
- icon_state = "paramedic"
+ icon_state = "paramedic-dark"
item_state = "w_suit"
+ item_color = "paramedic-dark"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
+ can_adjust = FALSE
+
+/obj/item/clothing/under/rank/medical/paramedic/light
+ desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
+ icon_state = "paramedic-light"
+ item_color = "paramedic-light"
+ can_adjust = TRUE
/obj/item/clothing/under/rank/medical/paramedic/skirt
name = "paramedic jumpskirt"
- desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
- icon_state = "paramedic_skirt"
+ desc = "It's made of a special fiber that provides minor protection against biohazards. It has a white cross on the chest denoting that the wearer is a trained paramedic."
+ icon_state = "paramedic-dark_skirt"
item_state = "w_suit"
+ item_color = "paramedic-dark_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
+/obj/item/clothing/under/rank/medical/paramedic/skirt/light
+ desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
+ icon_state = "paramedic_skirt"
+ item_color = "paramedic_skirt"
+
/obj/item/clothing/under/rank/nursesuit
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
name = "nurse's suit"
@@ -186,6 +200,7 @@
body_parts_covered = CHEST|GROIN|ARMS
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
+
/obj/item/clothing/under/rank/medical
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
name = "medical doctor's jumpsuit"
@@ -194,18 +209,21 @@
item_color = "medical"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
+
/obj/item/clothing/under/rank/medical/blue
name = "blue medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
icon_state = "scrubsblue"
item_color = "scrubsblue"
can_adjust = FALSE
+
/obj/item/clothing/under/rank/medical/green
name = "green medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
icon_state = "scrubsgreen"
item_color = "scrubsgreen"
can_adjust = FALSE
+
/obj/item/clothing/under/rank/medical/purple
name = "purple medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
@@ -221,4 +239,4 @@
item_color = "medical_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
- fitted = FEMALE_UNIFORM_TOP
+ fitted = FEMALE_UNIFORM_TOP
\ No newline at end of file
diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index 7df089d49c..68c5d8c5c8 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -63,7 +63,7 @@
else
D = new virus_type()
else
- D = new /datum/disease/advance/random(max_severity, max_severity)
+ D = new /datum/disease/advance/random(TRUE, max_severity, max_severity)
D.carrier = TRUE
H.ForceContractDisease(D, FALSE, TRUE)
diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm
index c94118ddf1..59b2e7838a 100644
--- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm
+++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm
@@ -591,7 +591,7 @@
results = list(/datum/reagent/consumable/ethanol/cogchamp = 3)
required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol/screwdrivercocktail = 1)
mix_message = "You hear faint sounds of gears turning as it mixes."
- mix_sound = 'sound/effects/clockcult_gateway_closing.ogg'
+ mix_sound = 'sound/machines/clockcult/steam_whoosh.ogg'
/datum/chemical_reaction/quadruplesec
name = "Quadruple Sec"
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index b8496c865c..6ebfd3254f 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -234,19 +234,6 @@
reagents.chem_temp = 1000 //Sets off the black powder
reagents.handle_reactions()
-// Lavaland cactus
-
-/obj/item/seeds/lavaland/cactus
- name = "pack of fruiting cactus seeds"
- desc = "These seeds grow into fruiting cacti."
- icon_state = "seed-cactus"
- species = "cactus"
- plantname = "Fruiting Cactus"
- product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit
- growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
- growthstages = 2
-
-
// Coconut
/obj/item/seeds/coconut
name = "pack of coconut seeds"
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index 554115eb5f..699a1c798d 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -334,68 +334,4 @@
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user)
. = ..()
if(.)
- investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
-
-//// LAVALAND MUSHROOMS ////
-
-// Bracket (Shaving mushroom)
-
-/obj/item/seeds/lavaland
- name = "lavaland seeds"
- desc = "You should never see this."
- lifespan = 50
- endurance = 25
- maturation = 7
- production = 4
- yield = 4
- potency = 15
- growthstages = 3
- rarity = 20
- reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
- resistance_flags = FIRE_PROOF
-
-/obj/item/seeds/lavaland/polypore
- name = "pack of polypore mycelium"
- desc = "This mycelium grows into bracket mushrooms, also known as polypores. Woody and firm, shaft miners often use them for makeshift crafts."
- icon_state = "mycelium-polypore"
- species = "polypore"
- plantname = "Polypore Mushrooms"
- product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings
- genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
- growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
-
-// Porcini (Leafy mushroom)
-
-/obj/item/seeds/lavaland/porcini
- name = "pack of porcini mycelium"
- desc = "This mycelium grows into Boletus edulus, also known as porcini. Native to the late Earth, but discovered on Lavaland. Has culinary, medicinal and relaxant effects."
- icon_state = "mycelium-porcini"
- species = "porcini"
- plantname = "Porcini Mushrooms"
- product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf
- genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
- growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
-
-// Inocybe (Mushroom caps)
-
-/obj/item/seeds/lavaland/inocybe
- name = "pack of inocybe mycelium"
- desc = "This mycelium grows into an inocybe mushroom, a species of Lavaland origin with hallucinatory and toxic effects."
- icon_state = "mycelium-inocybe"
- species = "inocybe"
- plantname = "Inocybe Mushrooms"
- product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
- genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
- growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
-
-// Embershroom (Mushroom stem)
-
-/obj/item/seeds/lavaland/ember
- name = "pack of embershroom mycelium"
- desc = "This mycelium grows into embershrooms, a species of bioluminescent mushrooms native to Lavaland."
- icon_state = "mycelium-ember"
- species = "ember"
- plantname = "Embershroom Mushrooms"
- product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
- genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/glow)
- growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index 53c3389695..d3525c951d 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -36,7 +36,7 @@
plantname = "Blood-Tomato Plants"
product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood
mutatelist = list()
- reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
+ reagents_add = list(/datum/reagent/blood/tomato = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/tomato/blood
@@ -47,7 +47,7 @@
splat_type = /obj/effect/gibspawner/generic
filling_color = "#FF0000"
foodtype = FRUIT | GROSS
- grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0)
+ grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood/tomato = 0)
distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary
// Blue Tomato
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 1cd63db6da..718033ac56 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -620,7 +620,7 @@
if(!(myseed.resistance_flags & FIRE_PROOF))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7))
- adjustWeeds(-rand(5,9))
+ adjustWeeds(-rand(5,9))
//Weed Spray
if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1))
diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm
index 4417fa8b35..b74f1a1c18 100644
--- a/code/modules/jobs/job_types/paramedic.dm
+++ b/code/modules/jobs/job_types/paramedic.dm
@@ -11,8 +11,9 @@
outfit = /datum/outfit/job/paramedic
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
display_order = JOB_DISPLAY_ORDER_PARAMEDIC
@@ -23,10 +24,10 @@
ears = /obj/item/radio/headset/headset_med
gloves = /obj/item/clothing/gloves/color/latex/nitrile
uniform = /obj/item/clothing/under/rank/medical/paramedic
- mask = /obj/item/clothing/mask/surgical
+ mask = /obj/item/clothing/mask/cigarette
shoes = /obj/item/clothing/shoes/jackboots
head = /obj/item/clothing/head/soft/emt
- suit = /obj/item/clothing/suit/toggle/labcoat/emt
+ suit = /obj/item/clothing/suit/toggle/labcoat/paramedic
belt = /obj/item/storage/belt/medical
l_hand = /obj/item/storage/firstaid/regular
suit_store = /obj/item/flashlight/pen
@@ -40,6 +41,4 @@
satchel = /obj/item/storage/backpack/satchel/med
duffelbag = /obj/item/storage/backpack/duffelbag/med
- backpack_contents = list(/obj/item/storage/hypospraykit/regular)
-
chameleon_extras = /obj/item/gun/syringe
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index ea0174d2a5..43c8dec129 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -227,6 +227,78 @@
else
. = ..()
+////// LAVALAND FLORA //////
+
+/obj/item/seeds/lavaland
+ name = "lavaland seeds"
+ desc = "You should never see this."
+ lifespan = 50
+ endurance = 25
+ maturation = 7
+ production = 4
+ yield = 4
+ potency = 15
+ growthstages = 3
+ rarity = 20
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
+ resistance_flags = FIRE_PROOF
+
+/obj/item/seeds/lavaland/cactus
+ name = "pack of fruiting cactus seeds"
+ desc = "These seeds grow into fruiting cacti."
+ icon_state = "seed-cactus"
+ species = "cactus"
+ plantname = "Fruiting Cactus"
+ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit
+ genes = list(/datum/plant_gene/trait/fire_resistance)
+ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
+ growthstages = 2
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04, /datum/reagent/consumable/vitfro = 0.08)
+
+/obj/item/seeds/lavaland/polypore
+ name = "pack of polypore mycelium"
+ desc = "This mycelium grows into bracket mushrooms, also known as polypores. Woody and firm, shaft miners often use them for makeshift crafts."
+ icon_state = "mycelium-polypore"
+ species = "polypore"
+ plantname = "Polypore Mushrooms"
+ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/fire_resistance)
+ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ reagents_add = list(/datum/reagent/consumable/sugar = 0.06, /datum/reagent/consumable/ethanol = 0.04, /datum/reagent/stabilizing_agent = 0.06, /datum/reagent/toxin/minttoxin = 0.02)
+
+/obj/item/seeds/lavaland/porcini
+ name = "pack of porcini mycelium"
+ desc = "This mycelium grows into Boletus edulus, also known as porcini. Native to the late Earth, but discovered on Lavaland. Has culinary, medicinal and relaxant effects."
+ icon_state = "mycelium-porcini"
+ species = "porcini"
+ plantname = "Porcini Mushrooms"
+ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/fire_resistance)
+ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/vitfro = 0.04, /datum/reagent/drug/nicotine = 0.04)
+
+/obj/item/seeds/lavaland/inocybe
+ name = "pack of inocybe mycelium"
+ desc = "This mycelium grows into an inocybe mushroom, a species of Lavaland origin with hallucinatory and toxic effects."
+ icon_state = "mycelium-inocybe"
+ species = "inocybe"
+ plantname = "Inocybe Mushrooms"
+ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/fire_resistance)
+ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.04, /datum/reagent/consumable/entpoly = 0.08, /datum/reagent/drug/mushroomhallucinogen = 0.04)
+
+/obj/item/seeds/lavaland/ember
+ name = "pack of embershroom mycelium"
+ desc = "This mycelium grows into embershrooms, a species of bioluminescent mushrooms native to Lavaland."
+ icon_state = "mycelium-ember"
+ species = "ember"
+ plantname = "Embershroom Mushrooms"
+ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/glow, /datum/plant_gene/trait/fire_resistance)
+ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ reagents_add = list(/datum/reagent/consumable/tinlux = 0.04, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/drug/space_drugs = 0.02)
+
//what you can craft with these things
/datum/crafting_recipe/mushroom_bowl
name = "Mushroom Bowl"
diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm
index 8c5dc6aa0b..e3512e3929 100644
--- a/code/modules/mob/living/carbon/emote.dm
+++ b/code/modules/mob/living/carbon/emote.dm
@@ -49,6 +49,7 @@
message = "moans!"
message_mime = "appears to moan!"
emote_type = EMOTE_AUDIBLE
+ stat_allowed = SOFT_CRIT
/datum/emote/living/carbon/roll
key = "roll"
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 8e21814b97..639cfc40e2 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -280,7 +280,7 @@
if(miasma_partialpressure > MINIMUM_MOLES_DELTA_TO_MOVE)
if(prob(0.05 * miasma_partialpressure))
- var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(2,3)
+ var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(TRUE, 2,3)
miasma_disease.name = "Unknown"
ForceContractDisease(miasma_disease, TRUE, TRUE)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index cefb411644..b147fc2cee 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -249,7 +249,7 @@
var/current_dir
if(isliving(AM))
current_dir = AM.dir
- if(step(AM, t))
+ if(step(AM, t) && Process_Spacemove(t))
step(src, t)
if(current_dir)
AM.setDir(current_dir)
diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm
index dc8cdeac9f..901281453d 100644
--- a/code/modules/mob/living/silicon/pai/pai_shell.dm
+++ b/code/modules/mob/living/silicon/pai/pai_shell.dm
@@ -95,12 +95,10 @@
dynamic_chassis = choice
resist_a_rest(FALSE, TRUE)
update_icon()
+ current_mob_holder?.Detach(src)
+ current_mob_holder = null
if(possible_chassis[chassis])
current_mob_holder = AddElement(/datum/element/mob_holder, chassis, 'icons/mob/pai_item_head.dmi', 'icons/mob/pai_item_rh.dmi', 'icons/mob/pai_item_lh.dmi', SLOT_HEAD)
- else
- current_mob_holder?.Detach(src)
- current_mob_holder = null
- return
to_chat(src, "You switch your holochassis projection composite to [chassis]")
/mob/living/silicon/pai/lay_down()
diff --git a/code/modules/newscaster/newscaster_machine.dm b/code/modules/newscaster/newscaster_machine.dm
index 46dc52e286..38230840ec 100644
--- a/code/modules/newscaster/newscaster_machine.dm
+++ b/code/modules/newscaster/newscaster_machine.dm
@@ -54,7 +54,6 @@ GLOBAL_LIST_EMPTY(allCasters)
return ..()
/obj/machinery/newscaster/update_icon()
- cut_overlays()
if(stat & (NOPOWER|BROKEN))
icon_state = "newscaster_off"
else
@@ -62,19 +61,23 @@ GLOBAL_LIST_EMPTY(allCasters)
icon_state = "newscaster_wanted"
else
icon_state = "newscaster_normal"
- if(alert)
- add_overlay("newscaster_alert")
+
+/obj/machinery/newscaster/update_overlays()
+ . = ..()
+
+ if(!(stat & (NOPOWER|BROKEN)) && !GLOB.news_network.wanted_issue.active && alert)
+ . += "newscaster_alert"
+
var/hp_percent = obj_integrity * 100 /max_integrity
switch(hp_percent)
if(75 to 100)
return
if(50 to 75)
- add_overlay("crack1")
+ . += "crack1"
if(25 to 50)
- add_overlay("crack2")
+ . += "crack2"
else
- add_overlay("crack3")
-
+ . += "crack3"
/obj/machinery/newscaster/power_change()
if(stat & BROKEN)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 858adc0d66..67cc371c3b 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -328,12 +328,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
if(power)
soundloop.volume = min(40, (round(power/100)/50)+1) // 5 +1 volume per 20 power. 2500 power is max
- if(isclosedturf(T))
- var/turf/did_it_melt = T.Melt()
- if(!isclosedturf(did_it_melt)) //In case some joker finds way to place these on indestructible walls
- visible_message("[src] melts through [T]!")
- return
-
//Ok, get the air from the turf
var/datum/gas_mixture/env = T.return_air()
@@ -345,9 +339,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
else
// Pass all the gas related code an empty gas container
removed = new()
- damage_archived = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
- matter_power += damage - damage_archived
- damage = damage_archived
+ damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
+ damage_archived = damage
if(!removed || !removed.total_moles() || isspaceturf(T)) //we're in space or there is no gas to process
if(takes_damage)
damage += max((power / 1000) * DAMAGE_INCREASE_MULTIPLIER, 0.1) // always does at least some damage
@@ -531,7 +524,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
message_admins("[src] has been powered for the first time [ADMIN_JMP(src)].")
has_been_powered = TRUE
else if(takes_damage)
- damage += Proj.damage * config_bullet_energy
+ matter_power += Proj.damage * config_bullet_energy
return BULLET_ACT_HIT
/obj/machinery/power/supermatter_crystal/singularity_act()
diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm
index 062623689b..99aa922622 100644
--- a/code/modules/projectiles/projectile/special/curse.dm
+++ b/code/modules/projectiles/projectile/special/curse.dm
@@ -21,6 +21,9 @@
handedness = prob(50)
icon_state = "cursehand[handedness]"
+/obj/item/projectile/curse_hand/update_icon_state()
+ icon_state = "[initial(icon_state)][handedness]"
+
/obj/item/projectile/curse_hand/fire(setAngle)
if(starting)
arm = starting.Beam(src, icon_state = "curse[handedness]", time = INFINITY, maxdistance = INFINITY, beam_type=/obj/effect/ebeam/curse_arm)
@@ -40,7 +43,8 @@
if(CHECK_BITFIELD(movement_type, UNSTOPPABLE))
playsound(src, 'sound/effects/curse3.ogg', 25, 1, -1)
var/turf/T = get_step(src, dir)
- new/obj/effect/temp_visual/dir_setting/curse/hand(T, dir, handedness)
+ var/obj/effect/temp_visual/dir_setting/curse/hand/leftover = new(T, dir)
+ leftover.icon_state = icon_state
for(var/obj/effect/temp_visual/dir_setting/curse/grasp_portal/G in starting)
qdel(G)
new /obj/effect/temp_visual/dir_setting/curse/grasp_portal/fading(starting, dir)
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 4aabd82d6a..bd6c37973f 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -221,3 +221,13 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
rs += "[R.name], [R.volume]"
return rs.Join(" | ")
+
+//For easy bloodsucker disgusting and blood removal
+/datum/reagent/proc/disgust_bloodsucker(mob/living/carbon/C, disgust, blood_change, blood_puke = TRUE, force)
+ if(isvamp(C))
+ var/datum/antagonist/bloodsucker/bloodsuckerdatum = C.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
+ if(disgust)
+ bloodsuckerdatum.handle_eat_human_food(disgust, blood_puke, force)
+ if(blood_change)
+ bloodsuckerdatum.AddBloodVolume(blood_change)
+
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 4b65776ce9..e22f8caf89 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -579,8 +579,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
value = 1.3
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C)
- if((HAS_TRAIT(C, TRAIT_NOMARROW)))
- return
+ if(isvamp(C))
+ disgust_bloodsucker(FALSE, 1) //Bloodsuckers get SOME blood from it, for style reasons.
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss.
..()
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 681eac6014..4b2c1447c5 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -593,7 +593,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/salbutamol
name = "Salbutamol"
- description = "Rapidly restores oxygen deprivation as well as preventing more of it to an extent."
+ description = "Rapidly restores oxygen deprivation as well as preventing more of it to an extent. Causes jittering."
reagent_state = LIQUID
color = "#00FFFF"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
@@ -603,6 +603,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
M.adjustOxyLoss(-3*REM, 0)
if(M.losebreath >= 4)
M.losebreath -= 2
+ M.Jitter(5)
..()
. = 1
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index d227e6d4c3..5038a4b68c 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -13,7 +13,7 @@
shot_glass_icon_state = "shotglassred"
pH = 7.4
-/datum/reagent/blood/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
+/datum/reagent/blood/reaction_mob(mob/living/L, method = TOUCH, reac_volume)
if(data && data["viruses"])
for(var/thing in data["viruses"])
var/datum/disease/D = thing
@@ -26,6 +26,18 @@
else //ingest, patch or inject
L.ForceContractDisease(D)
+ if(data["blood_type"] == "SY")
+ //Synthblood is very disgusting to bloodsuckers. They will puke it out to expel it, unless they have masquarade on
+ switch(reac_volume)
+ if(0 to 3)
+ disgust_bloodsucker(L, 3, FALSE, FALSE, FALSE)
+ if(3 to 6)
+ //If theres more than 8 units, they will start expelling it, even if they are masquarading.
+ disgust_bloodsucker(L, 5, FALSE, FALSE, TRUE)
+ else
+ //If they have too much in them, they will also puke out their blood.
+ disgust_bloodsucker(L, 7, -5, TRUE, TRUE)
+
if(iscarbon(L))
var/mob/living/carbon/C = L
var/blood_id = C.get_blood_id()
@@ -37,10 +49,8 @@
L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
/datum/reagent/blood/on_mob_life(mob/living/carbon/C) //Because lethals are preferred over stamina. damnifino.
- if((HAS_TRAIT(C, TRAIT_NOMARROW)))
- return //We dont want vampires getting toxed from blood
var/blood_id = C.get_blood_id()
- if((blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood))
+ if((blood_id in GLOB.blood_reagent_types) && !HAS_TRAIT(C, TRAIT_NOMARROW))
if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be
C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person
..()
@@ -117,7 +127,7 @@
if(!istype(D, /datum/disease/advance))
preserve += D
data["viruses"] = preserve
- return 1
+ return TRUE
/datum/reagent/blood/proc/get_diseases()
. = list()
@@ -142,6 +152,13 @@
taste_mult = 1.3
pH = 4
+/datum/reagent/blood/tomato
+ data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
+ name = "Tomato Blood"
+ description = "This highly resembles blood, but it doesnt actually function like it, resembling more ketchup, with a more blood-like consistency."
+ taste_description = "sap" //Like tree sap?
+ pH = 7.45
+
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
if(prob(10))
if(M.dna?.species?.exotic_bloodtype != "GEL")
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 2f5fb067ea..3296586c94 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -89,7 +89,7 @@
blood_type = "BUG"
/obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
- if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon))
+ if(istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon))
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the label of [src]!")
return
@@ -107,25 +107,31 @@
else
return ..()
-/obj/item/reagent_containers/blood/attack(mob/M, mob/user, def_zone)
- if(user.a_intent == INTENT_HELP && reagents.total_volume > 0)
- if (user != M)
- to_chat(user, "You force [M] to drink from the [src]")
- user.visible_message("[user] forces [M] to drink from the [src].")
- if(!do_mob(user, M, 50))
+/obj/item/reagent_containers/blood/attack(mob/living/carbon/C, mob/user, def_zone)
+ if(user.a_intent == INTENT_HELP && reagents.total_volume > 0 && iscarbon(C) && user.a_intent == INTENT_HELP)
+ if(C.is_mouth_covered())
+ to_chat(user, "You cant drink from the [src] while your mouth is covered.")
+ return
+ if(user != C)
+ user.visible_message("[user] forces [C] to drink from the [src].", \
+ "You force [C] to drink from the [src]")
+ if(!do_mob(user, C, 50))
return
else
- if(!do_mob(user, M, 10))
+ if(!do_mob(user, C, 10))
return
+
to_chat(user, "You take a sip from the [src].")
user.visible_message("[user] puts the [src] up to their mouth.")
if(reagents.total_volume <= 0) // Safety: In case you spam clicked the blood bag on yourself, and it is now empty (below will divide by zero)
return
- var/gulp_size = 5
+ var/gulp_size = 3
var/fraction = min(gulp_size / reagents.total_volume, 1)
- reagents.reaction(M, INGEST, fraction) //checkLiked(fraction, M) // Blood isn't food, sorry.
- reagents.trans_to(M, gulp_size)
- playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
+ reagents.reaction(C, INGEST, fraction) //checkLiked(fraction, M) // Blood isn't food, sorry.
+ reagents.trans_to(C, gulp_size)
+ reagents.remove_reagent(src, 2) //Inneficency, so hey, IVs are usefull.
+ playsound(C.loc,'sound/items/drink.ogg', rand(10, 50), TRUE)
+ return
..()
/obj/item/reagent_containers/blood/bluespace
@@ -133,3 +139,14 @@
desc = "Contains blood used for transfusion, this one has been made with bluespace technology to hold much more blood. Must be attached to an IV drip."
icon_state = "bsbloodpack"
volume = 600 //its a blood bath!
+
+/obj/item/reagent_containers/blood/bluespace/attack(mob/living/carbon/C, mob/user, def_zone)
+ if(user.a_intent == INTENT_HELP)
+ if(user != C)
+ to_chat(user, "You can't force people to drink from the [src]. Nothing comes out from it.")
+ return
+ else
+ to_chat(user, "You try to suck on the [src], but nothing comes out.")
+ return
+ else
+ ..()
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index b774aaf793..ac2b34b855 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -350,7 +350,7 @@
//Miasma sickness
if(prob(0.05 * miasma_pp))
- var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(2,3)
+ var/datum/disease/advance/miasma_disease = new /datum/disease/advance/random(TRUE, 2,3)
miasma_disease.name = "Unknown"
miasma_disease.try_infect(owner)
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index d368a9bbca..ba5e511612 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -32,24 +32,29 @@
icon_state = "medidrobe"
product_ads = "Make those blood stains look fashionable!!"
vend_reply = "Thank you for using the MediDrobe!"
- products = list(/obj/item/clothing/accessory/pocketprotector = 3,
- /obj/item/clothing/head/beret/med = 3,
- /obj/item/storage/backpack/duffelbag/med = 3,
- /obj/item/storage/backpack/medic = 3,
- /obj/item/storage/backpack/satchel/med = 3,
- /obj/item/clothing/suit/hooded/wintercoat/medical = 3,
- /obj/item/clothing/under/rank/nursesuit = 3,
- /obj/item/clothing/head/nursehat = 3,
+ products = list(/obj/item/clothing/accessory/pocketprotector = 5,
+ /obj/item/clothing/head/beret/med = 5,
+ /obj/item/storage/backpack/duffelbag/med = 5,
+ /obj/item/storage/backpack/medic = 5,
+ /obj/item/storage/backpack/satchel/med = 5,
+ /obj/item/clothing/suit/hooded/wintercoat/medical = 5,
+ /obj/item/clothing/under/rank/nursesuit = 5,
+ /obj/item/clothing/head/nursehat = 5,
/obj/item/clothing/under/rank/medical/skirt= 5,
- /obj/item/clothing/under/rank/medical/blue = 2,
- /obj/item/clothing/under/rank/medical/green = 2,
- /obj/item/clothing/under/rank/medical/purple = 2,
+ /obj/item/clothing/under/rank/medical/blue = 5,
+ /obj/item/clothing/under/rank/medical/green = 5,
+ /obj/item/clothing/under/rank/medical/purple = 5,
/obj/item/clothing/under/rank/medical = 5,
+ /obj/item/clothing/under/rank/medical/paramedic = 5,
+ /obj/item/clothing/under/rank/medical/paramedic/light = 5,
+ /obj/item/clothing/under/rank/medical/paramedic/skirt = 5,
+ /obj/item/clothing/under/rank/medical/paramedic/skirt/light = 5,
/obj/item/clothing/suit/toggle/labcoat = 5,
+ /obj/item/clothing/suit/toggle/labcoat/paramedic = 5,
/obj/item/clothing/suit/toggle/labcoat/emt = 5,
/obj/item/clothing/shoes/sneakers/white = 5,
/obj/item/clothing/head/soft/emt = 5,
- /obj/item/clothing/suit/apron/surgical = 3,
+ /obj/item/clothing/suit/apron/surgical = 5,
/obj/item/clothing/mask/surgical = 5)
refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe
diff --git a/html/changelog.html b/html/changelog.html
index 349a8ce012..fc78fc33a1 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -50,6 +50,555 @@
-->
+
26 February 2020
+
AnturK ported by kevinz000 updated:
+
+ - Dueling pistols have been added.
+
+
Arturlang updated:
+
+ - Replaces a lot of ingame UIs with TGUI next, increasing performance drastically.
+ - Each night for bloodsuckers will last longer due to the sun dimming.
+ - You cant level up for free, now you have to pay blood for power.
+ - Bloodsuckers are no longer as resistant to hard stuns and regenerate less stamina. and a lot of their cooldowns are a lot higher.
+ - Removed text macros from the chem dispenser.
+ - Replaced with dispenser input recording macros.
+ - Fancifying makeshift switchblades now works
+ - Shields will no longer block lasers, and will break if they take too much damage.
+ - Added a TGUI Next interface for crafting
+ - Removed the old TGUI slow crafting interface
+ - The MK2 hypospray now
+ - The debug outfit is now kitted out for whatever debbuging needs.
+ - Fixed the pandemic naming and the radiation healing symptom UI crashing
+ - Hyposprays now switch modes on CTRL click, instead of alt, as it was already reserved for dispension amount.
+ - Nanite interfaces have gotten a rework to TGUI Next, and can now support sub-programs. add:Adds the nanite sting program, which will allow you to manually sting people to give them nanites, changeling style.
+ - The pandemic can no longer make vaccines or synthblood as quickly.
+ - The syndicate uplinks interface has been redone in TGUI Next
+ - Valentines can now be converted by bloodsuckers
+
+
Bhijn updated:
+
+ - Click-dragging will now only perform the quick item usage behavior if you're in combat mode.
+
+
BlueWildrose updated:
+
+ - podpeople tail wagging
+ - lifebringer ghost role fixes
+
+
BuffEngineering, nemvar. updated:
+
+ - Addicts can now feel like they're getting their fix or kicking it.
+ - Aheals now remove addictions and restore your mood to default.
+
+
CameronWoof updated:
+
+ - Lighting looks better now. I can say that because the PR wouldn't be merged and you wouldn't be reading this if it wasn't true.
+ - Ammonia and saltpetre can now be made at the biogenerator.
+
+
Commandersand updated:
+
+ - uplink centcomm suit doesn't have sensors
+
+
DeltaFire15 updated:
+
+ - Nar'Sie runes no longer benefit from runed floors.
+
+
Detective-Google updated:
+
+ - the POOL. remove: boxstation dorms 7
+ - valentines candy no longer prefbreaks
+ - Loudness Booster pAI program
+ - Encryption Key pAI program
+
+
EmeraldSundisk updated:
+
+ - Connects mining's disposal unit on Delta.
+ - Slight visual adjustments to the immediate affected area.
+
+
Feasel updated:
+
+ - Buffed dissection success chances.
+
+
Ghommie updated:
+
+ - The anomalous honking crystal should now properly clown your mind.
+ - Stopped the ellipsis question mark from being displayed twice in the examine message for masked/unknown human mobs.
+ - Made the aforementioned ellipsis question mark display on flavor-text-less masked/unknown human mobs too for consistency.
+ - Stopped an APTFT exploit with spray bottles.
+ - Fixed the detective revolver being quite risky to use.
+ - Hair styles and undergarments are yet again free from gender restrictions.
+ - Clown ops will find bombananas and clown bomb beacons instead of minibombs and bomb beacons in their infiltrator ship now.
+ - For safety, the syndicate shuttle minibombs and bombananas come shipped in a box. Please don't instinctively eat any of those nanas, thank you.
+ - Uplink items excluded (such as mulligan, chameleon, ebow) from or exclusive (such as cyber implants) to normal nuke ops will now be properly unavailable/available to clown ops.
+ - Fixed bananium energy sword/shield slips.
+ - Buffed said slips to ignore no-grav/crawling/flying as well as adding some deadly force to the e-sword.
+ - Fixed the 'stache grenade anti-non-clumsy user check.
+ - Doubled the timer for the sticky mustaches effect from the above grenade (from 1 to 2 minutes)
+ - Fixed an edge case with the chaplain armaments beacon spawning the box in nullspace.
+ - The playback device's cooldown now proportionally increases with messages longer than 60 characters (3 seconds is the default assembly cooldown).
+ - Fixed space ninjas "Nothing" objective. Now you gotta steal some dandy stuff such as corgi meat and pinpointers as a ninja too.
+ - Fixed maploaded APC terminals direction.
+ - Nerfed magnetic rifles/pistols by re(?)adding power cell requirements for it. These firearms must be recharged after firing 2 magazines worth of projectiles and are slightly more susceptible to EMPs.
+ - Fixed the tearstache nade not properly working.
+ - Buffed it against space helmet internals.
+ - Holographic fans won't display above mobs and other objects anymore.
+ - Fixed paraplegics appearing as shoeless.
+ - Fixed the petting element.
+ - Fixed slipping.
+ - Refactored mob holders into an element.
+ - Fixed a few minor issues with that feature. such as mismatching sprites for certain held mobs and a slight lack of safety checks.
+ - holdable mobs can't force themselves into people's hands anymore.
+ - Milkies fix.
+ - Fixed some mounted defibrillator issue with the altclicking functionality.
+ - Fixed no-grav lavaland labor/mining shuttle areas.
+ - Fixed a little issue with sleeper UI and blood types.
+ - Fixing accidental nerfs to the magpistol magazine.
+ - The Lavaland's Herald speech sound should only play if they are actually speaking.
+ - Nerfed cargo passive points generation from 500 to 125 creds per minute.
+ - Fixed whitelisted/donor loadouts
+ - Childproofs double-esword and hypereuplastic blade toys.
+ - Some reagent holders (such as cigarettes, food) are not suitable for reagents export anymore, while unprocessed botany crops will only net 1/3 of the standard reagents values.
+ - Export scanners now include the reagents value in the price report.
+ - Fixed a little inconvenience with the character setup preview dummy having extra unwarranted bits.
+ - Stopped role restricted uplink items from being discounted despite not being purchasable most times.
+ - Missing words replacement file for the gondola mask.
+ - Fixed an issue with the nearsighted prescription glasses taking over worn eyewear.
+ - Fixed AI unanchoring not properly removing the no teleport trait. My bad.
+ - Fixed another issue with hering comsig.
+ - Fixed dozen missing privates sprites.
+ - A little fix concerning some R&D and reagents.
+ - Further mob holder fixes.
+ - Fixed being unable to dump a trash bag's contents directly into disposal bins.
+ - Doubled the halved flavor text maximum length.
+ - Reduced tongue organ damage and tasting pH message spam.
+ - Fixed agent IDs not registering the inputted name. Thanks MrPerson.
+ - Fixed solar panels/trackers (de)construction being a bit wonky.
+ - Fixed something about slime blood and the law of conservation of mass.
+ - Fixed flypeople being emetic machine guns.
+ - Fixed virology being unable to be done with synthetic blood.
+ - Renamed "blaster carbine" and "blaster rifles" back to "energy gun" and "laser gun" respectively
+ - Fixed magnetic rifles & co being inconsistent with printed energy guns and start with an empty power cell.
+ - Reverted practice laser gun sprites back to their former glory. Mostly.
+ - Fixed sprint buffer cost and regen being rounded down.
+ - Nerfed the fermenting barrel export industry.
+ - Reagent dispensers selling price no longer takes in account the reagents volume. It's already handled by reagents export.
+ - pAIs are yet again unable to perform certain silicon interactions with machineries yet again.
+ - Fixed pAI radios inability to be toggled on/off.
+
+
Ghommie (original PRs by Floyd/Qustinnus, 4Dplanner, Willox, ninjanomnom, mrdoombringer, Fikou, Fox McCloud, TheChosenEvilOne, nemvar, bobbahbrown, Time-Green, Stonebaykyle, MrPerson, ArcaneMusic and zxaber) updated:
+
+ - You can now make toolboxes out of almost any solid material in an autolathe
+ - adds Knight's Armour made out of any materials
+ - new ruin found in lavaland protected by dark wizards, I wonder what they're guarding
+ - You can now put a bunch more mats in the coin mint and autolathe
+ - Adamantine and Mythril are now materials (Adamantine still only from xenobio, Mythril still only from badminnery). Adamantine boosts an item's force by 1.5, Mythril gives an item RPG statistics.
+ - most custom sprites for coins have been lost
+ - You can now give your ass acute radiation poisoning
+ - floydmats now apply to all objs / items
+ - you can now make tables and chairs out of any material
+ - Fixes being able to exploit fully upgraded destructive analyzers to multiply materials
+ - An old monastery from a previously abandoned sector of space has recently resurfaced in some regions surrounding the station.
+ - Latent scans of the surrounding systems have picked up trace signs of new, smaller cult constructs, however these signatures quickly vanished.
+ - In other news, scavengers in your sector have been seen occasionally with classically recreated maces, so autolathe firmware has been upgraded to accommodate this.
+
+
Hatterhat updated:
+
+ - Zombie powder is now instant when ingested, but delayed when injected or applied through touch.
+ - The H.E.C.K. suit is now goliath tentacle resistant and probably better for acid resistance.
+ - The Engineering techfab can now print standard and large RCD compressed matter cartridges.
+ - The Experimental Tools node now has the Combifan projector, blocking both temperature and atmospheric changes.
+ - fiddles with the seed extractor upgrade examine to make it not shit
+ - Formaldehyde prevents organ decay and corpses' miasma production at 1u in the body.
+ - Epinephrine pens now contain 3u formaldehyde. This should not kill you.
+ - The ships often crashed by Free Golems on Lavaland now have GPSes. They're off, by default, but an awakening Golem could easily turn one on.
+ - Standard RCD ammo can now be printed from Engineering-keyed techfabs once you hit Industrial Engineering.
+ - Consoleless interfaces are now default - this means unrestricted protolathes and circuit imprinters can now be interfaced with by interacting with the machine itself.
+ - Multitools can now actually be printed from Engineering and Science protolathes/techfabs once you unlock Basic Tools.
+ - Husking (from being burned to shit) can now be reverted! 5u rezadone or 100u synthflesh, at below 50 burn.
+ - Turning a body into a burnt husk now takes more effort. 300 burn's worth of effort.
+ - Buckshot individual pellet damage up from 10 to 12.5. Still firing 6 pellets.
+ - Preservahyde! Made with water, bromine, and formaldehyde, it doesn't decay into histamine. Instead, it just prevents your organs from rotting into nothing.
+ - You can now purify eldritch longswords with a bible. This creates purified longswords, which do not have anti-magic properties, but are still good for swinging at cultists.
+ - Extend votes! Ported from Hyper, ported from AUstation.
+ - mechs with stock parts now have icons
+ - Pie reagent transfer now requires an uncovered mouth.
+ - Biogenerators can now actually generate universal enzyme.
+ - The Basic Tools node now unlocks the multitool for printing on Engineering and Science fabricators.
+ - The Ash Walkers' nest on Lavaland now starts with three bowyery slabs.
+ - You can now welder-harden arrows. It might take longer.
+ - Silkstring's costs adjusted for bows and whatnot.
+ - Grammar adjusted on a lot of things relating to bows.
+ - Pipe bows' bowstring doesn't look like it replicated itself upon draw.
+
+
IHOPMommyLich updated:
+
+ - Changed the multiplicative_slowdown of Stimulants from -1 to -0.5
+
+
IronEleven updated:
+
+ - Minor stat changes to Choking, Spontaneous Combustion, Autophagocytosis Necrosis, Hallucigen, Narcolepsy, Shivering, and Vomiting symptoms.
+
+
KathrinBailey updated:
+
+ - Missing turf_decals in Cargo Office.
+ - Turns on the docking beacons on Box.
+ - Fixes Starboard Quarter maint room being spaced. It was never intended to be like how it was.
+ - The aforementioned maint room not having stuff in it.
+ - varedited photocopier sometimes not opening any UI.
+ - Atmos differences in Starboard Quarter maint.
+ - Atmos differences in destroyed shuttle/EVA bridge. Plating replaced with airless plating.
+ - Rotates AI satellite computers. These have probably been like this since computers had the old sprites and no directional ones. You shouldn't sit at a chair to operate a sideways computer.
+
+
KrabSpider updated:
+
+ - The Van Dyke is no longer Fu Manchu.
+ - Gets rid of a Fu Manchu imitation.
+
+
Kraseo updated:
+
+ - You can no longer pull before wearing boxing gloves to bypass the grab check.
+ - Nightmares no longer delete entire guns from existence for merely having a light on them.
+
+
Linzolle updated:
+
+ - Bows now will not delete an arrow if it cant fire it.
+ - bows now like and respect sprite changes
+
+
MalricB updated:
+
+ - "Shaggy" sprite from virgo
+ - "shaggy" option in the character customization
+
+
MrJWhit updated:
+
+ - Removed meteor defense tech node
+ - TEG
+
+
Naksu updated:
+
+ - Odysseus chem synthesizing now works again.
+
+
Owai-Seek updated:
+
+ - Burger, Cargo Packaging, Dirty Magazine, Air Pump, and Scrubber crates.
+ - Duplicate Crate, Festive Wrapping Paper Crate, Contraband Monkey Meat Crate
+ - Gave Seed Crate Ambrosia Seed, gave Biker Gang Crate Spraypaint.
+ - Organised some crates with sub-categories. Also, moved all vendor refills to a new tab.
+ - Moved Grill to Service Tab
+ - Engineering Hardsuit Access
+ - Blood Crate now has all of the current blood types.
+ - Birthday Cake Recipe is now the same as TG.
+ - Added Soy Sauce and BBQ Packets to Dinnerware Vendor.
+ - Added nurse outfit, nurse cap, and mailman hat to loadout.
+ - Changed the name of scrubs to blue, green, and purple scrubs.
+ - Bacon and Eggs food item. Delicious! Added a Lemony Poppy Seed Muffin.
+ - Snack Vendor has Chocolates, Tortilla Chips, and a Marshmallow Box
+ - Mops can now be printed at service lathe once tools are researched.
+ - Biobags can hold most organic limbs/organs, but not brains, implants, or cybernetics.
+ - Trash Bag can now hold limbs (but not heads.)
+ - Most snack vendor items reduced by 1.
+ - Trash Cans are now actually craftable, and only require metal instead of plastic.
+ - Bacon and Eggs, Drying Agent Bottle.
+ - Mugs now show reagent colors of contained reagents. Thanks Seris!
+ - Reorganized all food recipes, (hopefully) making things easier to find.
+ - Trays now have a whitelist, allowing them to pick up normal sized foods, bowls, glassware, booze, ect.
+ - Easter foods are no longer their own Misc Food Category on the top of the menu.
+ - fixed a few typos/capitalization consistency.
+ - Mexican Foods are their own Subcategory.
+ - Donuts are their own Subcategory
+ - Moved Sweets from Misc Food in with Pies. Renamed to Pies & Sweets
+ - BROOM
+ - Janitor Vendor now has gear for two Janitors.
+
+
PersianXerxes updated:
+
+ - SMES and PACMAN attached to gulag Security to power electrified windows remove: Removed Sec vendor from gulag Security
+ - Separation of gulag and public mining
+ - Better clarified the comment explaining the contraband tag.
+ - Cargo nuclear defusal kits now require an emag'd drop pod console to be purchased.
+ - Added Kilo Station
+ - Adjusts Kilo Station to be more in line with Citadel standards
+ - Added area icons required to make Kilo Station editable on Citadel code
+ - Fixed a reagent container on Kilo pointing to a nonexistent reagent
+ - Adds Kilo Station to the maps config file, does not fix Meta Station's population requirement
+
+
Psody-Mordheim updated:
+
+ - You can now make synth-flesh with synthetic blood.
+ - You can now make synthetic blood via mixing saline glucose, iron, stable plasma and heating it to 350 temp.
+ - You can mix synthetic blood and cryoxadone to create synth-meat in addition to normal blood.
+ - Disfiguration Symptom.
+ - Deoxyribonucleic Acid Saboteur Symptom.
+ - Polyvitiligo Symptom.
+ - Revitiligo Symptom.
+ - Vitiligo Symptom.
+
+
Putnam3145 updated:
+
+ - Added logging to various consent things.
+ - Lots of new traitor objectives
+ - gender change potion now respects prefs
+ - Hypno prefs work better.
+ - Panic bunker is now round-to-round persistent
+ - Relief valve now has a TGUI-next UI
+ - Atmos reaction priority works now.
+ - map voting doesn't suck anymore
+ - Dynamic now defaults to "classic" storyteller instead of just failing if the vote didn't choose a storyteller.
+ - antag quirk blacklisting works now
+ - default should be... default
+ - all supermatter damage is now hardcapped
+ - Supermatter sabotage objective no longer shows up with no supermatter
+ - Mining vendors no longer fail and eat your points iff you have precisely enough points to pay for an item
+ - Licking pref
+ - Fixed IRV.
+ - Runtime if nobody has a chaos pref set
+ - IRV fixed... again
+ - temporary flavor text can now be of reasonable length
+ - Shooting the supermatter now adds to the supermatter's power. CO2 setups beware!
+ - Logging for renaming
+
+
Raiq & Linzolle updated:
+
+ - Bone bow - Ash walkers crafting , bone arrows - Ash walkers crafting, silk string used in bow crafting, harden arrows - Ash walkers crafting, ash walker only crafting book, basic pipe bow, and bow & arrow selling. Quivers for ash walkers as well, just to hold some arrows well out on the hunt!
+
+
Seris02 updated:
+
+ - tweaked the way the SM works
+ - custom reagent pie smite
+ - hijack implant
+ - changed mentions of the issilion proc to hasSiliconAccessInArea based on what the proc is used for
+ - recipe for mammal mutation toxin
+ - polychromic winter coat
+ - thief's gloves
+ - crushing magboots
+ - golden plastitanium toolbox being actually plastitanuium
+ - character slot amount
+ - rebalanced rising bass
+ - string highlighting whitespace
+ - glitch with PKA
+ - meteor hallucinations (again)
+ - Added naked hallucination
+ - crowbarring manifests off crates
+ - makes RCDs cost a better amount
+ - apc icons
+ - rest hotkey
+ - hsl instead of sum of rgb for spraycan lum check
+ - bloodcrawl's cooldown
+
+
ShadeAware updated:
+
+ - Craftable Switchblades, a weaker subtype of normal switchblades that can be crafted using a Kitchen Knife, Modular Receiver, Rifle Stock and some Cable Coil. Requires a welder to complete.
+ - You can now actually craft Switchblades.
+ - Switchblades no longer regain their old Makeshift sprite after retracting if you've made them fancy with Silver.
+ - The Captain's Wardrobe, a special one-of-a-kind and ID-locked wardrobe for the Captain that holds all of their snowflakey gear. Remove: Snowflake gear from the Captain's locker, since now it has its own vendor.
+
+
Tlaltecuhtli, ported by Hatterhat updated:
+
+ - Ripley, Firefighter, Odysseus and H.O.N.K. mechs now also use scanning modules and capacitors on construction. This means that they also gain reduced power consumption and EMP protection from higher-tier stock parts.
+
+
Trilbyspaceclone updated:
+
+ - Vault hallway door being all access
+ - Updates change logs
+ - Crafts are now made of plasteel and can be made with 5 sheets
+ - Takes away NT's connections to the Aliens that run the Syndicats
+ - Carps have evolved to take more damage
+ - restock crates for each vender
+ - restock units for all station venders
+ - Sec-vender missing icon
+ - Box station captain office issues maping: Gulag on box can now be accessed
+ - Alien stools and chairs
+ - Bone armor/Dagger are now crafting from bones rather then crafting menu
+ - Firing pins that only works when not on station
+ - Medical locked crates
+ - Russian gear crates have less gear in some cases but all will cost more
+ - Medical locked crates that were not locked
+ - Crates that were out of date are corrected
+ - Heads of staff have been better screened by NT before being promoted
+ - The suit full of spiders also known as a ninja now is a tactical turtleneck
+ - The Wiznerds now dont have suits set to max
+ - Meat wheat no longer has blood
+ - Flat guns can no longer be suppressed
+ - replaced stickmans .45 caliber with 10mm, for consistency.
+ - Meatwheat and Oats now have rarity
+ - Oats now have at lest 50% more flour in them
+ - BDM now uses a PKA rather then a normal KA
+ - Gang tower shield is no longer transparent
+ - Cosmic winter coat now glows like the bedsheet, and holds normal winter coat gear
+ - Express console is now logging what it buys, like the normal console should
+ - Crabs are now made of crab meat.
+ - AIs now understand the old ways of drunken dwarfs
+ - Removes some armored Russian hats from box station round start
+ - Doner items spawning
+ - Engi/Sec Trek suit no longer has 10% melee protection
+ - IPC hearts are now made of robomeat and roboblood thats emp proof. Heals and is all and all just like an normal heart
+ - All robotic organs now have an animation.
+ - IPC's now organs now look like robotic ones, even tho thats not the case game wise
+ - Added a new bee themed bar sign
+ - Makes plywood chair not look as bad.
+ - corndog sprite being miss-spelled
+ - Ash from land of lava now is useable for sandstone
+ - Peach cake slices are no long made by mimes
+
+
Tupinambis updated:
+
+ - the portion of laws that require harm prevention by silicons has been removed.
+ - silicon_laws.txt config file is required to be modified for full implementation.
+ - masks no longer improperly stick out of helmets when they should be hidden.
+ - Status Displays should now update correctly.
+ - stunbatons now take 4 hits to inflict hard crit, up from 3.
+ - stunbatons no longer disarm targets.
+
+
Yakumo Chen updated:
+
+ - Rings for your fingers!
+ - New cargo crates and loadout options to bling your rings!
+
+
YakumoChen updated:
+
+ - Observe is back in the OOC tab
+ - Rings look nicer. Sprites used from RP.
+ - Ring on-hands. Diamond rings sparkle!
+ - You can now propose using a diamond ring in your hand.
+ - Legion skulls behave like bees!!!!
+
+
Zellular updated:
+
+ - Movement state for pupdozer and its decals
+ - Tweaked the movement state for the pupdozer's eyes
+
+
ancientpower updated:
+
+ - Fixes an error in pH strips' feedback message.
+ - Ported drink sliding from /vg/station.
+ - Fixes color mismatching with the "genitals use skintone" preference.
+ - Bunny ear style for humanoid species.
+ - Ghosts are now literate.
+
+
bunny232 updated:
+
+ - Changes the simple animal sentience event from the xenomorph preference to sentience potion preference.
+
+
coiax updated:
+
+ - Admin and event only pair pinpointers! They come in a box of two, and each pinpointer will always point at its corresponding pair. Aww.
+
+
deathride58 updated:
+
+ - Spacemen no longer run at lightspeed on local servers.
+
+
kappa-sama updated:
+
+ - the plant dudes can actually make plant disks now
+
+
keronshb updated:
+
+ - Added repairable turrets
+ - Adds Tiny Fans to the pirate ship
+ - changes some reinforced windows to plastinanium pirate windows
+ - made the pirate shuttle + turrets bomb resistant
+ - made most pirate machines + consoles indestructible
+ - increased pirate turret health
+ - Adds the CogChamp drink and Sprite
+ - Added burn and knockback to stunhand during HALOS on cult.
+ - fixed accelerated regeneration nanites
+ - fixed mechanical repair nanites
+ - fixed bio reconstruction nanites
+
+
kevinz000 updated:
+
+ - Custom snowflake plushies are now in config rather than code.
+ - Abductor mindsnapping (aka abductee objectives) can now be "cured" with brain surgery.
+ - Shuttle hijacking has been completely reworked. Alt-click the shuttle as a hijack-capable mind (so traitors, and especially traitors with hijack) to begin or continue a hacking process.
+ - A good amount of the blood RGB rework was cleaned up/reverted, with some notable gameplay changes including: Gibs and blood not having max blood by default (no more easy rampages, cultists), infinite gib streaking, etc etc.
+ - meteor waves are now directional and announces the direction on the command report.
+ - CTF CLAYMORES
+ - shoves buffed, now shoving into a wall twice rapidly will also disarm their weapon.
+ - traitor+bro gamemode minimum population set to 25 until there can be more in depth configuration systems for gamemodes.
+ - no more bluespace skittish locker diving,
+ - moths now have unique laughs and can *chitter.
+ - nuke explosion is now full dev radius for anti lag purposes
+ - Gangs can now only tag with a gang uplink bought spraycan.
+ - dueling pistol accesses have been changed to be more accessible.
+ - mechs no longer have admin logs flooding into IC control console log viewing
+ - Guncode and energy guns have been refactored a bit.
+ - You can now combat mode ight click on an energy gun to attempt to switch firing modes. This only works on guns without right click functions overridden.
+ - shoes can now fit magpistols again.
+ - Projectiles now always hit chest if targeting chest, snipers have 100% targeting zone accuracy. All other cases are unchanged.
+ - The lawyer's PDA cartridge has been rebranded to something more accurate to its true nature.
+ - Refactored ghostreading/etc
+ - Cyborgization will now de-gang people, even gangheads.
+ - reactive repulse armor now has an item limit
+ - beam rifle runtime fix during aiming_beam
+ - fail2topic runtime fix: taking out an ip while incrementing index resulted in accessing the next-next entry instead of the next and results in out of bound errors.
+ - gravity gun repulse and chaos now work in all angles, rather than just basic cardinals and diagonals. fun.
+ - Public autolathes can no longer be hacked.
+ - Energy weapons now once again have their lens in contents.
+ - pais are no longer muted for literally a whole hour on emp.
+ - auto profiler subsystem from tg
+ - Brig cells now are more accurate by using timeofday instead of realtime
+ - Cryo now actually transfers reagents at tier 4 on enter rather than every 80 machine fire()-process()s regardless of if it was "reset" by open/close.
+ - cmo now gets advanced surgery drapes that techweb-sync for advanced surgeries without an operating console.
+ - ctf claymores now actually spawn (and fit).
+ - STOP_PROCESSING now removes from currentrun to prevent another process cycle from happening where it shouldn't.
+ - hand teleporters now require 30 deciseconds of still movement by the user to dispel portals. there's a beam effect too.
+ - Sort of a bugfix but cult blood magic and all guns now respect stamina softcrit.
+ - Organ healing rate doubled. Organ decay rate halved to match its define (15 minutes for full decay, so at around 8-10 minutes it'll be really fucked).
+ - Storage now caches max screen size and only stores when being opened by a non ghost, meaning ghosts will no longer distort living player screens when viewing storage.
+ - Stunbatons changed yet again.
+ - the game's built in autoclicker aka CanMobAutoclick no longer triggers client/Click()'s anti clickspam guard.
+ - pais can no longer bodyblock bullets
+ - pai radio short changed to 3 minutes down from 5
+ - pais are no longer fulltile click opacity.
+ - vampire "immortal haste" has been reworked to be more reliable and consistent.
+ - hand teles use a less atrocious beam
+
+
necromanceranne updated:
+
+ - Ebows now disarm people hit by them.
+ - Ebows now do 60 stamina damage on hit.
+ - Ebows no longer inflict drowsiness
+ - Miniature ebows do 15 toxin damage, up from 8.
+ - Ebows have considerably shorter knockdowns.
+ - Ebows now make you slur rather than stutter.
+ - Large ebows are now heavy and bulky.
+ - You can no longer order spinfusors or their ammo from cargo.
+ - Removed the formal security officer jacket from the secdrobe
+ - formal security jackets are now armor vests
+ - Bullets causing bleed rates equal to unmitigated damage through all forms of defense.
+ - Reverted #9092, crew mecha no longer spawn with tracking beacons.
+ - [Port] Mecha ballistics weapons now require ammo created from an Exosuit Fabricator or the Security Protolathe, though they will start with a full magazine and in most cases enough for one full reload. Reloading these weapons no longer chunks your power cell. Clown (and mime) mecha equipment have not changed.
+ - [Port] The SRM-8 Missile Launcher has been replaced with the BRM-6 Breaching Missile Launcher in techwebs (Nukie Mauler remains equipped with the SRM-8).
+ - [Port] Both Missile Launchers and the Clusterbang Launcher do not have an ammo cache, and cannot be reloaded by the pilot. Once the initial loaded ammo has been spent, you can use the appropriate ammo box to load the weapon directly.
+ - [Port] Utility mechs that have a clamp equipped can load ammo from their own cargo hold into other mechs.
+ - [Port] Nuke Ops can purchase spare ammo duffel bags for their mecha weapons, should they run low.
+ - Literally unclickability with a cham projector
+
+
nemvar updated:
+
+ - Slight changes the self-repair borg module. It no longer references the borg that owns it.
+ - Trash from food now gets generated at the location of the food item, instead of in the hands of the eater.
+ - Changed mob biotypes from lists to flags.
+
+
r4d6 updated:
+
+ - Added a dwarf language
+ - Added more engines
+ - RPD subcategories and preview icons reorganized.
+ - RPD now starts with painting turned off, hitting pipes with build and no paint will target the turf underneath instead. Bye bye turf pixelhunting.
+ - Made dwarves into a roundstart races
+ - Meteor Timer back to 3-5 minutes
+ - Mining no longer lead to spess
+ - Added Plasteel Pickaxe
+ - Added Titanium Pickaxe
+ - fixed a missing tile
+
+
tralezab, bandit, Skoglol updated:
+
+ - The mime's PDA messages are silent now!
+ - 30 new emoji have been added. Mime buff, mime now OP.
+
+
27 January 2020
4dplanner, CRITAWAKETS, XDTM, ninjanomnom updated:
@@ -506,328 +1055,6 @@
- fixed not being able to remove trait genes without a disk being inserted into the dna manipulator
-
- 30 December 2019
- AnturK updated:
-
- - Fixed ranged syndicate mobs stormtrooper training.
-
- Arturlang updated:
-
- - Adds Bloodsuckers, beware.
-
- BlueWildrose updated:
-
- - Fixed stargazers being unable to link to themselves if mindshielded or if holding psionic shielding devices (tinfoil hats) when the species is set.
- - Fixes non-roundstart slimes being unable to wag their tail.
-
- Commandersand updated:
-
- - added two words to clown filter
- - Added new things to loadouts, check em
-
- DeltaFire15 updated:
-
- - Clock cult kindle no longer cares about oxygen damage
- - changed mecha internals access for some special mechs.
- - no more mech maintenance access for engineers.
- - All heads of staff can now message CC
- - Removes a magicnumber
- - Rebalanced cult vs cult stun effects to debuff instead of stun
-
- Detective-Google updated:
-
- - short hair 80's is no longer jank
-
- Fermis updated:
-
- - tweaked how super bases/acids work but limiting them
-
- Fikou updated:
-
- - the windup toolbox now has some more "realistic" sounds
- - the windup toolbox now rumbles again
-
- Ghommie updated:
-
- - Fixed hulks, sleeping carp users, pacifists and people with chunky fingers being able to unrestrictly use gun and pneumatic cannon circuit assemblies.
- - Fixed gun circuit assemblies being only usable by human mobs.
- - Doubled the locomotion circuit external cooldown, thus halving the movable assemblies' movespeed.
- - Made wooden cabinet/closets... actually made of wood.
- - Wooden cabinets are now deconstructable with a screwdriver.
- - Deconstruction of large crates and other closet subtypes deconstructable with tools other than the welder is no longer instant.
- - You shouldn't be able to target objects you can't see (excluding darkness) with the ARCD and RLD
- - The admin RCD is ranged too, just like the ARCD.
- - Fixed welding, thirteen loko, welding and wraith spectacles not blinding people as expected. Thank you all whomst reported this issue in the suggestions box channel instead of the github repository's issues section, very smart!
- - Fixed on_mob eyes overlays not updating properly in certain cases.
- - Fixed deconversion from bloodshot eyes blood cult resetting your eyes' color to pitch black instead of their previous color, more or less.
- - Spinfusor nerf: Upped the casing and ammo box size by one step, removed the projectile's dismemberment value (explosions can still rip a limb or two off), halved the ammo box capacity, reduced the spinfusor ammo supply pack contents from 32 to 8, removed the casing's ability to explode when thrown.
- - Fixes bubblegum's death not unlocking the arena shuttle buyment.
- - Fixed alien tech node not being unlockable with subtypes of the accepted items.
- - Fixed reactive armor onmob overlays not updating when toggled and reactive teleport armor still using forceMove() instead of do_teleport()
- - Fixed space hermit asteroid rocks unintendedly spawning airless asteroid turf when mined, save for the perimeter.
- - Fixes reviver implant having been a crapshot ever since soft-crit was introduced years ago.
- - Added a "convalescence" time (about 15 seconds) after the user is out of unconsciousbess/crit to ensure they are properly stabilized.
- - Added a 15 minutes hardcap for accumulated revive cooldown (equivalent to 150 points of brute or burn healed) above which the implant starts cooling down regardless of user's conditions.
- - Fixed AI core displays I may have broken with my coding extravaganza.
- - Blue, Amber and Red security alert sounds should be half as loud now.
- - Buffed clown ops by removing their clumsiness and adding a new trait to be used in place of several clown role checks.
- - Clown ops too also suffer from not holding or wearing clown shoes now.
- - Fixed a few holo barriers lacking transparency.
- - Fixed character setup preview bodyparts not displaying correctly most of times.
- - Fixed character appearance preview displaying the mannequin in job attire instead of undergarments.
- - Fixed raven's shuttle computer not being of the emergency shuttle type.
- - Blood bank generators can now be anchored and unanchored now.
- - Ghost mentors can now orbit around the target instead of setting their view to theirs'.
- - Fixes a ghostchat eavesdropping exploit concerning VR.
- - Fixes VR deaths being broadcasted in deadchat.
- - Fixed a few pill bottle issues with the ChemMaster.
- - Fixes a few negative quirks not being properly removed when deleted.
- - Phobia and mute quirks are no longer cheesed by brain surgery grade healing or medicines.
- - Fixed double-flavour (and bland custom) ice creams.
- - Fixed Pubbystation's wall Nanomeds being inconsistent with other stations'.
- - dextrous simplemobs can now swap action intent with 1, 2, 3, 4 now. Just like humies, ayys and monkys.
- - Stops humanoids whose skin_tone variable is set to "albino" from showing up as pale when examined should their species not use skintones anyway.
- - Removed the old (almost) unused roboticist encryption key and headset.
- - Fixed goose meat.
- - Fixed a little door assembly glass dupe exploit
- - Fixed AI holopad speech text being small and whispers that in multiple exclamation marks echo through multiple areas.
- - Removed literally atrocious polka dotted accessories. They were even more atrocious than the yellow horrible tie.
-
- Ghommie (also porting PRs by AnturK and Arkatos) updated:
-
- - Fixed light eaters not burning out borg lamplights and flashes. fix Fixed light eater not affecting open turfs emitting lights such as light tiles and fairy grass.
- - Fixed an empty reference about light eater armblade disintegration after Heart of Darkness removal.
-
- Ghommie, Skogol updated:
-
- - refactored altclick interaction to allow alt-click interactable objects to parent call without forcing the turf contents stat menu open.
- - Alt clicking will no longer show turf contents for items inside bags etc.
- - Alt clicking the source of your turf contents stat menu will now close said menu.
-
- GrayRachnid updated:
-
- Hatterhat updated:
-
- - Regenerative nanites, a "chemical" used in the combat stimulant injector. Actually quite stimulating, and not bad in a pinch for a nuclear operative. Check the Combat Medic Kit!
- - The Combat Medic Kit now has an advanced health analyzer and medisprays instead of patches and a chloral syringe.
- - The Advanced Syndicate Surgery Duffelbag or whatever it was doesn't get the better injector, because nobody uses it and so nobody's bothered to update it.
- - .357 speedloaders can now be printed with the Advanced Illegal Ballistics node on the tech tree!
- - okay so i may have given the .357 an extra speedloader at the same cost but it comes in a box now
-
- ItzGabby updated:
-
- - Fixed AltClick on polychromic collars so they actually work now.
-
- KeRSedChaplain updated:
-
- - Extends the file "deltakalaxon.ogg" to a 38 second .ogg.
-
- Linzolle updated:
-
- - neck slice. harm intent someone's head while they are unconscious or in a neck grab to make them bleed uncontrollably.
- - officer's sabre now properly makes the unsheating and resheating noise
- - fireman failure has a different message depending on the circumstance
- - Abductor chem dispenser, and added it to the abductor console.
- - "Superlingual matrix" to the abductor console. It's the abductor's tongue. Can be used to link it to your abductor communication channel and then implanted into a test subject.
- - Shrink ray and added it to the abductor console.
- - Shrink ray sound effect (its the fucking mega man death sound)
- - special jumpsuit for abductors
- - abductor jumpsuit, including digi version if a digitigrade person somehow manages to get their hands on it. sprites for the shrink ray and chem dispenser.
- - new glands to play with, including the all-access gland, the quantum gland, and the blood type randomiser.
- - split every gland into its own file instead of all being in one file
- - cosmic coat crafting recipe changed to coat + cosmic bedsheet
-
- Mickyan, nemvar, RaveRadbury, AnturK, SpaceManiac updated:
-
- - Certain incompatible quirks can no longer be taken together.
- - If an admin sends a ghost back to the lobby, they can now choose a different set of quirks.
- - the quirk menu went through some minor formatting changes.
- - Podcloning now lets you keep your quirks.
- - Quirks have flavor text in medical records.
- - All quirk medical records refer to "Patient", removing a few instances of "Subject".
- - Quirks no longer apply to off-station roundstart antagonists.
- - Mood quirks are now only processed by the quirk holders
-
- Narcissisko (ported by Hatterhat) updated:
-
- - Luxury Bar Capsule, at 10,000 points. Comes with no medical supplies, a bar, and a bunch of cigars. Ported from tgstation/tgstation#45547.
-
- Nervere and subject217, Militaires, py01, nemvar updated:
-
- - The cook's CQC now only works when in the kitchen or the kitchen backroom.
- - corrected CQC help instructions
- - CQC and Sleeping Carp are properly logged.
- - CQC can passively grab targets when not on grab intent. Passive grabs do not count towards combos for CQC or Sleeping carp.
- - Martial Art and NOGUN cleanup.
-
- PersianXerxes updated:
-
- - Removed night vision quirk
-
- Putnam updated:
-
- - acute hepatic pharmacokinesis now works if you already have relevant genitals
- - Contamination is no longer an infinitely spreading deadly contagion causing mass panic
- - Dynamic rulesets have lower weight if a round recently featured them (except traitor).
-
- Putnam3145 updated:
-
- - Buffed HE pipes by making them realistically radiate away heat.
- - Dynamic has a (totally unused for any relevant purpose) roundstart report now.
- - A whole bunch of dynamic data is now available for statbus
- - Dynamic from-ghost antags no longer double dip on threat refunds when the mode fails due to not enough applications.
- - whoops broke quirks
- - quirks work
- - New tab in preferences screen: "ERP preferences"
- - New opt-outs for individual effects of incubus draught, succubus milk
- - Acute hepatic pharmacokinesis has been removed, replaced with above
- - Renamed "Toggle Lewdchem" to "Toggle Lewd MKUltra", since that's what it actually means, and made it toggle the "hypno" setting (rename it again if more hypno mechanics are added).
- - Made MKUltra's lewd messages require both people involved to have hypno opted-in.
- - Buncha dynamic config tweaks
- - Ghost cafe spawns are actual ghost roles by the game's reckoning now
- - a runtime in radioactive contamination
- - Bomb armor now acts like other armor types.
- - Devastation-level explosions on armorless people no longer destroys everything in their bags.
-
- Seris02 updated:
-
- - the clowns headset
- - distance checks
- - the sprites
- - added the runed and brass winter coats (cosmetic ratvarian/narsian)
- - how the narsian/ratvarian coats can be made
- - fixes some ghost roles from dying of stupid shit
- - pandoras attacking their owners
- - Added Rising Bass and the shifting scroll.
- - Changes the martial arts scroll in the uplink to "Sleeping Carp Scroll"
-
- ShizCalev updated:
-
- - Fixed floodlights not turning off properly when they're underpowered.
- - Fixed emitters not changing icons properly when they're underpowered.
-
- Sishen1542 updated:
-
- - Clicking a pack of seeds with a pen allows you to set the plant's name, description and the pack of seeds' description. Useful for differentiating genetically modified plants. These changes will persist through different generations of the plant.
- - Hydroponics trays update their name and description to reflect the plant inside them. They revert to default when emptied.
-
- Toriate updated:
-
- - Polychromic shorts now have a digitigrade state
-
- Trilbyspaceclone updated:
-
- - ports all the new donuts, burgars, and chicken stuff from RG
- - ports new snowcone
- - ports grill
- - ports beakfeast tag/mood lit as TG has it
- - ports all the amazing new sprites
- - ports crafting for many things like snowcones needing water
- - ports of many craftings
- - lowers fryers sound
- - ported icons for new food/grill
- - ports the deletion of some icons and images
- - ports a spell check for the snowcones
- - ports fixes for stuff I didnt know were even broken with snowcones
- - coder cat failers to push the last commit from year(s) ago
- - Updates the changlogs
- - meat hook from HUGE to bulky
- - CE hardsuit is now more rad-proof
- - Wrong icon names, missing dog fashion with telegram hat
- - New softdrink that comes in its own vender!
- - Honey now has a reaction with plants
- - Buzz fuzz now only has a 5% to give honey and will now give 1u of sugar not 2
- - Blaster shotguns back into armory
- - Removed Lighters in thunderdomes
- - Silicons now know what a slime is saying!
- - honey now will not kill slimes. Honey slimepeople can be a thing now, go sci.
- - Added insulin into many of the borg hypo's
-
- Useroth updated:
-
- - bamboo which can be used to build punji sticks/ blowguns available as a sugarcane mutation or in exotic seed crate
- - changed the sugar cane growth stages because fuck if I know why, but it was in the PR
- - New lavaland ruin: Pulsating tumor
- - New class of lavaland mobs, a bit weaker than megafauna but still stronger than most of what you normally see
- - Ghost cafe spawner. For letting people spawn as their own character in the ninja holding facility. It bypasses the usual check, so people who have suicided/ghosted/cryod may use it.
- - Dorms in the ninja holding facility.
-
- Xantholne updated:
-
- - Santa Hats to Loadout and Clothesmate
- - Christmas Wintercoats to Loadout and Clothesmate
- - Christmas male and female uniforms to loadout and Clothesmate
- - Red, Green, and Traditional Santa boots to loadout and Clothesmate
- - Christmas Socks, Red candycane socks, Green candycane socks to sock selection
-
- kappa-sama updated:
-
- - legion drops more crates now
- - .357 speedloaders in autolathes are now individual bullets instead, speedloaders are now illegal tech, costs less total metal to make 7 bullets than a previous speedloader. 7.62mm bullets in autolathe when hacked and costs more metal to make 5 7.62mm bullets than getting a clip from the seclathe.
- - mentions that you can refill speedloaders on .357 uplink description
- - you can now strip people while aggrograbbing or higher
- - plasmafist to wizard
- - modular is gone
- - martial apprentices for the local Chinese wizard
- - broodmother baby lag
- - you can no longer get 100k credits by spending 4k roundstart
- - cooking oil in sunflowers instead of corn oil
- - throats are no longer slit happy
-
- keronshb updated:
-
- - Adds reflector blobs to shield blob upgrades
-
- kevinz000 updated:
-
- - Launchpads can now take number inputs for offsets rather than just buttons.
- - nanites no longer spread through air blocking objects
- - Night vision readded as a darkness dampening effect rather than darksight.
- - conveyors can only stack items on tiles to 150 now.
- - added 8 character save slots
- - Cargo shuttle now silently ignores slaughter demons/revenants instead of being blocked even while they are jaunted. A drawback is that manifested ones can't block it either, any more.
- - flashbangs process light/sound separately and uses viewers(), so xray users beware.
- - Stat() slowed down for anti-lag measures.
- - sprint/stamina huds now work again
- - Combat defibs now instant stun on disarm rather than 1 second again
- - Defibs are now always emagged when emagged with an emag rather than EMP.
- - aooc toggling now only broadcasts to antagonists
- - Antag rep proc is now easier to read and supports returning a list.
- - Clockwork marauders are now on a configured summon cooldown if being summoned on station. They also rapidly bleed health while in or next to space. And they glow brighter.
-
- lolman360 updated:
-
- - Added ability to pick up certain simplemobs.
-
- nemvar updated:
-
- - The brains of roundstart borgs no longer decay.
- - Refactored the visibility of reagents for mobs.
-
- nicbn, Kevinz000, ShizCalev updated:
-
- - Fire alarm is now simpler. Touch it to activate, touch it to deactivate. When activated, it will blink inconsistently if it is emagged.
- - You can no longer spam fire alarms. Also, they're logged again.
- - Fixed fire alarms not updating icons properly after being emagged and hacked by Malf AI's.
-
- r4d6 updated:
-
- - Added a N2O pressure tank
- - Removed a AM Shielding from the crate
- - Added Handshakes
- - Added Nose booping
- - Added submaps for the SM, Tesla and Singulo
- - Added a placeholder on Boxstation for the Engines
- - fixed Nose boops not triggering
-
- shellspeed1 updated:
-
- - Adds Insect markings
- - Adds three new moth wings.
-
GoonStation 13 Development Team
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 464340ef24..92ef22f74f 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -24452,3 +24452,590 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
timothyteakettle:
- bugfix: fixed not being able to remove trait genes without a disk being inserted
into the dna manipulator
+2020-02-26:
+ AnturK ported by kevinz000:
+ - rscadd: Dueling pistols have been added.
+ Arturlang:
+ - rscadd: Replaces a lot of ingame UIs with TGUI next, increasing performance drastically.
+ - rscadd: Each night for bloodsuckers will last longer due to the sun dimming.
+ - tweak: You cant level up for free, now you have to pay blood for power.
+ - balance: Bloodsuckers are no longer as resistant to hard stuns and regenerate
+ less stamina. and a lot of their cooldowns are a lot higher.
+ - rscdel: Removed text macros from the chem dispenser.
+ - rscadd: Replaced with dispenser input recording macros.
+ - bugfix: Fancifying makeshift switchblades now works
+ - balance: Shields will no longer block lasers, and will break if they take too
+ much damage.
+ - rscadd: Added a TGUI Next interface for crafting
+ - rscdel: Removed the old TGUI slow crafting interface
+ - tweak: The MK2 hypospray now
+ - admin: The debug outfit is now kitted out for whatever debbuging needs.
+ - bugfix: Fixed the pandemic naming and the radiation healing symptom UI crashing
+ - tweak: Hyposprays now switch modes on CTRL click, instead of alt, as it was already
+ reserved for dispension amount.
+ - rscadd: Nanite interfaces have gotten a rework to TGUI Next, and can now support
+ sub-programs. add:Adds the nanite sting program, which will allow you to manually
+ sting people to give them nanites, changeling style.
+ - balance: The pandemic can no longer make vaccines or synthblood as quickly.
+ - rscadd: The syndicate uplinks interface has been redone in TGUI Next
+ - tweak: Valentines can now be converted by bloodsuckers
+ Bhijn:
+ - tweak: Click-dragging will now only perform the quick item usage behavior if you're
+ in combat mode.
+ BlueWildrose:
+ - bugfix: podpeople tail wagging
+ - tweak: lifebringer ghost role fixes
+ BuffEngineering, nemvar.:
+ - bugfix: Addicts can now feel like they're getting their fix or kicking it.
+ - bugfix: Aheals now remove addictions and restore your mood to default.
+ CameronWoof:
+ - tweak: Lighting looks better now. I can say that because the PR wouldn't be merged
+ and you wouldn't be reading this if it wasn't true.
+ - rscadd: Ammonia and saltpetre can now be made at the biogenerator.
+ Commandersand:
+ - tweak: uplink centcomm suit doesn't have sensors
+ DeltaFire15:
+ - balance: Nar'Sie runes no longer benefit from runed floors.
+ Detective-Google:
+ - rscadd: 'the POOL. remove: boxstation dorms 7'
+ - bugfix: valentines candy no longer prefbreaks
+ - rscadd: Loudness Booster pAI program
+ - rscadd: Encryption Key pAI program
+ EmeraldSundisk:
+ - bugfix: Connects mining's disposal unit on Delta.
+ - tweak: Slight visual adjustments to the immediate affected area.
+ Feasel:
+ - balance: Buffed dissection success chances.
+ Ghommie:
+ - tweak: The anomalous honking crystal should now properly clown your mind.
+ - bugfix: Stopped the ellipsis question mark from being displayed twice in the examine
+ message for masked/unknown human mobs.
+ - tweak: Made the aforementioned ellipsis question mark display on flavor-text-less
+ masked/unknown human mobs too for consistency.
+ - bugfix: Stopped an APTFT exploit with spray bottles.
+ - bugfix: Fixed the detective revolver being quite risky to use.
+ - bugfix: Hair styles and undergarments are yet again free from gender restrictions.
+ - tweak: Clown ops will find bombananas and clown bomb beacons instead of minibombs
+ and bomb beacons in their infiltrator ship now.
+ - tweak: For safety, the syndicate shuttle minibombs and bombananas come shipped
+ in a box. Please don't instinctively eat any of those nanas, thank you.
+ - tweak: Uplink items excluded (such as mulligan, chameleon, ebow) from or exclusive
+ (such as cyber implants) to normal nuke ops will now be properly unavailable/available
+ to clown ops.
+ - bugfix: Fixed bananium energy sword/shield slips.
+ - balance: Buffed said slips to ignore no-grav/crawling/flying as well as adding
+ some deadly force to the e-sword.
+ - bugfix: Fixed the 'stache grenade anti-non-clumsy user check.
+ - balance: Doubled the timer for the sticky mustaches effect from the above grenade
+ (from 1 to 2 minutes)
+ - bugfix: Fixed an edge case with the chaplain armaments beacon spawning the box
+ in nullspace.
+ - tweak: The playback device's cooldown now proportionally increases with messages
+ longer than 60 characters (3 seconds is the default assembly cooldown).
+ - bugfix: Fixed space ninjas "Nothing" objective. Now you gotta steal some dandy
+ stuff such as corgi meat and pinpointers as a ninja too.
+ - bugfix: Fixed maploaded APC terminals direction.
+ - balance: Nerfed magnetic rifles/pistols by re(?)adding power cell requirements
+ for it. These firearms must be recharged after firing 2 magazines worth of projectiles
+ and are slightly more susceptible to EMPs.
+ - bugfix: Fixed the tearstache nade not properly working.
+ - balance: Buffed it against space helmet internals.
+ - tweak: Holographic fans won't display above mobs and other objects anymore.
+ - bugfix: Fixed paraplegics appearing as shoeless.
+ - bugfix: Fixed the petting element.
+ - bugfix: Fixed slipping.
+ - refactor: Refactored mob holders into an element.
+ - bugfix: Fixed a few minor issues with that feature. such as mismatching sprites
+ for certain held mobs and a slight lack of safety checks.
+ - rscdel: holdable mobs can't force themselves into people's hands anymore.
+ - bugfix: Milkies fix.
+ - bugfix: Fixed some mounted defibrillator issue with the altclicking functionality.
+ - bugfix: Fixed no-grav lavaland labor/mining shuttle areas.
+ - bugfix: Fixed a little issue with sleeper UI and blood types.
+ - bugfix: Fixing accidental nerfs to the magpistol magazine.
+ - bugfix: The Lavaland's Herald speech sound should only play if they are actually
+ speaking.
+ - bugfix: Nerfed cargo passive points generation from 500 to 125 creds per minute.
+ - bugfix: Fixed whitelisted/donor loadouts
+ - bugfix: Childproofs double-esword and hypereuplastic blade toys.
+ - balance: Some reagent holders (such as cigarettes, food) are not suitable for
+ reagents export anymore, while unprocessed botany crops will only net 1/3 of
+ the standard reagents values.
+ - bugfix: Export scanners now include the reagents value in the price report.
+ - bugfix: Fixed a little inconvenience with the character setup preview dummy having
+ extra unwarranted bits.
+ - bugfix: Stopped role restricted uplink items from being discounted despite not
+ being purchasable most times.
+ - bugfix: Missing words replacement file for the gondola mask.
+ - bugfix: Fixed an issue with the nearsighted prescription glasses taking over worn
+ eyewear.
+ - bugfix: Fixed AI unanchoring not properly removing the no teleport trait. My bad.
+ - bugfix: Fixed another issue with hering comsig.
+ - imageadd: Fixed dozen missing privates sprites.
+ - bugfix: A little fix concerning some R&D and reagents.
+ - bugfix: Further mob holder fixes.
+ - bugfix: Fixed being unable to dump a trash bag's contents directly into disposal
+ bins.
+ - bugfix: Doubled the halved flavor text maximum length.
+ - bugfix: Reduced tongue organ damage and tasting pH message spam.
+ - bugfix: Fixed agent IDs not registering the inputted name. Thanks MrPerson.
+ - bugfix: Fixed solar panels/trackers (de)construction being a bit wonky.
+ - bugfix: Fixed something about slime blood and the law of conservation of mass.
+ - bugfix: Fixed flypeople being emetic machine guns.
+ - bugfix: Fixed virology being unable to be done with synthetic blood.
+ - rscdel: Renamed "blaster carbine" and "blaster rifles" back to "energy gun" and
+ "laser gun" respectively
+ - bugfix: Fixed magnetic rifles & co being inconsistent with printed energy guns
+ and start with an empty power cell.
+ - imagedel: Reverted practice laser gun sprites back to their former glory. Mostly.
+ - bugfix: Fixed sprint buffer cost and regen being rounded down.
+ - balance: Nerfed the fermenting barrel export industry.
+ - tweak: Reagent dispensers selling price no longer takes in account the reagents
+ volume. It's already handled by reagents export.
+ - bugfix: pAIs are yet again unable to perform certain silicon interactions with
+ machineries yet again.
+ - bugfix: Fixed pAI radios inability to be toggled on/off.
+ ? Ghommie (original PRs by Floyd/Qustinnus, 4Dplanner, Willox, ninjanomnom, mrdoombringer,
+ Fikou, Fox McCloud, TheChosenEvilOne, nemvar, bobbahbrown, Time-Green, Stonebaykyle,
+ MrPerson, ArcaneMusic and zxaber)
+ : - rscadd: You can now make toolboxes out of almost any solid material in an autolathe
+ - rscadd: adds Knight's Armour made out of any materials
+ - rscadd: new ruin found in lavaland protected by dark wizards, I wonder what
+ they're guarding
+ - rscadd: You can now put a bunch more mats in the coin mint and autolathe
+ - rscadd: Adamantine and Mythril are now materials (Adamantine still only from
+ xenobio, Mythril still only from badminnery). Adamantine boosts an item's
+ force by 1.5, Mythril gives an item RPG statistics.
+ - rscdel: most custom sprites for coins have been lost
+ - rscadd: You can now give your ass acute radiation poisoning
+ - rscadd: floydmats now apply to all objs / items
+ - rscadd: you can now make tables and chairs out of any material
+ - bugfix: Fixes being able to exploit fully upgraded destructive analyzers to
+ multiply materials
+ - rscadd: An old monastery from a previously abandoned sector of space has recently
+ resurfaced in some regions surrounding the station.
+ - rscadd: Latent scans of the surrounding systems have picked up trace signs of
+ new, smaller cult constructs, however these signatures quickly vanished.
+ - rscadd: In other news, scavengers in your sector have been seen occasionally
+ with classically recreated maces, so autolathe firmware has been upgraded
+ to accommodate this.
+ Hatterhat:
+ - balance: Zombie powder is now instant when ingested, but delayed when injected
+ or applied through touch.
+ - tweak: The H.E.C.K. suit is now goliath tentacle resistant and probably better
+ for acid resistance.
+ - rscadd: The Engineering techfab can now print standard and large RCD compressed
+ matter cartridges.
+ - rscadd: The Experimental Tools node now has the Combifan projector, blocking both
+ temperature and atmospheric changes.
+ - tweak: fiddles with the seed extractor upgrade examine to make it not shit
+ - rscadd: Formaldehyde prevents organ decay and corpses' miasma production at 1u
+ in the body.
+ - rscadd: Epinephrine pens now contain 3u formaldehyde. This should not kill you.
+ - rscadd: The ships often crashed by Free Golems on Lavaland now have GPSes. They're
+ off, by default, but an awakening Golem could easily turn one on.
+ - tweak: Standard RCD ammo can now be printed from Engineering-keyed techfabs once
+ you hit Industrial Engineering.
+ - tweak: Consoleless interfaces are now default - this means unrestricted protolathes
+ and circuit imprinters can now be interfaced with by interacting with the machine
+ itself.
+ - bugfix: Multitools can now actually be printed from Engineering and Science protolathes/techfabs
+ once you unlock Basic Tools.
+ - rscadd: Husking (from being burned to shit) can now be reverted! 5u rezadone or
+ 100u synthflesh, at below 50 burn.
+ - balance: Turning a body into a burnt husk now takes more effort. 300 burn's worth
+ of effort.
+ - balance: Buckshot individual pellet damage up from 10 to 12.5. Still firing 6
+ pellets.
+ - rscadd: Preservahyde! Made with water, bromine, and formaldehyde, it doesn't decay
+ into histamine. Instead, it just prevents your organs from rotting into nothing.
+ - balance: You can now purify eldritch longswords with a bible. This creates purified
+ longswords, which do not have anti-magic properties, but are still good for
+ swinging at cultists.
+ - rscadd: Extend votes! Ported from Hyper, ported from AUstation.
+ - bugfix: mechs with stock parts now have icons
+ - balance: Pie reagent transfer now requires an uncovered mouth.
+ - bugfix: Biogenerators can now actually generate universal enzyme.
+ - bugfix: The Basic Tools node now unlocks the multitool for printing on Engineering
+ and Science fabricators.
+ - rscadd: The Ash Walkers' nest on Lavaland now starts with three bowyery slabs.
+ - rscadd: You can now welder-harden arrows. It might take longer.
+ - balance: Silkstring's costs adjusted for bows and whatnot.
+ - spellcheck: Grammar adjusted on a lot of things relating to bows.
+ - bugfix: Pipe bows' bowstring doesn't look like it replicated itself upon draw.
+ IHOPMommyLich:
+ - tweak: Changed the multiplicative_slowdown of Stimulants from -1 to -0.5
+ IronEleven:
+ - balance: Minor stat changes to Choking, Spontaneous Combustion, Autophagocytosis
+ Necrosis, Hallucigen, Narcolepsy, Shivering, and Vomiting symptoms.
+ KathrinBailey:
+ - bugfix: Missing turf_decals in Cargo Office.
+ - bugfix: Turns on the docking beacons on Box.
+ - bugfix: Fixes Starboard Quarter maint room being spaced. It was never intended
+ to be like how it was.
+ - bugfix: The aforementioned maint room not having stuff in it.
+ - bugfix: varedited photocopier sometimes not opening any UI.
+ - bugfix: Atmos differences in Starboard Quarter maint.
+ - bugfix: Atmos differences in destroyed shuttle/EVA bridge. Plating replaced with
+ airless plating.
+ - bugfix: Rotates AI satellite computers. These have probably been like this since
+ computers had the old sprites and no directional ones. You shouldn't sit at
+ a chair to operate a sideways computer.
+ KrabSpider:
+ - imageadd: The Van Dyke is no longer Fu Manchu.
+ - imagedel: Gets rid of a Fu Manchu imitation.
+ Kraseo:
+ - bugfix: You can no longer pull before wearing boxing gloves to bypass the grab
+ check.
+ - bugfix: Nightmares no longer delete entire guns from existence for merely having
+ a light on them.
+ Linzolle:
+ - bugfix: Bows now will not delete an arrow if it cant fire it.
+ - bugfix: bows now like and respect sprite changes
+ MalricB:
+ - rscadd: '"Shaggy" sprite from virgo'
+ - rscadd: '"shaggy" option in the character customization'
+ MrJWhit:
+ - rscdel: Removed meteor defense tech node
+ - tweak: TEG
+ Naksu:
+ - bugfix: Odysseus chem synthesizing now works again.
+ Owai-Seek:
+ - rscadd: Burger, Cargo Packaging, Dirty Magazine, Air Pump, and Scrubber crates.
+ - rscdel: Duplicate Crate, Festive Wrapping Paper Crate, Contraband Monkey Meat
+ Crate
+ - tweak: Gave Seed Crate Ambrosia Seed, gave Biker Gang Crate Spraypaint.
+ - tweak: Organised some crates with sub-categories. Also, moved all vendor refills
+ to a new tab.
+ - tweak: Moved Grill to Service Tab
+ - bugfix: Engineering Hardsuit Access
+ - tweak: Blood Crate now has all of the current blood types.
+ - tweak: Birthday Cake Recipe is now the same as TG.
+ - tweak: Added Soy Sauce and BBQ Packets to Dinnerware Vendor.
+ - tweak: Added nurse outfit, nurse cap, and mailman hat to loadout.
+ - tweak: Changed the name of scrubs to blue, green, and purple scrubs.
+ - rscadd: Bacon and Eggs food item. Delicious! Added a Lemony Poppy Seed Muffin.
+ - tweak: Snack Vendor has Chocolates, Tortilla Chips, and a Marshmallow Box
+ - balance: Mops can now be printed at service lathe once tools are researched.
+ - balance: Biobags can hold most organic limbs/organs, but not brains, implants,
+ or cybernetics.
+ - balance: Trash Bag can now hold limbs (but not heads.)
+ - balance: Most snack vendor items reduced by 1.
+ - bugfix: Trash Cans are now actually craftable, and only require metal instead
+ of plastic.
+ - imageadd: Bacon and Eggs, Drying Agent Bottle.
+ - imageadd: Mugs now show reagent colors of contained reagents. Thanks Seris!
+ - tweak: Reorganized all food recipes, (hopefully) making things easier to find.
+ - balance: Trays now have a whitelist, allowing them to pick up normal sized foods,
+ bowls, glassware, booze, ect.
+ - bugfix: Easter foods are no longer their own Misc Food Category on the top of
+ the menu.
+ - spellcheck: fixed a few typos/capitalization consistency.
+ - tweak: Mexican Foods are their own Subcategory.
+ - tweak: Donuts are their own Subcategory
+ - tweak: Moved Sweets from Misc Food in with Pies. Renamed to Pies & Sweets
+ - rscadd: BROOM
+ - tweak: Janitor Vendor now has gear for two Janitors.
+ PersianXerxes:
+ - rscadd: 'SMES and PACMAN attached to gulag Security to power electrified windows
+ remove: Removed Sec vendor from gulag Security'
+ - tweak: Separation of gulag and public mining
+ - rscadd: Better clarified the comment explaining the contraband tag.
+ - tweak: Cargo nuclear defusal kits now require an emag'd drop pod console to be
+ purchased.
+ - rscadd: Added Kilo Station
+ - tweak: Adjusts Kilo Station to be more in line with Citadel standards
+ - imageadd: Added area icons required to make Kilo Station editable on Citadel code
+ - code_imp: Fixed a reagent container on Kilo pointing to a nonexistent reagent
+ - config: Adds Kilo Station to the maps config file, does not fix Meta Station's
+ population requirement
+ Psody-Mordheim:
+ - rscadd: You can now make synth-flesh with synthetic blood.
+ - rscadd: You can now make synthetic blood via mixing saline glucose, iron, stable
+ plasma and heating it to 350 temp.
+ - rscadd: You can mix synthetic blood and cryoxadone to create synth-meat in addition
+ to normal blood.
+ - rscadd: Disfiguration Symptom.
+ - rscadd: Deoxyribonucleic Acid Saboteur Symptom.
+ - rscadd: Polyvitiligo Symptom.
+ - rscdel: Revitiligo Symptom.
+ - rscdel: Vitiligo Symptom.
+ Putnam3145:
+ - admin: Added logging to various consent things.
+ - rscadd: Lots of new traitor objectives
+ - bugfix: gender change potion now respects prefs
+ - bugfix: Hypno prefs work better.
+ - admin: Panic bunker is now round-to-round persistent
+ - tweak: Relief valve now has a TGUI-next UI
+ - bugfix: Atmos reaction priority works now.
+ - rscadd: map voting doesn't suck anymore
+ - bugfix: Dynamic now defaults to "classic" storyteller instead of just failing
+ if the vote didn't choose a storyteller.
+ - bugfix: antag quirk blacklisting works now
+ - tweak: default should be... default
+ - balance: all supermatter damage is now hardcapped
+ - tweak: Supermatter sabotage objective no longer shows up with no supermatter
+ - bugfix: Mining vendors no longer fail and eat your points iff you have precisely
+ enough points to pay for an item
+ - tweak: Licking pref
+ - bugfix: Fixed IRV.
+ - bugfix: Runtime if nobody has a chaos pref set
+ - bugfix: IRV fixed... again
+ - bugfix: temporary flavor text can now be of reasonable length
+ - balance: Shooting the supermatter now adds to the supermatter's power. CO2 setups
+ beware!
+ - rscadd: Logging for renaming
+ Raiq & Linzolle:
+ - rscadd: Bone bow - Ash walkers crafting , bone arrows - Ash walkers crafting,
+ silk string used in bow crafting, harden arrows - Ash walkers crafting, ash
+ walker only crafting book, basic pipe bow, and bow & arrow selling. Quivers
+ for ash walkers as well, just to hold some arrows well out on the hunt!
+ Seris02:
+ - tweak: tweaked the way the SM works
+ - rscadd: custom reagent pie smite
+ - rscadd: hijack implant
+ - code_imp: changed mentions of the issilion proc to hasSiliconAccessInArea based
+ on what the proc is used for
+ - rscadd: recipe for mammal mutation toxin
+ - rscadd: polychromic winter coat
+ - rscadd: thief's gloves
+ - rscadd: crushing magboots
+ - bugfix: golden plastitanium toolbox being actually plastitanuium
+ - bugfix: character slot amount
+ - balance: rebalanced rising bass
+ - bugfix: string highlighting whitespace
+ - bugfix: glitch with PKA
+ - bugfix: meteor hallucinations (again)
+ - rscadd: Added naked hallucination
+ - rscadd: crowbarring manifests off crates
+ - balance: makes RCDs cost a better amount
+ - bugfix: apc icons
+ - rscadd: rest hotkey
+ - rscadd: hsl instead of sum of rgb for spraycan lum check
+ - balance: bloodcrawl's cooldown
+ ShadeAware:
+ - rscadd: Craftable Switchblades, a weaker subtype of normal switchblades that can
+ be crafted using a Kitchen Knife, Modular Receiver, Rifle Stock and some Cable
+ Coil. Requires a welder to complete.
+ - bugfix: You can now actually craft Switchblades.
+ - bugfix: Switchblades no longer regain their old Makeshift sprite after retracting
+ if you've made them fancy with Silver.
+ - rscadd: 'The Captain''s Wardrobe, a special one-of-a-kind and ID-locked wardrobe
+ for the Captain that holds all of their snowflakey gear. Remove: Snowflake gear
+ from the Captain''s locker, since now it has its own vendor.'
+ Tlaltecuhtli, ported by Hatterhat:
+ - balance: Ripley, Firefighter, Odysseus and H.O.N.K. mechs now also use scanning
+ modules and capacitors on construction. This means that they also gain reduced
+ power consumption and EMP protection from higher-tier stock parts.
+ Trilbyspaceclone:
+ - bugfix: Vault hallway door being all access
+ - server: Updates change logs
+ - rscadd: Crafts are now made of plasteel and can be made with 5 sheets
+ - rscadd: Takes away NT's connections to the Aliens that run the Syndicats
+ - rscadd: Carps have evolved to take more damage
+ - rscadd: restock crates for each vender
+ - rscadd: restock units for all station venders
+ - bugfix: Sec-vender missing icon
+ - bugfix: 'Box station captain office issues maping: Gulag on box can now be accessed'
+ - rscadd: Alien stools and chairs
+ - tweak: Bone armor/Dagger are now crafting from bones rather then crafting menu
+ - rscadd: Firing pins that only works when not on station
+ - rscadd: Medical locked crates
+ - balance: Russian gear crates have less gear in some cases but all will cost more
+ - bugfix: Medical locked crates that were not locked
+ - spellcheck: Crates that were out of date are corrected
+ - balance: Heads of staff have been better screened by NT before being promoted
+ - balance: The suit full of spiders also known as a ninja now is a tactical turtleneck
+ - balance: The Wiznerds now dont have suits set to max
+ - tweak: Meat wheat no longer has blood
+ - bugfix: Flat guns can no longer be suppressed
+ - tweak: replaced stickmans .45 caliber with 10mm, for consistency.
+ - tweak: Meatwheat and Oats now have rarity
+ - balance: Oats now have at lest 50% more flour in them
+ - balance: BDM now uses a PKA rather then a normal KA
+ - tweak: Gang tower shield is no longer transparent
+ - tweak: Cosmic winter coat now glows like the bedsheet, and holds normal winter
+ coat gear
+ - server: Express console is now logging what it buys, like the normal console should
+ - bugfix: Crabs are now made of crab meat.
+ - bugfix: AIs now understand the old ways of drunken dwarfs
+ - balance: Removes some armored Russian hats from box station round start
+ - bugfix: Doner items spawning
+ - balance: Engi/Sec Trek suit no longer has 10% melee protection
+ - bugfix: IPC hearts are now made of robomeat and roboblood thats emp proof. Heals
+ and is all and all just like an normal heart
+ - imageadd: All robotic organs now have an animation.
+ - imageadd: IPC's now organs now look like robotic ones, even tho thats not the
+ case game wise
+ - imageadd: Added a new bee themed bar sign
+ - imageadd: Makes plywood chair not look as bad.
+ - bugfix: corndog sprite being miss-spelled
+ - bugfix: Ash from land of lava now is useable for sandstone
+ - bugfix: Peach cake slices are no long made by mimes
+ Tupinambis:
+ - tweak: the portion of laws that require harm prevention by silicons has been removed.
+ - server: silicon_laws.txt config file is required to be modified for full implementation.
+ - bugfix: masks no longer improperly stick out of helmets when they should be hidden.
+ - bugfix: Status Displays should now update correctly.
+ - balance: stunbatons now take 4 hits to inflict hard crit, up from 3.
+ - balance: stunbatons no longer disarm targets.
+ Yakumo Chen:
+ - rscadd: Rings for your fingers!
+ - rscadd: New cargo crates and loadout options to bling your rings!
+ YakumoChen:
+ - tweak: Observe is back in the OOC tab
+ - imageadd: Rings look nicer. Sprites used from RP.
+ - imageadd: Ring on-hands. Diamond rings sparkle!
+ - tweak: You can now propose using a diamond ring in your hand.
+ - tweak: Legion skulls behave like bees!!!!
+ Zellular:
+ - imageadd: Movement state for pupdozer and its decals
+ - tweak: Tweaked the movement state for the pupdozer's eyes
+ ancientpower:
+ - bugfix: Fixes an error in pH strips' feedback message.
+ - rscadd: Ported drink sliding from /vg/station.
+ - bugfix: Fixes color mismatching with the "genitals use skintone" preference.
+ - imageadd: Bunny ear style for humanoid species.
+ - tweak: Ghosts are now literate.
+ bunny232:
+ - tweak: Changes the simple animal sentience event from the xenomorph preference
+ to sentience potion preference.
+ coiax:
+ - rscadd: Admin and event only pair pinpointers! They come in a box of two, and
+ each pinpointer will always point at its corresponding pair. Aww.
+ deathride58:
+ - bugfix: Spacemen no longer run at lightspeed on local servers.
+ kappa-sama:
+ - bugfix: the plant dudes can actually make plant disks now
+ keronshb:
+ - rscadd: Added repairable turrets
+ - rscadd: Adds Tiny Fans to the pirate ship
+ - tweak: changes some reinforced windows to plastinanium pirate windows
+ - tweak: made the pirate shuttle + turrets bomb resistant
+ - tweak: made most pirate machines + consoles indestructible
+ - tweak: increased pirate turret health
+ - rscadd: Adds the CogChamp drink and Sprite
+ - rscadd: Added burn and knockback to stunhand during HALOS on cult.
+ - balance: Added burn and knockback to stunhand during HALOS on cult.
+ - bugfix: fixed accelerated regeneration nanites
+ - bugfix: fixed mechanical repair nanites
+ - bugfix: fixed bio reconstruction nanites
+ kevinz000:
+ - refactor: Custom snowflake plushies are now in config rather than code.
+ - balance: Abductor mindsnapping (aka abductee objectives) can now be "cured" with
+ brain surgery.
+ - rscadd: Shuttle hijacking has been completely reworked. Alt-click the shuttle
+ as a hijack-capable mind (so traitors, and especially traitors with hijack)
+ to begin or continue a hacking process.
+ - refactor: 'A good amount of the blood RGB rework was cleaned up/reverted, with
+ some notable gameplay changes including: Gibs and blood not having max blood
+ by default (no more easy rampages, cultists), infinite gib streaking, etc etc.'
+ - balance: meteor waves are now directional and announces the direction on the command
+ report.
+ - rscadd: CTF CLAYMORES
+ - balance: shoves buffed, now shoving into a wall twice rapidly will also disarm
+ their weapon.
+ - balance: traitor+bro gamemode minimum population set to 25 until there can be
+ more in depth configuration systems for gamemodes.
+ - bugfix: no more bluespace skittish locker diving,
+ - rscadd: moths now have unique laughs and can *chitter.
+ - tweak: nuke explosion is now full dev radius for anti lag purposes
+ - balance: Gangs can now only tag with a gang uplink bought spraycan.
+ - tweak: dueling pistol accesses have been changed to be more accessible.
+ - bugfix: mechs no longer have admin logs flooding into IC control console log viewing
+ - refactor: Guncode and energy guns have been refactored a bit.
+ - rscadd: You can now combat mode ight click on an energy gun to attempt to switch
+ firing modes. This only works on guns without right click functions overridden.
+ - balance: shoes can now fit magpistols again.
+ - balance: Projectiles now always hit chest if targeting chest, snipers have 100%
+ targeting zone accuracy. All other cases are unchanged.
+ - tweak: The lawyer's PDA cartridge has been rebranded to something more accurate
+ to its true nature.
+ - refactor: Refactored ghostreading/etc
+ - balance: Cyborgization will now de-gang people, even gangheads.
+ - bugfix: reactive repulse armor now has an item limit
+ - bugfix: beam rifle runtime fix during aiming_beam
+ - bugfix: 'fail2topic runtime fix: taking out an ip while incrementing index resulted
+ in accessing the next-next entry instead of the next and results in out of bound
+ errors.'
+ - rscadd: gravity gun repulse and chaos now work in all angles, rather than just
+ basic cardinals and diagonals. fun.
+ - balance: Public autolathes can no longer be hacked.
+ - bugfix: Energy weapons now once again have their lens in contents.
+ - bugfix: pais are no longer muted for literally a whole hour on emp.
+ - rscadd: auto profiler subsystem from tg
+ - bugfix: Brig cells now are more accurate by using timeofday instead of realtime
+ - bugfix: Cryo now actually transfers reagents at tier 4 on enter rather than every
+ 80 machine fire()-process()s regardless of if it was "reset" by open/close.
+ - rscadd: cmo now gets advanced surgery drapes that techweb-sync for advanced surgeries
+ without an operating console.
+ - bugfix: ctf claymores now actually spawn (and fit).
+ - bugfix: STOP_PROCESSING now removes from currentrun to prevent another process
+ cycle from happening where it shouldn't.
+ - balance: hand teleporters now require 30 deciseconds of still movement by the
+ user to dispel portals. there's a beam effect too.
+ - balance: Sort of a bugfix but cult blood magic and all guns now respect stamina
+ softcrit.
+ - balance: Organ healing rate doubled. Organ decay rate halved to match its define
+ (15 minutes for full decay, so at around 8-10 minutes it'll be really fucked).
+ - tweak: Storage now caches max screen size and only stores when being opened by
+ a non ghost, meaning ghosts will no longer distort living player screens when
+ viewing storage.
+ - balance: Stunbatons changed yet again.
+ - tweak: the game's built in autoclicker aka CanMobAutoclick no longer triggers
+ client/Click()'s anti clickspam guard.
+ - balance: pais can no longer bodyblock bullets
+ - balance: pai radio short changed to 3 minutes down from 5
+ - balance: pais are no longer fulltile click opacity.
+ - refactor: vampire "immortal haste" has been reworked to be more reliable and consistent.
+ - tweak: hand teles use a less atrocious beam
+ necromanceranne:
+ - rscadd: Ebows now disarm people hit by them.
+ - rscadd: Ebows now do 60 stamina damage on hit.
+ - rscdel: Ebows no longer inflict drowsiness
+ - balance: Miniature ebows do 15 toxin damage, up from 8.
+ - balance: Ebows have considerably shorter knockdowns.
+ - balance: Ebows now make you slur rather than stutter.
+ - balance: Large ebows are now heavy and bulky.
+ - rscdel: You can no longer order spinfusors or their ammo from cargo.
+ - rscdel: Removed the formal security officer jacket from the secdrobe
+ - tweak: formal security jackets are now armor vests
+ - rscdel: Bullets causing bleed rates equal to unmitigated damage through all forms
+ of defense.
+ - balance: 'Reverted #9092, crew mecha no longer spawn with tracking beacons.'
+ - balance: '[Port] Mecha ballistics weapons now require ammo created from an Exosuit
+ Fabricator or the Security Protolathe, though they will start with a full magazine
+ and in most cases enough for one full reload. Reloading these weapons no longer
+ chunks your power cell. Clown (and mime) mecha equipment have not changed.'
+ - balance: '[Port] The SRM-8 Missile Launcher has been replaced with the BRM-6 Breaching
+ Missile Launcher in techwebs (Nukie Mauler remains equipped with the SRM-8).'
+ - balance: '[Port] Both Missile Launchers and the Clusterbang Launcher do not have
+ an ammo cache, and cannot be reloaded by the pilot. Once the initial loaded
+ ammo has been spent, you can use the appropriate ammo box to load the weapon
+ directly.'
+ - rscadd: '[Port] Utility mechs that have a clamp equipped can load ammo from their
+ own cargo hold into other mechs.'
+ - rscadd: '[Port] Nuke Ops can purchase spare ammo duffel bags for their mecha weapons,
+ should they run low.'
+ - bugfix: Literally unclickability with a cham projector
+ nemvar:
+ - code_imp: Slight changes the self-repair borg module. It no longer references
+ the borg that owns it.
+ - bugfix: Trash from food now gets generated at the location of the food item, instead
+ of in the hands of the eater.
+ - code_imp: Changed mob biotypes from lists to flags.
+ r4d6:
+ - rscadd: Added a dwarf language
+ - rscadd: Added more engines
+ - tweak: RPD subcategories and preview icons reorganized.
+ - rscadd: RPD now starts with painting turned off, hitting pipes with build and
+ no paint will target the turf underneath instead. Bye bye turf pixelhunting.
+ - config: Made dwarves into a roundstart races
+ - tweak: Meteor Timer back to 3-5 minutes
+ - bugfix: Mining no longer lead to spess
+ - rscadd: Added Plasteel Pickaxe
+ - rscadd: Added Titanium Pickaxe
+ - bugfix: fixed a missing tile
+ tralezab, bandit, Skoglol:
+ - rscadd: The mime's PDA messages are silent now!
+ - rscadd: 30 new emoji have been added. Mime buff, mime now OP.
diff --git a/html/changelogs/AutoChangeLog-pr-10277.yml b/html/changelogs/AutoChangeLog-pr-10277.yml
deleted file mode 100644
index d2c873d010..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10277.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - refactor: "Custom snowflake plushies are now in config rather than code."
diff --git a/html/changelogs/AutoChangeLog-pr-10295.yml b/html/changelogs/AutoChangeLog-pr-10295.yml
deleted file mode 100644
index a776275e6e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10295.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Abductor mindsnapping (aka abductee objectives) can now be \"cured\" with brain surgery."
diff --git a/html/changelogs/AutoChangeLog-pr-10352.yml b/html/changelogs/AutoChangeLog-pr-10352.yml
deleted file mode 100644
index 7879bc1de1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10352.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - tweak: "tweaked the way the SM works"
diff --git a/html/changelogs/AutoChangeLog-pr-10414.yml b/html/changelogs/AutoChangeLog-pr-10414.yml
deleted file mode 100644
index 25750a889d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10414.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "CameronWoof"
-delete-after: True
-changes:
- - tweak: "Lighting looks better now. I can say that because the PR wouldn't be merged and you wouldn't be reading this if it wasn't true."
diff --git a/html/changelogs/AutoChangeLog-pr-10541.yml b/html/changelogs/AutoChangeLog-pr-10541.yml
deleted file mode 100644
index f59ebe0e75..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10541.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Detective-Google"
-delete-after: True
-changes:
- - rscadd: "the POOL.
-remove: boxstation dorms 7"
diff --git a/html/changelogs/AutoChangeLog-pr-10559.yml b/html/changelogs/AutoChangeLog-pr-10559.yml
deleted file mode 100644
index a48fc6c289..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10559.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "custom reagent pie smite"
diff --git a/html/changelogs/AutoChangeLog-pr-10572.yml b/html/changelogs/AutoChangeLog-pr-10572.yml
deleted file mode 100644
index d18e2d9e93..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10572.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Tupinambis"
-delete-after: True
-changes:
- - tweak: "the portion of laws that require harm prevention by silicons has been removed."
- - server: "silicon_laws.txt config file is required to be modified for full implementation."
diff --git a/html/changelogs/AutoChangeLog-pr-10575.yml b/html/changelogs/AutoChangeLog-pr-10575.yml
deleted file mode 100644
index c81ed76026..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10575.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - rscadd: "Replaces a lot of ingame UIs with TGUI next, increasing performance drastically."
diff --git a/html/changelogs/AutoChangeLog-pr-10583.yml b/html/changelogs/AutoChangeLog-pr-10583.yml
deleted file mode 100644
index e743fca877..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10583.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - admin: "Added logging to various consent things."
diff --git a/html/changelogs/AutoChangeLog-pr-10590.yml b/html/changelogs/AutoChangeLog-pr-10590.yml
deleted file mode 100644
index e59c8decf0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10590.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-author: "KathrinBailey"
-delete-after: True
-changes:
- - bugfix: "Missing turf_decals in Cargo Office."
- - bugfix: "Turns on the docking beacons on Box."
- - bugfix: "Fixes Starboard Quarter maint room being spaced. It was never intended to be like how it was."
- - bugfix: "The aforementioned maint room not having stuff in it."
- - bugfix: "varedited photocopier sometimes not opening any UI."
- - bugfix: "Atmos differences in Starboard Quarter maint."
- - bugfix: "Atmos differences in destroyed shuttle/EVA bridge. Plating replaced with airless plating."
- - bugfix: "Rotates AI satellite computers. These have probably been like this since computers had the old sprites and no directional ones. You shouldn't sit at a chair to operate a sideways computer."
diff --git a/html/changelogs/AutoChangeLog-pr-10596.yml b/html/changelogs/AutoChangeLog-pr-10596.yml
deleted file mode 100644
index 7f56a256a0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10596.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "hijack implant"
- - code_imp: "changed mentions of the issilion proc to hasSiliconAccessInArea based on what the proc is used for"
diff --git a/html/changelogs/AutoChangeLog-pr-10623.yml b/html/changelogs/AutoChangeLog-pr-10623.yml
deleted file mode 100644
index 623560f7d2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10623.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - rscadd: "Lots of new traitor objectives"
diff --git a/html/changelogs/AutoChangeLog-pr-10644.yml b/html/changelogs/AutoChangeLog-pr-10644.yml
deleted file mode 100644
index b7544495d7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10644.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ShadeAware"
-delete-after: True
-changes:
- - rscadd: "Craftable Switchblades, a weaker subtype of normal switchblades that can be crafted using a Kitchen Knife, Modular Receiver, Rifle Stock and some Cable Coil. Requires a welder to complete."
diff --git a/html/changelogs/AutoChangeLog-pr-10649.yml b/html/changelogs/AutoChangeLog-pr-10649.yml
deleted file mode 100644
index 04e3569ad3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10649.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "Shuttle hijacking has been completely reworked. Alt-click the shuttle as a hijack-capable mind (so traitors, and especially traitors with hijack) to begin or continue a hacking process."
diff --git a/html/changelogs/AutoChangeLog-pr-10700.yml b/html/changelogs/AutoChangeLog-pr-10700.yml
deleted file mode 100644
index 296ebe4d99..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10700.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - tweak: "The anomalous honking crystal should now properly clown your mind."
diff --git a/html/changelogs/AutoChangeLog-pr-10704.yml b/html/changelogs/AutoChangeLog-pr-10704.yml
deleted file mode 100644
index 1acd46b51f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10704.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "nemvar"
-delete-after: True
-changes:
- - code_imp: "Slight changes the self-repair borg module. It no longer references the borg that owns it."
diff --git a/html/changelogs/AutoChangeLog-pr-10705.yml b/html/changelogs/AutoChangeLog-pr-10705.yml
deleted file mode 100644
index f1f025d616..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10705.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - refactor: "A good amount of the blood RGB rework was cleaned up/reverted, with some notable gameplay changes including: Gibs and blood not having max blood by default (no more easy rampages, cultists), infinite gib streaking, etc etc."
diff --git a/html/changelogs/AutoChangeLog-pr-10706.yml b/html/changelogs/AutoChangeLog-pr-10706.yml
deleted file mode 100644
index 8bf1cd449c..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10706.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Stopped the ellipsis question mark from being displayed twice in the examine message for masked/unknown human mobs."
- - tweak: "Made the aforementioned ellipsis question mark display on flavor-text-less masked/unknown human mobs too for consistency."
diff --git a/html/changelogs/AutoChangeLog-pr-10709.yml b/html/changelogs/AutoChangeLog-pr-10709.yml
deleted file mode 100644
index 8c9d74c5f1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10709.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "recipe for mammal mutation toxin"
diff --git a/html/changelogs/AutoChangeLog-pr-10728.yml b/html/changelogs/AutoChangeLog-pr-10728.yml
deleted file mode 100644
index 9023844565..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10728.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "meteor waves are now directional and announces the direction on the command report."
diff --git a/html/changelogs/AutoChangeLog-pr-10731.yml b/html/changelogs/AutoChangeLog-pr-10731.yml
deleted file mode 100644
index 0da6f3c483..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10731.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
- - rscadd: "Ebows now disarm people hit by them."
- - rscadd: "Ebows now do 60 stamina damage on hit."
- - rscdel: "Ebows no longer inflict drowsiness"
- - balance: "Miniature ebows do 15 toxin damage, up from 8."
- - balance: "Ebows have considerably shorter knockdowns."
- - balance: "Ebows now make you slur rather than stutter."
- - balance: "Large ebows are now heavy and bulky."
diff --git a/html/changelogs/AutoChangeLog-pr-10733.yml b/html/changelogs/AutoChangeLog-pr-10733.yml
deleted file mode 100644
index 33e2ee216c..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10733.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - balance: "Zombie powder is now instant when ingested, but delayed when injected or applied through touch."
diff --git a/html/changelogs/AutoChangeLog-pr-10737.yml b/html/changelogs/AutoChangeLog-pr-10737.yml
deleted file mode 100644
index fa4023c148..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10737.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Stopped an APTFT exploit with spray bottles."
diff --git a/html/changelogs/AutoChangeLog-pr-10739.yml b/html/changelogs/AutoChangeLog-pr-10739.yml
deleted file mode 100644
index 8212e71353..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10739.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - rscadd: "Added a dwarf language"
diff --git a/html/changelogs/AutoChangeLog-pr-10742.yml b/html/changelogs/AutoChangeLog-pr-10742.yml
deleted file mode 100644
index ece862d112..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10742.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed the detective revolver being quite risky to use."
diff --git a/html/changelogs/AutoChangeLog-pr-10743.yml b/html/changelogs/AutoChangeLog-pr-10743.yml
deleted file mode 100644
index d9775f7bc3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10743.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
- - rscdel: "You can no longer order spinfusors or their ammo from cargo."
diff --git a/html/changelogs/AutoChangeLog-pr-10744.yml b/html/changelogs/AutoChangeLog-pr-10744.yml
deleted file mode 100644
index 168619226a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10744.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - rscadd: "Added more engines"
diff --git a/html/changelogs/AutoChangeLog-pr-10746.yml b/html/changelogs/AutoChangeLog-pr-10746.yml
deleted file mode 100644
index 232c7a26b9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10746.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "CTF CLAYMORES"
diff --git a/html/changelogs/AutoChangeLog-pr-10747.yml b/html/changelogs/AutoChangeLog-pr-10747.yml
deleted file mode 100644
index 54ca25e12a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10747.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "shoves buffed, now shoving into a wall twice rapidly will also disarm their weapon."
diff --git a/html/changelogs/AutoChangeLog-pr-10748.yml b/html/changelogs/AutoChangeLog-pr-10748.yml
deleted file mode 100644
index a2afda81aa..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10748.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "Vault hallway door being all access"
diff --git a/html/changelogs/AutoChangeLog-pr-10749.yml b/html/changelogs/AutoChangeLog-pr-10749.yml
deleted file mode 100644
index a3ed5989d1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10749.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "AnturK ported by kevinz000"
-delete-after: True
-changes:
- - rscadd: "Dueling pistols have been added."
diff --git a/html/changelogs/AutoChangeLog-pr-10751.yml b/html/changelogs/AutoChangeLog-pr-10751.yml
deleted file mode 100644
index c5b54bd4ed..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10751.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "traitor+bro gamemode minimum population set to 25 until there can be more in depth configuration systems for gamemodes."
diff --git a/html/changelogs/AutoChangeLog-pr-10752.yml b/html/changelogs/AutoChangeLog-pr-10752.yml
deleted file mode 100644
index 9bb50f1da1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10752.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-author: "Owai-Seek"
-delete-after: True
-changes:
- - rscadd: "Burger, Cargo Packaging, Dirty Magazine, Air Pump, and Scrubber crates."
- - rscdel: "Duplicate Crate, Festive Wrapping Paper Crate, Contraband Monkey Meat Crate"
- - tweak: "Gave Seed Crate Ambrosia Seed, gave Biker Gang Crate Spraypaint."
- - tweak: "Organised some crates with sub-categories. Also, moved all vendor refills to a new tab."
- - tweak: "Moved Grill to Service Tab"
- - bugfix: "Engineering Hardsuit Access"
diff --git a/html/changelogs/AutoChangeLog-pr-10753.yml b/html/changelogs/AutoChangeLog-pr-10753.yml
deleted file mode 100644
index c1b3615c3d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10753.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - server: "Updates change logs"
diff --git a/html/changelogs/AutoChangeLog-pr-10754.yml b/html/changelogs/AutoChangeLog-pr-10754.yml
deleted file mode 100644
index 0537347443..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10754.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "MalricB"
-delete-after: True
-changes:
- - rscadd: "\"Shaggy\" sprite from virgo"
- - rscadd: "\"shaggy\" option in the character customization"
diff --git a/html/changelogs/AutoChangeLog-pr-10761.yml b/html/changelogs/AutoChangeLog-pr-10761.yml
deleted file mode 100644
index 5a5b7281ef..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10761.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "gender change potion now respects prefs"
diff --git a/html/changelogs/AutoChangeLog-pr-10764.yml b/html/changelogs/AutoChangeLog-pr-10764.yml
deleted file mode 100644
index 25dfebd5fb..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10764.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "deathride58"
-delete-after: True
-changes:
- - bugfix: "Spacemen no longer run at lightspeed on local servers."
diff --git a/html/changelogs/AutoChangeLog-pr-10765.yml b/html/changelogs/AutoChangeLog-pr-10765.yml
deleted file mode 100644
index 975a3ac5c5..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10765.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "no more bluespace skittish locker diving,"
diff --git a/html/changelogs/AutoChangeLog-pr-10768.yml b/html/changelogs/AutoChangeLog-pr-10768.yml
deleted file mode 100644
index 0a07505b5b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10768.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "moths now have unique laughs and can *chitter."
diff --git a/html/changelogs/AutoChangeLog-pr-10773.yml b/html/changelogs/AutoChangeLog-pr-10773.yml
deleted file mode 100644
index 64ab5ce124..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10773.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "Hypno prefs work better."
diff --git a/html/changelogs/AutoChangeLog-pr-10774.yml b/html/changelogs/AutoChangeLog-pr-10774.yml
deleted file mode 100644
index f596bdcddb..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10774.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - tweak: "nuke explosion is now full dev radius for anti lag purposes"
diff --git a/html/changelogs/AutoChangeLog-pr-10776.yml b/html/changelogs/AutoChangeLog-pr-10776.yml
deleted file mode 100644
index cd95cb49d4..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10776.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - tweak: "The H.E.C.K. suit is now goliath tentacle resistant and probably better for acid resistance."
diff --git a/html/changelogs/AutoChangeLog-pr-10777.yml b/html/changelogs/AutoChangeLog-pr-10777.yml
deleted file mode 100644
index 76ce4000d8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10777.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Gangs can now only tag with a gang uplink bought spraycan."
diff --git a/html/changelogs/AutoChangeLog-pr-10781.yml b/html/changelogs/AutoChangeLog-pr-10781.yml
deleted file mode 100644
index cd3474adca..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10781.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - tweak: "RPD subcategories and preview icons reorganized."
- - rscadd: "RPD now starts with painting turned off, hitting pipes with build and no paint will target the turf underneath instead. Bye bye turf pixelhunting."
diff --git a/html/changelogs/AutoChangeLog-pr-10782.yml b/html/changelogs/AutoChangeLog-pr-10782.yml
deleted file mode 100644
index f66e75a113..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10782.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - tweak: "dueling pistol accesses have been changed to be more accessible."
diff --git a/html/changelogs/AutoChangeLog-pr-10784.yml b/html/changelogs/AutoChangeLog-pr-10784.yml
deleted file mode 100644
index 0e5cfc8740..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10784.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "polychromic winter coat"
diff --git a/html/changelogs/AutoChangeLog-pr-10786.yml b/html/changelogs/AutoChangeLog-pr-10786.yml
deleted file mode 100644
index 7e758122a2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10786.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Commandersand"
-delete-after: True
-changes:
- - tweak: "uplink centcomm suit doesn't have sensors"
diff --git a/html/changelogs/AutoChangeLog-pr-10787.yml b/html/changelogs/AutoChangeLog-pr-10787.yml
deleted file mode 100644
index ee221b69f3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10787.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "thief's gloves"
diff --git a/html/changelogs/AutoChangeLog-pr-10788.yml b/html/changelogs/AutoChangeLog-pr-10788.yml
deleted file mode 100644
index 344f6764d8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10788.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "crushing magboots"
diff --git a/html/changelogs/AutoChangeLog-pr-10790.yml b/html/changelogs/AutoChangeLog-pr-10790.yml
deleted file mode 100644
index 43f949ce16..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10790.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Hair styles and undergarments are yet again free from gender restrictions."
diff --git a/html/changelogs/AutoChangeLog-pr-10791.yml b/html/changelogs/AutoChangeLog-pr-10791.yml
deleted file mode 100644
index 3d27f84022..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10791.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - rscadd: "Each night for bloodsuckers will last longer due to the sun dimming."
- - tweak: "You cant level up for free, now you have to pay blood for power."
- - balance: "Bloodsuckers are no longer as resistant to hard stuns and regenerate less stamina. and a lot of their cooldowns are a lot higher."
diff --git a/html/changelogs/AutoChangeLog-pr-10792.yml b/html/changelogs/AutoChangeLog-pr-10792.yml
deleted file mode 100644
index 78c86a838a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10792.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Naksu"
-delete-after: True
-changes:
- - bugfix: "Odysseus chem synthesizing now works again."
diff --git a/html/changelogs/AutoChangeLog-pr-10793.yml b/html/changelogs/AutoChangeLog-pr-10793.yml
deleted file mode 100644
index 21cfc5d539..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10793.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Tupinambis"
-delete-after: True
-changes:
- - bugfix: "masks no longer improperly stick out of helmets when they should be hidden."
diff --git a/html/changelogs/AutoChangeLog-pr-10795.yml b/html/changelogs/AutoChangeLog-pr-10795.yml
deleted file mode 100644
index b929aad0a5..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10795.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ShadeAware"
-delete-after: True
-changes:
- - bugfix: "You can now actually craft Switchblades."
diff --git a/html/changelogs/AutoChangeLog-pr-10796.yml b/html/changelogs/AutoChangeLog-pr-10796.yml
deleted file mode 100644
index 238fc3a8c7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10796.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Tupinambis"
-delete-after: True
-changes:
- - bugfix: "Status Displays should now update correctly."
diff --git a/html/changelogs/AutoChangeLog-pr-10798.yml b/html/changelogs/AutoChangeLog-pr-10798.yml
deleted file mode 100644
index 637343c7b6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10798.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
- - rscdel: "Removed the formal security officer jacket from the secdrobe"
- - tweak: "formal security jackets are now armor vests"
diff --git a/html/changelogs/AutoChangeLog-pr-10799.yml b/html/changelogs/AutoChangeLog-pr-10799.yml
deleted file mode 100644
index 2d49bdc63f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10799.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - bugfix: "golden plastitanium toolbox being actually plastitanuium"
diff --git a/html/changelogs/AutoChangeLog-pr-10800.yml b/html/changelogs/AutoChangeLog-pr-10800.yml
deleted file mode 100644
index 3486e47b1f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10800.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - bugfix: "character slot amount"
diff --git a/html/changelogs/AutoChangeLog-pr-10801.yml b/html/changelogs/AutoChangeLog-pr-10801.yml
deleted file mode 100644
index 36db98e9e1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10801.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - balance: "rebalanced rising bass"
diff --git a/html/changelogs/AutoChangeLog-pr-10803.yml b/html/changelogs/AutoChangeLog-pr-10803.yml
deleted file mode 100644
index bc50fcc700..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10803.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - bugfix: "string highlighting whitespace"
diff --git a/html/changelogs/AutoChangeLog-pr-10808.yml b/html/changelogs/AutoChangeLog-pr-10808.yml
deleted file mode 100644
index 89e8880af8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10808.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - rscdel: "Removed text macros from the chem dispenser."
- - rscadd: "Replaced with dispenser input recording macros."
diff --git a/html/changelogs/AutoChangeLog-pr-10809.yml b/html/changelogs/AutoChangeLog-pr-10809.yml
deleted file mode 100644
index 2a6c1dcdb8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10809.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - bugfix: "Fancifying makeshift switchblades now works"
diff --git a/html/changelogs/AutoChangeLog-pr-10810.yml b/html/changelogs/AutoChangeLog-pr-10810.yml
deleted file mode 100644
index 3d1693955a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10810.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Yakumo Chen"
-delete-after: True
-changes:
- - rscadd: "Rings for your fingers!"
- - rscadd: "New cargo crates and loadout options to bling your rings!"
diff --git a/html/changelogs/AutoChangeLog-pr-10812.yml b/html/changelogs/AutoChangeLog-pr-10812.yml
deleted file mode 100644
index 1189a9f8d2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10812.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Tupinambis"
-delete-after: True
-changes:
- - balance: "stunbatons now take 4 hits to inflict hard crit, up from 3."
- - balance: "stunbatons no longer disarm targets."
diff --git a/html/changelogs/AutoChangeLog-pr-10816.yml b/html/changelogs/AutoChangeLog-pr-10816.yml
deleted file mode 100644
index 9538f353ec..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10816.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ancientpower"
-delete-after: True
-changes:
- - bugfix: "Fixes an error in pH strips' feedback message."
diff --git a/html/changelogs/AutoChangeLog-pr-10817.yml b/html/changelogs/AutoChangeLog-pr-10817.yml
deleted file mode 100644
index cf42f695ef..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10817.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "IronEleven"
-delete-after: True
-changes:
- - balance: "Minor stat changes to Choking, Spontaneous Combustion, Autophagocytosis Necrosis, Hallucigen, Narcolepsy, Shivering, and Vomiting symptoms."
diff --git a/html/changelogs/AutoChangeLog-pr-10819.yml b/html/changelogs/AutoChangeLog-pr-10819.yml
deleted file mode 100644
index 406da850b3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10819.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - tweak: "Clown ops will find bombananas and clown bomb beacons instead of minibombs and bomb beacons in their infiltrator ship now."
- - tweak: "For safety, the syndicate shuttle minibombs and bombananas come shipped in a box. Please don't instinctively eat any of those nanas, thank you."
diff --git a/html/changelogs/AutoChangeLog-pr-10820.yml b/html/changelogs/AutoChangeLog-pr-10820.yml
deleted file mode 100644
index 7833ab7250..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10820.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - tweak: "Uplink items excluded (such as mulligan, chameleon, ebow) from or exclusive (such as cyber implants) to normal nuke ops will now be properly unavailable/available to clown ops."
diff --git a/html/changelogs/AutoChangeLog-pr-10821.yml b/html/changelogs/AutoChangeLog-pr-10821.yml
deleted file mode 100644
index a1661764cf..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10821.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ShadeAware"
-delete-after: True
-changes:
- - bugfix: "Switchblades no longer regain their old Makeshift sprite after retracting if you've made them fancy with Silver."
diff --git a/html/changelogs/AutoChangeLog-pr-10829.yml b/html/changelogs/AutoChangeLog-pr-10829.yml
deleted file mode 100644
index 9866f21fc7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10829.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed bananium energy sword/shield slips."
- - balance: "Buffed said slips to ignore no-grav/crawling/flying as well as adding some deadly force to the e-sword."
- - bugfix: "Fixed the 'stache grenade anti-non-clumsy user check."
- - balance: "Doubled the timer for the sticky mustaches effect from the above grenade (from 1 to 2 minutes)"
diff --git a/html/changelogs/AutoChangeLog-pr-10830.yml b/html/changelogs/AutoChangeLog-pr-10830.yml
deleted file mode 100644
index 0d7b5d56b3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10830.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - bugfix: "glitch with PKA"
diff --git a/html/changelogs/AutoChangeLog-pr-10831.yml b/html/changelogs/AutoChangeLog-pr-10831.yml
deleted file mode 100644
index 477df49370..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10831.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed an edge case with the chaplain armaments beacon spawning the box in nullspace."
diff --git a/html/changelogs/AutoChangeLog-pr-10833.yml b/html/changelogs/AutoChangeLog-pr-10833.yml
deleted file mode 100644
index d4b612f622..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10833.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - tweak: "The playback device's cooldown now proportionally increases with messages longer than 60 characters (3 seconds is the default assembly cooldown)."
diff --git a/html/changelogs/AutoChangeLog-pr-10834.yml b/html/changelogs/AutoChangeLog-pr-10834.yml
deleted file mode 100644
index 1db0ee8988..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10834.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "Crafts are now made of plasteel and can be made with 5 sheets"
diff --git a/html/changelogs/AutoChangeLog-pr-10836.yml b/html/changelogs/AutoChangeLog-pr-10836.yml
deleted file mode 100644
index d2c9328aa7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10836.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "The Engineering techfab can now print standard and large RCD compressed matter cartridges."
- - rscadd: "The Experimental Tools node now has the Combifan projector, blocking both temperature and atmospheric changes."
diff --git a/html/changelogs/AutoChangeLog-pr-10837.yml b/html/changelogs/AutoChangeLog-pr-10837.yml
deleted file mode 100644
index 72fee452c1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10837.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Owai-Seek"
-delete-after: True
-changes:
- - tweak: "Blood Crate now has all of the current blood types."
- - tweak: "Birthday Cake Recipe is now the same as TG."
- - tweak: "Added Soy Sauce and BBQ Packets to Dinnerware Vendor."
diff --git a/html/changelogs/AutoChangeLog-pr-10838.yml b/html/changelogs/AutoChangeLog-pr-10838.yml
deleted file mode 100644
index b6fbb864dd..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10838.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Owai-Seek"
-delete-after: True
-changes:
- - tweak: "Added nurse outfit, nurse cap, and mailman hat to loadout."
- - tweak: "Changed the name of scrubs to blue, green, and purple scrubs."
diff --git a/html/changelogs/AutoChangeLog-pr-10840.yml b/html/changelogs/AutoChangeLog-pr-10840.yml
deleted file mode 100644
index 26c9ab71b6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10840.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - admin: "Panic bunker is now round-to-round persistent"
diff --git a/html/changelogs/AutoChangeLog-pr-10841.yml b/html/changelogs/AutoChangeLog-pr-10841.yml
deleted file mode 100644
index 58e083fe85..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10841.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Kraseo"
-delete-after: True
-changes:
- - bugfix: "You can no longer pull before wearing boxing gloves to bypass the grab check."
diff --git a/html/changelogs/AutoChangeLog-pr-10847.yml b/html/changelogs/AutoChangeLog-pr-10847.yml
deleted file mode 100644
index 3e18420cb3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10847.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed space ninjas \"Nothing\" objective. Now you gotta steal some dandy stuff such as corgi meat and pinpointers as a ninja too."
diff --git a/html/changelogs/AutoChangeLog-pr-10848.yml b/html/changelogs/AutoChangeLog-pr-10848.yml
deleted file mode 100644
index b620b95ba7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10848.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-author: "Ghommie (original PRs by Floyd/Qustinnus, 4Dplanner, Willox, ninjanomnom, mrdoombringer, Fikou, Fox McCloud, TheChosenEvilOne, nemvar, bobbahbrown, Time-Green, Stonebaykyle, MrPerson, ArcaneMusic and zxaber)"
-delete-after: True
-changes:
- - rscadd: "You can now make toolboxes out of almost any solid material in an autolathe"
- - rscadd: "adds Knight's Armour made out of any materials"
- - rscadd: "new ruin found in lavaland protected by dark wizards, I wonder what they're guarding"
- - rscadd: "You can now put a bunch more mats in the coin mint and autolathe"
- - rscadd: "Adamantine and Mythril are now materials (Adamantine still only from xenobio, Mythril still only from badminnery). Adamantine boosts an item's force by 1.5, Mythril gives an item RPG statistics."
- - rscdel: "most custom sprites for coins have been lost"
- - rscadd: "You can now give your ass acute radiation poisoning"
- - rscadd: "floydmats now apply to all objs / items"
- - rscadd: "you can now make tables and chairs out of any material"
- - bugfix: "Fixes being able to exploit fully upgraded destructive analyzers to multiply materials"
- - rscadd: "An old monastery from a previously abandoned sector of space has recently resurfaced in some regions surrounding the station."
- - rscadd: "Latent scans of the surrounding systems have picked up trace signs of new, smaller cult constructs, however these signatures quickly vanished."
- - rscadd: "In other news, scavengers in your sector have been seen occasionally with classically recreated maces, so autolathe firmware has been upgraded to accommodate this."
diff --git a/html/changelogs/AutoChangeLog-pr-10850.yml b/html/changelogs/AutoChangeLog-pr-10850.yml
deleted file mode 100644
index 5cfbd4ab1c..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10850.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed maploaded APC terminals direction."
diff --git a/html/changelogs/AutoChangeLog-pr-10852.yml b/html/changelogs/AutoChangeLog-pr-10852.yml
deleted file mode 100644
index 5d6edfba1b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10852.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "MrJWhit"
-delete-after: True
-changes:
- - rscdel: "Removed meteor defense tech node"
diff --git a/html/changelogs/AutoChangeLog-pr-10854.yml b/html/changelogs/AutoChangeLog-pr-10854.yml
deleted file mode 100644
index b01532daf4..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10854.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - bugfix: "meteor hallucinations (again)"
diff --git a/html/changelogs/AutoChangeLog-pr-10855.yml b/html/changelogs/AutoChangeLog-pr-10855.yml
deleted file mode 100644
index 1920609508..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10855.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "Takes away NT's connections to the Aliens that run the Syndicats"
diff --git a/html/changelogs/AutoChangeLog-pr-10857.yml b/html/changelogs/AutoChangeLog-pr-10857.yml
deleted file mode 100644
index ae8c5f6ac0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10857.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "Added naked hallucination"
diff --git a/html/changelogs/AutoChangeLog-pr-10860.yml b/html/changelogs/AutoChangeLog-pr-10860.yml
deleted file mode 100644
index 5de723e73b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10860.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Bhijn"
-delete-after: True
-changes:
- - tweak: "Click-dragging will now only perform the quick item usage behavior if you're in combat mode."
diff --git a/html/changelogs/AutoChangeLog-pr-10861.yml b/html/changelogs/AutoChangeLog-pr-10861.yml
deleted file mode 100644
index 5071cc30f9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10861.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ancientpower"
-delete-after: True
-changes:
- - rscadd: "Ported drink sliding from /vg/station."
diff --git a/html/changelogs/AutoChangeLog-pr-10862.yml b/html/changelogs/AutoChangeLog-pr-10862.yml
deleted file mode 100644
index 0e08046d07..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10862.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - tweak: "fiddles with the seed extractor upgrade examine to make it not shit"
diff --git a/html/changelogs/AutoChangeLog-pr-10865.yml b/html/changelogs/AutoChangeLog-pr-10865.yml
deleted file mode 100644
index a929bab8a1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10865.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - balance: "Nerfed magnetic rifles/pistols by re(?)adding power cell requirements for it. These firearms must be recharged after firing 2 magazines worth of projectiles and are slightly more susceptible to EMPs."
diff --git a/html/changelogs/AutoChangeLog-pr-10866.yml b/html/changelogs/AutoChangeLog-pr-10866.yml
deleted file mode 100644
index f5f99207a5..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10866.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ancientpower"
-delete-after: True
-changes:
- - bugfix: "Fixes color mismatching with the \"genitals use skintone\" preference."
diff --git a/html/changelogs/AutoChangeLog-pr-10867.yml b/html/changelogs/AutoChangeLog-pr-10867.yml
deleted file mode 100644
index 3e3b1c460f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10867.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed the tearstache nade not properly working."
- - balance: "Buffed it against space helmet internals."
diff --git a/html/changelogs/AutoChangeLog-pr-10868.yml b/html/changelogs/AutoChangeLog-pr-10868.yml
deleted file mode 100644
index 629f93585a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10868.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - tweak: "Holographic fans won't display above mobs and other objects anymore."
diff --git a/html/changelogs/AutoChangeLog-pr-10869.yml b/html/changelogs/AutoChangeLog-pr-10869.yml
deleted file mode 100644
index c8317e134f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10869.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "mechs no longer have admin logs flooding into IC control console log viewing"
diff --git a/html/changelogs/AutoChangeLog-pr-10870.yml b/html/changelogs/AutoChangeLog-pr-10870.yml
deleted file mode 100644
index 672e6abdbc..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10870.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed paraplegics appearing as shoeless."
diff --git a/html/changelogs/AutoChangeLog-pr-10872.yml b/html/changelogs/AutoChangeLog-pr-10872.yml
deleted file mode 100644
index 4a61daa9bb..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10872.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - balance: "Shields will no longer block lasers, and will break if they take too much damage."
diff --git a/html/changelogs/AutoChangeLog-pr-10873.yml b/html/changelogs/AutoChangeLog-pr-10873.yml
deleted file mode 100644
index 0e9bca3f95..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10873.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - tweak: "Relief valve now has a TGUI-next UI"
diff --git a/html/changelogs/AutoChangeLog-pr-10874.yml b/html/changelogs/AutoChangeLog-pr-10874.yml
deleted file mode 100644
index bb46b5240d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10874.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed the petting element."
diff --git a/html/changelogs/AutoChangeLog-pr-10875.yml b/html/changelogs/AutoChangeLog-pr-10875.yml
deleted file mode 100644
index f693bd7c8b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10875.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ancientpower"
-delete-after: True
-changes:
- - imageadd: "Bunny ear style for humanoid species."
diff --git a/html/changelogs/AutoChangeLog-pr-10876.yml b/html/changelogs/AutoChangeLog-pr-10876.yml
deleted file mode 100644
index 9347a655cc..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10876.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed slipping."
diff --git a/html/changelogs/AutoChangeLog-pr-10881.yml b/html/changelogs/AutoChangeLog-pr-10881.yml
deleted file mode 100644
index 7c00713eae..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10881.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - refactor: "Refactored mob holders into an element."
- - bugfix: "Fixed a few minor issues with that feature. such as mismatching sprites for certain held mobs and a slight lack of safety checks."
- - rscdel: "holdable mobs can't force themselves into people's hands anymore."
diff --git a/html/changelogs/AutoChangeLog-pr-10883.yml b/html/changelogs/AutoChangeLog-pr-10883.yml
deleted file mode 100644
index f99613d846..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10883.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "ancientpower"
-delete-after: True
-changes:
- - tweak: "Ghosts are now literate."
diff --git a/html/changelogs/AutoChangeLog-pr-10885.yml b/html/changelogs/AutoChangeLog-pr-10885.yml
deleted file mode 100644
index bcc19eb9d2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10885.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Milkies fix."
diff --git a/html/changelogs/AutoChangeLog-pr-10892.yml b/html/changelogs/AutoChangeLog-pr-10892.yml
deleted file mode 100644
index 88f12ef378..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10892.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - refactor: "Guncode and energy guns have been refactored a bit."
- - rscadd: "You can now combat mode ight click on an energy gun to attempt to switch firing modes. This only works on guns without right click functions overridden."
diff --git a/html/changelogs/AutoChangeLog-pr-10893.yml b/html/changelogs/AutoChangeLog-pr-10893.yml
deleted file mode 100644
index a0be6a5b6b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10893.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - rscadd: "Added a TGUI Next interface for crafting"
- - rscdel: "Removed the old TGUI slow crafting interface"
diff --git a/html/changelogs/AutoChangeLog-pr-10894.yml b/html/changelogs/AutoChangeLog-pr-10894.yml
deleted file mode 100644
index 770308755d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10894.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "Carps have evolved to take more damage"
diff --git a/html/changelogs/AutoChangeLog-pr-10898.yml b/html/changelogs/AutoChangeLog-pr-10898.yml
deleted file mode 100644
index 7c7198105f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10898.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "EmeraldSundisk"
-delete-after: True
-changes:
- - bugfix: "Connects mining's disposal unit on Delta."
- - tweak: "Slight visual adjustments to the immediate affected area."
diff --git a/html/changelogs/AutoChangeLog-pr-10899.yml b/html/changelogs/AutoChangeLog-pr-10899.yml
deleted file mode 100644
index f1542b2b09..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10899.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "restock crates for each vender"
- - rscadd: "restock units for all station venders"
- - bugfix: "Sec-vender missing icon"
diff --git a/html/changelogs/AutoChangeLog-pr-10900.yml b/html/changelogs/AutoChangeLog-pr-10900.yml
deleted file mode 100644
index 0f79245c73..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10900.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "Atmos reaction priority works now."
diff --git a/html/changelogs/AutoChangeLog-pr-10901.yml b/html/changelogs/AutoChangeLog-pr-10901.yml
deleted file mode 100644
index 57c1d821f7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10901.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "Box station captain office issues
-maping: Gulag on box can now be accessed"
diff --git a/html/changelogs/AutoChangeLog-pr-10902.yml b/html/changelogs/AutoChangeLog-pr-10902.yml
deleted file mode 100644
index 9a60860f3f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10902.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed some mounted defibrillator issue with the altclicking functionality."
diff --git a/html/changelogs/AutoChangeLog-pr-10903.yml b/html/changelogs/AutoChangeLog-pr-10903.yml
deleted file mode 100644
index a353d6594a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10903.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "Formaldehyde prevents organ decay and corpses' miasma production at 1u in the body."
- - rscadd: "Epinephrine pens now contain 3u formaldehyde. This should not kill you."
diff --git a/html/changelogs/AutoChangeLog-pr-10904.yml b/html/changelogs/AutoChangeLog-pr-10904.yml
deleted file mode 100644
index 112c0bc593..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10904.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "The ships often crashed by Free Golems on Lavaland now have GPSes. They're off, by default, but an awakening Golem could easily turn one on."
diff --git a/html/changelogs/AutoChangeLog-pr-10905.yml b/html/changelogs/AutoChangeLog-pr-10905.yml
deleted file mode 100644
index de9374bd12..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10905.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - tweak: "Standard RCD ammo can now be printed from Engineering-keyed techfabs once you hit Industrial Engineering."
- - tweak: "Consoleless interfaces are now default - this means unrestricted protolathes and circuit imprinters can now be interfaced with by interacting with the machine itself."
- - bugfix: "Multitools can now actually be printed from Engineering and Science protolathes/techfabs once you unlock Basic Tools."
diff --git a/html/changelogs/AutoChangeLog-pr-10906.yml b/html/changelogs/AutoChangeLog-pr-10906.yml
deleted file mode 100644
index ef725e921e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10906.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "Husking (from being burned to shit) can now be reverted! 5u rezadone or 100u synthflesh, at below 50 burn."
- - balance: "Turning a body into a burnt husk now takes more effort. 300 burn's worth of effort."
diff --git a/html/changelogs/AutoChangeLog-pr-10907.yml b/html/changelogs/AutoChangeLog-pr-10907.yml
deleted file mode 100644
index af893e9415..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10907.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed no-grav lavaland labor/mining shuttle areas."
diff --git a/html/changelogs/AutoChangeLog-pr-10910.yml b/html/changelogs/AutoChangeLog-pr-10910.yml
deleted file mode 100644
index 2b11650c80..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10910.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed a little issue with sleeper UI and blood types."
diff --git a/html/changelogs/AutoChangeLog-pr-10913.yml b/html/changelogs/AutoChangeLog-pr-10913.yml
deleted file mode 100644
index 8bf549a154..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10913.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Feasel"
-delete-after: True
-changes:
- - balance: "Buffed dissection success chances."
diff --git a/html/changelogs/AutoChangeLog-pr-10915.yml b/html/changelogs/AutoChangeLog-pr-10915.yml
deleted file mode 100644
index 88f0c1652e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10915.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "shoes can now fit magpistols again."
diff --git a/html/changelogs/AutoChangeLog-pr-10916.yml b/html/changelogs/AutoChangeLog-pr-10916.yml
deleted file mode 100644
index 05d9b007b1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10916.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Projectiles now always hit chest if targeting chest, snipers have 100% targeting zone accuracy. All other cases are unchanged."
diff --git a/html/changelogs/AutoChangeLog-pr-10917.yml b/html/changelogs/AutoChangeLog-pr-10917.yml
deleted file mode 100644
index f6e5997348..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10917.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - tweak: "The MK2 hypospray now"
diff --git a/html/changelogs/AutoChangeLog-pr-10918.yml b/html/changelogs/AutoChangeLog-pr-10918.yml
deleted file mode 100644
index bf47d0accf..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10918.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - config: "Made dwarves into a roundstart races"
diff --git a/html/changelogs/AutoChangeLog-pr-10919.yml b/html/changelogs/AutoChangeLog-pr-10919.yml
deleted file mode 100644
index 0fa6420e39..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10919.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixing accidental nerfs to the magpistol magazine."
diff --git a/html/changelogs/AutoChangeLog-pr-10921.yml b/html/changelogs/AutoChangeLog-pr-10921.yml
deleted file mode 100644
index d6d551b40d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10921.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "The Lavaland's Herald speech sound should only play if they are actually speaking."
diff --git a/html/changelogs/AutoChangeLog-pr-10922.yml b/html/changelogs/AutoChangeLog-pr-10922.yml
deleted file mode 100644
index c71630fd0d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10922.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - tweak: "The lawyer's PDA cartridge has been rebranded to something more accurate to its true nature."
diff --git a/html/changelogs/AutoChangeLog-pr-10923.yml b/html/changelogs/AutoChangeLog-pr-10923.yml
deleted file mode 100644
index 0fd9a0f14e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10923.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Nerfed cargo passive points generation from 500 to 125 creds per minute."
diff --git a/html/changelogs/AutoChangeLog-pr-10924.yml b/html/changelogs/AutoChangeLog-pr-10924.yml
deleted file mode 100644
index d419928dd2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10924.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed whitelisted/donor loadouts"
diff --git a/html/changelogs/AutoChangeLog-pr-10926.yml b/html/changelogs/AutoChangeLog-pr-10926.yml
deleted file mode 100644
index 9662402d1b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10926.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-author: "keronshb"
-delete-after: True
-changes:
- - rscadd: "Added repairable turrets"
- - rscadd: "Adds Tiny Fans to the pirate ship"
- - tweak: "changes some reinforced windows to plastinanium pirate windows"
- - tweak: "made the pirate shuttle + turrets bomb resistant"
- - tweak: "made most pirate machines + consoles indestructible"
- - tweak: "increased pirate turret health"
diff --git a/html/changelogs/AutoChangeLog-pr-10929.yml b/html/changelogs/AutoChangeLog-pr-10929.yml
deleted file mode 100644
index fa9413f25a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10929.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Childproofs double-esword and hypereuplastic blade toys."
diff --git a/html/changelogs/AutoChangeLog-pr-10930.yml b/html/changelogs/AutoChangeLog-pr-10930.yml
deleted file mode 100644
index 4121a00b9b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10930.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - tweak: "Meteor Timer back to 3-5 minutes"
diff --git a/html/changelogs/AutoChangeLog-pr-10934.yml b/html/changelogs/AutoChangeLog-pr-10934.yml
deleted file mode 100644
index 61ef7ec04f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10934.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - refactor: "Refactored ghostreading/etc"
diff --git a/html/changelogs/AutoChangeLog-pr-10935.yml b/html/changelogs/AutoChangeLog-pr-10935.yml
deleted file mode 100644
index f35855854f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10935.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "KrabSpider"
-delete-after: True
-changes:
- - imageadd: "The Van Dyke is no longer Fu Manchu."
- - imagedel: "Gets rid of a Fu Manchu imitation."
diff --git a/html/changelogs/AutoChangeLog-pr-10936.yml b/html/changelogs/AutoChangeLog-pr-10936.yml
deleted file mode 100644
index 2303f157ab..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10936.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Cyborgization will now de-gang people, even gangheads."
diff --git a/html/changelogs/AutoChangeLog-pr-10937.yml b/html/changelogs/AutoChangeLog-pr-10937.yml
deleted file mode 100644
index 1c56882ccc..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10937.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - admin: "The debug outfit is now kitted out for whatever debbuging needs."
diff --git a/html/changelogs/AutoChangeLog-pr-10940.yml b/html/changelogs/AutoChangeLog-pr-10940.yml
deleted file mode 100644
index c0bbfc371a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10940.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - balance: "Some reagent holders (such as cigarettes, food) are not suitable for reagents export anymore, while unprocessed botany crops will only net 1/3 of the standard reagents values."
- - bugfix: "Export scanners now include the reagents value in the price report."
diff --git a/html/changelogs/AutoChangeLog-pr-10943.yml b/html/changelogs/AutoChangeLog-pr-10943.yml
deleted file mode 100644
index f45d8b1d39..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10943.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed a little inconvenience with the character setup preview dummy having extra unwarranted bits."
diff --git a/html/changelogs/AutoChangeLog-pr-10947.yml b/html/changelogs/AutoChangeLog-pr-10947.yml
deleted file mode 100644
index a6f1fb1344..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10947.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "nemvar"
-delete-after: True
-changes:
- - bugfix: "Trash from food now gets generated at the location of the food item, instead of in the hands of the eater."
diff --git a/html/changelogs/AutoChangeLog-pr-10948.yml b/html/changelogs/AutoChangeLog-pr-10948.yml
deleted file mode 100644
index f9da9463fc..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10948.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Stopped role restricted uplink items from being discounted despite not being purchasable most times."
diff --git a/html/changelogs/AutoChangeLog-pr-10949.yml b/html/changelogs/AutoChangeLog-pr-10949.yml
deleted file mode 100644
index 3c7000a0e1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10949.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "reactive repulse armor now has an item limit"
diff --git a/html/changelogs/AutoChangeLog-pr-10950.yml b/html/changelogs/AutoChangeLog-pr-10950.yml
deleted file mode 100644
index 8258db1d69..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10950.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "beam rifle runtime fix during aiming_beam"
diff --git a/html/changelogs/AutoChangeLog-pr-10951.yml b/html/changelogs/AutoChangeLog-pr-10951.yml
deleted file mode 100644
index 20bc444967..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10951.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "fail2topic runtime fix: taking out an ip while incrementing index resulted in accessing the next-next entry instead of the next and results in out of bound errors."
diff --git a/html/changelogs/AutoChangeLog-pr-10953.yml b/html/changelogs/AutoChangeLog-pr-10953.yml
deleted file mode 100644
index 67c2c915ad..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10953.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Missing words replacement file for the gondola mask."
diff --git a/html/changelogs/AutoChangeLog-pr-10955.yml b/html/changelogs/AutoChangeLog-pr-10955.yml
deleted file mode 100644
index 46ff62efaf..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10955.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "gravity gun repulse and chaos now work in all angles, rather than just basic cardinals and diagonals. fun."
diff --git a/html/changelogs/AutoChangeLog-pr-10957.yml b/html/changelogs/AutoChangeLog-pr-10957.yml
deleted file mode 100644
index b655b85fb9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10957.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "Dynamic now defaults to \"classic\" storyteller instead of just failing if the vote didn't choose a storyteller."
diff --git a/html/changelogs/AutoChangeLog-pr-10960.yml b/html/changelogs/AutoChangeLog-pr-10960.yml
deleted file mode 100644
index 6033533590..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10960.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kappa-sama"
-delete-after: True
-changes:
- - bugfix: "the plant dudes can actually make plant disks now"
diff --git a/html/changelogs/AutoChangeLog-pr-10961.yml b/html/changelogs/AutoChangeLog-pr-10961.yml
deleted file mode 100644
index eaaafab472..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10961.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed an issue with the nearsighted prescription glasses taking over worn eyewear."
diff --git a/html/changelogs/AutoChangeLog-pr-10966.yml b/html/changelogs/AutoChangeLog-pr-10966.yml
deleted file mode 100644
index bdc78a2b01..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10966.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - bugfix: "Mining no longer lead to spess"
diff --git a/html/changelogs/AutoChangeLog-pr-10967.yml b/html/changelogs/AutoChangeLog-pr-10967.yml
deleted file mode 100644
index f242dd57bc..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10967.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed AI unanchoring not properly removing the no teleport trait. My bad."
diff --git a/html/changelogs/AutoChangeLog-pr-10969.yml b/html/changelogs/AutoChangeLog-pr-10969.yml
deleted file mode 100644
index fdd53cdd2f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10969.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "crowbarring manifests off crates"
diff --git a/html/changelogs/AutoChangeLog-pr-10970.yml b/html/changelogs/AutoChangeLog-pr-10970.yml
deleted file mode 100644
index 7182c5f6a6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10970.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Public autolathes can no longer be hacked."
diff --git a/html/changelogs/AutoChangeLog-pr-10971.yml b/html/changelogs/AutoChangeLog-pr-10971.yml
deleted file mode 100644
index e7882646f8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10971.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "Alien stools and chairs"
diff --git a/html/changelogs/AutoChangeLog-pr-10972.yml b/html/changelogs/AutoChangeLog-pr-10972.yml
deleted file mode 100644
index 9cc2e64687..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10972.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - tweak: "Bone armor/Dagger are now crafting from bones rather then crafting menu"
diff --git a/html/changelogs/AutoChangeLog-pr-10973.yml b/html/changelogs/AutoChangeLog-pr-10973.yml
deleted file mode 100644
index 8946cddb43..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10973.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "Firing pins that only works when not on station"
diff --git a/html/changelogs/AutoChangeLog-pr-10974.yml b/html/changelogs/AutoChangeLog-pr-10974.yml
deleted file mode 100644
index 7f668256b3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10974.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "antag quirk blacklisting works now"
diff --git a/html/changelogs/AutoChangeLog-pr-10976.yml b/html/changelogs/AutoChangeLog-pr-10976.yml
deleted file mode 100644
index 34ef082829..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10976.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed another issue with hering comsig."
diff --git a/html/changelogs/AutoChangeLog-pr-10980.yml b/html/changelogs/AutoChangeLog-pr-10980.yml
deleted file mode 100644
index 3701aea6e1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10980.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - rscadd: "Medical locked crates"
- - balance: "Russian gear crates have less gear in some cases but all will cost more"
- - bugfix: "Medical locked crates that were not locked"
- - spellcheck: "Crates that were out of date are corrected"
diff --git a/html/changelogs/AutoChangeLog-pr-10981.yml b/html/changelogs/AutoChangeLog-pr-10981.yml
deleted file mode 100644
index df0d7990cb..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10981.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "IHOPMommyLich"
-delete-after: True
-changes:
- - tweak: "Changed the multiplicative_slowdown of Stimulants from -1 to -0.5"
diff --git a/html/changelogs/AutoChangeLog-pr-10984.yml b/html/changelogs/AutoChangeLog-pr-10984.yml
deleted file mode 100644
index 137536b430..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10984.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - balance: "Heads of staff have been better screened by NT before being promoted"
diff --git a/html/changelogs/AutoChangeLog-pr-10987.yml b/html/changelogs/AutoChangeLog-pr-10987.yml
deleted file mode 100644
index abea439a86..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10987.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - imageadd: "Fixed dozen missing privates sprites."
diff --git a/html/changelogs/AutoChangeLog-pr-10988.yml b/html/changelogs/AutoChangeLog-pr-10988.yml
deleted file mode 100644
index ebd9de7689..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10988.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "YakumoChen"
-delete-after: True
-changes:
- - tweak: "Observe is back in the OOC tab"
diff --git a/html/changelogs/AutoChangeLog-pr-10989.yml b/html/changelogs/AutoChangeLog-pr-10989.yml
deleted file mode 100644
index 0a5b2ad3c8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10989.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "A little fix concerning some R&D and reagents."
diff --git a/html/changelogs/AutoChangeLog-pr-10992.yml b/html/changelogs/AutoChangeLog-pr-10992.yml
deleted file mode 100644
index 1d6d10396b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10992.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - balance: "Buckshot individual pellet damage up from 10 to 12.5. Still firing 6 pellets."
diff --git a/html/changelogs/AutoChangeLog-pr-10994.yml b/html/changelogs/AutoChangeLog-pr-10994.yml
deleted file mode 100644
index c27a1afc00..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10994.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "DeltaFire15"
-delete-after: True
-changes:
- - balance: "Nar'Sie runes no longer benefit from runed floors."
diff --git a/html/changelogs/AutoChangeLog-pr-10996.yml b/html/changelogs/AutoChangeLog-pr-10996.yml
deleted file mode 100644
index 8bb7646cd6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10996.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "PersianXerxes"
-delete-after: True
-changes:
- - rscadd: "SMES and PACMAN attached to gulag Security to power electrified windows
-remove: Removed Sec vendor from gulag Security"
- - tweak: "Separation of gulag and public mining"
diff --git a/html/changelogs/AutoChangeLog-pr-10997.yml b/html/changelogs/AutoChangeLog-pr-10997.yml
deleted file mode 100644
index a380a04f68..0000000000
--- a/html/changelogs/AutoChangeLog-pr-10997.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-author: "Owai-Seek"
-delete-after: True
-changes:
- - rscadd: "Bacon and Eggs food item. Delicious! Added a Lemony Poppy Seed Muffin."
- - tweak: "Snack Vendor has Chocolates, Tortilla Chips, and a Marshmallow Box"
- - balance: "Mops can now be printed at service lathe once tools are researched."
- - balance: "Biobags can hold most organic limbs/organs, but not brains, implants, or cybernetics."
- - balance: "Trash Bag can now hold limbs (but not heads.)"
- - balance: "Most snack vendor items reduced by 1."
- - bugfix: "Trash Cans are now actually craftable, and only require metal instead of plastic."
- - imageadd: "Bacon and Eggs, Drying Agent Bottle."
- - imageadd: "Mugs now show reagent colors of contained reagents. Thanks Seris!"
diff --git a/html/changelogs/AutoChangeLog-pr-11000.yml b/html/changelogs/AutoChangeLog-pr-11000.yml
deleted file mode 100644
index 5e496af81f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11000.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - balance: "makes RCDs cost a better amount"
diff --git a/html/changelogs/AutoChangeLog-pr-11001.yml b/html/changelogs/AutoChangeLog-pr-11001.yml
deleted file mode 100644
index 1cfa8977b4..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11001.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - bugfix: "Fixed the pandemic naming and the radiation healing symptom UI crashing"
diff --git a/html/changelogs/AutoChangeLog-pr-11003.yml b/html/changelogs/AutoChangeLog-pr-11003.yml
deleted file mode 100644
index 4c551c4d09..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11003.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "Energy weapons now once again have their lens in contents."
diff --git a/html/changelogs/AutoChangeLog-pr-11005.yml b/html/changelogs/AutoChangeLog-pr-11005.yml
deleted file mode 100644
index d0576c7ba8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11005.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - tweak: "Hyposprays now switch modes on CTRL click, instead of alt, as it was already reserved for dispension amount."
diff --git a/html/changelogs/AutoChangeLog-pr-11011.yml b/html/changelogs/AutoChangeLog-pr-11011.yml
deleted file mode 100644
index d0a7b916f7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11011.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Tlaltecuhtli, ported by Hatterhat"
-delete-after: True
-changes:
- - balance: "Ripley, Firefighter, Odysseus and H.O.N.K. mechs now also use scanning modules and capacitors on construction. This means that they also gain reduced power consumption and EMP protection from higher-tier stock parts."
diff --git a/html/changelogs/AutoChangeLog-pr-11012.yml b/html/changelogs/AutoChangeLog-pr-11012.yml
deleted file mode 100644
index 1d233f0692..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11012.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "keronshb"
-delete-after: True
-changes:
- - rscadd: "Adds the CogChamp drink and Sprite"
diff --git a/html/changelogs/AutoChangeLog-pr-11013.yml b/html/changelogs/AutoChangeLog-pr-11013.yml
deleted file mode 100644
index a9806d796d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11013.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - rscadd: "Added Plasteel Pickaxe"
- - rscadd: "Added Titanium Pickaxe"
diff --git a/html/changelogs/AutoChangeLog-pr-11018.yml b/html/changelogs/AutoChangeLog-pr-11018.yml
deleted file mode 100644
index 2795317861..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11018.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "pais are no longer muted for literally a whole hour on emp."
diff --git a/html/changelogs/AutoChangeLog-pr-11020.yml b/html/changelogs/AutoChangeLog-pr-11020.yml
deleted file mode 100644
index 52677b98e9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11020.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Zellular"
-delete-after: True
-changes:
- - imageadd: "Movement state for pupdozer and its decals"
diff --git a/html/changelogs/AutoChangeLog-pr-11022.yml b/html/changelogs/AutoChangeLog-pr-11022.yml
deleted file mode 100644
index ac317e56b0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11022.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "auto profiler subsystem from tg"
diff --git a/html/changelogs/AutoChangeLog-pr-11024.yml b/html/changelogs/AutoChangeLog-pr-11024.yml
deleted file mode 100644
index 3af136f15e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11024.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "Brig cells now are more accurate by using timeofday instead of realtime"
diff --git a/html/changelogs/AutoChangeLog-pr-11025.yml b/html/changelogs/AutoChangeLog-pr-11025.yml
deleted file mode 100644
index af9ac20f62..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11025.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - rscadd: "Nanite interfaces have gotten a rework to TGUI Next, and can now support sub-programs.
-add:Adds the nanite sting program, which will allow you to manually sting people to give them nanites, changeling style."
diff --git a/html/changelogs/AutoChangeLog-pr-11026.yml b/html/changelogs/AutoChangeLog-pr-11026.yml
deleted file mode 100644
index c99aad2d14..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11026.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - balance: "The suit full of spiders also known as a ninja now is a tactical turtleneck"
- - balance: "The Wiznerds now dont have suits set to max"
diff --git a/html/changelogs/AutoChangeLog-pr-11027.yml b/html/changelogs/AutoChangeLog-pr-11027.yml
deleted file mode 100644
index 4e5f5b46ba..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11027.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "ShadeAware"
-delete-after: True
-changes:
- - rscadd: "The Captain's Wardrobe, a special one-of-a-kind and ID-locked wardrobe for the Captain that holds all of their snowflakey gear.
-Remove: Snowflake gear from the Captain's locker, since now it has its own vendor."
diff --git a/html/changelogs/AutoChangeLog-pr-11028.yml b/html/changelogs/AutoChangeLog-pr-11028.yml
deleted file mode 100644
index de94b1d35f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11028.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - tweak: "Meat wheat no longer has blood"
diff --git a/html/changelogs/AutoChangeLog-pr-11029.yml b/html/changelogs/AutoChangeLog-pr-11029.yml
deleted file mode 100644
index 17f34bbfa6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11029.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - tweak: "default should be... default"
diff --git a/html/changelogs/AutoChangeLog-pr-11032.yml b/html/changelogs/AutoChangeLog-pr-11032.yml
deleted file mode 100644
index 6d026e444a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11032.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "Cryo now actually transfers reagents at tier 4 on enter rather than every 80 machine fire()-process()s regardless of if it was \"reset\" by open/close."
diff --git a/html/changelogs/AutoChangeLog-pr-11033.yml b/html/changelogs/AutoChangeLog-pr-11033.yml
deleted file mode 100644
index c5b9a2f65a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11033.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "cmo now gets advanced surgery drapes that techweb-sync for advanced surgeries without an operating console."
diff --git a/html/changelogs/AutoChangeLog-pr-11035.yml b/html/changelogs/AutoChangeLog-pr-11035.yml
deleted file mode 100644
index 94a57db904..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11035.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "ctf claymores now actually spawn (and fit)."
diff --git a/html/changelogs/AutoChangeLog-pr-11038.yml b/html/changelogs/AutoChangeLog-pr-11038.yml
deleted file mode 100644
index b157c31af8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11038.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - bugfix: "STOP_PROCESSING now removes from currentrun to prevent another process cycle from happening where it shouldn't."
diff --git a/html/changelogs/AutoChangeLog-pr-11040.yml b/html/changelogs/AutoChangeLog-pr-11040.yml
deleted file mode 100644
index cc0514517b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11040.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Further mob holder fixes."
diff --git a/html/changelogs/AutoChangeLog-pr-11041.yml b/html/changelogs/AutoChangeLog-pr-11041.yml
new file mode 100644
index 0000000000..b9d9a993a2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11041.yml
@@ -0,0 +1,4 @@
+author: "Arturlang"
+delete-after: True
+changes:
+ - balance: "Bloodsuckers can no longer get usable blood from blood tomatoes."
diff --git a/html/changelogs/AutoChangeLog-pr-11042.yml b/html/changelogs/AutoChangeLog-pr-11042.yml
deleted file mode 100644
index 4238f76b75..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11042.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - balance: "The pandemic can no longer make vaccines or synthblood as quickly."
diff --git a/html/changelogs/AutoChangeLog-pr-11043.yml b/html/changelogs/AutoChangeLog-pr-11043.yml
deleted file mode 100644
index 28217af630..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11043.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - bugfix: "apc icons"
diff --git a/html/changelogs/AutoChangeLog-pr-11044.yml b/html/changelogs/AutoChangeLog-pr-11044.yml
deleted file mode 100644
index 7dec153778..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11044.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - rscadd: "The syndicate uplinks interface has been redone in TGUI Next"
diff --git a/html/changelogs/AutoChangeLog-pr-11045.yml b/html/changelogs/AutoChangeLog-pr-11045.yml
deleted file mode 100644
index 9e3e0a9ee4..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11045.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "Flat guns can no longer be suppressed"
diff --git a/html/changelogs/AutoChangeLog-pr-11046.yml b/html/changelogs/AutoChangeLog-pr-11046.yml
deleted file mode 100644
index c40286e901..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11046.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - tweak: "replaced stickmans .45 caliber with 10mm, for consistency."
diff --git a/html/changelogs/AutoChangeLog-pr-11047.yml b/html/changelogs/AutoChangeLog-pr-11047.yml
deleted file mode 100644
index 5bc42d1219..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11047.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - tweak: "Meatwheat and Oats now have rarity"
- - balance: "Oats now have at lest 50% more flour in them"
diff --git a/html/changelogs/AutoChangeLog-pr-11048.yml b/html/changelogs/AutoChangeLog-pr-11048.yml
deleted file mode 100644
index 77af926906..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11048.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - balance: "BDM now uses a PKA rather then a normal KA"
diff --git a/html/changelogs/AutoChangeLog-pr-11051.yml b/html/changelogs/AutoChangeLog-pr-11051.yml
deleted file mode 100644
index 8ac7939b00..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11051.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "hand teleporters now require 30 deciseconds of still movement by the user to dispel portals. there's a beam effect too."
diff --git a/html/changelogs/AutoChangeLog-pr-11053.yml b/html/changelogs/AutoChangeLog-pr-11053.yml
deleted file mode 100644
index a3c2eb29fa..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11053.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "keronshb"
-delete-after: True
-changes:
- - rscadd: "Added burn and knockback to stunhand during HALOS on cult."
- - balance: "Added burn and knockback to stunhand during HALOS on cult."
diff --git a/html/changelogs/AutoChangeLog-pr-11056.yml b/html/changelogs/AutoChangeLog-pr-11056.yml
deleted file mode 100644
index b56efb3557..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11056.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
- - rscdel: "Bullets causing bleed rates equal to unmitigated damage through all forms of defense."
diff --git a/html/changelogs/AutoChangeLog-pr-11060.yml b/html/changelogs/AutoChangeLog-pr-11060.yml
deleted file mode 100644
index c78f03a26d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11060.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Sort of a bugfix but cult blood magic and all guns now respect stamina softcrit."
diff --git a/html/changelogs/AutoChangeLog-pr-11061.yml b/html/changelogs/AutoChangeLog-pr-11061.yml
deleted file mode 100644
index 5225edc141..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11061.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - tweak: "Gang tower shield is no longer transparent"
diff --git a/html/changelogs/AutoChangeLog-pr-11062.yml b/html/changelogs/AutoChangeLog-pr-11062.yml
deleted file mode 100644
index b9bc85b1c1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11062.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Organ healing rate doubled. Organ decay rate halved to match its define (15 minutes for full decay, so at around 8-10 minutes it'll be really fucked)."
diff --git a/html/changelogs/AutoChangeLog-pr-11063.yml b/html/changelogs/AutoChangeLog-pr-11063.yml
deleted file mode 100644
index c729fb5ed9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11063.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Zellular"
-delete-after: True
-changes:
- - tweak: "Tweaked the movement state for the pupdozer's eyes"
diff --git a/html/changelogs/AutoChangeLog-pr-11070.yml b/html/changelogs/AutoChangeLog-pr-11070.yml
deleted file mode 100644
index 3c923bddb0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11070.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - tweak: "Storage now caches max screen size and only stores when being opened by a non ghost, meaning ghosts will no longer distort living player screens when viewing storage."
diff --git a/html/changelogs/AutoChangeLog-pr-11071.yml b/html/changelogs/AutoChangeLog-pr-11071.yml
deleted file mode 100644
index e8581b325e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11071.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed being unable to dump a trash bag's contents directly into disposal bins."
diff --git a/html/changelogs/AutoChangeLog-pr-11072.yml b/html/changelogs/AutoChangeLog-pr-11072.yml
deleted file mode 100644
index ab21d91e19..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11072.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Doubled the halved flavor text maximum length."
diff --git a/html/changelogs/AutoChangeLog-pr-11073.yml b/html/changelogs/AutoChangeLog-pr-11073.yml
deleted file mode 100644
index 078c5fb300..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11073.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Reduced tongue organ damage and tasting pH message spam."
diff --git a/html/changelogs/AutoChangeLog-pr-11075.yml b/html/changelogs/AutoChangeLog-pr-11075.yml
deleted file mode 100644
index 0eb612a81e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11075.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed agent IDs not registering the inputted name. Thanks MrPerson."
diff --git a/html/changelogs/AutoChangeLog-pr-11076.yml b/html/changelogs/AutoChangeLog-pr-11076.yml
deleted file mode 100644
index e0f187a038..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11076.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "nemvar"
-delete-after: True
-changes:
- - code_imp: "Changed mob biotypes from lists to flags."
diff --git a/html/changelogs/AutoChangeLog-pr-11079.yml b/html/changelogs/AutoChangeLog-pr-11079.yml
deleted file mode 100644
index b613b6c867..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11079.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Arturlang"
-delete-after: True
-changes:
- - tweak: "Valentines can now be converted by bloodsuckers"
diff --git a/html/changelogs/AutoChangeLog-pr-11080.yml b/html/changelogs/AutoChangeLog-pr-11080.yml
deleted file mode 100644
index 1dd764cfc3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11080.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "Stunbatons changed yet again."
diff --git a/html/changelogs/AutoChangeLog-pr-11081.yml b/html/changelogs/AutoChangeLog-pr-11081.yml
deleted file mode 100644
index 2fcb15b7aa..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11081.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Detective-Google"
-delete-after: True
-changes:
- - bugfix: "valentines candy no longer prefbreaks"
diff --git a/html/changelogs/AutoChangeLog-pr-11082.yml b/html/changelogs/AutoChangeLog-pr-11082.yml
deleted file mode 100644
index 89d9b4ca52..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11082.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "Preservahyde! Made with water, bromine, and formaldehyde, it doesn't decay into histamine. Instead, it just prevents your organs from rotting into nothing."
diff --git a/html/changelogs/AutoChangeLog-pr-11083.yml b/html/changelogs/AutoChangeLog-pr-11083.yml
deleted file mode 100644
index 757d9fcb63..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11083.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - balance: "You can now purify eldritch longswords with a bible. This creates purified longswords, which do not have anti-magic properties, but are still good for swinging at cultists."
diff --git a/html/changelogs/AutoChangeLog-pr-11086.yml b/html/changelogs/AutoChangeLog-pr-11086.yml
deleted file mode 100644
index e11113e71c..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11086.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "YakumoChen"
-delete-after: True
-changes:
- - imageadd: "Rings look nicer. Sprites used from RP."
- - imageadd: "Ring on-hands. Diamond rings sparkle!"
- - tweak: "You can now propose using a diamond ring in your hand."
diff --git a/html/changelogs/AutoChangeLog-pr-11087.yml b/html/changelogs/AutoChangeLog-pr-11087.yml
deleted file mode 100644
index 179ef6a2b7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11087.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed solar panels/trackers (de)construction being a bit wonky."
diff --git a/html/changelogs/AutoChangeLog-pr-11090.yml b/html/changelogs/AutoChangeLog-pr-11090.yml
deleted file mode 100644
index 698306fdb6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11090.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "rest hotkey"
diff --git a/html/changelogs/AutoChangeLog-pr-11091.yml b/html/changelogs/AutoChangeLog-pr-11091.yml
deleted file mode 100644
index 5d43d7dbdf..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11091.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "BlueWildrose"
-delete-after: True
-changes:
- - bugfix: "podpeople tail wagging"
- - tweak: "lifebringer ghost role fixes"
diff --git a/html/changelogs/AutoChangeLog-pr-11093.yml b/html/changelogs/AutoChangeLog-pr-11093.yml
deleted file mode 100644
index 4815818b0d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11093.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed something about slime blood and the law of conservation of mass."
- - bugfix: "Fixed flypeople being emetic machine guns."
diff --git a/html/changelogs/AutoChangeLog-pr-11094.yml b/html/changelogs/AutoChangeLog-pr-11094.yml
deleted file mode 100644
index a6db5bd93f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11094.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - tweak: "Cosmic winter coat now glows like the bedsheet, and holds normal winter coat gear"
diff --git a/html/changelogs/AutoChangeLog-pr-11098.yml b/html/changelogs/AutoChangeLog-pr-11098.yml
deleted file mode 100644
index 5ca7b7dd1e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11098.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Raiq & Linzolle"
-delete-after: True
-changes:
- - rscadd: "Bone bow - Ash walkers crafting , bone arrows - Ash walkers crafting, silk string used in bow crafting, harden arrows - Ash walkers crafting, ash walker only crafting book, basic pipe bow, and bow & arrow selling. Quivers for ash walkers as well, just to hold some arrows well out on the hunt!"
diff --git a/html/changelogs/AutoChangeLog-pr-11101.yml b/html/changelogs/AutoChangeLog-pr-11101.yml
deleted file mode 100644
index 5305e2b923..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11101.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "coiax"
-delete-after: True
-changes:
- - rscadd: "Admin and event only pair pinpointers! They come in a box of two, and each pinpointer will always point at its corresponding pair. Aww."
diff --git a/html/changelogs/AutoChangeLog-pr-11103.yml b/html/changelogs/AutoChangeLog-pr-11103.yml
deleted file mode 100644
index f38e23f76e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11103.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "PersianXerxes"
-delete-after: True
-changes:
- - rscadd: "Better clarified the comment explaining the contraband tag."
- - tweak: "Cargo nuclear defusal kits now require an emag'd drop pod console to be purchased."
diff --git a/html/changelogs/AutoChangeLog-pr-11104.yml b/html/changelogs/AutoChangeLog-pr-11104.yml
deleted file mode 100644
index 205af650a9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11104.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - server: "Express console is now logging what it buys, like the normal console should"
diff --git a/html/changelogs/AutoChangeLog-pr-11105.yml b/html/changelogs/AutoChangeLog-pr-11105.yml
deleted file mode 100644
index 0c7ac7b1e6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11105.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "Crabs are now made of crab meat."
diff --git a/html/changelogs/AutoChangeLog-pr-11108.yml b/html/changelogs/AutoChangeLog-pr-11108.yml
deleted file mode 100644
index c8bed79399..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11108.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - rscadd: "hsl instead of sum of rgb for spraycan lum check"
diff --git a/html/changelogs/AutoChangeLog-pr-11110.yml b/html/changelogs/AutoChangeLog-pr-11110.yml
deleted file mode 100644
index 5930a2bd30..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11110.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "Extend votes! Ported from Hyper, ported from AUstation."
diff --git a/html/changelogs/AutoChangeLog-pr-11111.yml b/html/changelogs/AutoChangeLog-pr-11111.yml
deleted file mode 100644
index 4e947ed297..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11111.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed virology being unable to be done with synthetic blood."
diff --git a/html/changelogs/AutoChangeLog-pr-11112.yml b/html/changelogs/AutoChangeLog-pr-11112.yml
deleted file mode 100644
index f54e2e0192..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11112.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
- - balance: "Reverted #9092, crew mecha no longer spawn with tracking beacons."
- - balance: "[Port] Mecha ballistics weapons now require ammo created from an Exosuit Fabricator or the Security Protolathe, though they will start with a full magazine and in most cases enough for one full reload. Reloading these weapons no longer chunks your power cell. Clown (and mime) mecha equipment have not changed."
- - balance: "[Port] The SRM-8 Missile Launcher has been replaced with the BRM-6 Breaching Missile Launcher in techwebs (Nukie Mauler remains equipped with the SRM-8)."
- - balance: "[Port] Both Missile Launchers and the Clusterbang Launcher do not have an ammo cache, and cannot be reloaded by the pilot. Once the initial loaded ammo has been spent, you can use the appropriate ammo box to load the weapon directly."
- - rscadd: "[Port] Utility mechs that have a clamp equipped can load ammo from their own cargo hold into other mechs."
- - rscadd: "[Port] Nuke Ops can purchase spare ammo duffel bags for their mecha weapons, should they run low."
diff --git a/html/changelogs/AutoChangeLog-pr-11113.yml b/html/changelogs/AutoChangeLog-pr-11113.yml
deleted file mode 100644
index b3c0bb34a8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11113.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "CameronWoof"
-delete-after: True
-changes:
- - rscadd: "Ammonia and saltpetre can now be made at the biogenerator."
diff --git a/html/changelogs/AutoChangeLog-pr-11114.yml b/html/changelogs/AutoChangeLog-pr-11114.yml
deleted file mode 100644
index 7d56933c65..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11114.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Psody-Mordheim"
-delete-after: True
-changes:
- - rscadd: "You can now make synth-flesh with synthetic blood."
- - rscadd: "You can now make synthetic blood via mixing saline glucose, iron, stable plasma and heating it to 350 temp."
- - rscadd: "You can mix synthetic blood and cryoxadone to create synth-meat in addition to normal blood."
diff --git a/html/changelogs/AutoChangeLog-pr-11119.yml b/html/changelogs/AutoChangeLog-pr-11119.yml
deleted file mode 100644
index 4a0dc59c65..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11119.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - rscdel: "Renamed \"blaster carbine\" and \"blaster rifles\" back to \"energy gun\" and \"laser gun\" respectively"
- - bugfix: "Fixed magnetic rifles & co being inconsistent with printed energy guns and start with an empty power cell."
- - imagedel: "Reverted practice laser gun sprites back to their former glory. Mostly."
diff --git a/html/changelogs/AutoChangeLog-pr-11120.yml b/html/changelogs/AutoChangeLog-pr-11120.yml
deleted file mode 100644
index 64a435146c..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11120.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed sprint buffer cost and regen being rounded down."
diff --git a/html/changelogs/AutoChangeLog-pr-11129.yml b/html/changelogs/AutoChangeLog-pr-11129.yml
deleted file mode 100644
index 18f8308bb1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11129.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-author: "Owai-Seek"
-delete-after: True
-changes:
- - tweak: "Reorganized all food recipes, (hopefully) making things easier to find."
- - balance: "Trays now have a whitelist, allowing them to pick up normal sized foods, bowls, glassware, booze, ect."
- - bugfix: "Easter foods are no longer their own Misc Food Category on the top of the menu."
- - spellcheck: "fixed a few typos/capitalization consistency."
- - tweak: "Mexican Foods are their own Subcategory."
- - tweak: "Donuts are their own Subcategory"
- - tweak: "Moved Sweets from Misc Food in with Pies. Renamed to Pies & Sweets"
diff --git a/html/changelogs/AutoChangeLog-pr-11131.yml b/html/changelogs/AutoChangeLog-pr-11131.yml
deleted file mode 100644
index 9a14049c2f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11131.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Seris02"
-delete-after: True
-changes:
- - balance: "bloodcrawl's cooldown"
diff --git a/html/changelogs/AutoChangeLog-pr-11133.yml b/html/changelogs/AutoChangeLog-pr-11133.yml
deleted file mode 100644
index 8cedc300c7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11133.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - balance: "Nerfed the fermenting barrel export industry."
- - tweak: "Reagent dispensers selling price no longer takes in account the reagents volume. It's already handled by reagents export."
diff --git a/html/changelogs/AutoChangeLog-pr-11134.yml b/html/changelogs/AutoChangeLog-pr-11134.yml
deleted file mode 100644
index 8ec6c97164..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11134.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - bugfix: "mechs with stock parts now have icons"
diff --git a/html/changelogs/AutoChangeLog-pr-11136.yml b/html/changelogs/AutoChangeLog-pr-11136.yml
deleted file mode 100644
index 5289fc3492..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11136.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Owai-Seek"
-delete-after: True
-changes:
- - rscadd: "BROOM"
- - tweak: "Janitor Vendor now has gear for two Janitors."
diff --git a/html/changelogs/AutoChangeLog-pr-11138.yml b/html/changelogs/AutoChangeLog-pr-11138.yml
deleted file mode 100644
index fd0e53bb73..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11138.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - tweak: "the game's built in autoclicker aka CanMobAutoclick no longer triggers client/Click()'s anti clickspam guard."
diff --git a/html/changelogs/AutoChangeLog-pr-11139.yml b/html/changelogs/AutoChangeLog-pr-11139.yml
deleted file mode 100644
index 99a7027977..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11139.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "pais can no longer bodyblock bullets"
diff --git a/html/changelogs/AutoChangeLog-pr-11140.yml b/html/changelogs/AutoChangeLog-pr-11140.yml
deleted file mode 100644
index 1054039b53..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11140.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "pai radio short changed to 3 minutes down from 5"
diff --git a/html/changelogs/AutoChangeLog-pr-11141.yml b/html/changelogs/AutoChangeLog-pr-11141.yml
deleted file mode 100644
index 68de20a632..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11141.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - balance: "pais are no longer fulltile click opacity."
diff --git a/html/changelogs/AutoChangeLog-pr-11142.yml b/html/changelogs/AutoChangeLog-pr-11142.yml
deleted file mode 100644
index 35c4033e2c..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11142.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - refactor: "vampire \"immortal haste\" has been reworked to be more reliable and consistent."
diff --git a/html/changelogs/AutoChangeLog-pr-11145.yml b/html/changelogs/AutoChangeLog-pr-11145.yml
deleted file mode 100644
index 2ad26003fb..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11145.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "pAIs are yet again unable to perform certain silicon interactions with machineries yet again."
diff --git a/html/changelogs/AutoChangeLog-pr-11146.yml b/html/changelogs/AutoChangeLog-pr-11146.yml
deleted file mode 100644
index 09d3b0134b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11146.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - balance: "all supermatter damage is now hardcapped"
diff --git a/html/changelogs/AutoChangeLog-pr-11147.yml b/html/changelogs/AutoChangeLog-pr-11147.yml
deleted file mode 100644
index 0978b2b184..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11147.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - tweak: "Supermatter sabotage objective no longer shows up with no supermatter"
diff --git a/html/changelogs/AutoChangeLog-pr-11149.yml b/html/changelogs/AutoChangeLog-pr-11149.yml
deleted file mode 100644
index bc9ce5eb9e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11149.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "Mining vendors no longer fail and eat your points iff you have precisely enough points to pay for an item"
diff --git a/html/changelogs/AutoChangeLog-pr-11153.yml b/html/changelogs/AutoChangeLog-pr-11153.yml
deleted file mode 100644
index bba1af88db..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11153.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "BuffEngineering, nemvar."
-delete-after: True
-changes:
- - bugfix: "Addicts can now feel like they're getting their fix or kicking it."
- - bugfix: "Aheals now remove addictions and restore your mood to default."
diff --git a/html/changelogs/AutoChangeLog-pr-11154.yml b/html/changelogs/AutoChangeLog-pr-11154.yml
deleted file mode 100644
index 03e1898b60..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11154.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Kraseo"
-delete-after: True
-changes:
- - bugfix: "Nightmares no longer delete entire guns from existence for merely having a light on them."
diff --git a/html/changelogs/AutoChangeLog-pr-11155.yml b/html/changelogs/AutoChangeLog-pr-11155.yml
deleted file mode 100644
index 069cdbdedf..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11155.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
- - bugfix: "Literally unclickability with a cham projector"
diff --git a/html/changelogs/AutoChangeLog-pr-11156.yml b/html/changelogs/AutoChangeLog-pr-11156.yml
deleted file mode 100644
index dc684eb4ef..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11156.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-author: "Psody-Mordheim"
-delete-after: True
-changes:
- - rscadd: "Disfiguration Symptom."
- - rscadd: "Deoxyribonucleic Acid Saboteur Symptom."
- - rscadd: "Polyvitiligo Symptom."
- - rscdel: "Revitiligo Symptom."
- - rscdel: "Vitiligo Symptom."
diff --git a/html/changelogs/AutoChangeLog-pr-11157.yml b/html/changelogs/AutoChangeLog-pr-11157.yml
deleted file mode 100644
index 5843c5f0e4..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11157.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - tweak: "Licking pref"
diff --git a/html/changelogs/AutoChangeLog-pr-11160.yml b/html/changelogs/AutoChangeLog-pr-11160.yml
deleted file mode 100644
index cf0fc3253e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11160.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - balance: "Pie reagent transfer now requires an uncovered mouth."
diff --git a/html/changelogs/AutoChangeLog-pr-11162.yml b/html/changelogs/AutoChangeLog-pr-11162.yml
deleted file mode 100644
index 3ea1b88ef7..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11162.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - bugfix: "Biogenerators can now actually generate universal enzyme."
- - bugfix: "The Basic Tools node now unlocks the multitool for printing on Engineering and Science fabricators."
diff --git a/html/changelogs/AutoChangeLog-pr-11163.yml b/html/changelogs/AutoChangeLog-pr-11163.yml
deleted file mode 100644
index 5492ad563b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11163.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "MrJWhit"
-delete-after: True
-changes:
- - tweak: "TEG"
diff --git a/html/changelogs/AutoChangeLog-pr-11166.yml b/html/changelogs/AutoChangeLog-pr-11166.yml
deleted file mode 100644
index c812c77ad8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11166.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "Fixed IRV."
diff --git a/html/changelogs/AutoChangeLog-pr-11167.yml b/html/changelogs/AutoChangeLog-pr-11167.yml
deleted file mode 100644
index 51bbb12fb3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11167.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - tweak: "hand teles use a less atrocious beam"
diff --git a/html/changelogs/AutoChangeLog-pr-11168.yml b/html/changelogs/AutoChangeLog-pr-11168.yml
deleted file mode 100644
index 93caacdad1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11168.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "Runtime if nobody has a chaos pref set"
diff --git a/html/changelogs/AutoChangeLog-pr-11169.yml b/html/changelogs/AutoChangeLog-pr-11169.yml
deleted file mode 100644
index c0d150acb5..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11169.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-author: "PersianXerxes"
-delete-after: True
-changes:
- - rscadd: "Added Kilo Station"
- - tweak: "Adjusts Kilo Station to be more in line with Citadel standards"
- - imageadd: "Added area icons required to make Kilo Station editable on Citadel code"
- - code_imp: "Fixed a reagent container on Kilo pointing to a nonexistent reagent"
- - config: "Adds Kilo Station to the maps config file, does not fix Meta Station's population requirement"
diff --git a/html/changelogs/AutoChangeLog-pr-11172.yml b/html/changelogs/AutoChangeLog-pr-11172.yml
deleted file mode 100644
index 83deba9652..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11172.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Linzolle"
-delete-after: True
-changes:
- - bugfix: "Bows now will not delete an arrow if it cant fire it."
- - bugfix: "bows now like and respect sprite changes"
diff --git a/html/changelogs/AutoChangeLog-pr-11175.yml b/html/changelogs/AutoChangeLog-pr-11175.yml
deleted file mode 100644
index 89d82068f1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11175.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "keronshb"
-delete-after: True
-changes:
- - bugfix: "fixed accelerated regeneration nanites"
- - bugfix: "fixed mechanical repair nanites"
- - bugfix: "fixed bio reconstruction nanites"
diff --git a/html/changelogs/AutoChangeLog-pr-11176.yml b/html/changelogs/AutoChangeLog-pr-11176.yml
deleted file mode 100644
index 98c7619990..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11176.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "IRV fixed... again"
diff --git a/html/changelogs/AutoChangeLog-pr-11179.yml b/html/changelogs/AutoChangeLog-pr-11179.yml
deleted file mode 100644
index 6c538d5476..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11179.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "AIs now understand the old ways of drunken dwarfs"
diff --git a/html/changelogs/AutoChangeLog-pr-11182.yml b/html/changelogs/AutoChangeLog-pr-11182.yml
deleted file mode 100644
index a5f8d5081e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11182.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - balance: "Removes some armored Russian hats from box station round start"
- - bugfix: "Doner items spawning"
diff --git a/html/changelogs/AutoChangeLog-pr-11183.yml b/html/changelogs/AutoChangeLog-pr-11183.yml
deleted file mode 100644
index 26a325cb08..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11183.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - balance: "Engi/Sec Trek suit no longer has 10% melee protection"
diff --git a/html/changelogs/AutoChangeLog-pr-11184.yml b/html/changelogs/AutoChangeLog-pr-11184.yml
deleted file mode 100644
index cb8ba1da3e..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11184.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "IPC hearts are now made of robomeat and roboblood thats emp proof. Heals and is all and all just like an normal heart"
diff --git a/html/changelogs/AutoChangeLog-pr-11185.yml b/html/changelogs/AutoChangeLog-pr-11185.yml
deleted file mode 100644
index 347dc9a3ad..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11185.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - imageadd: "All robotic organs now have an animation."
- - imageadd: "IPC's now organs now look like robotic ones, even tho thats not the case game wise"
diff --git a/html/changelogs/AutoChangeLog-pr-11186.yml b/html/changelogs/AutoChangeLog-pr-11186.yml
deleted file mode 100644
index 7a0c97379a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11186.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - bugfix: "temporary flavor text can now be of reasonable length"
diff --git a/html/changelogs/AutoChangeLog-pr-11187.yml b/html/changelogs/AutoChangeLog-pr-11187.yml
deleted file mode 100644
index 4a2bf49530..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11187.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - imageadd: "Added a new bee themed bar sign"
diff --git a/html/changelogs/AutoChangeLog-pr-11188.yml b/html/changelogs/AutoChangeLog-pr-11188.yml
deleted file mode 100644
index 24aae51503..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11188.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - imageadd: "Makes plywood chair not look as bad."
diff --git a/html/changelogs/AutoChangeLog-pr-11191.yml b/html/changelogs/AutoChangeLog-pr-11191.yml
deleted file mode 100644
index 12b80bf1c3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11191.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "YakumoChen"
-delete-after: True
-changes:
- - tweak: "Legion skulls behave like bees!!!!"
diff --git a/html/changelogs/AutoChangeLog-pr-11192.yml b/html/changelogs/AutoChangeLog-pr-11192.yml
deleted file mode 100644
index 4fc73ee199..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11192.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - balance: "Shooting the supermatter now adds to the supermatter's power. CO2 setups beware!"
diff --git a/html/changelogs/AutoChangeLog-pr-11199.yml b/html/changelogs/AutoChangeLog-pr-11199.yml
deleted file mode 100644
index 70aae404e1..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11199.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Detective-Google"
-delete-after: True
-changes:
- - rscadd: "Loudness Booster pAI program"
- - rscadd: "Encryption Key pAI program"
diff --git a/html/changelogs/AutoChangeLog-pr-11200.yml b/html/changelogs/AutoChangeLog-pr-11200.yml
new file mode 100644
index 0000000000..9c8b74b635
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11200.yml
@@ -0,0 +1,4 @@
+author: "Hatterhat"
+delete-after: True
+changes:
+ - bugfix: "Red and blue boxes are now actually red or blue."
diff --git a/html/changelogs/AutoChangeLog-pr-11201.yml b/html/changelogs/AutoChangeLog-pr-11201.yml
deleted file mode 100644
index 4b7749eee2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11201.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-author: "Hatterhat"
-delete-after: True
-changes:
- - rscadd: "The Ash Walkers' nest on Lavaland now starts with three bowyery slabs."
- - rscadd: "You can now welder-harden arrows. It might take longer."
- - balance: "Silkstring's costs adjusted for bows and whatnot."
- - spellcheck: "Grammar adjusted on a lot of things relating to bows."
- - bugfix: "Pipe bows' bowstring doesn't look like it replicated itself upon draw."
diff --git a/html/changelogs/AutoChangeLog-pr-11206.yml b/html/changelogs/AutoChangeLog-pr-11206.yml
deleted file mode 100644
index 5f6889ec94..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11206.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "corndog sprite being miss-spelled"
diff --git a/html/changelogs/AutoChangeLog-pr-11207.yml b/html/changelogs/AutoChangeLog-pr-11207.yml
deleted file mode 100644
index db73ed666f..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11207.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "Ash from land of lava now is useable for sandstone"
diff --git a/html/changelogs/AutoChangeLog-pr-11212.yml b/html/changelogs/AutoChangeLog-pr-11212.yml
deleted file mode 100644
index 62d6c4fb19..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11212.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "r4d6"
-delete-after: True
-changes:
- - bugfix: "fixed a missing tile"
diff --git a/html/changelogs/AutoChangeLog-pr-11214.yml b/html/changelogs/AutoChangeLog-pr-11214.yml
deleted file mode 100644
index 1a602727a8..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11214.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed pAI radios inability to be toggled on/off."
diff --git a/html/changelogs/AutoChangeLog-pr-11216.yml b/html/changelogs/AutoChangeLog-pr-11216.yml
deleted file mode 100644
index 40bb5067e3..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11216.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Putnam3145"
-delete-after: True
-changes:
- - rscadd: "Logging for renaming"
diff --git a/html/changelogs/AutoChangeLog-pr-10942.yml b/html/changelogs/AutoChangeLog-pr-11227.yml
similarity index 52%
rename from html/changelogs/AutoChangeLog-pr-10942.yml
rename to html/changelogs/AutoChangeLog-pr-11227.yml
index 2a30ace3aa..11b5474115 100644
--- a/html/changelogs/AutoChangeLog-pr-10942.yml
+++ b/html/changelogs/AutoChangeLog-pr-11227.yml
@@ -1,4 +1,4 @@
author: "Putnam3145"
delete-after: True
changes:
- - rscadd: "map voting doesn't suck anymore"
+ - tweak: "Salbutamol causes jittering now."
diff --git a/html/changelogs/AutoChangeLog-pr-11236.yml b/html/changelogs/AutoChangeLog-pr-11236.yml
deleted file mode 100644
index bda625e02b..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11236.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "bunny232"
-delete-after: True
-changes:
- - tweak: "Changes the simple animal sentience event from the xenomorph preference to sentience potion preference."
diff --git a/html/changelogs/AutoChangeLog-pr-11238.yml b/html/changelogs/AutoChangeLog-pr-11238.yml
deleted file mode 100644
index c268fcfdb0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-11238.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Trilbyspaceclone"
-delete-after: True
-changes:
- - bugfix: "Peach cake slices are no long made by mimes"
diff --git a/html/changelogs/AutoChangeLog-pr-11242.yml b/html/changelogs/AutoChangeLog-pr-11242.yml
new file mode 100644
index 0000000000..e421ee1c72
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11242.yml
@@ -0,0 +1,5 @@
+author: "Kraseo"
+delete-after: True
+changes:
+ - rscadd: "Lavaland flora have more traits now, to encourage harvesting and sending these off to the botanists."
+ - bugfix: "Napalm will now properly remove weeds from a tray if the plant in it has the fireproof gene."
diff --git a/html/changelogs/AutoChangeLog-pr-11251.yml b/html/changelogs/AutoChangeLog-pr-11251.yml
new file mode 100644
index 0000000000..0d22ba89ff
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11251.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - server: "28 days log changlogs have been added well 56+ day old changlogs have been removed"
diff --git a/html/changelogs/AutoChangeLog-pr-11260.yml b/html/changelogs/AutoChangeLog-pr-11260.yml
new file mode 100644
index 0000000000..52a0df9118
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11260.yml
@@ -0,0 +1,4 @@
+author: "Kraseo"
+delete-after: True
+changes:
+ - balance: "Gangs no longer get soporific rounds for their sniper rifles."
diff --git a/html/changelogs/AutoChangeLog-pr-11265.yml b/html/changelogs/AutoChangeLog-pr-11265.yml
new file mode 100644
index 0000000000..1b244cd674
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11265.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - sounddel: "Made the cogchamp mixing sound less annoying."
diff --git a/html/changelogs/AutoChangeLog-pr-11268.yml b/html/changelogs/AutoChangeLog-pr-11268.yml
new file mode 100644
index 0000000000..f8f33cfdd2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11268.yml
@@ -0,0 +1,6 @@
+author: "raspyosu"
+delete-after: True
+changes:
+ - bugfix: "cloak sometimes not restoring initial move intent"
+ - tweak: "mesmerize (line of sight checking system and remove progress bar)"
+ - balance: "nerf: lunge, mesmerize"
diff --git a/html/changelogs/AutoChangeLog-pr-11270.yml b/html/changelogs/AutoChangeLog-pr-11270.yml
new file mode 100644
index 0000000000..86a4df8fc2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11270.yml
@@ -0,0 +1,5 @@
+author: "ancientpower"
+delete-after: True
+changes:
+ - imageadd: "Snazzier sprites for paramedic gear."
+ - rscadd: "Unused paramedic gear added for future use."
diff --git a/html/changelogs/AutoChangeLog-pr-11271.yml b/html/changelogs/AutoChangeLog-pr-11271.yml
new file mode 100644
index 0000000000..382144298a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11271.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - tweak: "Pushing is no longer free space movement."
diff --git a/html/changelogs/AutoChangeLog-pr-11279.yml b/html/changelogs/AutoChangeLog-pr-11279.yml
new file mode 100644
index 0000000000..5f4aa506f2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11279.yml
@@ -0,0 +1,5 @@
+author: "Dennok, ported by Hatterhat"
+delete-after: True
+changes:
+ - bugfix: "Lava rivers no longer burn into basalt."
+ - code_imp: "The river generator can now specify baseturfs."
diff --git a/html/changelogs/AutoChangeLog-pr-11283.yml b/html/changelogs/AutoChangeLog-pr-11283.yml
new file mode 100644
index 0000000000..ae0d2706da
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11283.yml
@@ -0,0 +1,4 @@
+author: "Ragolution"
+delete-after: True
+changes:
+ - rscadd: "All winter coats and hoods might be different if slightly from one a other."
diff --git a/html/changelogs/AutoChangeLog-pr-11287.yml b/html/changelogs/AutoChangeLog-pr-11287.yml
new file mode 100644
index 0000000000..5a1939e90c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11287.yml
@@ -0,0 +1,4 @@
+author: "monster860"
+delete-after: True
+changes:
+ - tweak: "You can now moan in soft crit"
diff --git a/html/changelogs/AutoChangeLog-pr-11291.yml b/html/changelogs/AutoChangeLog-pr-11291.yml
new file mode 100644
index 0000000000..829de0f341
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11291.yml
@@ -0,0 +1,4 @@
+author: "YakumoChen"
+delete-after: True
+changes:
+ - bugfix: "Mining base looks more natural where it's spawned."
diff --git a/html/changelogs/AutoChangeLog-pr-11296.yml b/html/changelogs/AutoChangeLog-pr-11296.yml
new file mode 100644
index 0000000000..3c255ee7de
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11296.yml
@@ -0,0 +1,5 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - bugfix: "Actually made things work as intended."
+ - code_imp: "Removed a redundant turf melting check from the supermatter."
diff --git a/html/changelogs/AutoChangeLog-pr-11302.yml b/html/changelogs/AutoChangeLog-pr-11302.yml
new file mode 100644
index 0000000000..b4012bd269
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11302.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - bugfix: "compact defibs have 10k cells again"
diff --git a/html/changelogs/AutoChangeLog-pr-9860.yml b/html/changelogs/AutoChangeLog-pr-9860.yml
deleted file mode 100644
index c9d75aa7b9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-9860.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "tralezab, bandit, Skoglol"
-delete-after: True
-changes:
- - rscadd: "The mime's PDA messages are silent now!"
- - rscadd: "30 new emoji have been added. Mime buff, mime now OP."
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 1a4b8019cd..b3960f4db6 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/mob/feet_digi.dmi b/icons/mob/feet_digi.dmi
index ddc5ff0c5f..78f50519fa 100644
Binary files a/icons/mob/feet_digi.dmi and b/icons/mob/feet_digi.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 01e9f2ac2c..05cb49e38f 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/head_muzzled.dmi b/icons/mob/head_muzzled.dmi
index 5430f07726..4b8263469f 100644
Binary files a/icons/mob/head_muzzled.dmi and b/icons/mob/head_muzzled.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 41f2693800..5b501cc1aa 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/suit_digi.dmi b/icons/mob/suit_digi.dmi
index da51f9e621..8bea32eca4 100644
Binary files a/icons/mob/suit_digi.dmi and b/icons/mob/suit_digi.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index bcde4d84f7..e675a8d647 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/mob/uniform_digi.dmi b/icons/mob/uniform_digi.dmi
index 0b8c495c5a..82dc09e43e 100644
Binary files a/icons/mob/uniform_digi.dmi and b/icons/mob/uniform_digi.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index d5f3be5fdd..3d384b71d6 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index 3c8a1332a9..1105e30ae7 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 470f2a9d69..a98e745c40 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 0881a2c289..090003011b 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index 998ccc948d..56c32eb889 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi
index a35837eedd..4856eefa3e 100644
Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ
diff --git a/sound/roundend/seeyoulaterokay.ogg b/sound/roundend/seeyoulaterokay.ogg
new file mode 100644
index 0000000000..8d08103a73
Binary files /dev/null and b/sound/roundend/seeyoulaterokay.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index ff6ec1312a..bb5a6c6f8b 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -502,6 +502,8 @@
#include "code\datums\elements\ghost_role_eligibility.dm"
#include "code\datums\elements\mob_holder.dm"
#include "code\datums\elements\swimming.dm"
+#include "code\datums\elements\update_icon_blocker.dm"
+#include "code\datums\elements\update_icon_updates_onmob.dm"
#include "code\datums\elements\wuv.dm"
#include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"