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