Conflicts:
	icons/mob/head.dmi
	icons/obj/clothing/hats.dmi
This commit is contained in:
Hubblenaut
2015-08-11 00:51:18 +02:00
558 changed files with 12983 additions and 13029 deletions
@@ -83,22 +83,26 @@
src.desc = "Owned by [I.registered_name]."
else
user << "<span class='warning'>Access Denied</span>"
else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = src.icon_broken
if(istype(W, /obj/item/weapon/melee/energy/blade))
else if(istype(W, /obj/item/weapon/melee/energy/blade))
if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [W]!", "You hear metal being sliced and sparks flying."))
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 3))
O.show_message("<span class='warning'>The locker has been sliced open by [user] with an energy blade!</span>", 1, "<span class='warning'>You hear metal being sliced and sparks flying.</span>", 2)
else
user << "<span class='warning'>Access Denied</span>"
return
/obj/structure/closet/secure_closet/personal/emag_act(var/remaining_charges, var/mob/user, var/visual_feedback, var/audible_feedback)
if(!broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = src.icon_broken
if(visual_feedback)
visible_message("<span class='warning'>[visual_feedback]</span>", "<span class='warning'>[audible_feedback]</span>")
return 1
/obj/structure/closet/secure_closet/personal/verb/reset()
set src in oview(1) // One square distance
@@ -78,28 +78,31 @@
user.drop_item()
if(W)
W.loc = src.loc
else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = icon_off
flick(icon_broken, src)
if(istype(W, /obj/item/weapon/melee/energy/blade))
else if(istype(W, /obj/item/weapon/melee/energy/blade))
if(emag_act(INFINITY, user, "<span class='danger'>The locker has been sliced open by [user] with \an [W]</span>!", "<span class='danger'>You hear metal being sliced and sparks flying.</span>"))
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 3))
O.show_message("<span class='warning'>The locker has been sliced open by [user] with an energy blade!</span>", 1, "You hear metal being sliced and sparks flying.", 2)
else
for(var/mob/O in viewers(user, 3))
O.show_message("<span class='warning'>The locker has been broken by [user] with an electromagnetic card!</span>", 1, "You hear a faint electrical spark.", 2)
else if(istype(W,/obj/item/weapon/packageWrap) || istype(W,/obj/item/weapon/weldingtool))
return ..(W,user)
else
togglelock(user)
/obj/structure/closet/secure_closet/attack_hand(var/remaining_charges, var/mob/user, var/visual_feedback, var/audible_feedback)
if(!broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = icon_off
flick(icon_broken, src)
if(visual_feedback)
visible_message(visual_feedback, audible_feedback)
else
visible_message("<span class='warning'>The locker has been broken by [user] with an electromagnetic card!</span>", "You hear a faint electrical spark.")
/obj/structure/closet/secure_closet/attack_hand(mob/user as mob)
src.add_fingerprint(user)
if(src.locked)
@@ -16,7 +16,7 @@
new /obj/item/weapon/storage/backpack/satchel_cap(src)
new /obj/item/clothing/suit/captunic(src)
new /obj/item/clothing/suit/captunic/capjacket(src)
new /obj/item/clothing/head/helmet/cap(src)
new /obj/item/clothing/head/caphat/cap(src)
new /obj/item/clothing/under/rank/captain(src)
new /obj/item/clothing/suit/storage/vest(src)
new /obj/item/weapon/cartridge/captain(src)
@@ -28,7 +28,7 @@
new /obj/item/clothing/suit/armor/captain(src)
new /obj/item/weapon/melee/telebaton(src)
new /obj/item/clothing/under/dress/dress_cap(src)
new /obj/item/clothing/head/helmet/formalcaptain(src)
new /obj/item/clothing/head/caphat/formal(src)
new /obj/item/clothing/under/captainformal(src)
return
@@ -82,7 +82,7 @@
new /obj/item/clothing/shoes/leather(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/under/rank/head_of_personnel_whimsy(src)
new /obj/item/clothing/head/helmet/hop(src)
new /obj/item/clothing/head/caphat/hop(src)
return
@@ -103,13 +103,13 @@
new /obj/item/weapon/storage/backpack/security(src)
else
new /obj/item/weapon/storage/backpack/satchel_sec(src)
new /obj/item/clothing/head/helmet/HoS(src)
new /obj/item/clothing/head/HoS(src)
new /obj/item/clothing/suit/storage/vest/hos(src)
new /obj/item/clothing/under/rank/head_of_security/jensen(src)
new /obj/item/clothing/under/rank/head_of_security/corp(src)
new /obj/item/clothing/suit/armor/hos/jensen(src)
new /obj/item/clothing/suit/armor/hos(src)
new /obj/item/clothing/head/helmet/HoS/dermal(src)
new /obj/item/clothing/head/HoS/dermal(src)
new /obj/item/weapon/cartridge/hos(src)
new /obj/item/device/radio/headset/heads/hos(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
@@ -148,7 +148,7 @@
new /obj/item/clothing/under/rank/warden(src)
new /obj/item/clothing/under/rank/warden/corp(src)
new /obj/item/clothing/suit/armor/vest/warden(src)
new /obj/item/clothing/head/helmet/warden(src)
new /obj/item/clothing/head/warden(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
@@ -154,15 +154,20 @@
user << "<span class='warning'>The crate appears to be broken.</span>"
return
if(src.allowed(user))
src.locked = !src.locked
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
O << "<span class='notice'>The crate has been [locked ? null : "un"]locked by [user].</span>"
overlays.Cut()
overlays += locked ? redlight : greenlight
set_locked(!locked, user)
else
user << "<span class='notice'>Access Denied</span>"
/obj/structure/closet/crate/secure/proc/set_locked(var/newlocked, mob/user = null)
if(locked == newlocked) return
locked = newlocked
if(user)
for(var/mob/O in viewers(user, 3))
O.show_message( "<span class='notice'>The crate has been [locked ? null : "un"]locked by [user].</span>", 1)
overlays.Cut()
overlays += locked ? redlight : greenlight
/obj/structure/closet/crate/secure/verb/verb_togglelock()
set src in oview(1) // One square distance
set category = "Object"
@@ -187,7 +192,15 @@
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(is_type_in_list(W, list(/obj/item/weapon/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters)))
return ..()
if(locked && (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)))
if(istype(W, /obj/item/weapon/melee/energy/blade))
emag_act(INFINITY, user)
if(!opened)
src.togglelock(user)
return
return ..()
/obj/structure/closet/crate/secure/emag_act(var/remaining_charges, var/mob/user)
if(!broken)
overlays.Cut()
overlays += emag
overlays += sparks
@@ -196,11 +209,7 @@
src.locked = 0
src.broken = 1
user << "<span class='notice'>You unlock \the [src].</span>"
return
if(!opened)
src.togglelock(user)
return
return ..()
return 1
/obj/structure/closet/crate/secure/emp_act(severity)
for(var/obj/O in src)
@@ -13,8 +13,8 @@
if(istype(W, /obj/item/weapon/crowbar))
new /obj/item/stack/material/wood(src)
var/turf/T = get_turf(src)
for(var/obj/O in contents)
O.loc = T
for(var/atom/movable/AM in contents)
if(AM.simulated) AM.loc = T
user.visible_message("<span class='notice'>[user] pries \the [src] open.</span>", \
"<span class='notice'>You pry open \the [src].</span>", \
"<span class='notice'>You hear splitting wood.</span>")
@@ -73,4 +73,4 @@
/obj/structure/largecrate/animal/chick
name = "chicken crate"
held_count = 5
held_type = /mob/living/simple_animal/chick
held_type = /mob/living/simple_animal/chick
+17 -17
View File
@@ -149,7 +149,7 @@
user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.")
if(do_after(user, 40))
if(!src || !WT.isOn()) return
user << "<span class='notice>You welded the [glass] plating off!</span>"
user << "<span class='notice'>You welded the [glass] plating off!</span>"
var/M = text2path("/obj/item/stack/material/[glass]")
new M(src.loc, 2)
glass = 0
@@ -157,18 +157,18 @@
user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.")
if(do_after(user, 40))
if(!src || !WT.isOn()) return
user << "<span class='notice>You welded the glass panel out!</span>"
user << "<span class='notice'>You welded the glass panel out!</span>"
new /obj/item/stack/material/glass/reinforced(src.loc)
glass = 0
else if(!anchored)
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
if(do_after(user, 40))
if(!src || !WT.isOn()) return
user << "<span class='notice>You dissasembled the airlock assembly!</span>"
user << "<span class='notice'>You dissasembled the airlock assembly!</span>"
new /obj/item/stack/material/steel(src.loc, 4)
qdel (src)
else
user << "<span class='notice>You need more welding fuel.</span>"
user << "<span class='notice'>You need more welding fuel.</span>"
return
else if(istype(W, /obj/item/weapon/wrench) && state == 0)
@@ -180,7 +180,7 @@
if(do_after(user, 40))
if(!src) return
user << "<span class='notice>You [anchored? "un" : ""]secured the airlock assembly!</span>"
user << "<span class='notice'>You [anchored? "un" : ""]secured the airlock assembly!</span>"
anchored = !anchored
else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored)
@@ -200,7 +200,7 @@
if(do_after(user, 40))
if(!src) return
user << "<span class='notice>You cut the airlock wires.!</span>"
user << "<span class='notice'>You cut the airlock wires.!</span>"
new/obj/item/stack/cable_coil(src.loc, 1)
src.state = 0
@@ -212,7 +212,7 @@
if(!src) return
user.drop_item()
W.loc = src
user << "<span class='notice>You installed the airlock electronics!</span>"
user << "<span class='notice'>You installed the airlock electronics!</span>"
src.state = 2
src.name = "Near finished Airlock Assembly"
src.electronics = W
@@ -229,27 +229,27 @@
if(do_after(user, 40))
if(!src) return
user << "<span class='notice>You removed the airlock electronics!</span>"
user << "<span class='notice'>You removed the airlock electronics!</span>"
src.state = 1
src.name = "Wired Airlock Assembly"
electronics.loc = src.loc
electronics = null
else if(istype(W, /obj/item/stack/material) && !glass)
var/obj/item/stack/material/S = W
var/obj/item/stack/S = W
var/material_name = S.get_material_name()
if (S)
if (S.get_amount() >= 1)
if(istype(S, /obj/item/stack/material/glass/reinforced))
if(material_name == "rglass")
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
if(do_after(user, 40) && !glass)
if (S.use(1))
user << "<span class='notice'>You installed reinforced glass windows into the airlock assembly.</span>"
glass = 1
else if(istype(S, /obj/item/stack/material) && S.default_type)
var/M = S.default_type
else if(material_name)
// Ugly hack, will suffice for now. Need to fix it upstream as well, may rewrite mineral walls. ~Z
if(M in list("mhydrogen","osmium","tritium","platinum","iron"))
if(!(material_name in list("gold", "silver", "diamond", "uranium", "phoron", "sandstone")))
user << "You cannot make an airlock out of that material."
return
if(S.get_amount() >= 2)
@@ -257,16 +257,16 @@
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
if(do_after(user, 40) && !glass)
if (S.use(2))
user << "<span class='notice'>You installed [M] plating into the airlock assembly.</span>"
glass = "[M]"
user << "<span class='notice'>You installed [material_display_name(material_name)] plating into the airlock assembly.</span>"
glass = material_name
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 )
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user << "<span class='notice>Now finishing the airlock.</span>"
user << "<span class='notice'>Now finishing the airlock.</span>"
if(do_after(user, 40))
if(!src) return
user << "<span class='notice>You finish the airlock!</span>"
user << "<span class='notice'>You finish the airlock!</span>"
var/path
if(istext(glass))
path = text2path("/obj/machinery/door/airlock/[glass]")
+4 -4
View File
@@ -25,7 +25,7 @@
/obj/structure/girder/bullet_act(var/obj/item/projectile/Proj)
//Girders only provide partial cover. There's a chance that the projectiles will just pass through. (unless you are trying to shoot the girder)
if(Proj.original != src && !prob(cover))
return -1 //pass through
return PROJECTILE_CONTINUE //pass through
//Tasers and the like should not damage girders.
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
@@ -108,11 +108,11 @@
else if(istype(W, /obj/item/stack/material))
var/obj/item/stack/material/S = W
var/obj/item/stack/S = W
if(S.get_amount() < 2)
return ..()
var/material/M = name_to_material[S.default_type]
var/material/M = S.get_material()
if(!istype(M))
return ..()
@@ -183,7 +183,7 @@
user << "There is not enough material here to reinforce the girder."
return
var/material/M = name_to_material[S.default_type]
var/material/M = S.get_material()
if(!istype(M) || M.integrity < 50)
user << "You cannot reinforce \the [src] with that; it is too soft."
return
+2 -4
View File
@@ -91,7 +91,7 @@
passthrough = 1
if(passthrough)
. = -1
. = PROJECTILE_CONTINUE
damage = between(0, (damage - Proj.damage)*(Proj.damage_type == BRUTE? 0.4 : 1), 10) //if the bullet passes through then the grille avoids most of the damage
src.health -= damage*0.2
@@ -154,9 +154,7 @@
return
//window placing end
else if(istype(W, /obj/item/weapon/material/shard))
health -= W.force * 0.1
else if(!shock(user, 70))
else if(!(W.flags & CONDUCT) || !shock(user, 70))
user.do_attack_animation(src)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
switch(W.damtype)
+49 -45
View File
@@ -83,22 +83,23 @@
/obj/structure/janitorialcart/attack_hand(mob/user)
user.set_machine(src)
var/dat
if(mybag)
dat += "<a href='?src=\ref[src];garbage=1'>[mybag.name]</a><br>"
if(mymop)
dat += "<a href='?src=\ref[src];mop=1'>[mymop.name]</a><br>"
if(myspray)
dat += "<a href='?src=\ref[src];spray=1'>[myspray.name]</a><br>"
if(myreplacer)
dat += "<a href='?src=\ref[src];replacer=1'>[myreplacer.name]</a><br>"
if(signs)
dat += "<a href='?src=\ref[src];sign=1'>[signs] sign\s</a><br>"
var/datum/browser/popup = new(user, "janicart", name, 240, 160)
popup.set_content(dat)
popup.open()
ui_interact(user)
return
/obj/structure/janitorialcart/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
var/data[0]
data["name"] = capitalize(name)
data["bag"] = mybag ? capitalize(mybag.name) : null
data["mop"] = mymop ? capitalize(mymop.name) : null
data["spray"] = myspray ? capitalize(myspray.name) : null
data["replacer"] = myreplacer ? capitalize(myreplacer.name) : null
data["signs"] = signs ? "[signs] sign\s" : null
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "janitorcart.tmpl", "Janitorial cart", 240, 160)
ui.set_initial_data(data)
ui.open()
/obj/structure/janitorialcart/Topic(href, href_list)
if(!in_range(src, usr))
@@ -106,36 +107,39 @@
if(!isliving(usr))
return
var/mob/living/user = usr
if(href_list["garbage"])
if(mybag)
user.put_in_hands(mybag)
user << "<span class='notice'>You take [mybag] from [src].</span>"
mybag = null
if(href_list["mop"])
if(mymop)
user.put_in_hands(mymop)
user << "<span class='notice'>You take [mymop] from [src].</span>"
mymop = null
if(href_list["spray"])
if(myspray)
user.put_in_hands(myspray)
user << "<span class='notice'>You take [myspray] from [src].</span>"
myspray = null
if(href_list["replacer"])
if(myreplacer)
user.put_in_hands(myreplacer)
user << "<span class='notice'>You take [myreplacer] from [src].</span>"
myreplacer = null
if(href_list["sign"])
if(signs)
var/obj/item/weapon/caution/Sign = locate() in src
if(Sign)
user.put_in_hands(Sign)
user << "<span class='notice'>You take \a [Sign] from [src].</span>"
signs--
else
warning("[src] signs ([signs]) didn't match contents")
signs = 0
if(href_list["take"])
switch(href_list["take"])
if("garbage")
if(mybag)
user.put_in_hands(mybag)
user << "<span class='notice'>You take [mybag] from [src].</span>"
mybag = null
if("mop")
if(mymop)
user.put_in_hands(mymop)
user << "<span class='notice'>You take [mymop] from [src].</span>"
mymop = null
if("spray")
if(myspray)
user.put_in_hands(myspray)
user << "<span class='notice'>You take [myspray] from [src].</span>"
myspray = null
if("replacer")
if(myreplacer)
user.put_in_hands(myreplacer)
user << "<span class='notice'>You take [myreplacer] from [src].</span>"
myreplacer = null
if("sign")
if(signs)
var/obj/item/weapon/caution/Sign = locate() in src
if(Sign)
user.put_in_hands(Sign)
user << "<span class='notice'>You take \a [Sign] from [src].</span>"
signs--
else
warning("[src] signs ([signs]) didn't match contents")
signs = 0
update_icon()
updateUsrDialog()
+1 -1
View File
@@ -53,7 +53,7 @@
/obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob)
if (istype(C, /obj/item/stack/tile/plasteel))
if (istype(C, /obj/item/stack/tile/steel))
var/turf/T = get_turf(src)
T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead
return
+1 -1
View File
@@ -17,7 +17,7 @@
var/datum/nano_module/appearance_changer/AC = ui_users[user]
if(!AC)
AC = new(src, user)
AC.name = "SalonPro Nano-Mirror(TM)"
AC.name = "SalonPro Nano-Mirror&trade;"
ui_users[user] = AC
AC.ui_interact(user)
+45 -23
View File
@@ -20,6 +20,12 @@
var/obj/structure/m_tray/connected = null
anchored = 1.0
/obj/structure/morgue/Destroy()
if(connected)
qdel(connected)
connected = null
return ..()
/obj/structure/morgue/proc/update()
if (src.connected)
src.icon_state = "morgue0"
@@ -34,21 +40,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.forceMove(src.loc)
ex_act(severity)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.forceMove(src.loc)
ex_act(severity)
qdel(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.forceMove(src.loc)
ex_act(severity)
qdel(src)
return
@@ -61,10 +67,10 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
A.loc = src
A.forceMove(src)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
//src.connected = null
qdel(src.connected)
src.connected = null
else
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
src.connected = new /obj/structure/m_tray( src.loc )
@@ -75,12 +81,12 @@
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
A.loc = src.connected.loc
A.forceMove(src.connected.loc)
src.connected.icon_state = "morguet"
src.connected.set_dir(src.dir)
else
//src.connected = null
qdel(src.connected)
src.connected = null
src.add_fingerprint(user)
update()
return
@@ -111,12 +117,11 @@
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
A.loc = src.connected.loc
//Foreach goto(106)
A.forceMove(src.connected.loc)
src.connected.icon_state = "morguet"
else
//src.connected = null
qdel(src.connected)
src.connected = null
return
@@ -134,11 +139,17 @@
anchored = 1
throwpass = 1
/obj/structure/m_tray/Destroy()
if(connected && connected.connected == src)
connected.connected = null
connected = null
return ..()
/obj/structure/m_tray/attack_hand(mob/user as mob)
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
A.loc = src.connected
A.forceMove(src.connected)
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
@@ -155,7 +166,7 @@
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
O.loc = src.loc
O.forceMove(src.loc)
if (user != O)
for(var/mob/B in viewers(user, 3))
if ((B.client && !( B.blinded )))
@@ -179,6 +190,12 @@
var/id = 1
var/locked = 0
/obj/structure/crematorium/Destroy()
if(connected)
qdel(connected)
connected = null
return ..()
/obj/structure/crematorium/proc/update()
if (src.connected)
src.icon_state = "crema0"
@@ -193,21 +210,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.forceMove(src.loc)
ex_act(severity)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.forceMove(src.loc)
ex_act(severity)
qdel(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.forceMove(src.loc)
ex_act(severity)
qdel(src)
return
@@ -229,7 +246,7 @@
if ((src.connected) && (src.locked == 0))
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
A.loc = src
A.forceMove(src)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
//src.connected = null
qdel(src.connected)
@@ -243,7 +260,7 @@
src.connected.connected = src
src.icon_state = "crema0"
for(var/atom/movable/A as mob|obj in src)
A.loc = src.connected.loc
A.forceMove(src.connected.loc)
src.connected.icon_state = "cremat"
else
//src.connected = null
@@ -277,12 +294,11 @@
src.connected.connected = src
src.icon_state = "crema0"
for(var/atom/movable/A as mob|obj in src)
A.loc = src.connected.loc
//Foreach goto(106)
A.forceMove(src.connected.loc)
src.connected.icon_state = "cremat"
else
//src.connected = null
qdel(src.connected)
src.connected = null
return
/obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob)
@@ -350,11 +366,17 @@
anchored = 1
throwpass = 1
/obj/structure/c_tray/Destroy()
if(connected && connected.connected == src)
connected.connected = null
connected = null
return ..()
/obj/structure/c_tray/attack_hand(mob/user as mob)
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
A.loc = src.connected
A.forceMove(src.connected)
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
@@ -371,7 +393,7 @@
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
O.loc = src.loc
O.forceMove(src.loc)
if (user != O)
for(var/mob/B in viewers(user, 3))
if ((B.client && !( B.blinded )))
@@ -390,7 +412,7 @@
/obj/machinery/button/crematorium/attack_hand(mob/user as mob)
if(..())
return
if(src.allowed(usr))
if(src.allowed(user))
for (var/obj/structure/crematorium/C in world)
if (C.id == id)
if (!C.cremating)
@@ -44,6 +44,9 @@
update_nearby_tiles()
..()
/obj/structure/simple_door/get_material()
return material
/obj/structure/simple_door/Bumped(atom/user)
..()
if(!state)
@@ -22,6 +22,7 @@
/obj/structure/bed/New(var/newloc, var/new_material, var/new_padding_material)
..(newloc)
color = null
if(!new_material)
new_material = DEFAULT_WALL_MATERIAL
material = get_material_by_name(new_material)
@@ -32,6 +33,9 @@
padding_material = get_material_by_name(new_padding_material)
update_icon()
/obj/structure/bed/get_material()
return material
// Reuse the cache/code from stools, todo maybe unify.
/obj/structure/bed/update_icon()
// Prep icon.
@@ -61,6 +65,12 @@
name = "[material.display_name] [initial(name)]"
desc += " It's made of [material.use_name]."
/obj/structure/bed/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
else
return ..()
/obj/structure/bed/ex_act(severity)
switch(severity)
if(1.0)
@@ -225,6 +225,12 @@
if(M.back)
if(M.back.clean_blood())
M.update_inv_back(0)
//flush away reagents on the skin
if(M.touching)
var/remove_amount = M.touching.maximum_volume * M.reagent_permeability() //take off your suit first
M.touching.remove_any(remove_amount)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/washgloves = 1
@@ -408,6 +414,9 @@
"<span class='danger'>[user] was stunned by \his wet [O]!</span>", \
"<span class='userdanger'>[user] was stunned by \his wet [O]!</span>")
return
// Short of a rewrite, this is necessary to stop monkeycubes being washed.
else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
return
var/turf/location = user.loc
if(!isturf(location)) return