Merge branch 'sink_glowstick_sounds'

This commit is contained in:
wezzy
2020-02-01 01:40:26 +08:00
10 changed files with 178 additions and 137 deletions

View File

@@ -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, "<span class='notice'>You break \the [src] apart, spilling its contents everywhere!</span>")
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, "<span class='notice'>\The [src] has already been used.</span>")
to_chat(user, span("notice", "\The [src] has already been used."))
return
if(on)
to_chat(user, "<span class='notice'>\The [src] has already been turned on.</span>")
to_chat(user, span("notice", "\The [src] has already been turned on."))
return
. = ..()
if(.)
user.visible_message(
"<span class='notice'>[user] cracks and shakes \the [src].</span>",
"<span class='notice'>You crack and shake \the [src], turning it on!</span>"
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)

View File

@@ -20,13 +20,13 @@
/obj/structure/toilet/attack_hand(mob/living/user as mob)
if(swirlie)
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
usr.visible_message("<span class='danger'>[user] slams the toilet seat onto [swirlie.name]'s head!</span>", "<span class='notice'>You slam the toilet seat onto [swirlie.name]'s head!</span>", "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, "<span class='notice'>The cistern is empty.</span>")
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, "<span class='notice'>You find \an [I] in the cistern.</span>")
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, "<span class='notice'>You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"].</span>")
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("<span class='notice'>[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!</span>", "<span class='notice'>You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!</span>", "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, "<span class='notice'>[GM.name] needs to be on the toilet.</span>")
to_chat(user, span("notice", "[GM.name] needs to be on the toilet."))
return
if(open && !swirlie)
user.visible_message("<span class='danger'>[user] starts to give [GM.name] a swirlie!</span>", "<span class='notice'>You start to give [GM.name] a swirlie!</span>")
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("<span class='danger'>[user] gives [GM.name] a swirlie!</span>", "<span class='notice'>You give [GM.name] a swirlie!</span>", "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("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
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, "<span class='notice'>You need a tighter grip.</span>")
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, "<span class='notice'>\The [I] does not fit.</span>")
to_chat(user, span("notice", "\The [I] does not fit."))
return
if(w_items + I.w_class > 5)
to_chat(user, "<span class='notice'>The cistern is full.</span>")
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, "<span class='notice'>[GM.name] needs to be on the urinal.</span>")
to_chat(user, span("notice", "[GM.name] needs to be on the urinal."))
return
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
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, "<span class='notice'>You need a tighter grip.</span>")
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, "<span class='notice'>The water temperature seems to be [watertemp].</span>")
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, "<span class='notice'>You begin to adjust the temperature valve with \the [I].</span>")
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("<span class='notice'>[user] adjusts the shower with \the [I].</span>", "<span class='notice'>You adjust the shower with \the [I].</span>")
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
@@ -330,9 +330,11 @@
qdel(E)
/obj/machinery/shower/machinery_process()
if(!on) return
if(!on)
return
wash_floor()
if(!mobpresent) return
if(!mobpresent)
return
for(var/mob/living/L in loc)
wash(L) // Why was it not here before?
process_heat(L)
@@ -348,7 +350,8 @@
is_washing = 0
/obj/machinery/shower/proc/process_heat(mob/living/M)
if(!on || !istype(M)) return
if(!on || !istype(M))
return
var/temperature = temperature_settings[watertemp]
var/temp_adj = between(BODYTEMP_COOLING_MAX, temperature - M.bodytemperature, BODYTEMP_HEATING_MAX)
@@ -357,9 +360,9 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(temperature >= H.species.heat_level_1)
to_chat(H, "<span class='danger'>The water is searing hot!</span>")
to_chat(H, span("danger", "The water is searing hot!"))
else if(temperature <= H.species.cold_level_1)
to_chat(H, "<span class='warning'>The water is freezing cold!</span>")
to_chat(H, span("warning", "The water is freezing cold!"))
/obj/item/bikehorn/rubberducky
name = "rubber ducky"
@@ -393,7 +396,7 @@
if (user.hand)
temp = H.organs_by_name[BP_L_HAND]
if(temp && !temp.is_usable())
to_chat(user, "<span class='notice'>You try to move your [temp.name], but cannot!</span>")
to_chat(user, span("notice", "You try to move your [temp.name], but cannot!"))
return
if(isrobot(user) || isAI(user))
@@ -403,28 +406,29 @@
return
if(busy)
to_chat(user, "<span class='warning'>Someone's already washing here.</span>")
to_chat(user, span("warning", "Someone's already washing here."))
return
to_chat(usr, "<span class='notice'>You start washing your hands.</span>")
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
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("<span class='notice'>[user] washes their hands using \the [src].</span>")
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, "<span class='warning'>Someone's already washing here.</span>")
to_chat(user, span("warning", "Someone's already washing here."))
return
// Filling/emptying open reagent containers
@@ -435,28 +439,28 @@
if(!usr.Adjacent(src)) return
if(RG.loc != usr && !isrobot(user)) return
if(busy)
to_chat(usr, "<span class='warning'>Someone's already using \the [src].</span>")
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, "<span class='warning'>\The [RG] is already full.</span>")
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), "<span class='notice'>[usr] fills \the [RG] using \the [src].</span>")
to_chat(usr, "<span class='notice'>You fill \the [RG] using \the [src].</span>")
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, "<span class='warning'>\The [RG] is already empty.</span>")
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), "<span class='notice'>[usr] empties [empty_amount]u of \the [RG] into \the [src].</span>")
to_chat(usr, "<span class='notice'>You empty [empty_amount]u of \the [RG] into \the [src].</span>")
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', 10, 1)
return
// Filling/empying Syringes
@@ -465,23 +469,22 @@
switch(S.mode)
if(0) // draw
if(S.reagents.total_volume >= S.volume)
to_chat(usr, "<span class='warning'>\The [S] is already full.</span>")
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), "<span class='notice'>[usr] uses \the [S] to draw water from \the [src].</span>")
to_chat(usr, "<span class='notice'>You draw [trans] units of water from \the [src]. \The [S] now contains [S.reagents.total_volume] units.</span>")
user.visible_message(span("notice", "[usr] uses \the [S] to draw water from \the [src]."),
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, "<span class='warning'>\The [S] is already empty.</span>")
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), "<span class='notice'>[usr] empties \the [S] into \the [src].</span>")
to_chat(usr, "<span class='notice'>You empty [trans] units of water into \the [src]. \The [S] now contains [S.reagents.total_volume] units.</span>")
user.visible_message(span("notice", "[usr] empties \the [S] into \the [src]."),
span("notice", "You empty [trans] units of water into \the [src]. \The [S] now contains [S.reagents.total_volume] units."))
return
else if (istype(O, /obj/item/melee/baton))
@@ -497,14 +500,14 @@
R.cell.charge -= 20
else
B.deductcharge(B.hitcost)
user.visible_message("<span class='danger'>[user] was stunned by \the [O]!</span>")
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, "<span class='notice'>You wet \the [O] in \the [src].</span>")
to_chat(user, span("notice", "You wet \the [O] in \the [src]."))
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
return
@@ -514,10 +517,13 @@
var/obj/item/I = O
if(!I || !istype(I,/obj/item)) return
to_chat(usr, "<span class='notice'>You start washing \the [I].</span>")
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,15 +532,13 @@
O.clean_blood()
user.visible_message( \
"<span class='notice'>[user] washes \a [I] using \the [src].</span>", \
"<span class='notice'>You wash \a [I] using \the [src].</span>")
span("notice", "[user] washes \a [I] using \the [src]."), \
span("notice", "You wash \a [I] using \the [src]."))
/obj/structure/sink/kitchen
name = "kitchen sink"
icon_state = "sink_alt"
/obj/structure/sink/puddle //splishy splashy ^_^
name = "puddle"
icon_state = "puddle"

