diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index d6e522e3a0..0f8e832d63 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -3730,6 +3730,13 @@
},
/turf/open/floor/plasteel,
/area/centcom/control)
+"jA" = (
+/obj/machinery/shower{
+ dir = 4
+ },
+/obj/item/soap/syndie,
+/turf/open/floor/plasteel/freezer,
+/area/syndicate_mothership)
"jB" = (
/obj/structure/noticeboard{
dir = 8;
@@ -4215,6 +4222,14 @@
"ku" = (
/turf/closed/indestructible/fakeglass,
/area/syndicate_mothership)
+"kv" = (
+/obj/structure/mirror{
+ pixel_x = -28
+ },
+/obj/structure/table,
+/obj/item/reagent_containers/rag/towel/syndicate,
+/turf/open/floor/plasteel/freezer,
+/area/syndicate_mothership)
"kw" = (
/turf/open/floor/plasteel/yellowsiding,
/area/centcom/supply)
@@ -8414,10 +8429,6 @@
},
/turf/open/floor/plating,
/area/syndicate_mothership)
-"tg" = (
-/obj/item/soap/syndie,
-/turf/open/floor/plasteel/freezer,
-/area/syndicate_mothership)
"tl" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plating,
@@ -17430,12 +17441,6 @@
},
/turf/open/floor/plasteel/white,
/area/centcom/holding)
-"Rl" = (
-/obj/structure/mirror{
- pixel_x = -28
- },
-/turf/open/floor/plasteel/freezer,
-/area/syndicate_mothership)
"Rm" = (
/obj/structure/chair/wood/wings{
dir = 3
@@ -37823,8 +37828,8 @@ nx
mA
Tz
ku
-tg
-Rl
+jA
+kv
uM
QV
wp
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 2a24ce69b9..5e8515d3d5 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -95,7 +95,7 @@
var/obj/item/toy/crayon/CR = WM.color_source
add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY)
-/obj/item/reagents_containers/glass/rag/towel/machine_wash(obj/machinery/washing_machine/WM)
+/obj/item/reagents_containers/rag/towel/machine_wash(obj/machinery/washing_machine/WM)
if(WM.color_source)
if(istype(WM.color_source, /obj/item/toy/crayon))
var/obj/item/toy/crayon/CR = WM.color_source
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
index 7346dc9ea9..cf411ef367 100644
--- a/code/modules/clothing/suits/_suits.dm
+++ b/code/modules/clothing/suits/_suits.dm
@@ -28,7 +28,6 @@
H.update_inv_wear_suit()
else if(adjusted == ALT_STYLE)
adjusted = NORMAL_STYLE
- H.update_inv_wear_suit()
if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None"))
if(H.dna.features["taur"] in list("Naga", "Tentacle"))
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index feb80e8d2c..bb1b7ebe0e 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -377,13 +377,16 @@ There are several things that need to be remembered:
if(wear_suit)
var/obj/item/clothing/suit/S = wear_suit
+ var/no_taur_thanks = FALSE
+ if(!istype(S))
+ no_taur_thanks = TRUE
wear_suit.screen_loc = ui_oclothing
if(client && hud_used && hud_used.hud_shown)
if(hud_used.inventory_shown)
client.screen += wear_suit
update_observer_view(wear_suit,1)
- if(S.mutantrace_variation) //Just make sure we've got this checked too
+ if(!no_taur_thanks && S.mutantrace_variation) //Just make sure we've got this checked too
if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) //are we not a taur, but we have Digitigrade legs? Run this check first, then.
S.alternate_worn_icon = 'modular_citadel/icons/mob/suit_digi.dmi'
else
@@ -404,7 +407,7 @@ There are several things that need to be remembered:
if(OFFSET_SUIT in dna.species.offset_features)
suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1]
suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2]
- if(S.center)
+ if(!no_taur_thanks && S.center)
suit_overlay = center_image(suit_overlay, S.dimension_x, S.dimension_y)
overlays_standing[SUIT_LAYER] = suit_overlay
update_hair()
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index 47f3ba5efa..dc4e98d507 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -13,11 +13,18 @@
var/wipe_sound
var/soak_efficiency = 1
var/extinguish_efficiency = 0
+ var/action_speed = 3 SECONDS
+ var/damp_threshold = 0.5
/obj/item/reagent_containers/rag/suicide_act(mob/user)
user.visible_message("[user] is smothering [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
return (OXYLOSS)
+/obj/item/reagent_containers/rag/examine(mob/user)
+ . = ..()
+ if(reagents.total_volume)
+ to_chat(user, "Alt-Click to squeeze the liquids out of it.")
+
/obj/item/reagent_containers/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
. = ..()
if(!proximity)
@@ -39,7 +46,7 @@
else if(istype(A) && src in user)
user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...")
- if(do_after(user,30, target = A))
+ if(do_after(user, action_speed, target = A))
user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].")
SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
return
@@ -51,17 +58,43 @@
user.visible_message("\The [user] uses \the [src] to pat out [M == user ? "[user.p_their()]" : "\the [M]'s"] flames!")
if(hitsound)
playsound(M, hitsound, 25, 1)
- M.adjust_fire_stacks(-extinguish_efficiency)
+ M.adjust_fire_stacks(-min(extinguish_efficiency, M.fire_stacks))
else
+ if(reagents.total_volume > (volume * damp_threshold))
+ to_chat(user, "\The [src] is too drenched to be used to dry [user == M ? "yourself" : "\the [M]"] off.")
+ return TRUE
user.visible_message("\The [user] starts drying [M == user ? "[user.p_them()]self" : "\the [M]"] off with \the [src]...")
- if(do_mob(user, M, 3 SECONDS))
+ if(do_mob(user, M, action_speed))
+ if(reagents.total_volume > (volume * damp_threshold))
+ return
user.visible_message("\The [user] dries [M == user ? "[user.p_them()]self" : "\the [M]"] off with \the [src].")
if(wipe_sound)
playsound(M, wipe_sound, 25, 1)
- M.adjust_fire_stacks(-soak_efficiency)
+ if(M.fire_stacks)
+ var/minus_plus = M.fire_stacks < 0 ? 1 : -1
+ var/amount = min(abs(M.fire_stacks), soak_efficiency)
+ var/r_id = "fuel"
+ if(M.fire_stacks < 0)
+ r_id = "water"
+ reagents.add_reagent(r_id, amount * 0.3)
+ M.adjust_fire_stacks(minus_plus * amount)
+ M.wash_cream()
return TRUE
return ..()
+/obj/item/reagent_containers/rag/AltClick(mob/user)
+ . = ..()
+ if(reagents.total_volume && user.canUseTopic(src, BE_CLOSE))
+ to_chat(user, "You start squeezing the liquids out of \the [src]...")
+ if(do_after(user, action_speed, TRUE, src))
+ to_chat(user, "You squeeze \the [src] dry.")
+ var/atom/react_loc = get_turf(src)
+ if(ismob(react_loc))
+ react_loc = react_loc.loc
+ if(react_loc)
+ reagents.reaction(react_loc, TOUCH)
+ reagents.clear_reagents()
+
/obj/item/reagent_containers/rag/towel
name = "towel"
desc = "A soft cotton towel."
@@ -77,10 +110,16 @@
volume = 10
total_mass = 2
wipe_sound = 'sound/items/towelwipe.ogg'
- soak_efficiency = 2
- extinguish_efficiency = 2
+ soak_efficiency = 4
+ extinguish_efficiency = 3
var/flat_icon = "towel_flat"
var/folded_icon = "towel"
+ var/list/possible_colors
+
+/obj/item/reagent_containers/rag/towel/Initialize()
+ . = ..()
+ if(possible_colors)
+ add_atom_colour(pick(possible_colors), FIXED_COLOUR_PRIORITY)
/obj/item/reagent_containers/rag/towel/attack(mob/living/M, mob/living/user)
if(user.a_intent == INTENT_HARM)
@@ -112,13 +151,27 @@
to_chat(user, "You lay out \the [src] flat on the ground.")
icon_state = flat_icon
layer = BELOW_OBJ_LAYER
- qdel(src)
/obj/item/reagent_containers/rag/towel/pickup(mob/living/user)
. = ..()
icon_state = folded_icon
layer = initial(layer)
-/obj/item/reagent_containers/rag/towel/random/Initialize()
- . = ..()
- add_atom_colour(pick("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"), FIXED_COLOUR_PRIORITY)
+/obj/item/reagent_containers/rag/towel/on_reagent_change(changetype)
+ force = initial(force) + round(reagents.total_volume * 0.5)
+
+/obj/item/reagent_containers/rag/towel/random
+ possible_colors = list("#FF0000","#FF7F00","#FFFF00","#00FF00","#0000FF","#4B0082","#8F00FF")
+
+/obj/item/reagent_containers/rag/towel/syndicate
+ name = "syndicate towel"
+ desc = "Truly a weapon of mass destruction."
+ possible_colors = list("#DD1A1A", "#DB4325", "#E02700")
+ force = 4
+ armour_penetration = 10
+ volume = 20
+ soak_efficiency = 6
+ extinguish_efficiency = 5
+ action_speed = 15
+ damp_threshold = 0.8
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 50, "acid" = 50) //items don't provide armor to wearers unlike clothing yet.
\ No newline at end of file
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index 159805d4ce..8788567b36 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