Files
OpenSS13/Code/demo.dm

2735 lines
68 KiB
Plaintext

/obj/item/weapon/clothing/burn(fi_amount)
if (fi_amount > src.s_fire)
spawn(0)
var/t = src.icon_state
src.icon_state = ""
src.icon = 'b_items.dmi'
flick("[t]", src)
spawn(14) del(src)
return 0
return 1
/obj/item/weapon/clothing/gloves/examine()
set src in usr
..()
return
/obj/item/weapon/clothing/shoes/orange/attack_self(mob/user as mob)
if (src.chained)
src.chained = null
new /obj/item/weapon/handcuffs( user.loc )
src.icon_state = "o_shoes"
return
/obj/item/weapon/clothing/shoes/orange/attackby(H as obj, loc)
if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained )))
del(H)
src.chained = 1
src.icon_state = "o_shoes1"
return
/obj/item/weapon/clothing/mask/muzzle/attack_paw(mob/user as mob)
if (src == user.wear_mask)
return
else
..()
return
/obj/item/weapon/tank/blob_act()
if(prob(25))
var/turf/T = src.loc
if (!( istype(T, /turf) ))
return
if(src.gas)
src.gas.turf_add(T, -1.0)
del(src)
/obj/item/weapon/tank/attack_self(mob/user as mob)
user.machine = src
if (!( src.gas ))
return
var/dat = text("<TT><B>Tank</B><BR>\n<FONT color = 'blue'><B>Contains/Capacity</B> [] / []</FONT><BR>\nInterals Valve: <A href='?src=\ref[];stat=1'>[] Gas Flow</A><BR>\n\t<A href='?src=\ref[];cp=-50'>-</A> <A href='?src=\ref[];cp=-5'>-</A> <A href='?src=\ref[];cp=-1'>-</A> [] <A href='?src=\ref[];cp=1'>+</A> <A href='?src=\ref[];cp=5'>+</A> <A href='?src=\ref[];cp=50'>+</A><BR>\n<BR>\n<A href='?src=\ref[];mach_close=tank'>Close</A>\n</TT>", src.gas.tot_gas(), src.maximum, src, ((src.loc == user && user.internal == src) ? "Stop" : "Restore"), src, src, src, src.i_used, src, src, src, user)
user.client_mob() << browse(dat, "window=tank;size=600x300")
return
/obj/item/weapon/tank/Topic(href, href_list)
..()
if (usr.stat|| usr.restrained())
return
if (src.loc == usr)
usr.machine = src
if (href_list["cp"])
var/cp = text2num(href_list["cp"])
src.i_used += cp
src.i_used = min(max(round(src.i_used), 0), 10000)
if ((href_list["stat"] && src.loc == usr))
if (usr.internal == src)
usr.internal = null
src.updateEquippedDialog()
return
if (usr.internal)
usr.internal = null
if ((!( usr.wear_mask ) || !( usr.wear_mask.flags & 8 )))
return
usr.internal = src
usr.client_mob() << "\blue Now running on internals!"
src.add_fingerprint(usr)
src.updateEquippedDialog()
else
usr.client_mob() << browse(null, "window=tank")
return
return
/obj/item/weapon/tank/proc/process(mob/M as mob, obj/substance/gas/G as obj)
var/amount = src.i_used
var/total = src.gas.tot_gas()
if (amount > total)
amount = total
if (total > 0)
G.transfer_from(src.gas, amount)
return G
return
/obj/item/weapon/tank/attack(mob/M as mob, mob/user as mob)
..()
if ((prob(30) && M.stat < 2))
if (istype(M, /mob/human) || istype(M, /mob/monkey))
var/mob/human/H = M
// ******* Check
if ((istype(H, /mob/human) && istype(H, /obj/item/weapon/clothing/head) && H.flags & 8 && prob(80)))
M.client_mob() << "\red The helmet protects you from being hit hard in the head!"
return
var/time = rand(10, 120)
if (prob(90))
if (M.paralysis < time)
M.paralysis = time
else
if (M.stunned < time)
M.stunned = time
M.stat = 1
for(var/mob/O in viewers(M, null))
if (O.hasClient() && (!( O.blinded )))
O.client_mob() << text("\red <B>[] has been knocked unconscious!</B>", M)
//Foreach goto(169)
M.client_mob() << text("\red <B>This was a []% hit. Roleplay it! (personality/memory change if the hit was severe enough)</B>", time * 100 / 120)
return
/obj/item/weapon/tank/New()
..()
src.gas = new /obj/substance/gas( src )
src.gas.maximum = src.maximum
return
/obj/item/weapon/tank/Del()
//src.gas = null
del(src.gas)
..()
return
/obj/item/weapon/tank/burn(fi_amount)
if(src.gas)
if ( (fi_amount * src.gas.tot_gas()) > (src.maximum * 3.75E7) )
src.gas.turf_add(get_turf(src.loc), src.gas.tot_gas())
//SN src = null
del(src)
return
return
/obj/item/weapon/tank/examine()
set src in view(1)
if(src)
usr.client_mob() << text("\blue The \icon[] contains [] unit\s of gas.", src, src.gas.tot_gas())
return
/obj/item/weapon/tank/oxygentank/New()
..()
src.gas.oxygen = src.maximum
return
/obj/item/weapon/tank/jetpack/New()
..()
src.gas.oxygen = src.maximum
return
/obj/item/weapon/tank/jetpack/verb/toggle()
src.on = !( src.on )
src.icon_state = text("jetpack[]", src.on)
return
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/user as mob)
if (!( src.on ))
return 0
if ((num < 1 || src.gas.tot_gas() < num))
return 0
var/obj/substance/gas/G = new /obj/substance/gas( )
G.transfer_from(src.gas, num)
if (G.oxygen >= 100)
return 1
if (G.plasma > 10)
if (user)
var/d = G.plasma / 2
d = min(abs(user.health + 100), d, 25)
user.fireloss += d
user.health = 100 - user.oxyloss - user.toxloss - user.fireloss - user.bruteloss
return (G.oxygen >= 75 ? 0.5 : 0)
else
if (G.oxygen >= 75)
return 0.5
else
return 0
//G = null
del(G)
return
/obj/item/weapon/tank/anesthetic/New()
..()
src.gas.sl_gas = 700000
src.gas.oxygen = 1000000
return
/obj/item/weapon/tank/plasmatank/proc/release()
var/turf/T = get_turf(src.loc)
T.poison += src.gas.plasma * src.gas.temperature / 25.0
T.oxygen += src.gas.oxygen * src.gas.temperature / 25.0
T.n2 += src.gas.n2 * src.gas.temperature / 25.0
T.sl_gas += src.gas.sl_gas * src.gas.temperature / 25.0
T.co2 += src.gas.co2 * src.gas.temperature / 25.0
T.res_vars()
src.gas.plasma = 0
src.gas.oxygen = 0
src.gas.n2 = 0
src.gas.sl_gas = 0
src.gas.co2 = 0
var/temp = src.gas.temperature
spawn(10)
T.firelevel = temp * 3600.0
T.res_vars()
/obj/item/weapon/tank/plasmatank/proc/ignite()
var/strength = ((src.gas.plasma + src.gas.oxygen/2.0) / 1600000.0) * src.gas.temperature
//if ((src.gas.plasma < 1600000.0 || src.gas.temperature < 773)) //500degC
if (strength < 773.0)
var/turf/T = get_turf(src.loc)
T.poison += src.gas.plasma
T.firelevel = T.poison
T.res_vars()
if(src.master)
src.master.loc = null
//if ((src.gas.temperature > (450+T0C) && src.gas.plasma == 1600000.0))
if (strength > (450+T0C))
var/turf/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z)
var/turf/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z)
defer_powernet_rebuild = 1
for(var/turf/U in block(sw, ne))
var/zone = 4
if ((U.y <= (T.y + 1) && U.y >= (T.y - 1) && U.x <= (T.x + 2) && U.x >= (T.x - 2)) )
zone = 3
if ((U.y <= (T.y + 1) && U.y >= (T.y - 1) && U.x <= (T.x + 1) && U.x >= (T.x - 1) ))
zone = 2
for(var/atom/A in U)
A.ex_act(zone)
//Foreach goto(342)
U.ex_act(zone)
U.buildlinks()
//Foreach goto(170)
defer_powernet_rebuild = 0
makepowernets()
else
//if ((src.gas.temperature > (300+T0C) && src.gas.plasma == 1600000.0))
if (strength > (300+T0C))
var/turf/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z)
var/turf/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z)
defer_powernet_rebuild = 1
for(var/turf/U in block(sw, ne))
var/zone = 4
if ((U.y <= (T.y + 2) && U.y >= (T.y - 2) && U.x <= (T.x + 2) && U.x >= (T.x - 2)) )
zone = 3
for(var/atom/A in U)
A.ex_act(zone)
//Foreach goto(598)
U.ex_act(zone)
U.buildlinks()
//Foreach goto(498)
defer_powernet_rebuild = 0
makepowernets()
//src.master = null
del(src.master)
//SN src = null
del(src)
return
var/turf/T = src.loc
while(!( istype(T, /turf) ))
T = T.loc
if(src.master)
src.master.loc = null
for(var/mob/M in range(T))
flick("flash", M.flash)
//Foreach goto(732)
var/m_range = 2
var/extended_range = round(strength / 387)
if (extended_range < 2)
extended_range = 2
if (config.bombtemp_determines_range)
m_range = extended_range
for(var/obj/machinery/atmoalter/canister/C in range(2, T))
if (!( C.destroyed ))
if (C.gas.plasma >= 35000)
C.destroyed = 1
m_range++
//Foreach goto(776)
var/min = extended_range
var/med = extended_range * 2
var/max = extended_range * 3
var/u_max = m_range * 4
var/turf/sw = locate(max(T.x - u_max, 1), max(T.y - u_max, 1), T.z)
var/turf/ne = locate(min(T.x + u_max, world.maxx), min(T.y + u_max, world.maxy), T.z)
defer_powernet_rebuild = 1
//If m_range is <= 12, then we are going to calculate the squared distance between tiles and ground zero. To avoid complicating comparisons in the for loop with additional if statements, we are going to square max, med, and min. You wouldn't be able to subtract tileRange (squared) from max, med, or min and get a useful distance, but this works fine for comparing the range to max, med, or min, without caring about how far between them it is. -Trafalgar
if (m_range<=12)
max *= max
med *= med
min *= min
u_max *= u_max
for(var/turf/U in block(sw, ne))
var tileRange = 0
var/zone = 4
//If this if-else were outside the for loop, this would (assuming BYOND doesn't optimize this already) help improve performance more, but the only way I see to do that would be to have two copies of the for loop, one for m_range <= 12 and one for m_range > 12. -Trafalgar
if (m_range<=12)
tileRange = (U.y-T.y)*(U.y-T.y) + (U.x-T.x)*(U.x-T.x)
else
tileRange = max(abs(U.y-T.y), abs(U.x-T.x))
if (tileRange <= u_max)
//If this were, say, c++, then this would be faster than the commented out code (for one it isn't doing calculations 3 times over for no reason, for two it's an if-elseif-elseif instead of three ifs which all would get evaluated. It might be slightly faster if we did if (tileRange>max) first, then else if (tileRange > med), then else if (tileRange > min), then else (due to performance increases from having if/elseif/elses's ordered with the choices sorted from most likely at the top to least likely at the end, but who knows if this even applies to BYOND games since the performance benefit is the result of how the CPU processes comparisons and branching and such). -Trafalgar
if (tileRange <= min)
zone = 1
else if (tileRange <= med)
zone = 2
else if (tileRange <= max)
zone = 3
/*if ((U.y <= (T.y + max) && U.y >= (T.y - max) && U.x <= (T.x + max) && U.x >= (T.x - max) ))
zone = 3
if ((U.y <= (T.y + med) && U.y >= (T.y - med) && U.x <= (T.x + med) && U.x >= (T.x - med) ))
zone = 2
if ((U.y <= (T.y + min) && U.y >= (T.y - min) && U.x <= (T.x + min) && U.x >= (T.x - min) ))
zone = 1
*/
for(var/atom/A in U)
A.ex_act(zone)
//Foreach goto(1217)
U.ex_act(zone)
U.buildlinks()
//U.mark(zone)
//Foreach goto(961)
//src.master = null
defer_powernet_rebuild = 0
makepowernets()
del(src.master)
//SN src = null
del(src)
return
/obj/item/weapon/tank/plasmatank/attackby(obj/item/weapon/W as obj, mob/user as mob)
var/mob/CM = user.client_mob()
var/client/CL = CM.client
if (istype(W, /obj/item/weapon/assembly/rad_ignite))
var/obj/item/weapon/assembly/rad_ignite/S = W
if (!( S.status ))
return
var/obj/item/weapon/assembly/r_i_ptank/R = new /obj/item/weapon/assembly/r_i_ptank( user )
R.part1 = S.part1
S.part1.loc = R
S.part1.master = R
R.part2 = S.part2
S.part2.loc = R
S.part2.master = R
S.layer = initial(S.layer)
if (CL)
CL.screenOrBackupRemove(S)
CL.screen -= S
if (istype(user, /mob/drone))
if (user.equipped() == S)
user.u_equip(S)
user:grip(R)
else
if (user.r_hand == S)
user.u_equip(S)
user.r_hand = R
else
user.u_equip(S)
user.l_hand = R
src.master = R
src.layer = initial(src.layer)
user.u_equip(src)
if (CL)
CL.screenOrBackupRemove(src)
CL.screen -= src
src.loc = R
R.part3 = src
R.layer = 20
R.loc = user
S.part1 = null
S.part2 = null
//S = null
del(S)
if (istype(W, /obj/item/weapon/assembly/prox_ignite))
var/obj/item/weapon/assembly/prox_ignite/S = W
if (!( S.status ))
return
var/obj/item/weapon/assembly/m_i_ptank/R = new /obj/item/weapon/assembly/m_i_ptank( user )
R.part1 = S.part1
S.part1.loc = R
S.part1.master = R
R.part2 = S.part2
S.part2.loc = R
S.part2.master = R
S.layer = initial(S.layer)
if (CL)
CL.screenOrBackupRemove(S)
CL.screen -= S
if (istype(user, /mob/drone))
if (user.equipped() == S)
user.u_equip(S)
user:grip(R)
else
if (user.r_hand == S)
user.u_equip(S)
user.r_hand = R
else
user.u_equip(S)
user.l_hand = R
src.master = R
src.layer = initial(src.layer)
user.u_equip(src)
if (CL)
CL.screenOrBackupRemove(src)
CL.screen -= src
src.loc = R
R.part3 = src
R.layer = 20
R.loc = user
S.part1 = null
S.part2 = null
//S = null
del(S)
if (istype(W, /obj/item/weapon/assembly/time_ignite))
var/obj/item/weapon/assembly/time_ignite/S = W
if (!( S.status ))
return
var/obj/item/weapon/assembly/t_i_ptank/R = new /obj/item/weapon/assembly/t_i_ptank( user )
R.part1 = S.part1
S.part1.loc = R
S.part1.master = R
R.part2 = S.part2
S.part2.loc = R
S.part2.master = R
S.layer = initial(S.layer)
if (CL)
CL.screenOrBackupRemove(S)
CL.screen -= S
if (istype(user, /mob/drone))
if (user.equipped() == S)
user.u_equip(S)
user:grip(R)
else
if (user.r_hand == S)
user.u_equip(S)
user.r_hand = R
else
user.u_equip(S)
user.l_hand = R
src.master = R
src.layer = initial(src.layer)
user.u_equip(src)
if (CL)
CL.screenOrBackupRemove(src)
CL.screen -= src
src.loc = R
R.part3 = src
R.layer = 20
R.loc = user
S.part1 = null
S.part2 = null
//S = null
del(S)
return
/obj/item/weapon/tank/plasmatank/New()
..()
src.gas.plasma = src.maximum
return
/obj/meteor/small/Move()
if (src.steps < 7)
src.steps++
if (src.steps >= 7)
src.icon_state = "smallf"
else
var/turf/T = src.loc
if (istype(T, /turf))
T.firelevel = T.poison + 5
..()
if (src.z != 1)
//SN src = null
del(src)
return
spawn( 3 )
step(src, WEST)
if (prob(30))
step(src, pick(NORTH, SOUTH))
return
return
/obj/meteor/New()
..()
sleep(1)
step(src, WEST)
return
/obj/meteor/Move()
if (src.steps < 7)
src.steps++
if (src.steps >= 7)
src.icon_state = "flaming"
else
var/turf/T = src.loc
if (istype(T, /turf))
T.firelevel = T.poison + 5
..()
if (src.z != 1)
//SN src = null
del(src)
return
spawn( 3 )
step(src, WEST)
if (prob(30))
step(src, pick(NORTH, SOUTH))
return
return
/obj/meteor/Bump(atom/A)
spawn( 0 )
if (A)
A.meteorhit(src)
if (--src.hits <= 0)
//SN src = null
//******RM
if(prob(15) && !istype(A, /obj/grille))
var/obj/item/weapon/tank/plasmatank/pt = new /obj/item/weapon/tank/plasmatank( src )
pt.gas.temperature = 475+T0C
pt.ignite()
//*****
del(src)
return
return
return
/obj/meteor/ex_act(severity)
if (severity < 4)
//SN src = null
del(src)
return
return
/obj/secloset/alter_health()
return src.loc
return
/obj/secloset/CheckPass(O as mob|obj, target as turf)
if (!( src.opened ))
return 0
else
return 1
return
/obj/secloset/personal/New()
..()
sleep(2)
new /obj/item/weapon/storage/backpack( src )
new /obj/item/weapon/radio/headset( src )
new /obj/item/weapon/radio/signaler( src )
new /obj/item/weapon/pen( src )
return
/obj/secloset/personal/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (src.opened)
if (istype(W, /obj/item/weapon/grab))
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
else:
if (user.can_drop())
user.drop_item()
W.loc = src.loc
else
if (istype(W, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/I = W
if (I.check_access(null,"Systems"))
src.allowed = null
src.icon_state = "0secloset0"
src.locked = 1
src.desc = "The first card swiped gains control."
return
if (I.check_access(access,allowed))
src.locked = !( src.locked )
for(var/mob/O in viewers(user, 3))
if (O.hasClient() && !( O.blinded ))
O.client_mob() << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user)
//Foreach goto(185)
src.icon_state = text("[]secloset0", (src.locked ? "1" : null))
if (!( src.allowed ))
src.allowed = "Name:[I.registered]/Captain/Head of Personnel"
src.desc = "Owned by [I.registered], Clear by using a card of rank 'Systems'"
else
user.client_mob() << "\red Access Denied"
else
user.client_mob() << "\red It's closed..."
return
/obj/secloset/security2/New()
..()
sleep(2)
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/storage/fcard_kit( src )
new /obj/item/weapon/storage/fcard_kit( src )
new /obj/item/weapon/storage/fcard_kit( src )
new /obj/item/weapon/storage/lglo_kit( src )
new /obj/item/weapon/storage/lglo_kit( src )
new /obj/item/weapon/fcardholder( src )
new /obj/item/weapon/fcardholder( src )
new /obj/item/weapon/fcardholder( src )
new /obj/item/weapon/fcardholder( src )
new /obj/item/weapon/camera( src )
new /obj/item/weapon/f_print_scanner( src )
new /obj/item/weapon/f_print_scanner( src )
new /obj/item/weapon/f_print_scanner( src )
return
/obj/secloset/security1/New()
..()
sleep(2)
new /obj/item/weapon/storage/flashbang_kit( src )
new /obj/item/weapon/storage/handcuff_kit( src )
new /obj/item/weapon/gun/energy/taser_gun( src )
new /obj/item/weapon/flash( src )
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/suit/armor( src )
new /obj/item/weapon/clothing/head/helmet( src )
new /obj/item/weapon/clothing/glasses/sunglasses( src )
new /obj/item/weapon/baton( src)
return
/obj/secloset/highsec/New()
..()
sleep(2)
new /obj/item/weapon/gun/energy/laser_gun( src )
new /obj/item/weapon/gun/energy/taser_gun( src )
new /obj/item/weapon/flash( src )
new /obj/item/weapon/storage/id_kit( src )
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/glasses/sunglasses( src )
new /obj/item/weapon/clothing/suit/armor( src )
new /obj/item/weapon/clothing/head/helmet( src )
return
/obj/secloset/captains/New()
..()
sleep(2)
new /obj/item/weapon/gun/energy/laser_gun( src )
new /obj/item/weapon/gun/energy/taser_gun( src )
new /obj/item/weapon/storage/id_kit( src )
new /obj/item/weapon/clothing/under/darkgreen( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/glasses/sunglasses( src )
new /obj/item/weapon/clothing/suit/armor( src )
new /obj/item/weapon/clothing/head/swat_hel( src )
return
/obj/secloset/animal/New()
..()
sleep(2)
new /obj/item/weapon/radio/signaler( src )
new /obj/item/weapon/radio/electropack( src )
new /obj/item/weapon/radio/electropack( src )
new /obj/item/weapon/radio/electropack( src )
new /obj/item/weapon/radio/electropack( src )
new /obj/item/weapon/radio/electropack( src )
return
/obj/secloset/medical1/New()
..()
sleep(2)
new /obj/item/weapon/bottle/toxins( src )
new /obj/item/weapon/bottle/rejuvenators( src )
new /obj/item/weapon/bottle/s_tox( src )
new /obj/item/weapon/bottle/s_tox( src )
new /obj/item/weapon/bottle/toxins( src )
new /obj/item/weapon/bottle/r_epil( src )
new /obj/item/weapon/bottle/r_ch_cough( src )
new /obj/item/weapon/pill_canister/Tourette( src )
new /obj/item/weapon/pill_canister/cough( src )
new /obj/item/weapon/pill_canister/epilepsy( src )
new /obj/item/weapon/pill_canister/sleep( src )
new /obj/item/weapon/pill_canister/antitoxin( src )
new /obj/item/weapon/pill_canister/placebo( src )
new /obj/item/weapon/storage/firstaid/syringes( src )
new /obj/item/weapon/storage/gl_kit( src )
new /obj/item/weapon/dropper( src )
return
/obj/secloset/medical2/New()
..()
sleep(2)
new /obj/item/weapon/tank/anesthetic( src )
new /obj/item/weapon/tank/anesthetic( src )
new /obj/item/weapon/tank/anesthetic( src )
new /obj/item/weapon/tank/anesthetic( src )
new /obj/item/weapon/tank/anesthetic( src )
new /obj/item/weapon/clothing/mask/m_mask( src )
new /obj/item/weapon/clothing/mask/m_mask( src )
new /obj/item/weapon/clothing/mask/m_mask( src )
new /obj/item/weapon/clothing/mask/m_mask( src )
return
/obj/secloset/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
//Foreach goto(35)
//SN src = null
del(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
//Foreach goto(108)
//SN src = null
del(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
//Foreach goto(181)
//SN src = null
del(src)
return
else
return
/obj/secloset/blob_act()
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
del(src)
/obj/secloset/meteorhit(obj/O as obj)
if (O.icon_state == "flaming")
for(var/obj/item/I in src)
I.loc = src.loc
//Foreach goto(29)
for(var/mob/M in src)
M.loc = src.loc
var/client/client = M.alwaysClient()
if (client)
if (client.eye == src)
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
//Foreach goto(71)
src.icon_state = "secloset1"
//SN src = null
del(src)
return
return
/obj/secloset/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (src.opened)
if (istype(W, /obj/item/weapon/grab))
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
else:
if (user.can_drop())
user.drop_item()
W.loc = src.loc
else
if (istype(W, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/I = W
if(I.check_access(access,allowed))
src.locked = !( src.locked )
for(var/mob/O in viewers(user, 3))
if (O.hasClient() && !( O.blinded ))
O.client_mob() << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user)
src.icon_state = text("[]secloset0", (src.locked ? "1" : null))
else
user.client_mob() << "\red Access Denied"
else
user.client_mob() << "\red It's closed..."
return
/obj/secloset/relaymove(mob/user as mob)
if (user.stat)
return
if (!( src.locked ))
for(var/obj/item/I in src)
I.loc = src.loc
//Foreach goto(36)
for(var/mob/M in src)
M.loc = src.loc
var/client/client = M.alwaysClient()
if (client)
if (client.eye == src)
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
src.icon_state = "secloset1"
src.opened = 1
else
user.client_mob() << "\blue It's welded shut!"
for(var/mob/M in hearers(src, null))
var/msg = text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
M.client_mob() << msg
return
/obj/secloset/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
if ((user.restrained() || user.stat))
return
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
return
step_towards(O, src.loc)
if (user != O)
for(var/mob/B in viewers(user, 3))
if (B.hasClient() && !( B.blinded ))
B.client_mob() << text("\red [] stuffs [] into []!", user, O, src)
src.add_fingerprint(user)
return
/obj/secloset/attack_paw(mob/user as mob)
return src.attack_hand(user)
return
/obj/secloset/attack_hand(mob/user as mob)
src.add_fingerprint(user)
if (!( src.opened ))
if (!( src.locked ))
for(var/obj/item/I in src)
I.loc = src.loc
//Foreach goto(43)
for(var/mob/M in src)
M.loc = src.loc
var/client/client = M.alwaysClient()
if (client)
if (client.eye == src)
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
src.icon_state = "secloset1"
src.opened = 1
else
usr.client_mob() << "\blue It's locked tight!"
else
for(var/obj/item/I in src.loc)
if (!( I.anchored ))
I.loc = src
//Foreach goto(176)
for(var/mob/M in src.loc)
if (M.client)
M.client.eye = src
M.client.perspective = EYE_PERSPECTIVE
M.loc = src
//Foreach goto(226)
src.icon_state = "secloset0"
src.opened = 0
return
/obj/morgue/proc/update()
if (src.connected)
src.icon_state = "morgue0"
else
if (src.contents.len)
src.icon_state = "morgue2"
else
src.icon_state = "morgue1"
return
/obj/morgue/alter_health()
return src.loc
return
/obj/morgue/attack_paw(mob/user as mob)
return src.attack_hand(user)
return
/obj/morgue/attack_hand(mob/user as mob)
if (src.connected)
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
A.loc = src
//Foreach goto(28)
//src.connected = null
del(src.connected)
else
src.connected = new /obj/m_tray( src.loc )
step(src.connected, EAST)
src.connected.layer = OBJ_LAYER
var/turf/T = get_step(src, EAST)
if (T.contents.Find(src.connected))
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(168)
src.connected.icon_state = "morguet"
else
//src.connected = null
del(src.connected)
src.add_fingerprint(user)
update()
return
/obj/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.equipped() != P)
return
if ((get_dist(src, usr) > 1 && src.loc != user))
return
t = html_encode(t)
if (t)
src.name = text("Morgue- '[]'", t)
else
src.name = "Morgue"
src.add_fingerprint(user)
return
/obj/morgue/relaymove(mob/user as mob)
if (user.stat)
return
src.connected = new /obj/m_tray( src.loc )
step(src.connected, EAST)
src.connected.layer = OBJ_LAYER
var/turf/T = get_step(src, EAST)
if (T.contents.Find(src.connected))
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)
src.connected.icon_state = "morguet"
else
//src.connected = null
del(src.connected)
return
/obj/m_tray/CheckPass(D as obj)
if (istype(D, /obj/item/weapon/dummy))
return 1
else
return ..()
return
/obj/m_tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
return
/obj/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
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
add_fingerprint(user)
//SN src = null
del(src)
return
return
/obj/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)))
return
O.loc = src.loc
if (user != O)
for(var/mob/B in viewers(user, 3))
if (B.hasClient() && !( B.blinded ))
B.client_mob() << text("\red [] stuffs [] into []!", user, O, src)
//Foreach goto(99)
return
/obj/closet/alter_health()
return src.loc
return
/obj/closet/CheckPass(O as mob|obj, target as turf)
if (!( src.opened ))
return 0
else
return 1
return
/obj/closet/syndicate/nuclear/New()
..()
sleep(2)
new /obj/item/weapon/ammo/a357( src )
new /obj/item/weapon/ammo/a357( src )
new /obj/item/weapon/ammo/a357( src )
new /obj/item/weapon/storage/handcuff_kit( src )
new /obj/item/weapon/storage/flashbang_kit( src )
new /obj/item/weapon/gun/energy/taser_gun( src )
new /obj/item/weapon/gun/energy/taser_gun( src )
new /obj/item/weapon/gun/energy/taser_gun( src )
var/obj/item/weapon/syndicate_uplink/U = new /obj/item/weapon/syndicate_uplink( src )
U.uses = 5
return
/obj/closet/syndicate/personal/New()
..()
sleep(2)
new /obj/item/weapon/tank/jetpack(src)
new /obj/item/weapon/clothing/mask/m_mask(src)
new /obj/item/weapon/clothing/head/s_helmet(src)
new /obj/item/weapon/clothing/suit/sp_suit(src)
new /obj/item/weapon/crowbar(src)
new /obj/item/weapon/cell(src)
new /obj/item/weapon/card/id/syndicate(src)
new /obj/item/weapon/multitool(src)
/obj/closet/emcloset/New()
..()
sleep(2)
new /obj/item/weapon/tank/oxygentank( src )
new /obj/item/weapon/clothing/mask/gasmask( src )
return
/obj/closet/l3closet/New()
..()
sleep(2)
new /obj/item/weapon/tank/oxygentank( src )
new /obj/item/weapon/clothing/mask/gasmask( src )
new /obj/item/weapon/clothing/suit/bio_suit( src )
new /obj/item/weapon/clothing/under/white( src )
new /obj/item/weapon/clothing/shoes/white( src )
new /obj/item/weapon/clothing/gloves/latex( src )
new /obj/item/weapon/clothing/head/bio_hood( src )
new /obj/item/weapon/clothing/suit/labcoat(src)
return
/obj/closet/wardrobe/New()
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
return
/obj/closet/wardrobe/red/New()
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/under/red( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
return
/obj/closet/wardrobe/pink/New()
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
return
/obj/closet/wardrobe/black/New()
new /obj/item/weapon/clothing/under/black( src )
new /obj/item/weapon/clothing/under/black( src )
new /obj/item/weapon/clothing/under/black( src )
new /obj/item/weapon/clothing/under/black( src )
new /obj/item/weapon/clothing/under/black( src )
new /obj/item/weapon/clothing/under/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
return
/obj/closet/wardrobe/green/New()
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/under/green( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
new /obj/item/weapon/clothing/shoes/black( src )
return
/obj/closet/wardrobe/orange/New()
new /obj/item/weapon/clothing/under/orange( src )
new /obj/item/weapon/clothing/under/orange( src )
new /obj/item/weapon/clothing/under/orange( src )
new /obj/item/weapon/clothing/under/orange( src )
new /obj/item/weapon/clothing/under/orange( src )
new /obj/item/weapon/clothing/under/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
return
/obj/closet/wardrobe/yellow/New()
new /obj/item/weapon/clothing/under/yellow( src )
new /obj/item/weapon/clothing/under/yellow( src )
new /obj/item/weapon/clothing/under/yellow( src )
new /obj/item/weapon/clothing/under/yellow( src )
new /obj/item/weapon/clothing/under/yellow( src )
new /obj/item/weapon/clothing/under/yellow( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
new /obj/item/weapon/clothing/shoes/orange( src )
return
/obj/closet/wardrobe/mixed/New()
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/blue( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/under/pink( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
new /obj/item/weapon/clothing/shoes/brown( src )
return
/obj/closet/wardrobe/white/New()
new /obj/item/weapon/clothing/under/white( src )
new /obj/item/weapon/clothing/under/white( src )
new /obj/item/weapon/clothing/under/white( src )
new /obj/item/weapon/clothing/under/white( src )
new /obj/item/weapon/clothing/under/white( src )
new /obj/item/weapon/clothing/shoes/white( src )
new /obj/item/weapon/clothing/shoes/white( src )
new /obj/item/weapon/clothing/shoes/white( src )
new /obj/item/weapon/clothing/shoes/white( src )
new /obj/item/weapon/clothing/shoes/white( src )
new /obj/item/weapon/storage/lglo_kit( src )
new /obj/item/weapon/storage/stma_kit( src )
new /obj/item/weapon/clothing/suit/labcoat(src)
new /obj/item/weapon/clothing/suit/labcoat(src)
new /obj/item/weapon/clothing/suit/labcoat(src)
return
/obj/closet/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
//Foreach goto(35)
//SN src = null
del(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
//Foreach goto(108)
//SN src = null
del(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
//Foreach goto(181)
//SN src = null
del(src)
return
else
return
/obj/secloset/blob_act()
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
del(src)
/obj/closet/meteorhit(obj/O as obj)
if (O.icon_state == "flaming")
for(var/obj/item/I in src)
I.loc = src.loc
//Foreach goto(29)
for(var/mob/M in src)
M.loc = src.loc
var/client/client = M.alwaysClient()
if (client)
if (client.eye == src)
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
src.icon_state = "emcloset1"
//SN src = null
del(src)
return
return
/obj/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if ((src.opened || W.damtype != "fire" || !( istype(W, /obj/item/weapon/weldingtool) )))
if (istype(W, /obj/item/weapon/grab))
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
else
if (user.can_drop())
user.drop_item()
W.loc = src.loc
else
src.welded = !( src.welded )
for(var/mob/M in viewers(user, null))
if (M.hasClient())
M.show_message(text("\red [] has been [] by [].", src, (src.welded ? "welded shut" : "unwelded"), user), 3, "\red You hear welding.", 2)
//Foreach goto(82)
return
/obj/closet/relaymove(mob/user as mob)
if (user.stat)
return
if (!( src.welded ))
for(var/obj/item/I in src)
I.loc = src.loc
//Foreach goto(36)
for(var/mob/M in src)
M.loc = src.loc
var/client/client = M.alwaysClient()
if (client)
if (client.eye == src)
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
//Foreach goto(78)
src.icon_state = "emcloset1"
src.opened = 1
else
user.client_mob() << "\blue It's welded shut!"
for(var/mob/M in hearers(src, null))
var/msg = text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
M.client_mob() << msg
return
/obj/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
if ((user.restrained() || user.stat))
return
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
return
/*
* Patch Submitted by shadowlord13, to fix Bug #1936685.
*/
if (user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems
return
if (!istype(user.loc, /turf)) // are you in a container/closet/pod/etc?
return
/*
* End Patch by shadowlord13
*/
step_towards(O, src.loc)
for(var/mob/M in viewers(user, null))
if (M.hasClient() && !( M.blinded ))
M.client_mob() << text("\red [] stuffs [] into []!", user, O, src)
//Foreach goto(104)
src.add_fingerprint(user)
return
/obj/closet/attack_paw(mob/user as mob)
return src.attack_hand(user)
return
/obj/closet/attack_hand(mob/user as mob)
src.add_fingerprint(user)
if (!( src.opened ))
if (!( src.welded ))
for(var/obj/item/I in src)
I.loc = src.loc
//Foreach goto(43)
for(var/mob/M in src)
if (!( M.buckled ))
M.loc = src.loc
var/client/client = M.alwaysClient()
if (client)
if (client.eye == src)
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
//Foreach goto(85)
src.icon_state = "emcloset1"
src.opened = 1
else
usr.client_mob() << "\blue It's welded shut!"
else
for(var/obj/item/I in src.loc)
if (!( I.anchored ))
I.loc = src
for(var/mob/M in src.loc)
if (M.client)
M.client.eye = src
M.client.perspective = EYE_PERSPECTIVE
M.loc = src
//Foreach goto(237)
src.icon_state = src.original
src.opened = 0
return
/obj/closet/CheckPass(O as mob|obj, target as turf)
if (!( src.opened ))
return 0
else
return 1
return
/obj/stool/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
del(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
return
if(3.0)
if (prob(5))
//SN src = null
del(src)
return
else
return
/obj/stool/blob_act()
if(prob(50))
new /obj/item/weapon/sheet/metal( src.loc )
del(src)
/obj/stool/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new /obj/item/weapon/sheet/metal( src.loc )
//SN src = null
del(src)
return
/obj/stool/bed/attackby(obj/item/weapon/W as obj, mob/user as mob)
return
/obj/stool/chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/assembly/shock_kit))
var/obj/stool/chair/e_chair/E = new /obj/stool/chair/e_chair( src.loc )
E.dir = src.dir
E.part1 = W
W.loc = E
W.master = E
user.u_equip(W)
W.layer = initial(W.layer)
//SN src = null
del(src)
return
return
/obj/stool/chair/e_chair/New()
src.overl = new /atom/movable/overlay( src.loc )
src.overl.icon = 'Icons.dmi'
src.overl.icon_state = "e_chairo0"
src.overl.layer = 5
src.overl.name = "electrified chair"
src.overl.master = src
return
/obj/stool/chair/e_chair/Del()
//src.overl = null
del(src.overl)
..()
return
/obj/stool/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
var/obj/stool/chair/C = new /obj/stool/chair( src.loc )
C.dir = src.dir
src.part1.loc = src.loc
src.part1.master = null
src.part1 = null
//SN src = null
del(src)
return
return
/obj/stool/chair/e_chair/verb/toggle_power()
set src in oview(1)
var/result = src.canReach(usr, null, 1)
if (result==0)
usr.client_mob() << "You can't reach [src]."
return
if ((usr.stat || usr.restrained() || !( usr.canmove ) || usr.lying))
return
src.on = !( src.on )
src.icon_state = text("e_chair[]", src.on)
src.overl.icon_state = text("e_chairo[]", src.on)
return
/obj/stool/chair/e_chair/proc/shock()
//*****
//world << "EC: got shock, status is [on]"
if (!( src.on ))
return
if ( (src.last_time + 50) > world.time)
return
src.last_time = world.time
// special power handling
var/area/A = src.loc.loc
if(!isarea(A))
return
if(!A.powered(EQUIP))
return
A.use_power(EQUIP, 5000)
var/light = A.power_light
A.updateicon()
flick("e_chairs", src)
flick("e_chairos", src.overl)
for(var/mob/M in src.loc)
if (!istype(M, /mob/drone))
M.burn(7.5E7)
M.client_mob() << "\red <B>You feel a deep shock course through your body!</B>"
sleep(1)
M.burn(7.5E7)
M.stunned = 600
//Foreach goto(72)
for(var/mob/M in hearers(src, null))
if (!( M.blinded ))
M.client_mob() << "\red The electric chair went off!"
else
M.client_mob() << "\red You hear a deep sharp shock."
//Foreach goto(142)
A.power_light = light
A.updateicon()
return
/obj/stool/chair/ex_act(severity)
if (severity < 4)
for(var/mob/M in src.loc)
M.buckled = null
//Foreach goto(28)
switch(severity)
if(1.0)
//SN src = null
del(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
return
if(3.0)
if (prob(5))
//SN src = null
del(src)
return
else
return
/obj/stool/chair/blob_act()
if (prob(50))
for(var/mob/M in src.loc)
M.buckled = null
//Foreach goto(28)
if(prob(50))
del(src)
/obj/stool/chair/New()
src.verbs -= /atom/movable/verb/pull
if (src.dir == NORTH)
src.layer = FLY_LAYER
..()
return
/obj/stool/chair/Del()
for(var/mob/M in src.loc)
if (M.buckled == src)
M.buckled = null
//Foreach goto(17)
..()
return
/obj/stool/chair/verb/rotate()
set src in oview(1)
var/result = src.canReach(usr, null, 1)
if (result==0)
usr.client_mob() << "You can't reach [src]."
return
src.dir = turn(src.dir, 90)
if (src.dir == NORTH)
src.layer = FLY_LAYER
else
src.layer = OBJ_LAYER
return
/obj/stool/chair/MouseDrop_T(mob/M as mob, mob/user as mob)
if (!ticker)
user.client_mob() << "You can't buckle anyone in before the game starts."
return
if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat) || istype(M, /mob/drone))
return
if (istype(user, /mob/drone))
if (user.equipped())
user.client_mob() << "You need to be using the gripper to buckle someone in."
return
if (M == usr)
for(var/mob/O in viewers(user, null))
if (O.hasClient() && (!( O.blinded )))
O.client_mob() << text("\blue [] buckles in!", user)
//Foreach goto(83)
else
for(var/mob/O in viewers(user, null))
if (O.hasClient() && (!( O.blinded )))
O.client_mob() << text("\blue [] is buckled in by []!", M, user)
//Foreach goto(137)
M.anchored = 1
M.buckled = src
M.loc = src.loc
src.add_fingerprint(user)
return
/obj/stool/chair/attack_paw(mob/user as mob)
if ((ticker && ticker.mode == "monkey"))
return src.attack_hand(user)
return
/obj/stool/chair/attack_hand(mob/user as mob)
if (istype(user, /mob/drone))
if (user.equipped())
user.client_mob() << "You need to be using the gripper to buckle someone in."
return
for(var/mob/M in src.loc)
if (M.buckled)
if (M != user)
for(var/mob/O in viewers(user, null))
if (O.hasClient() && (!( O.blinded )))
O.client_mob() << text("\blue [] is unbuckled by [].", M, user)
//Foreach goto(64)
else
for(var/mob/O in viewers(user, null))
if (O.hasClient() && (!( O.blinded )))
O.client_mob() << text("\blue [] unbuckles.", M)
//Foreach goto(123)
M.anchored = 0
M.buckled = null
src.add_fingerprint(user)
//Foreach goto(17)
return
/obj/grille/New()
..()
//returns the netnum of a stub cable at this grille loc, or 0 if none
/obj/grille/proc/get_connection()
var/turf/T = src.loc
if(!istype(T, /turf/station/floor))
return
for(var/obj/cable/C in T)
if(C.d1 == 0)
return C.netnum
return 0
/obj/grille/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
del(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
return
if(3.0)
if (prob(25))
src.health -= 11
healthcheck()
return
/obj/grille/blob_act()
src.health--
src.healthcheck()
/obj/grille/meteorhit(var/obj/M)
if (M.icon_state == "flaming")
src.health -= 2
healthcheck()
return
/obj/grille/CheckPass(var/obj/B)
if ((istype(B, /obj/effects) || istype(B, /obj/item/weapon/dummy) || istype(B, /obj/beam) || istype(B, /obj/meteor/small)))
return 1
else
if (istype(B, /obj/bullet))
return prob(30)
else
return !( src.density )
return
/obj/grille/attackby(obj/item/weapon/W, mob/user)
if (istype(W, /obj/item/weapon/wirecutters))
if(!shock(user, 100))
src.health = 0
else if ((istype(W, /obj/item/weapon/screwdriver) && (istype(src.loc, /turf/station) || src.anchored)))
if(!shock(user, 50))
src.anchored = !( src.anchored )
user.client_mob() << src.anchored ? "You have fastened the grille to the floor." : "You have unfastened the grill."
else if(istype(W, /obj/item/weapon/shard)) // can't get a shock by attacking with glass shard
src.health -= W.force * 0.1
else // anything else, chance of a shock
if(!shock(user, 70))
switch(W.damtype)
if("fire")
src.health -= W.force
if("brute")
src.health -= W.force * 0.1
src.healthcheck()
..()
return
/obj/grille/proc/healthcheck()
if (src.health <= 0)
if (!( src.destroyed ))
src.icon_state = "brokengrille"
src.density = 0
src.destroyed = 1
new /obj/item/weapon/rods( src.loc )
else
if (src.health <= -10.0)
new /obj/item/weapon/rods( src.loc )
//SN src = null
del(src)
return
return
// shock user with probability prb (if all connections & power are working)
// returns 1 if shocked, 0 otherwise
/obj/grille/proc/shock(mob/user, prb)
if(!anchored || destroyed) // anchored/destroyed grilles are never connected
return 0
if(!prob(prb))
return 0
var/net = get_connection() // find the powernet of the connected cable
if(!net) // cable is unpowered
return 0
return src.electrocute(user, prb, net)
/obj/window/las_act(flag)
if (flag == "bullet")
if(!reinf)
new /obj/item/weapon/shard( src.loc )
//SN src = null
src.density = 0
src.loc.buildlinks()
del(src)
else
health -= 35
if(health <=0)
new /obj/item/weapon/shard( src.loc )
new /obj/item/weapon/rods( src.loc )
src.density = 0
src.loc.buildlinks()
del(src)
return
return
/obj/window/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
del(src)
return
if(2.0)
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
//SN src = null
del(src)
return
if(3.0)
if (prob(50))
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
//SN src = null
del(src)
return
else
return
/obj/window/blob_act()
if(prob(50))
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
density = 0
src.loc.buildlinks()
del(src)
/obj/window/CheckPass(atom/movable/O, target as turf)
if (istype(O, /obj/beam))
return 1
/* Does SOUTHWEST do something hacky for windows, like defines a full 1 square window? --Stephen001 */
if (src.dir == SOUTHWEST)
return 0
else if (get_dir(target, O.loc) == src.dir)
return 0
return 1
/obj/window/CheckExit(atom/movable/O, target as turf)
if (istype(O, /obj/beam))
return 1
if (get_dir(O.loc, target) == src.dir)
return 0
return 1
/obj/window/meteorhit()
src.health = 0
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
src.density = 0
src.loc.buildlinks()
del(src)
return
/obj/window/hitby(obj/item/weapon/W as obj)
..()
var/tforce = W.throwforce
if(reinf) tforce /= 4.0
src.health = max(0, src.health - tforce)
if (src.health <= 7 && !reinf)
src.anchored = 0
step(src, get_dir(W, src))
if (src.health <= 0)
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
src.density = 0
src.loc.buildlinks()
//SN src = null
del(src)
return
..()
return
/obj/window/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/screwdriver))
if(reinf && state >= 1)
state = 3 - state
usr.client_mob() << state==1? "You have unfastened the window from the frame." : "You have fastened the window to the frame."
else if(reinf && state == 0)
anchored = !anchored
user.client_mob() << src.anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor."
else if(!reinf)
src.anchored = !( src.anchored )
user.client_mob() << src.anchored ? "You have fastened the window to the floor." : "You have unfastened the window."
else if(istype(W, /obj/item/weapon/crowbar) && reinf)
if(state <=1)
state = 1-state;
user.client_mob() << state ? "You have pried the window into the frame." : "You have pried the window out of the frame."
else
var/aforce = W.force
if(reinf) aforce /= 2.0
src.health = max(0, src.health - aforce)
if (src.health <= 7)
src.anchored = 0
var/turf/sl = src.loc
step(src, get_dir(user, src))
sl.buildlinks()
src.loc.buildlinks()
if (src.health <= 0)
if (src.dir == SOUTHWEST)
var/index = null
index = 0
while(index < 2)
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
index++
else
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/weapon/rods( src.loc)
//SN src = null
src.density = 0
src.loc.buildlinks()
del(src)
return
..()
src.loc.buildlinks()
return
/obj/window/verb/rotate()
set src in oview(1)
var/result = src.canReach(usr, null, 1)
if (result==0)
usr.client_mob() << "You can't reach [src]."
return
if (src.anchored)
usr.client_mob() << "It is fastened to the floor; therefore, you can't rotate it!"
return 0
else
if (src.dir == SOUTHWEST)
usr.client_mob() << "You can't rotate this! "
return 0
src.dir = turn(src.dir, 90)
src.ini_dir = src.dir
src.loc.buildlinks()
return
/obj/window/New(Loc,re=0)
..()
if(re) reinf = re
src.ini_dir = src.dir
src.loc.buildlinks()
if(reinf)
icon_state = "rwindow"
desc = "A reinforced window."
name = "reinforced window"
state = 2*anchored
health = 40
return
/obj/window/Del()
src.density = 0
src.loc.buildlinks()
..()
/obj/window/Move()
var/turf/sl = src.loc
..()
src.dir = src.ini_dir
sl.buildlinks()
src.loc.buildlinks()
return
/atom/proc/meteorhit(obj/meteor as obj)
return
/atom/proc/allow_drop()
return 1
/atom/proc/CheckPass(atom/O as mob|obj|turf|area)
return (!( O.density ) || !( src.density ))
/atom/proc/CheckExit()
return 1
/atom/proc/HasEntered(atom/movable/AM as mob|obj)
return
/atom/proc/HasProximity(atom/movable/AM as mob|obj)
return
/atom/movable/overlay/attackby(a, b)
if (src.master)
return src.master.attackby(a, b)
return
/atom/movable/overlay/attack_paw(a, b, c)
if (src.master)
return src.master.attack_paw(a, b, c)
return
/atom/movable/overlay/attack_hand(a, b, c)
if (src.master)
return src.master.attack_hand(a, b, c)
return
/atom/movable/overlay/New()
for(var/x in src.verbs)
src.verbs -= x
//Foreach goto(17)
return
/turf/CheckPass(atom/O as mob|obj|turf|area)
return !( src.density )
return
/turf/New()
..()
for(var/atom/movable/AM as mob|obj in src)
spawn( 0 )
src.Entered(AM)
return
//Foreach goto(19)
return
/turf/Enter(atom/movable/O as mob|obj, atom/forget as mob|obj|turf|area)
if (!( isturf(O.loc) ))
return 1
for(var/atom/A as mob|obj|turf|area in O.loc)
if ((!( A.CheckExit(O, src) ) && O != A && A != forget))
if (O)
O.Bump(A, 1)
return 0
//Foreach goto(34)
for(var/atom/A as mob|obj|turf|area in src)
if ((A.flags & 512 && get_dir(A, O) & A.dir))
if ((!( A.CheckPass(O, src) ) && A != src && A != forget))
if (O)
O.Bump(A, 1)
return 0
//Foreach goto(127)
for(var/atom/A as mob|obj|turf|area in src)
if ((!( A.CheckPass(O, src) ) && A != forget))
if (O)
O.Bump(A, 1)
return 0
//Foreach goto(244)
if (src != forget)
if (!( src.CheckPass(O, src) ))
if (O)
O.Bump(src, 1)
return 0
return 1
return
/turf/Entered(atom/movable/M as mob|obj)
..()
for(var/atom/A as mob|obj|turf|area in src)
spawn( 0 )
if ((A && M))
A.HasEntered(M, 1)
return
//Foreach goto(19)
for(var/atom/A as mob|obj|turf|area in range(1))
spawn( 0 )
if ((A && M))
A.HasProximity(M, 1)
return
//Foreach goto(86)
return
/turf/proc/levelupdate()
for(var/obj/O in src)
if(O.level == 1)
O.hide(src.intact)
/turf/station/r_wall/updatecell()
if (src.state == 2)
return
else
..()
return
/turf/station/r_wall/proc/update()
if (src.d_state > 6)
src.d_state = 0
src.state = 1
if (src.state == 2)
src.icon_state = text("r_wall[]", (src.d_state > 0 ? text("-[]", src.d_state) : null))
src.opacity = 1
src.density = 1
src.updatecell = 0
src.buildlinks()
else
src.icon_state = "r_girder"
src.opacity = 0
src.density = 1
src.updatecell = 1
src.buildlinks()
return
/turf/station/r_wall/unburn()
src.luminosity = 0
src.update()
return
/turf/station/r_wall/meteorhit(obj/M as obj)
if ((M.icon_state == "flaming" && prob(30)))
if (src.state == 2)
src.state = 1
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
update()
else
if ((prob(20) && src.state == 1))
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.oxygen = O2STANDARD
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
return
/turf/station/r_wall/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
//del(src)
return
if(2.0)
if (prob(75))
src.opacity = 0
src.updatecell = 1
src.buildlinks()
src.state = 1
src.intact = 0
src.levelupdate()
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
else
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.burnt = 1
F.health = 30
F.icon_state = "Floor1"
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
if(3.0)
if (prob(15))
src.opacity = 0
src.updatecell = 1
src.buildlinks()
src.intact = 0
src.levelupdate()
src.state = 1
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
src.icon_state = "girder"
update()
else
return
/turf/station/r_wall/blob_act()
if(prob(10))
if(!intact)
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.burnt = 1
F.health = 30
F.icon_state = "Floor1"
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
else
src.opacity = 0
src.updatecell = 1
src.buildlinks()
src.state = 1
src.intact = 0
src.levelupdate()
new /obj/item/weapon/sheet/metal( src )
src.icon_state = "girder"
update()
/turf/station/r_wall/attackby(obj/item/weapon/W as obj, mob/user as mob)
if ((!( istype(user, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
if (!istype(user, /mob/drone))
user.client_mob() << "\red You don't have the dexterity to do this!"
return
if (src.state == 2)
if (istype(W, /obj/item/weapon/wrench))
if (src.d_state == 4)
var/turf/T = user.loc
user.client_mob() << "\blue Cutting support rods."
sleep(40)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.d_state = 5
user.client_mob() << "\green Support rods cut."
else
if (istype(W, /obj/item/weapon/wirecutters))
if (src.d_state == 0)
src.d_state = 1
new /obj/item/weapon/rods( src )
else
if (istype(W, /obj/item/weapon/weldingtool))
if (src.d_state == 2)
var/turf/T = user.loc
user.client_mob() << "\blue Slicing metal cover."
sleep(60)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.d_state = 3
user.client_mob() << "\green Metal cover sliced."
else
if (src.d_state == 5)
var/turf/T = user.loc
user.client_mob() << "\blue Removing support rods."
sleep(100)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.d_state = 6
new /obj/item/weapon/rods( src )
user.client_mob() << "\green Support rods removed."
else
if (istype(W, /obj/item/weapon/screwdriver))
if (src.d_state == 1)
var/turf/T = user.loc
user.client_mob() << "\blue Removing support lines."
sleep(40)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.d_state = 2
user.client_mob() << "\green Support lines removed."
else
if (istype(W, /obj/item/weapon/crowbar))
if (src.d_state == 3)
var/turf/T = user.loc
user.client_mob() << "\blue Prying cover off."
sleep(100)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.d_state = 4
user.client_mob() << "\green Cover pried off."
else
if (src.d_state == 6)
var/turf/T = user.loc
user.client_mob() << "\blue Prying outer sheath off."
sleep(100)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.d_state = 7
new /obj/item/weapon/sheet/metal( src )
user.client_mob() << "\green Outer sheath pried off."
else
if (istype(W, /obj/item/weapon/sheet/metal))
var/turf/T = user.loc
user.client_mob() << "\blue Repairing wall."
sleep(100)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat ) && src.state == 2))
src.d_state = 0
if (W:amount > 1)
W:amount--
else
//W = null
del(W)
if (src.state == 1)
if (istype(W, /obj/item/weapon/wrench))
user.client_mob() << "\blue Now dismantling girders."
var/turf/T = user.loc
sleep(100)
if (!( istype(src, /turf/station/r_wall) ))
return
if ((user.loc == T && user.equipped() == W && !( user.stat )))
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.oxygen = O2STANDARD
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
else
if (istype(W, /obj/item/weapon/sheet/r_metal))
src.state = 2
src.d_state = 0
//W = null
del(W)
if(istype(src,/turf/station/r_wall))
src.update()
return
//routine above sometimes erroneously calls turf/station/floor/update
//src being miss-set somehow? Maybe due to multiple-clicking
/turf/station/floor/proc/update()
return
/turf/station/wall/examine()
set src in oview(1)
usr.client_mob() << "It looks like a regular wall."
return
/turf/station/wall/updatecell()
if (src.state == 2)
return
else
..()
return
/turf/station/wall/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
del(src)
return
if(2.0)
if (prob(50))
src.opacity = 0
src.updatecell = 1
buildlinks()
src.state = 1
src.intact = 0
src.levelupdate()
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
src.icon_state = "girder"
else
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.burnt = 1
F.health = 30
F.icon_state = "Floor1"
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
if(3.0)
if (prob(25))
src.opacity = 0
src.updatecell = 1
buildlinks()
src.intact = 0
levelupdate()
src.state = 1
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
src.icon_state = "girder"
else
return
/turf/station/wall/blob_act()
if(prob(20))
if(!intact)
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.burnt = 1
F.health = 30
F.icon_state = "Floor1"
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
else
src.opacity = 0
src.updatecell = 1
buildlinks()
src.state = 1
src.intact = 0
levelupdate()
new /obj/item/weapon/sheet/metal( src )
src.icon_state = "girder"
/turf/station/wall/unburn()
src.luminosity = 0
if (src.state == 1)
src.icon_state = "girder"
else
src.icon_state = ""
return
/turf/station/wall/attack_paw(mob/user as mob)
if ((ticker && ticker.mode == "monkey"))
return src.attack_hand(user)
return
/turf/station/wall/attack_hand(mob/user as mob)
user.client_mob() << "\blue You push the wall but nothing happens!"
src.add_fingerprint(user)
return
/turf/station/wall/attackby(obj/item/weapon/W as obj, mob/user as mob)
if ((!( istype(user, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
if (!istype(user, /mob/drone))
user.client_mob() << "\red You don't have the dexterity to do this!"
return
if ((istype(W, /obj/item/weapon/wrench) && src.state == 1))
var/turf/T = user.loc
if (!( istype(T, /turf) ))
return
user.client_mob() << "\blue Now dissembling the reinforced girders. Please stand still. This is a long process."
sleep(100)
if (!( istype(src, /turf/station/wall) ))
return
if ((user.loc == T && src.state == 1 && user.equipped() == W))
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.oxygen = O2STANDARD
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
else
if ((istype(W, /obj/item/weapon/screwdriver) && src.state == 1))
var/turf/T = user.loc
if (!( istype(T, /turf) ))
return
user.client_mob() << "\blue Now dislodging girders."
sleep(100)
if (!( istype(src, /turf/station/wall) ))
return
if ((user.loc == T && src.state == 1 && user.equipped() == W))
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.oxygen = O2STANDARD
new /obj/d_girders( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
else
if ((istype(W, /obj/item/weapon/sheet/r_metal) && src.state == 1))
var/turf/T = user.loc
if (!( istype(T, /turf) ))
return
user.client_mob() << "\blue Now reinforcing girders."
sleep(100)
if (!( istype(src, /turf/station/wall) ))
return
if ((user.loc == T && src.state == 1 && user.equipped() == W))
src.state = 0
//var/turf/station/r_wall/F = new /turf/station/r_wall( locate(src.x, src.y, src.z) )
var/turf/station/r_wall/F = src.ReplaceWithRWall()
F.oxygen = O2STANDARD
F.icon_state = "r_girder"
F.state = 1
F.opacity = 0
F.updatecell = 1
F.buildlinks()
else
if ((istype(W, /obj/item/weapon/weldingtool) && src.state == 2))
var/turf/T = user.loc
if (!( istype(T, /turf) ))
return
var/obj/item/weapon/weldingtool/WT = W
if(WT.welding)
if (WT.weldfuel < 5)
user.client_mob() << "\blue You need more welding fuel to complete this task."
return
WT.weldfuel -= 5
user.client_mob() << "\blue Now dissembling the outer wall plating. Please stand still."
sleep(50)
if ((user.loc == T && src.state == 2 && user.equipped() == W))
src.opacity = 0
src.updatecell = 1
buildlinks()
src.state = 1
src.intact = 0
levelupdate()
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
src.icon_state = "girder"
return
/turf/station/wall/meteorhit(obj/M as obj)
if (M.icon_state == "flaming")
src.icon_state = "girder"
if (src.state == 2)
src.state = 1
src.opacity = 0
src.updatecell = 1
buildlinks()
src.firelevel = 11
new /obj/item/weapon/sheet/metal( src )
new /obj/item/weapon/sheet/metal( src )
else
if ((prob(20) && src.state == 1))
src.state = 0
//var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
var/turf/station/floor/F = src.ReplaceWithFloor()
F.oxygen = O2STANDARD
new /obj/item/weapon/sheet/metal( F )
new /obj/item/weapon/sheet/metal( F )
F.buildlinks()
F.levelupdate()
return
/turf/station/floor/CheckPass(atom/movable/O as mob|obj)
if ((istype(O, /obj/machinery/pod) && !( src.burnt )))
if (!( locate(/obj/machinery/mass_driver, src) ))
return 0
return 1
return
/turf/station/floor/ex_act(severity)
set src in oview(1)
switch(severity)
if(1.0)
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
levelupdate()
//del(src) //deleting it makes this method silently stop executing and erases the saved area somehow (SL)
return
if(2.0)
if (prob(50))
//SN src = null
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
levelupdate()
//del(src) //deleting it makes this method silently stop executing and erases the saved area somehow (SL)
return
else
src.icon_state = "burning"
src.luminosity = 2
src.burnt = 1
src.health = 30
src.intact = 0
levelupdate()
src.firelevel = 1800000.0
src.buildlinks()
if(3.0)
if (prob(50))
src.burnt = 1
src.health = 1
src.intact = 0
levelupdate()
src.icon_state = "Floor1"
src.buildlinks()
else
return
/turf/station/floor/blob_act()
return
/turf/station/floor/attack_paw(mob/user as mob)
return src.attack_hand(user)
/turf/station/floor/attack_hand(mob/user as mob)
if ((!( user.canmove ) || user.restrained() || !( user.pulling )))
return
if (user.pulling.anchored)
return
if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
return
if (ismob(user.pulling))
var/mob/M = user.pulling
var/mob/t = M.pulling
M.pulling = null
step(user.pulling, get_dir(user.pulling.loc, src))
M.pulling = t
else
step(user.pulling, get_dir(user.pulling.loc, src))
return
/turf/station/floor/attackby(obj/item/weapon/C as obj, mob/user as mob)
if (istype(C, /obj/item/weapon/crowbar))
if (src.health > 100)
src.health = 100
src.burnt = 1
src.intact = 0
levelupdate()
new /obj/item/weapon/tile(src)
src.icon_state = text("Floor[]", (src.burnt ? "1" : ""))
else if (istype(C, /obj/item/weapon/tile))
if (src.health <= 100)
src.intact = 1
levelupdate()
src.health = 150
src.burnt = 0
if (src.firelevel >= config.min_gas_for_fire)
src.icon_state = "burning"
src.luminosity = 2
else
src.icon_state = "Floor"
var/obj/item/weapon/tile/T = C
T.amount--
if (T.amount < 1)
del(T)
else if (istype(C, /obj/item/weapon/cable_coil) )
var/obj/item/weapon/cable_coil/coil = C
coil.turf_place(src, user)
return
/turf/station/floor/unburn()
src.luminosity = 0
src.icon_state = text("Floor[]", (src.burnt ? "1" : ""))
return
/turf/station/floor/updatecell()
..()
if (src.checkfire)
if (src.firelevel >= 2700000.0)
src.health--
if (src.health <= 0)
src.burnt = 1
src.intact = 0
levelupdate()
//SN src = null
del(src)
return
else
if (src.health <= 100)
src.burnt = 1
src.intact = 0
levelupdate()
return
/turf/station/floor/plasma_test/updatecell()
..()
src.poison = 7.5E7
res_vars()
return