View File

@@ -77,7 +77,7 @@
/mob/living/carbon/gib()
for(var/mob/M in contents)
M.dropInto(loc)
visible_message("<span class='danger'>\The [M] bursts out of \the [src]!</span>")
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("<span class='notice'>[src] examines [].</span>",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 <span class='warning'>[english_list(status)].</span>",1)
src.show_message("My [org.name] is [span("warning", "[english_list(status)].")]" ,1)
else
src.show_message("My [org.name] is <span class='notice'>OK.</span>",1)
src.show_message("My [org.name] is [span("notice", "OK.")]" ,1)
if((isskeleton(H)) && (!H.w_uniform) && (!H.wear_suit))
H.play_xylophone()
@@ -304,7 +304,7 @@
src.help_up_offer = 0
else
M.visible_message(span("warning", "[M] grabs onto [src], trying to pull themselves up."), \
span("warning", "You grab onto [src], trying to pull yourself up."))
span("warning", "You grab onto [src], trying to pull yourself up."))
if(M.fire_stacks >= (src.fire_stacks + 3))
src.adjust_fire_stacks(1)
M.adjust_fire_stacks(-1)
@@ -316,8 +316,8 @@
else if(istype(tapper))
tapper.species.tap(tapper,src)
else
M.visible_message("<span class='notice'>[M] taps [src] to get their attention!</span>", \
"<span class='notice'>You tap [src] to get their attention!</span>")
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)

View File

