diff --git a/code/game/objects/items/devices/lighting/glowstick.dm b/code/game/objects/items/devices/lighting/glowstick.dm
index b09ccdd81ba..88512f4f3ea 100644
--- a/code/game/objects/items/devices/lighting/glowstick.dm
+++ b/code/game/objects/items/devices/lighting/glowstick.dm
@@ -9,7 +9,7 @@
item_state = "glowstick"
uv_intensity = 255
light_wedge = LIGHT_OMNI
- activation_sound = null
+ activation_sound = 'sound/items/glowstick.ogg'
/obj/item/device/flashlight/flare/glowstick/New()
. = ..()
@@ -40,7 +40,7 @@
/obj/item/device/flashlight/flare/glowstick/attack_self(var/mob/living/user)
if(((user.is_clumsy())) && prob(50))
- to_chat(user, "You break \the [src] apart, spilling its contents everywhere!")
+ to_chat(user, span("notice", "You break \the [src] apart, spilling its contents everywhere!"))
fuel = 0
new /obj/effect/decal/cleanable/greenglow(get_turf(user))
user.apply_effect((rand(15,30)),IRRADIATE,blocked = user.getarmor(null, "rad"))
@@ -48,18 +48,18 @@
return
if(!fuel)
- to_chat(user, "\The [src] has already been used.")
+ to_chat(user, span("notice", "\The [src] has already been used."))
return
if(on)
- to_chat(user, "\The [src] has already been turned on.")
+ to_chat(user, span("notice", "\The [src] has already been turned on."))
return
. = ..()
if(.)
user.visible_message(
- "[user] cracks and shakes \the [src].",
- "You crack and shake \the [src], turning it on!"
+ span("notice", "[user] cracks and shakes \the [src]."),
+ span("notice", "You crack and shake \the [src], turning it on!")
)
update_icon()
START_PROCESSING(SSprocessing, src)
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 624fe335f4c..84bc7a27b76 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -20,13 +20,13 @@
/obj/structure/toilet/attack_hand(mob/living/user as mob)
if(swirlie)
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
- usr.visible_message("[user] slams the toilet seat onto [swirlie.name]'s head!", "You slam the toilet seat onto [swirlie.name]'s head!", "You hear reverberating porcelain.")
+ usr.visible_message(span("danger", "[user] slams the toilet seat onto [swirlie.name]'s head!"), span("notice", "You slam the toilet seat onto [swirlie.name]'s head!"), "You hear reverberating porcelain.")
swirlie.adjustBruteLoss(8)
return
if(cistern && !open)
if(!contents.len)
- to_chat(user, "The cistern is empty.")
+ to_chat(user, span("notice", "The cistern is empty."))
return
else
var/obj/item/I = pick(contents)
@@ -34,7 +34,7 @@
user.put_in_hands(I)
else
I.forceMove(get_turf(src))
- to_chat(user, "You find \an [I] in the cistern.")
+ to_chat(user, span("notice", "You find \an [I] in the cistern."))
w_items -= I.w_class
return
@@ -46,10 +46,10 @@
/obj/structure/toilet/attackby(obj/item/I as obj, mob/living/user as mob)
if(I.iscrowbar())
- to_chat(user, "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"].")
+ to_chat(user, span("notice", "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]."))
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, 1)
if(do_after(user, 30/I.toolspeed))
- user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", "You hear grinding porcelain.")
+ user.visible_message(span("notice", "[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!"), span("notice", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!"), "You hear grinding porcelain.")
cistern = !cistern
update_icon()
return
@@ -63,29 +63,29 @@
if(G.state>1)
if(!GM.loc == get_turf(src))
- to_chat(user, "[GM.name] needs to be on the toilet.")
+ to_chat(user, span("notice", "[GM.name] needs to be on the toilet."))
return
if(open && !swirlie)
- user.visible_message("[user] starts to give [GM.name] a swirlie!", "You start to give [GM.name] a swirlie!")
+ user.visible_message(span("danger", "[user] starts to give [GM.name] a swirlie!"), span("notice", "You start to give [GM.name] a swirlie!"))
swirlie = GM
if(do_after(user, 30, 5, 0))
- user.visible_message("[user] gives [GM.name] a swirlie!", "You give [GM.name] a swirlie!", "You hear a toilet flushing.")
+ user.visible_message(span("danger", "[user] gives [GM.name] a swirlie!"), span("notice", "You give [GM.name] a swirlie!"), "You hear a toilet flushing.")
if(!GM.internal)
GM.adjustOxyLoss(5)
SSfeedback.IncrementSimpleStat("swirlies")
swirlie = null
else
- user.visible_message("[user] slams [GM.name] into the [src]!", "You slam [GM.name] into the [src]!")
+ user.visible_message(span("danger", "[user] slams [GM.name] into the [src]!"), span("notice", "You slam [GM.name] into the [src]!"))
GM.adjustBruteLoss(8)
else
- to_chat(user, "You need a tighter grip.")
+ to_chat(user, span("notice", "You need a tighter grip."))
if(cistern && !istype(user,/mob/living/silicon/robot)) //STOP PUTTING YOUR MODULES IN THE TOILET.
if(I.w_class > 3)
- to_chat(user, "\The [I] does not fit.")
+ to_chat(user, span("notice", "\The [I] does not fit."))
return
if(w_items + I.w_class > 5)
- to_chat(user, "The cistern is full.")
+ to_chat(user, span("notice", "The cistern is full."))
return
user.drop_from_inventory(I,src)
w_items += I.w_class
@@ -116,12 +116,12 @@
var/mob/living/GM = G.affecting
if(G.state>1)
if(!GM.loc == get_turf(src))
- to_chat(user, "[GM.name] needs to be on the urinal.")
+ to_chat(user, span("notice", "[GM.name] needs to be on the urinal."))
return
- user.visible_message("[user] slams [GM.name] into the [src]!", "You slam [GM.name] into the [src]!")
+ user.visible_message(span("danger", "[user] slams [GM.name] into the [src]!"), span("notice", "You slam [GM.name] into the [src]!"))
GM.adjustBruteLoss(8)
else
- to_chat(user, "You need a tighter grip.")
+ to_chat(user, span("notice", "You need a tighter grip."))
@@ -174,14 +174,14 @@
/obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob)
if(I.type == /obj/item/device/analyzer)
- to_chat(user, "The water temperature seems to be [watertemp].")
+ to_chat(user, span("notice", "The water temperature seems to be [watertemp]."))
if(I.iswrench())
var/newtemp = input(user, "What setting would you like to set the temperature valve to?", "Water Temperature Valve") in temperature_settings
- to_chat(user, "You begin to adjust the temperature valve with \the [I].")
+ to_chat(user, span("notice", "You begin to adjust the temperature valve with \the [I]."))
playsound(src.loc, I.usesound, 50, 1)
if(do_after(user, 50/I.toolspeed))
watertemp = newtemp
- user.visible_message("[user] adjusts the shower with \the [I].", "You adjust the shower with \the [I].")
+ user.visible_message(span("notice", "[user] adjusts the shower with \the [I]."), span("notice", "You adjust the shower with \the [I]."))
add_fingerprint(user)
/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up
@@ -357,9 +357,9 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(temperature >= H.species.heat_level_1)
- to_chat(H, "The water is searing hot!")
+ to_chat(H, span("danger", "The water is searing hot!"))
else if(temperature <= H.species.cold_level_1)
- to_chat(H, "The water is freezing cold!")
+ to_chat(H, span("warning", "The water is freezing cold!"))
/obj/item/bikehorn/rubberducky
name = "rubber ducky"
@@ -393,7 +393,7 @@
if (user.hand)
temp = H.organs_by_name[BP_L_HAND]
if(temp && !temp.is_usable())
- to_chat(user, "You try to move your [temp.name], but cannot!")
+ to_chat(user, span("notice", "You try to move your [temp.name], but cannot!"))
return
if(isrobot(user) || isAI(user))
@@ -403,28 +403,28 @@
return
if(busy)
- to_chat(user, "Someone's already washing here.")
+ to_chat(user, span("warning", "Someone's already washing here."))
return
- to_chat(usr, "You start washing your hands.")
- playsound(src.loc, 'sound/effects/sink_fill.ogg', 25, 1)
+ to_chat(usr, span("notice", "You start washing your hands."))
+ playsound(loc, 'sound/effects/sink_long.ogg', 75, 1)
busy = 1
- sleep(40)
+ if(!do_after(user, 40, src))
+ busy = 0
+ return TRUE
busy = 0
if(!Adjacent(user)) return //Person has moved away from the sink
user.clean_blood()
- if(ishuman(user))
- user:update_inv_gloves()
- for(var/mob/V in viewers(src, null))
- V.show_message("[user] washes their hands using \the [src].")
- playsound(src.loc, 'sound/effects/sink_empty.ogg', 25, 1)
+ user.visible_message( \
+ span("notice", "[user] washes their hands using \the [src]."), \
+ span("notice", "You wash your hands using \the [src]."))
/obj/structure/sink/attackby(obj/item/O as obj, mob/user as mob)
if(busy)
- to_chat(user, "Someone's already washing here.")
+ to_chat(user, span("warning", "Someone's already washing here."))
return
// Filling/emptying open reagent containers
@@ -435,28 +435,28 @@
if(!usr.Adjacent(src)) return
if(RG.loc != usr && !isrobot(user)) return
if(busy)
- to_chat(usr, "Someone's already using \the [src].")
+ to_chat(usr, span("warning", "Someone's already using \the [src]."))
return
switch(atype)
if ("Fill")
if(RG.reagents.total_volume >= RG.volume)
- to_chat(usr, "\The [RG] is already full.")
+ to_chat(usr, span("warning", "\The [RG] is already full."))
return
RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, amount_per_transfer_from_this))
- to_chat(oviewers(3, usr), "[usr] fills \the [RG] using \the [src].")
- to_chat(usr, "You fill \the [RG] using \the [src].")
- playsound(src.loc, 'sound/effects/sink_fill.ogg', 25, 1)
+ user.visible_message(span("notice", "[user] fills \the [RG] using \the [src]."),
+ span("notice", "You fill \the [RG] using \the [src]."))
+ playsound(loc, 'sound/effects/sink.ogg', 75, 1)
if ("Empty")
if(!RG.reagents.total_volume)
- to_chat(usr, "\The [RG] is already empty.")
+ to_chat(usr, span("warning", "\The [RG] is already empty."))
return
var/empty_amount = RG.reagents.trans_to(src, RG.amount_per_transfer_from_this)
- to_chat(oviewers(3, usr), "[usr] empties [empty_amount]u of \the [RG] into \the [src].")
- to_chat(usr, "You empty [empty_amount]u of \the [RG] into \the [src].")
- playsound(src.loc, 'sound/effects/sink_empty.ogg', 25, 1)
+ user.visible_message(span("notice", "[user] empties [empty_amount]u of \the [RG] into \the [src]."),
+ span("notice", "You empty [empty_amount]u of \the [RG] into \the [src]."))
+ playsound(src.loc, 'sound/effects/pour.ogg', 25, 1)
return
// Filling/empying Syringes
@@ -465,22 +465,22 @@
switch(S.mode)
if(0) // draw
if(S.reagents.total_volume >= S.volume)
- to_chat(usr, "\The [S] is already full.")
+ to_chat(usr, span("warning", "\The [S] is already full."))
return
var/trans = min(S.volume - S.reagents.total_volume, S.amount_per_transfer_from_this)
S.reagents.add_reagent("water", trans)
- to_chat(oviewers(3, usr), "[usr] uses \the [S] to draw water from \the [src].")
- to_chat(usr, "You draw [trans] units of water from \the [src]. \The [S] now contains [S.reagents.total_volume] units.")
+ to_chat(oviewers(3, usr), span("notice", "[usr] uses \the [S] to draw water from \the [src]."))
+ to_chat(usr, span("notice", "You draw [trans] units of water from \the [src]. \The [S] now contains [S.reagents.total_volume] units."))
if(1) // inject
if(!S.reagents.total_volume)
- to_chat(usr, "\The [S] is already empty.")
+ to_chat(usr, span("warning", "\The [S] is already empty."))
return
var/trans = min(S.amount_per_transfer_from_this, S.reagents.total_volume)
S.reagents.remove_any(trans)
- to_chat(oviewers(3, usr), "[usr] empties \the [S] into \the [src].")
- to_chat(usr, "You empty [trans] units of water into \the [src]. \The [S] now contains [S.reagents.total_volume] units.")
+ to_chat(oviewers(3, usr), span("notice", "[usr] empties \the [S] into \the [src]."))
+ to_chat(usr, span("notice", "You empty [trans] units of water into \the [src]. \The [S] now contains [S.reagents.total_volume] units."))
return
@@ -497,14 +497,14 @@
R.cell.charge -= 20
else
B.deductcharge(B.hitcost)
- user.visible_message("[user] was stunned by \the [O]!")
+ user.visible_message(span("danger", "[user] was stunned by \the [O]!"))
return 1
// Short of a rewrite, this is necessary to stop monkeycubes being washed.
else if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube))
return
else if(istype(O, /obj/item/mop))
O.reagents.add_reagent("water", 5)
- to_chat(user, "You wet \the [O] in \the [src].")
+ to_chat(user, span("notice", "You wet \the [O] in \the [src]."))
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
return
@@ -514,10 +514,13 @@
var/obj/item/I = O
if(!I || !istype(I,/obj/item)) return
- to_chat(usr, "You start washing \the [I].")
+ to_chat(usr, span("notice", "You start washing \the [I]."))
+ playsound(loc, 'sound/effects/sink_long.ogg', 75, 1)
busy = 1
- sleep(40)
+ if(!do_after(user, 40, src))
+ busy = 0
+ return TRUE
busy = 0
if(user.loc != location) return //User has moved
@@ -526,8 +529,8 @@
O.clean_blood()
user.visible_message( \
- "[user] washes \a [I] using \the [src].", \
- "You wash \a [I] using \the [src].")
+ span("notice", "[user] washes \a [I] using \the [src]."), \
+ span("notice", "You wash \a [I] using \the [src]."))
/obj/structure/sink/kitchen
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index c7bb2c30b89..4a47e47d649 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -77,7 +77,7 @@
/mob/living/carbon/gib()
for(var/mob/M in contents)
M.dropInto(loc)
- visible_message("\The [M] bursts out of \the [src]!")
+ visible_message(span("danger", "\The [M] bursts out of \the [src]!"))
..()
/mob/living/carbon/attack_hand(mob/M as mob)
@@ -197,11 +197,11 @@
if (!is_asystole())
if(src == M && istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
- src.visible_message( \
- text("[src] examines [].",src.gender==MALE?"himself":"herself"), \
+ src.visible_message(
+ span("notice", "[src] examines [src.gender==MALE?"himself":"herself"]."), \
span("notice", "You check yourself for injuries.") \
)
-
+
for(var/obj/item/organ/external/org in H.organs)
var/list/status = list()
var/brutedamage = org.brute_dam
@@ -237,9 +237,9 @@
if(org.status & ORGAN_BLEEDING)
status += span("danger", "bleeding")
if(status.len)
- src.show_message("My [org.name] is [english_list(status)].",1)
+ src.show_message("My [org.name] is [english_list(status)].",1)
else
- src.show_message("My [org.name] is OK.",1)
+ src.show_message("My [org.name] is OK.",1)
if((isskeleton(H)) && (!H.w_uniform) && (!H.wear_suit))
H.play_xylophone()
@@ -316,8 +316,8 @@
else if(istype(tapper))
tapper.species.tap(tapper,src)
else
- M.visible_message("[M] taps [src] to get their attention!", \
- "You tap [src] to get their attention!")
+ M.visible_message(span("notice", "[M] taps [src] to get their attention!"), \
+ span("notice", "You tap [src] to get their attention!"))
if(stat != DEAD)
AdjustParalysis(-3)
@@ -340,23 +340,6 @@
// ++++ROCKDTBEN++++ MOB PROCS //END
-/mob/living/carbon/clean_blood()
- . = ..()
- if(ishuman(src))
- var/mob/living/carbon/human/H = src
- if(H.gloves)
- if(H.gloves.clean_blood())
- H.update_inv_gloves(0)
- H.gloves.germ_level = 0
- else
- if(!isnull(H.bloody_hands))
- H.bloody_hands = null
- H.update_inv_gloves(0)
- H.germ_level = 0
- update_icons() //apply the now updated overlays to the mob
-
-
-
/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
var/temp_inc = max(min(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), exposed_temperature - bodytemperature), 0)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 68e097ceea5..7b4337c0adb 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -523,7 +523,7 @@
if(7)//snowflake arc - only happens when they have long hair.
damage_areas = list(BP_R_HAND, BP_R_ARM, BP_CHEST, BP_HEAD)
h_style = "skinhead"
- visible_message("[src]'s hair gets a burst of electricty through it, burning and turning to dust!", "your hair burns as the current flows through it, turning to dust!", "You hear a crackling sound, and smell burned hair!.")
+ visible_message(span("warning", "[src]'s hair gets a burst of electricty through it, burning and turning to dust!"), span("danger", "your hair burns as the current flows through it, turning to dust!"), span("notice", "You hear a crackling sound, and smell burned hair!."))
update_hair()
else
damage_areas = list(def_zone)
@@ -568,18 +568,18 @@
if (shock_damage > 15)
visible_message(
- "[src] was shocked by the [source]!",
- "You feel a powerful shock course through your body!",
- "You hear a heavy electrical crack."
+ span("warning", "[src] was shocked by the [source]!"),
+ span("danger", "You feel a powerful shock course through your body!"),
+ span("warning", "You hear a heavy electrical crack.")
)
Stun(10)//This should work for now, more is really silly and makes you lay there forever
Weaken(10)
else
visible_message(
- "[src] was mildly shocked by the [source].",
- "You feel a mild shock course through your body.",
- "You hear a light zapping."
+ span("warning", "[src] was mildly shocked by the [source]."),
+ span("warning", "You feel a mild shock course through your body."),
+ span("warning", "You hear a light zapping.")
)
spark(loc, 5, alldirs)
@@ -632,7 +632,7 @@
U.handle_regular_hud_updates()
if(!modified)
- to_chat(usr, "Unable to locate a data core entry for this person.")
+ to_chat(usr, span("warning", "Unable to locate a data core entry for this person."))
if (href_list["secrecord"])
if(hasHUD(usr,"security"))
@@ -657,7 +657,7 @@
read = 1
if(!read)
- to_chat(usr, "Unable to locate a data core entry for this person.")
+ to_chat(usr, span("warning", "Unable to locate a data core entry for this person."))
if (href_list["secrecordComment"])
if(hasHUD(usr,"security"))
@@ -684,7 +684,7 @@
to_chat(usr, "\[Add comment\]")
if(!read)
- to_chat(usr, "Unable to locate a data core entry for this person.")
+ to_chat(usr, span("warning", "Unable to locate a data core entry for this person."))
if (href_list["secrecordadd"])
if(hasHUD(usr,"security"))
@@ -742,7 +742,7 @@
U.handle_regular_hud_updates()
if(!modified)
- to_chat(usr, "Unable to locate a data core entry for this person.")
+ to_chat(usr, span("warning", "Unable to locate a data core entry for this person."))
if (href_list["medrecord"])
if(hasHUD(usr,"medical"))
@@ -768,7 +768,7 @@
read = 1
if(!read)
- to_chat(usr, "Unable to locate a data core entry for this person.")
+ to_chat(usr, span("warning", "Unable to locate a data core entry for this person."))
if (href_list["medrecordComment"])
if(hasHUD(usr,"medical"))
@@ -795,7 +795,7 @@
to_chat(usr, "\[Add comment\]")
if(!read)
- to_chat(usr, "Unable to locate a data core entry for this person.")
+ to_chat(usr, span("warning", "Unable to locate a data core entry for this person."))
if (href_list["medrecordadd"])
if(hasHUD(usr,"medical"))
@@ -896,17 +896,17 @@
if(is_berserk())
if(!silent)
- to_chat(src, "You are in no state to use that!")
+ to_chat(src, span("warning", "You are in no state to use that!"))
return 0
if(!species.has_fine_manipulation)
if(!silent)
- to_chat(src, "You don't have the dexterity to use that!")
+ to_chat(src, span("warning", "You don't have the dexterity to use that!"))
return 0
if(disabilities & MONKEYLIKE)
if(!silent)
- to_chat(src, "You don't have the dexterity to use that!")
+ to_chat(src, span("warning", "You don't have the dexterity to use that!"))
return 0
return 1
@@ -935,7 +935,7 @@
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
- visible_message("\The [src] begins playing \his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.")
+ visible_message(span("warning", "\The [src] begins playing \his ribcage like a xylophone. It's quite spooky."),span("notice", "You begin to play a spooky refrain on your ribcage."),span("warning", "You hear a spooky xylophone melody."))
var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg')
playsound(loc, song, 50, 1, -1)
xylophone = 1
@@ -1135,7 +1135,7 @@
regenerate_icons()
check_dna()
- visible_message("\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
+ visible_message(span("notice", "\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!"), span("notice", "You change your appearance!"), span("warning", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!"))
/mob/living/carbon/human/proc/remotesay()
set name = "Project mind"
@@ -1161,10 +1161,10 @@
var/say = sanitize(input("What do you wish to say"))
if(mRemotetalk in target.mutations)
- target.show_message("You hear [src.real_name]'s voice: [say]")
+ target.show_message(span("notice", "You hear [src.real_name]'s voice: [say]"))
else
- target.show_message("You hear a voice that seems to echo around the room: [say]")
- usr.show_message("You project your mind into [target.real_name]: [say]")
+ target.show_message(span("notice", "You hear a voice that seems to echo around the room: [say]"))
+ usr.show_message(span("notice", "You project your mind into [target.real_name]: [say]"))
log_say("[key_name(usr)] sent a telepathic message to [key_name(target)]: [say]",ckey=key_name(usr))
for(var/mob/abstract/observer/G in dead_mob_list)
G.show_message("Telepathic message from [src] to [target]: [say]")
@@ -1318,6 +1318,16 @@
/mob/living/carbon/human/clean_blood(var/clean_feet)
.=..()
+ if(gloves)
+ if(gloves.clean_blood())
+ update_inv_gloves(1)
+ gloves.germ_level = 0
+ else
+ if(!isnull(bloody_hands))
+ bloody_hands = null
+ update_inv_gloves(1)
+ germ_level = 0
+
gunshot_residue = null
if(clean_feet && !shoes)
feet_blood_color = null
@@ -1351,12 +1361,12 @@
if(!istype(O,/obj/item/implant) && prob(5)) //Moving with things stuck in you could be bad.
// All kinds of embedded objects cause bleeding.
if(!can_feel_pain())
- to_chat(src, "You feel [O] moving inside your [organ.name].")
+ to_chat(src, span("warning", "You feel [O] moving inside your [organ.name]."))
else
var/msg = pick( \
- "A spike of pain jolts your [organ.name] as you bump [O] inside.", \
- "Your movement jostles [O] in your [organ.name] painfully.", \
- "Your movement jostles [O] in your [organ.name] painfully.")
+ span("warning", "A spike of pain jolts your [organ.name] as you bump [O] inside."), \
+ span("warning", "Your movement jostles [O] in your [organ.name] painfully."), \
+ span("warning", "Your movement jostles [O] in your [organ.name] painfully."))
to_chat(src, msg)
organ.take_damage(rand(1, 3), sharp = TRUE, edge = TRUE, used_weapon = O)
@@ -1378,25 +1388,25 @@
return
if(!self)
- usr.visible_message("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\
+ usr.visible_message(span("notice", "[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse."),\
"You begin counting [src]'s pulse")
else
- usr.visible_message("[usr] begins counting their pulse.",\
+ usr.visible_message(span("notice", "[usr] begins counting their pulse."),\
"You begin counting your pulse.")
if(pulse())
- to_chat(usr, "[self ? "You have a" : "[src] has a"] pulse! Counting...")
+ to_chat(usr, span("notice", "[self ? "You have a" : "[src] has a"] pulse! Counting..."))
else
- to_chat(usr, "[src] has no pulse!") //it is REALLY UNLIKELY that a dead person would check his own pulse)
+ to_chat(usr, span("danger", "[src] has no pulse!")) //it is REALLY UNLIKELY that a dead person would check his own pulse)
return
to_chat(usr, "You must[self ? "" : " both"] remain still until counting is finished.")
if(do_mob(usr, src, 60))
var/pulsae = src.get_pulse(GETPULSE_HAND)
var/introspect = self ? "Your" : "[src]'s"
- to_chat(usr, "[introspect] pulse is [pulsae].")
+ to_chat(usr, span("notice", "[introspect] pulse is [pulsae]."))
else
- to_chat(usr, "You failed to check the pulse. Try again.")
+ to_chat(usr, span("warning", "You failed to check the pulse. Try again."))
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/kpg=0, var/change_hair = TRUE)
cached_bodytype = null
@@ -1509,26 +1519,26 @@
verbs -= /mob/living/carbon/human/proc/bloody_doodle
if (src.gloves)
- to_chat(src, "Your [src.gloves] are getting in the way.")
+ to_chat(src, span("warning", "Your [src.gloves] are getting in the way."))
return
var/turf/simulated/T = src.loc
if (!istype(T)) //to prevent doodling out of mechs and lockers
- to_chat(src, "You cannot reach the floor.")
+ to_chat(src, span("warning", "You cannot reach the floor."))
return
var/direction = input(src,"Which way?","Tile selection") as anything in list("Here","North","South","East","West")
if (direction != "Here")
T = get_step(T,text2dir(direction))
if (!istype(T))
- to_chat(src, "You cannot doodle there.")
+ to_chat(src, span("warning", "You cannot doodle there."))
return
var/num_doodles = 0
for (var/obj/effect/decal/cleanable/blood/writing/W in T)
num_doodles++
if (num_doodles > 4)
- to_chat(src, "There is no space to write on!")
+ to_chat(src, span("warning", "There is no space to write on!"))
return
var/max_length = bloody_hands * 30 //tweeter style
@@ -1541,7 +1551,7 @@
if (length(message) > max_length)
message += "-"
- to_chat(src, "You ran out of blood to write with!")
+ to_chat(src, span("warning", "You ran out of blood to write with!"))
var/obj/effect/decal/cleanable/blood/writing/W = new(T)
W.basecolor = (hand_blood_color) ? hand_blood_color : "#A10808"
@@ -1577,7 +1587,7 @@
if(!. && error_msg && user)
if(!fail_msg)
fail_msg = "There is no exposed flesh or thin material [target_zone == BP_HEAD ? "on their head" : "on their body"] to inject into."
- to_chat(user, "[fail_msg]")
+ to_chat(user, span("alert", "[fail_msg]"))
/mob/living/carbon/human/print_flavor_text(var/shrink = 1)
var/list/equipment = list(src.head,src.wear_mask,src.glasses,src.w_uniform,src.wear_suit,src.gloves,src.shoes)
@@ -1685,11 +1695,11 @@
var/obj/item/organ/external/current_limb = organs_by_name[choice]
if(self)
- U.visible_message("[U] tries to relocate their [current_limb.joint]...", \
- "You brace yourself to relocate your [current_limb.joint]...")
+ U.visible_message(span("warning", "[U] tries to relocate their [current_limb.joint]..."), \
+ span("warning", "You brace yourself to relocate your [current_limb.joint]..."))
else
- U.visible_message("[U] tries to relocate [S]'s [current_limb.joint]...", \
- "You begin to relocate [S]'s [current_limb.joint]...")
+ U.visible_message(span("warning", "[U] tries to relocate [S]'s [current_limb.joint]..."), \
+ span("warning", "You begin to relocate [S]'s [current_limb.joint]..."))
if(!do_after(U, 30))
return
@@ -1697,11 +1707,11 @@
return
if(self)
- U.visible_message("[U] pops their [current_limb.joint] back in!", \
- "You pop your [current_limb.joint] back in!")
+ U.visible_message(span("danger", "[U] pops their [current_limb.joint] back in!"), \
+ span("danger", "You pop your [current_limb.joint] back in!"))
else
- U.visible_message("[U] pops [S]'s [current_limb.joint] back in!", \
- "You pop [S]'s [current_limb.joint] back in!")
+ U.visible_message(span("danger", "[U] pops [S]'s [current_limb.joint] back in!"), \
+ span("danger", "You pop [S]'s [current_limb.joint] back in!"))
current_limb.undislocate()
/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/target = null)
@@ -1750,7 +1760,7 @@
if(stat) return
pulling_punches = !pulling_punches
- to_chat(src, "You are now [pulling_punches ? "pulling your punches" : "not pulling your punches"].")
+ to_chat(src, span("notice", "You are now [pulling_punches ? "pulling your punches" : "not pulling your punches"]."))
return
/mob/living/carbon/human/proc/get_traumas()
diff --git a/html/changelogs/wezzy_glowstick_sink.yml b/html/changelogs/wezzy_glowstick_sink.yml
new file mode 100644
index 00000000000..5f935992217
--- /dev/null
+++ b/html/changelogs/wezzy_glowstick_sink.yml
@@ -0,0 +1,41 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: Wowzewow (Wezzy)
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - soundadd: "New glowstick and sink sounds."
diff --git a/sound/effects/sink.ogg b/sound/effects/sink.ogg
new file mode 100644
index 00000000000..f195db7873d
Binary files /dev/null and b/sound/effects/sink.ogg differ
diff --git a/sound/effects/sink_empty.ogg b/sound/effects/sink_empty.ogg
deleted file mode 100644
index a43c16ceb1e..00000000000
Binary files a/sound/effects/sink_empty.ogg and /dev/null differ
diff --git a/sound/effects/sink_fill.ogg b/sound/effects/sink_fill.ogg
deleted file mode 100644
index 79e0b4ec803..00000000000
Binary files a/sound/effects/sink_fill.ogg and /dev/null differ
diff --git a/sound/effects/sink_long.ogg b/sound/effects/sink_long.ogg
new file mode 100644
index 00000000000..003f46bd896
Binary files /dev/null and b/sound/effects/sink_long.ogg differ
diff --git a/sound/items/glowstick.ogg b/sound/items/glowstick.ogg
new file mode 100644
index 00000000000..769c86a201c
Binary files /dev/null and b/sound/items/glowstick.ogg differ