Merge branch 'master' of https://github.com/tgstation/-tg-station into parahats

Conflicts:
	code/modules/clothing/head/soft_caps.dm
	icons/mob/head.dmi
	icons/obj/clothing/hats.dmi
This commit is contained in:
paprka
2014-12-19 10:41:27 -08:00
110 changed files with 987 additions and 623 deletions
@@ -51,15 +51,15 @@
. = ..(O, user, 0, 0, 0)
if(.)
if(O != user)
user.visible_message("<span class='danger'>[user] tries to stuff [O] into the [src].</span>", \
"<span class='danger'>You try to stuff [O] into the [src].</span>", \
user.visible_message("<span class='danger'>[user] tries to stuff [O] into [src].</span>", \
"<span class='danger'>You try to stuff [O] into [src].</span>", \
"<span class='danger'>You hear clanging.</span>")
if (!do_after(user, 40))
return
if(!..(O, user, 0, 0))
return
user.visible_message("<span class='notice'>[user] stuffs [O] into the [src].</span>", \
"<span class='notice'>You stuff [O] into the [src].</span>", \
user.visible_message("<span class='notice'>[user] stuffs [O] into[src].</span>", \
"<span class='notice'>You stuff [O] into [src].</span>", \
"<span class='notice'>You hear a loud metal bang.</span>")
insert(O, 1, !opened)
if(opened)
@@ -144,7 +144,7 @@
/obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob)
if(user.environment_smash)
user.do_attack_animation(src)
visible_message("<span class='danger'>[user] destroys the [src].</span>")
visible_message("<span class='danger'>[user] destroys \the [src].</span>")
dump_contents()
qdel(src)
@@ -170,7 +170,7 @@
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
user << "<span class='notice'>You begin cutting the [src] apart...</span>"
user << "<span class='notice'>You begin cutting \the [src] apart...</span>"
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
if(do_after(user,40,5,1))
if( !src.opened || !istype(src, /obj/structure/closet) || !user || !WT || !WT.isOn() || !user.loc )
@@ -192,7 +192,7 @@
else if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
user << "<span class='notice'>You begin [welded ? "unwelding":"welding"] the [src]...</span>"
user << "<span class='notice'>You begin [welded ? "unwelding":"welding"] \the [src]...</span>"
playsound(loc, 'sound/items/Welder2.ogg', 40, 1)
if(do_after(user,40,5,1))
if(src.opened || !istype(src, /obj/structure/closet) || !user || !WT || !WT.isOn() || !user.loc )
@@ -47,7 +47,7 @@
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/weapon/storage/box/ids(src)
new /obj/item/weapon/storage/box/ids(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/armor/vest/alt(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/device/flash/handheld(src)
new /obj/item/clothing/glasses/sunglasses(src)
@@ -74,9 +74,8 @@
new /obj/item/device/radio/headset/heads/hos(src)
new /obj/item/clothing/under/hosparadefem(src)
new /obj/item/clothing/under/hosparademale(src)
new /obj/item/clothing/suit/armor/hos/trenchcoat(src)
new /obj/item/clothing/under/rank/head_of_security/formal(src)
new /obj/item/clothing/head/HoS/beret(src)
new /obj/item/clothing/suit/armor/hos(src)
new /obj/item/clothing/head/HoS(src)
new /obj/item/clothing/glasses/hud/security/eyepatch(src)
new /obj/item/weapon/storage/lockbox/loyalty(src)
new /obj/item/weapon/storage/box/flashbangs(src)
@@ -103,11 +102,10 @@
/obj/structure/closet/secure_closet/warden/New()
..()
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/clothing/suit/armor/vest/warden(src)
new /obj/item/clothing/suit/armor/vest/warden/(src)
new /obj/item/clothing/head/warden(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/under/rank/warden/formal(src)
new /obj/item/clothing/head/warden/drill(src)
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
new /obj/item/clothing/head/beret/sec/navywarden(src)
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
new /obj/item/clothing/mask/gas/sechailer(src)
new /obj/item/weapon/storage/box/flashbangs(src)
@@ -134,10 +132,9 @@
/obj/structure/closet/secure_closet/security/New()
..()
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/head/helmet(src)
new /obj/item/device/radio/headset/headset_sec/alt(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/weapon/reagent_containers/spray/pepper(src)
new /obj/item/clothing/mask/gas/sechailer(src)
new /obj/item/device/flash/handheld(src)
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/gun/energy/taser(src)
@@ -28,12 +28,12 @@
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/santa(src)
new /obj/item/clothing/head/santa(src)
new /obj/item/clothing/head/santa(src)
+1 -1
View File
@@ -177,7 +177,7 @@
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
user.drop_item()
P.loc = src.loc
user << "<span class='notice'>You fit the pipe into the [src]!</span>"
user << "<span class='notice'>You fit the pipe into \the [src]!</span>"
else
..()
+2 -2
View File
@@ -138,8 +138,8 @@
if(!shock(user, 90))
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
anchored = !anchored
user.visible_message("<span class='notice'>[user] [anchored ? "fastens" : "unfastens"] the [src].</span>", \
"<span class='notice'>You have [anchored ? "fastened the [src] to" : "unfastened the [src] from"] the floor.</span>")
user.visible_message("<span class='notice'>[user] [anchored ? "fastens" : "unfastens"] [src].</span>", \
"<span class='notice'>You have [anchored ? "fastened [src] to" : "unfastened [src] from"] the floor.</span>")
return
else if(istype(W, /obj/item/stack/rods) && destroyed)
var/obj/item/stack/rods/R = W
+145 -204
View File
@@ -1,40 +1,108 @@
/* Morgue stuff
* Contains:
* Morgue
* Morgue trays
* Creamatorium
* Creamatorium trays
* Morgue tray
* Crematorium
* Crematorium tray
* Crematorium button
*/
/*
* Morgue
* Bodycontainer
* Parent class for morgue and crematorium
* For overriding only
*/
/obj/structure/morgue
name = "Morgue"
desc = "Used to keep bodies in until someone fetches them."
/obj/structure/bodycontainer
icon = 'icons/obj/stationobjs.dmi'
icon_state = "morgue1"
density = 1
var/obj/structure/m_tray/connected = null
anchored = 1.0
/obj/structure/morgue/New()
connected = new(src)
connected.connected = src
var/obj/structure/tray/connected = null
var/locked = 0
var/opendir = SOUTH
/obj/structure/bodycontainer/New()
..()
/obj/structure/morgue/Destroy()
/obj/structure/bodycontainer/Destroy()
open()
if(connected)
qdel(connected)
connected = null
..()
/obj/structure/morgue/on_log()
/obj/structure/bodycontainer/on_log()
update_icon()
/obj/structure/morgue/update_icon()
/obj/structure/bodycontainer/update_icon()
return
/obj/structure/bodycontainer/alter_health()
return src.loc
/obj/structure/bodycontainer/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/bodycontainer/attack_hand(mob/user as mob)
if(locked)
user << "<span class='danger'>It's locked.</span>"
return
if(!connected)
user << "That doesn't appear to have a tray."
return
if(connected.loc == src)
open()
else
close()
add_fingerprint(user)
/obj/structure/bodycontainer/attackby(P as obj, mob/user as mob)
if (istype(P, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", name), null) as text
if (user.get_active_hand() != P)
return
if ((!in_range(src, usr) && src.loc != user))
return
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if (t)
name = text("[]- '[]'", initial(name), t)
else
name = initial(name)
add_fingerprint(user)
/obj/structure/bodycontainer/container_resist()
open()
/obj/structure/bodycontainer/proc/open()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
var/turf/T = get_step(src, opendir)
for(var/atom/movable/A in src)
A.loc = T
update_icon()
/obj/structure/bodycontainer/proc/close()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
for(var/atom/movable/A in connected.loc)
if(!A.anchored || A == connected)
A.loc = src
update_icon()
/*
* Morgue
*/
/obj/structure/bodycontainer/morgue
name = "morgue"
desc = "Used to keep bodies in until someone fetches them."
icon_state = "morgue1"
opendir = EAST
/obj/structure/bodycontainer/morgue/New()
connected = new/obj/structure/tray/m_tray(src)
connected.connected = src
..()
/obj/structure/bodycontainer/morgue/update_icon()
if (!connected || connected.loc != src) //open or the tray broke off somehow
src.icon_state = "morgue0"
else
@@ -55,128 +123,29 @@
src.icon_state = "morgue4"//clone that mofo
break
/obj/structure/morgue/alter_health()
return src.loc
/obj/structure/morgue/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/morgue/attack_hand(mob/user as mob)
if(!connected)
user << "That doesn't appear to have a tray."
return
if(connected.loc == src)
open()
else
close()
add_fingerprint(user)
/obj/structure/morgue/attackby(P as obj, mob/user as mob)
if (istype(P, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if (user.get_active_hand() != P)
return
if ((!in_range(src, usr) && src.loc != user))
return
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if (t)
src.name = text("Morgue- '[]'", t)
else
src.name = "Morgue"
add_fingerprint(user)
/obj/structure/morgue/container_resist()
open()
/obj/structure/morgue/proc/open()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
var/turf/T = get_step(src, EAST)
for(var/atom/movable/A in src)
A.loc = T
update_icon()
/obj/structure/morgue/proc/close()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
for(var/atom/movable/A in connected.loc)
if(!A.anchored || A == connected)
A.loc = src
update_icon()
/*
* Morgue tray
*/
/obj/structure/m_tray
name = "morgue tray"
desc = "Apply corpse before closing."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "morguet"
density = 1
layer = 2.0
var/obj/structure/morgue/connected = null
anchored = 1.0
throwpass = 1
/obj/structure/m_tray/Destroy()
if(connected)
connected.connected = null
connected.update_icon()
connected = null
..()
/obj/structure/m_tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/m_tray/attack_hand(mob/user as mob)
if (src.connected)
connected.close()
add_fingerprint(user)
else
user << "That's not connected to anything."
/obj/structure/m_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O)))
return
if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag))
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
O.loc = src.loc
if (user != O)
for(var/mob/B in viewers(user, 3))
B.show_message("<span class='danger'>[user] stuffs [O] into [src]!</span>", 1)
return
/*
* Crematorium
*/
/obj/structure/crematorium
var/global/list/crematoriums = new/list()
/obj/structure/bodycontainer/crematorium
name = "crematorium"
desc = "A human incinerator. Works well on barbeque nights."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "crema1"
density = 1
var/obj/structure/c_tray/connected = null
anchored = 1.0
var/cremating = 0
opendir = SOUTH
var/id = 1
var/locked = 0
/obj/structure/crematorium/New()
connected = new(src)
/obj/structure/bodycontainer/crematorium/Destroy()
crematoriums.Remove(src)
..()
/obj/structure/bodycontainer/crematorium/New()
connected = new/obj/structure/tray/c_tray(src)
connected.connected = src
crematoriums.Add(src)
..()
/obj/structure/crematorium/Destroy()
open()
if(connected)
qdel(connected)
connected = null
..()
/obj/structure/crematorium/update_icon()
/obj/structure/bodycontainer/crematorium/update_icon()
if(!connected || connected.loc != src)
icon_state = "crema0"
else
@@ -186,51 +155,13 @@
else
src.icon_state = "crema1"
if(cremating)
if(locked)
src.icon_state = "crema_active"
return
/obj/structure/crematorium/alter_health()
return src.loc
/obj/structure/crematorium/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/crematorium/attack_hand(mob/user as mob)
if (cremating || locked)
user << "<span class='danger'>It's locked.</span>"
return
if (!connected)
user << "That doesn't appear to have a tray."
return
if(connected.loc == src)
open()
else
close()
add_fingerprint(user)
/obj/structure/crematorium/attackby(P as obj, mob/user as mob)
if (istype(P, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if (user.get_active_hand() != P)
return
if ((!in_range(src, usr) > 1 && src.loc != user))
return
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if (t)
src.name = text("Crematorium- '[]'", t)
else
src.name = "Crematorium"
src.add_fingerprint(user)
return
/obj/structure/crematorium/container_resist()
open()
/obj/structure/crematorium/proc/cremate(mob/user as mob)
if(cremating)
/obj/structure/bodycontainer/crematorium/proc/cremate(mob/user as mob)
if(locked)
return //don't let you cremate something twice or w/e
if(contents.len <= 1)
@@ -240,7 +171,6 @@
else
audible_message("<span class='danger'>You hear a roar as the crematorium activates.</span>")
cremating = 1
locked = 1
update_icon()
@@ -261,57 +191,62 @@
new /obj/effect/decal/cleanable/ash(src)
sleep(30)
cremating = 0
locked = 0
update_icon()
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
/obj/structure/crematorium/proc/open()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
var/turf/T = get_step(src, SOUTH)
for(var/atom/movable/A in src)
A.loc = T
update_icon()
/obj/structure/crematorium/proc/close()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
for(var/atom/movable/A in connected.loc)
if(!A.anchored || A == connected)
A.loc = src
update_icon()
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //you horrible people
/*
* Crematorium tray
Crematorium Switch
*/
/obj/machinery/crema_switch/attack_hand(mob/user as mob)
if(src.allowed(usr))
for (var/obj/structure/bodycontainer/crematorium/C in crematoriums)
if (C.id != id)
continue
C.cremate(user)
else
usr << "<span class='danger'>Access denied.</span>"
return
/obj/machinery/crema_switch/attackby(obj/item/W as obj, mob/user as mob)
if(W.GetID())
attack_hand(user)
else
return ..()
/*
* Generic Tray
* Parent class for morguetray and crematoriumtray
* For overriding only
*/
/obj/structure/c_tray
name = "crematorium tray"
desc = "Apply body before burning."
/obj/structure/tray
icon = 'icons/obj/stationobjs.dmi'
icon_state = "cremat"
density = 1
layer = 2.0
var/obj/structure/crematorium/connected = null
layer = 2.9
var/obj/structure/bodycontainer/connected = null
anchored = 1.0
throwpass = 1
/obj/structure/c_tray/Destroy()
/obj/structure/tray/Destroy()
if(connected)
connected.connected = null
connected.update_icon()
connected = null
..()
/obj/structure/c_tray/attack_paw(mob/user as mob)
/obj/structure/tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/c_tray/attack_hand(mob/user as mob)
/obj/structure/tray/attack_hand(mob/user as mob)
if (src.connected)
connected.close()
add_fingerprint(user)
else
user << "That's not connected to anything."
/obj/structure/c_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
/obj/structure/tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O)))
return
if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag))
@@ -325,13 +260,19 @@
//Foreach goto(99)
return
/obj/machinery/crema_switch/attack_hand(mob/user as mob)
if(src.allowed(usr))
for (var/obj/structure/crematorium/C in world)
if (C.id == id)
if (!C.cremating)
C.cremate(user)
else
usr << "<span class='danger'>Access denied.</span>"
return
/*
* Crematorium tray
*/
/obj/structure/tray/c_tray
name = "crematorium tray"
desc = "Apply body before burning."
icon_state = "cremat"
/*
* Morgue tray
*/
/obj/structure/tray/m_tray
name = "morgue tray"
desc = "Apply corpse before closing."
icon_state = "morguet"
@@ -39,7 +39,7 @@
else
M.visible_message(\
"<span class='notice'>[user.name] secretes a thick vile goo, securing [M.name] into [src]!</span>",\
"<span class='warning'>[user.name] drenches you in a foul-smelling resin, trapping you in the [src]!</span>",\
"<span class='warning'>[user.name] drenches you in a foul-smelling resin, trapping you in [src]!</span>",\
"<span class='notice'>You hear squelching...</span>")
M.buckled = src
M.loc = src.loc
@@ -64,7 +64,7 @@
else
if(!usr || !isturf(usr.loc))
return
if(usr.stat || usr.restrained() || !usr.canmove)
if(usr.stat || usr.restrained())
return
spin()
+5 -5
View File
@@ -29,7 +29,7 @@
return
if(istype(I, /obj/item/stack/sheet/plasteel))
var/obj/item/stack/sheet/plasteel/P = I
user << "<span class='notice'>Now adding the [P] to the [src].</span>"
user << "<span class='notice'>Now adding [P] to [src].</span>"
if(do_after(user, 50))
new /obj/structure/table/reinforced(src.loc)
qdel(src)
@@ -37,7 +37,7 @@
return
if(istype(I, /obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/metal/M = I
user << "<span class='notice'>Now adding the [M] to the [src].</span>"
user << "<span class='notice'>Now adding [M] to [src].</span>"
if(do_after(user, 20))
new /obj/structure/table(src.loc)
qdel(src)
@@ -45,7 +45,7 @@
return
if(istype(I, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/glass/G = I
user << "<span class='notice'>Now adding the [G] to the [src].</span>"
user << "<span class='notice'>Now adding [G] to [src].</span>"
if(do_after(user, 20))
new /obj/structure/table/glass(src.loc)
qdel(src)
@@ -72,7 +72,7 @@
return
if(istype(I, /obj/item/stack/sheet/mineral/wood))
var/obj/item/stack/sheet/mineral/wood/W = I
user << "<span class='notice'>Now adding the [W] to the [src].</span>"
user << "<span class='notice'>Now adding [W] to [src].</span>"
if(do_after(user, 20))
new /obj/structure/table/wood(src.loc)
qdel(src)
@@ -80,7 +80,7 @@
return
if(istype(I, /obj/item/stack/tile/carpet))
var/obj/item/stack/tile/carpet/C = I
user << "<span class='notice'>Now adding the [C] to the [src].</span>"
user << "<span class='notice'>Now adding [C] to [src].</span>"
if(do_after(user, 20))
new /obj/structure/table/wood/poker(src.loc)
qdel(src)
@@ -44,7 +44,7 @@ obj/structure/transit_tube/ex_act(severity, target)
for(var/obj/structure/transit_tube_pod/pod in src.loc)
user << "<span class='notice'>Remove the pod first.</span>"
return
user.visible_message("<span class='warning'>[user] starts to deattach the [src]!</span>", "<span class='notice'>You start deattaching the [name]...</span>")
user.visible_message("<span class='warning'>[user] starts to deattach \the [src]!</span>", "<span class='notice'>You start deattaching the [name]...</span>")
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 35))
user << "<span class='notice'>You deattach the [name]!</span>"
@@ -31,11 +31,11 @@
for(var/obj/structure/transit_tube/station/T in loc)
return
if(src.contents.len)
user.visible_message("<span class='notice'>[user] empties the [src].</span>", "<span class='notice'>You empty the [src].</span>")
user.visible_message("<span class='notice'>[user] empties \the [src].</span>", "<span class='notice'>You empty \the [src].</span>")
src.empty()
return
else
user << "<span class='notice'>You free the [src].</span>"
user << "<span class='notice'>You free \the [src].</span>"
var/obj/structure/c_transit_tube_pod/R = new/obj/structure/c_transit_tube_pod(src.loc)
src.transfer_fingerprints_to(R)
R.add_fingerprint(user)
+3 -3
View File
@@ -77,7 +77,7 @@
GM.adjustOxyLoss(5)
swirlie = null
else
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM] into [src]!</span>")
user.visible_message("<span class='danger'>[user] slams [GM.name] into [src]!</span>", "<span class='notice'>You slam [GM] into [src]!</span>")
GM.adjustBruteLoss(8)
else
user << "<span class='notice'>You need a tighter grip.</span>"
@@ -167,7 +167,7 @@
if(I.type == /obj/item/device/analyzer)
user << "<span class='notice'>The water temperature seems to be [watertemp].</span>"
if(istype(I, /obj/item/weapon/wrench))
user << "<span class='notice'>You begin to adjust the temperature valve with the [I].</span>"
user << "<span class='notice'>You begin to adjust the temperature valve with \the [I].</span>"
if(do_after(user, 50))
switch(watertemp)
if("normal")
@@ -176,7 +176,7 @@
watertemp = "boiling"
if("boiling")
watertemp = "normal"
user.visible_message("<span class='notice'>[user] adjusts the shower with the [I].</span>", "<span class='notice'>You adjust the shower with the [I] to [watertemp] temperature.</span>")
user.visible_message("<span class='notice'>[user] adjusts the shower with \the [I].</span>", "<span class='notice'>You adjust the shower with \the [I] to [watertemp] temperature.</span>")
log_game("[key_name(user)] has wrenched a shower to [watertemp] at ([x],[y],[z])")
add_hiddenprint(user)