@@ -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("<span class='warning'>[src]'s hair gets a burst of electricty through it, burning and turning to dust!</span>", "<span class='danger'>your hair burns as the current flows through it, turning to dust!</span>", "<span class='notice'>You hear a crackling sound, and smell burned hair!.</span>")
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(
"<span class='warning'>[src] was shocked by the [source]!</span>",
"<span class='danger'>You feel a powerful shock course through your body!</span>",
"<span class='warning'>You hear a heavy electrical crack.</span>"
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(
"<span class='warning'>[src] was mildly shocked by the [source].</span>",
"<span class='warning'>You feel a mild shock course through your body.</span>",
"<span class='warning'>You hear a light zapping.</span>"
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, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
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, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
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, "<a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a>")
if(!read)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
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, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
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, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
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, "<a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a>")
if(!read)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
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, "<span class='warning'>You are in no state to use that!</span>")
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, "<span class='warning'>You don't have the dexterity to use that!</span>")
to_chat(src, span("warning", "You don't have the dexterity to use that!"))
return 0
if(disabilities & MONKEYLIKE)
if(!silent)
to_chat(src, "<span class='warning'>You don't have the dexterity to use that!</span>")
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("<span class='warning'>\The [src] begins playing \his ribcage like a xylophone. It's quite spooky.</span>","<span class='notice'>You begin to play a spooky refrain on your ribcage.</span>","<span class='warning'>You hear a spooky xylophone melody.</span>")
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("<span class='notice'>\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!</span>", "<span class='notice'>You change your appearance!</span>", "<span class='warning'>Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!</span>")
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("<span class='notice'>You hear [src.real_name]'s voice: [say]</span>")
target.show_message(span("notice", "You hear [src.real_name]'s voice: [say]"))
else
target.show_message("<span class='notice'>You hear a voice that seems to echo around the room: [say]</span>")
usr.show_message("<span class='notice'>You project your mind into [target.real_name]: [say]</span>")
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("<i>Telepathic message from <b>[src]</b> to <b>[target]</b>: [say]</i>")
@@ -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, "<span class='warning'>You feel [O] moving inside your [organ.name].</span>")
to_chat(src, span("warning", "You feel [O] moving inside your [organ.name]."))
else
var/msg = pick( \
"<span class='warning'>A spike of pain jolts your [organ.name] as you bump [O] inside.</span>", \
"<span class='warning'>Your movement jostles [O] in your [organ.name] painfully.</span>", \
"<span class='warning'>Your movement jostles [O] in your [organ.name] painfully.</span>")
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("<span class='notice'>[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.</span>",\
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("<span class='notice'>[usr] begins counting their pulse.</span>",\
usr.visible_message(span("notice", "[usr] begins counting their pulse."),\
"You begin counting your pulse.")
if(pulse())
to_chat(usr, "<span class='notice'>[self ? "You have a" : "[src] has a"] pulse! Counting...</span>")
to_chat(usr, span("notice", "[self ? "You have a" : "[src] has a"] pulse! Counting..."))
else
to_chat(usr, "<span class='danger'>[src] has no pulse!</span>") //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, "<span class='notice'>[introspect] pulse is [pulsae].</span>")
to_chat(usr, span("notice", "[introspect] pulse is [pulsae]."))
else
to_chat(usr, "<span class='warning'>You failed to check the pulse. Try again.</span>")
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, "<span class='warning'>Your [src.gloves] are getting in the way.</span>")
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, "<span class='warning'>You cannot reach the floor.</span>")
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, "<span class='warning'>You cannot doodle there.</span>")
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, "<span class='warning'>There is no space to write on!</span>")
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, "<span class='warning'>You ran out of blood to write with!</span>")
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, "<span class='alert'>[fail_msg]</span>")
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("<span class='warning'>[U] tries to relocate their [current_limb.joint]...</span>", \
"<span class='warning'>You brace yourself to relocate your [current_limb.joint]...</span>")
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("<span class='warning'>[U] tries to relocate [S]'s [current_limb.joint]...</span>", \
"<span class='warning'>You begin to relocate [S]'s [current_limb.joint]...</span>")
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,13 @@
return
if(self)
U.visible_message("<span class='danger'>[U] pops their [current_limb.joint] back in!</span>", \
"<span class='danger'>You pop your [current_limb.joint] back in!</span>")
U.visible_message(span("danger", "[U] pops their [current_limb.joint] back in!"), \
span("danger", "You pop your [current_limb.joint] back in!"))
playsound(src.loc, "fracture", 50, 1, -2)
else
U.visible_message("<span class='danger'>[U] pops [S]'s [current_limb.joint] back in!</span>", \
"<span class='danger'>You pop [S]'s [current_limb.joint] back in!</span>")
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!"))
playsound(src.loc, "fracture", 50, 1, -2)
current_limb.undislocate()
/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/target = null)
@@ -1750,7 +1762,7 @@
if(stat) return
pulling_punches = !pulling_punches
to_chat(src, "<span class='notice'>You are now [pulling_punches ? "pulling your punches" : "not pulling your punches"].</span>")
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()