Penlight fits in medical belt.

Fixed several runtime errors.
Monkeys and aliens won't stack dozens of blood stains.
Fixed crash in FEA code related to melting floors.
When screwdrived destructive analyzer unlink from RD console protolate instead of itself.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1443 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2011-04-14 03:52:09 +00:00
parent e84d394289
commit ad6a6e42aa
38 changed files with 427 additions and 521 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
user << "\red It appears to be broken."
return
var/obj/item/weapon/card/id/I = W
if (src.allowed(user) || !src.registered || (istype(W, /obj/item/weapon/card/id) && src.registered == I.registered))
if (src.allowed(user) || !src.registered || (istype(I) && (src.registered == I.registered)))
//they can open all lockers, or nobody owns this, or they own this locker
src.locked = !( src.locked )
for(var/mob/O in viewers(user, 3))
+2
View File
@@ -82,6 +82,8 @@ MASS SPECTROMETER
/obj/item/device/detective_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
if (!istype(M))
user << "\red [M] is not humas and cannot have the fingerprints."
if (( !( istype(M.dna, /datum/dna) ) || M.gloves) )
user << "\blue No fingerprints found on [M]"
else
+1 -4
View File
@@ -58,12 +58,9 @@ FINGERPRINT CARD
if(istype(W,/obj/item/weapon/photo))
if(!(PHOTO))
src.PHOTO = W
usr.u_equip(W)
usr.before_take_item(W)
W.loc = src
if ((usr.client && usr.s_active != src))
usr.client.screen -= W
//src.orient2hud(usr)
W.dropped(usr)
add_fingerprint(usr)
usr << "\blue You add the photo to the ID"
else
+62 -107
View File
@@ -10,9 +10,9 @@
del(src)
/obj/item/weapon/tank/attack_self(mob/user as mob)
user.machine = src
if (!(src.air_contents))
return
user.machine = src
var/using_internal
if(istype(loc,/mob/living/carbon))
@@ -45,22 +45,26 @@
if(istype(loc,/mob/living/carbon))
var/mob/living/carbon/location = loc
if(location.internal == src)
usr << "\blue You close the tank release valve."
usr << "\blue You close \the [src] release valve."
if (location.internals)
location.internals.icon_state = "internal0"
else
if(location.wear_mask && (location.wear_mask.flags & MASKINTERNALS))
location.internal = src
usr << "\blue You open the tank valve."
usr << "\blue You open \the [src] valve."
if (location.internals)
location.internals.icon_state = "internal1"
else
usr << "\blue The valve immediately closes."
usr << "\blue You need something to connect to \the [src]."
src.add_fingerprint(usr)
/*
* the following is needed for a tank lying on the floor. But currently we restrict players to use not weared tanks as intrals. --rastaf
for(var/mob/M in viewers(1, src.loc))
if ((M.client && M.machine == src))
src.attack_self(M)
*/
src.attack_self(usr)
else
usr << browse(null, "window=tank")
return
@@ -144,10 +148,10 @@
else if(integrity < 3)
integrity++
/* redundant. --rastaf0
/obj/item/weapon/tank/attack(mob/M as mob, mob/user as mob)
..()
*/
/*
if ((prob(30) && M.stat < 2))
var/mob/living/carbon/human/H = M
@@ -173,7 +177,7 @@
/obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
var/obj/item/weapon/icon = src
var/obj/icon = src
if (istype(src.loc, /obj/item/assembly))
icon = src.loc
if ((istype(W, /obj/item/device/analyzer) || (istype(W, /obj/item/device/pda))) && get_dist(user, src) <= 1)
@@ -228,7 +232,7 @@
..()
/obj/item/weapon/tank/examine()
var/obj/item/weapon/icon = src
var/obj/icon = src
if (istype(src.loc, /obj/item/assembly))
icon = src.loc
if (!in_range(src, usr))
@@ -371,7 +375,8 @@
ground_zero.assume_air(air_contents)
ground_zero.hotspot_expose(1000, 125)
if(src.master) del(src.master)
if(src.master)
del(src.master)
del(src)
/obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -381,178 +386,128 @@
var/obj/item/assembly/rad_ignite/S = W
if (!( S.status ))
return
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank( user )
var/obj/item/assembly/r_i_ptank/R = new
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 (user.client)
user.client.screen -= S
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 (user.client)
user.client.screen -= src
src.loc = R
R.part3 = src
R.layer = 20
R.loc = user
user.put_in_hand(R)
user.before_take_item(src)
src.loc = R
S.part1 = null
S.part2 = null
//S = null
del(S)
if (istype(W, /obj/item/assembly/prox_ignite))
var/obj/item/assembly/prox_ignite/S = W
if (!( S.status ))
return
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank( user )
var/obj/item/assembly/m_i_ptank/R = new
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 (user.client)
user.client.screen -= S
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 (user.client)
user.client.screen -= src
src.loc = R
R.part3 = src
R.layer = 20
R.loc = user
user.put_in_hand(R)
user.before_take_item(src)
src.loc = R
S.part1 = null
S.part2 = null
//S = null
del(S)
if (istype(W, /obj/item/assembly/time_ignite))
var/obj/item/assembly/time_ignite/S = W
if (!( S.status ))
return
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank( user )
var/obj/item/assembly/t_i_ptank/R = new
R.part1 = S.part1
if (S.part1)
S.part1.loc = R
S.part1.master = R
S.part1.loc = R
S.part1.master = R
R.part2 = S.part2
if (S.part2)
S.part2.loc = R
S.part2.master = R
S.layer = initial(S.layer)
if (user.client)
user.client.screen -= S
if (user.r_hand == S)
user.u_equip(S)
user.r_hand = R
else
user.u_equip(S)
user.l_hand = R
S.part2.loc = R
S.part2.master = R
src.master = R
src.layer = initial(src.layer)
user.u_equip(src)
if (user.client)
user.client.screen -= src
src.loc = R
R.part3 = src
R.layer = 20
R.loc = user
user.put_in_hand(R)
user.before_take_item(src)
src.loc = R
S.part1 = null
S.part2 = null
//S = null
del(S)
if (istype(W, /obj/item/assembly/a_i_a))
var/obj/item/assembly/a_i_a/S = W
if (!( S.status ))
return
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new /obj/item/clothing/suit/armor/a_i_a_ptank( user )
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new
R.part1 = S.part1
S.part1.loc = R
S.part1.master = R
R.part2 = S.part2
S.part2.loc = R
S.part2.master = R
R.part3 = S.part3
S.part3.loc = R
S.part3.master = R
S.layer = initial(S.layer)
if (user.client)
user.client.screen -= S
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 (user.client)
user.client.screen -= src
src.loc = R
R.part4 = src
R.layer = 20
R.loc = user
user.put_in_hand(R)
user.before_take_item(src)
src.loc = R
S.part1 = null
S.part2 = null
S.part3 = null
//S = null
del(S)
// PantsNote: More flamethrower assembly code. WOO!
if (istype(W, /obj/item/assembly/w_r_ignite))
var/obj/item/assembly/w_r_ignite/S = W
if (!( S.status ))
return
var/obj/item/weapon/flamethrower/R = new /obj/item/weapon/flamethrower( user )
var/obj/item/weapon/flamethrower/R = new
R.part1 = S.part1
S.part1.loc = R
S.part1.master = R
R.part2 = S.part2
S.part2.loc = R
S.part2.master = R
R.part3 = S.part3
S.part3.loc = R
S.part3.master = R
S.layer = initial(S.layer)
if (user.client)
user.client.screen -= S
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 (user.client)
user.client.screen -= src
src.loc = R
R.part4 = src
R.layer = 20
R.loc = user
user.put_in_hand(R)
user.before_take_item(src)
src.loc = R
S.part1 = null
S.part2 = null
S.part3 = null
//S = null
del(S)
return
return
+84 -117
View File
@@ -114,6 +114,8 @@
return
/obj/item/assembly/time_ignite/receive_signal()
if (!status)
return
for(var/mob/O in hearers(1, src.loc))
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
src.part2.ignite()
@@ -130,14 +132,12 @@
var/turf/T = src.loc
if (ismob(T))
T = T.loc
if (src.part1)
src.part1.loc = T
src.part1.master = null
src.part1 = null
if (src.part2)
src.part2.loc = T
src.part2.master = null
src.part2 = null
src.part1.loc = T
src.part1.master = null
src.part1 = null
src.part2.loc = T
src.part2.master = null
src.part2 = null
del(src)
return
@@ -148,8 +148,7 @@
user.show_message("\blue The timer is now secured!", 1)
else
user.show_message("\blue The timer is now unsecured!", 1)
if (src.part2)
src.part2.status = src.status
src.part2.status = src.status
src.add_fingerprint(user)
return
@@ -166,10 +165,10 @@
if (ismob(T))
T = T.loc
src.part1.loc = T
src.part2.loc = T
src.part1.master = null
src.part2.master = null
src.part1 = null
src.part2.loc = T
src.part2.master = null
src.part2 = null
del(src)
@@ -183,7 +182,22 @@
src.part2.status = src.status
src.add_fingerprint(user)
if(( istype(W, /obj/item/clothing/suit/armor/vest) ) && src.status)
var/obj/item/assembly/a_i_a/R = new /obj/item/assembly/a_i_a( user )
var/obj/item/assembly/a_i_a/R = new
R.part1 = part1
R.part1.master = R
part1 = null
R.part2 = part2
R.part2.master = R
part2 = null
user.put_in_hand(R)
user.before_take_item(W)
R.part3 = W
R.part3.master = R
del(src)
/* WTF THIS SHIT? It is working? Shouldn't. --rastaf0
W.loc = R
R.part1 = W
R.part2 = W
@@ -207,6 +221,7 @@
R.layer = 20
R.loc = user
src.add_fingerprint(user)
*/
return
/* else if ((istype(W, /obj/item/device/timer) && !( src.status )))
@@ -241,18 +256,21 @@
if (ismob(T))
T = T.loc
src.part1.loc = T
src.part2.loc = T
src.part3.loc = T
src.part1.master = null
src.part2.master = null
src.part3.master = null
src.part1 = null
src.part2.loc = T
src.part2.master = null
src.part2 = null
src.part3.loc = T
src.part3.master = null
src.part3 = null
del(src)
return
if (( istype(W, /obj/item/weapon/screwdriver) ))
if (!src.status && (!part1||!part2||!part3))
user << "\red You cannot finish the assembly, not all components are in place!"
return
src.status = !( src.status )
if (src.status)
user.show_message("\blue The armor is now secured!", 1)
@@ -306,7 +324,6 @@
return
/obj/item/assembly/rad_time/attack_self(mob/user as mob)
src.part1.attack_self(user, src.status)
src.part2.attack_self(user, src.status)
src.add_fingerprint(user)
@@ -369,7 +386,6 @@
return
/obj/item/assembly/rad_prox/receive_signal(datum/signal/signal)
if (!src.part2 || !src.part1) return
if (signal.source == src.part2)
src.part1.send_signal("ACTIVATE")
return
@@ -425,7 +441,6 @@
return
/obj/item/assembly/rad_infra/attack_self(mob/user as mob)
src.part1.attack_self(user, src.status)
src.part2.attack_self(user, src.status)
src.add_fingerprint(user)
@@ -516,7 +531,8 @@
/obj/item/assembly/prox_ignite/attack_self(mob/user as mob)
src.part1.attack_self(user, src.status)
if (src.part1)
src.part1.attack_self(user, src.status)
src.add_fingerprint(user)
return
@@ -578,7 +594,8 @@
/obj/item/assembly/rad_ignite/attack_self(mob/user as mob)
src.part1.attack_self(user, src.status)
if (src.part1)
src.part1.attack_self(user, src.status)
src.add_fingerprint(user)
return
@@ -631,13 +648,13 @@
/obj/item/assembly/m_i_ptank/dropped()
spawn( 0 )
src.part1.sense()
part1.sense()
return
return
/obj/item/assembly/m_i_ptank/examine()
..()
src.part3.examine()
part3.examine()
/obj/item/assembly/m_i_ptank/Del()
@@ -654,36 +671,25 @@
..()
if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user)
return
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/obj/item/assembly/prox_ignite/R = new /obj/item/assembly/prox_ignite( )
var/obj/item/assembly/prox_ignite/R = new(get_turf(src.loc))
R.part1 = src.part1
R.part1.master = R
R.part1.loc = R
R.part2 = src.part2
R.loc = src.loc
if (user.r_hand == src)
user.r_hand = R
R.layer = 20
R.part2.master = R
R.part2.loc = R
if (user.get_inactive_hand()==src)
user.put_in_inactive_hand(part3)
else
if (user.l_hand == src)
user.l_hand = R
R.layer = 20
src.part1.loc = R
src.part2.loc = R
src.part1.master = R
src.part2.master = R
var/turf/T = src.loc
if (!( istype(T, /turf) ))
T = T.loc
if (!( istype(T, /turf) ))
T = T.loc
src.part3.loc = T
part3.loc = src.loc
src.part1 = null
src.part2 = null
src.part3 = null
//SN src = null
del(src)
return
if (!( istype(W, /obj/item/weapon/weldingtool) ))
if (!( istype(W, /obj/item/weapon/weldingtool)&&W:welding ))
return
if (!( src.status ))
src.status = 1
@@ -754,35 +760,22 @@
if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user)
return
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/obj/item/assembly/time_ignite/R = new /obj/item/assembly/time_ignite( )
var/obj/item/assembly/time_ignite/R = new(get_turf(src.loc))
R.part1 = src.part1
R.part1.master = R
R.part1.loc = R
R.part2 = src.part2
R.loc = src.loc
if (user.r_hand == src)
user.r_hand = R
R.layer = 20
R.part2.master = R
R.part2.loc = R
if (user.get_inactive_hand()==src)
user.put_in_inactive_hand(part3)
else
if (user.l_hand == src)
user.l_hand = R
R.layer = 20
if(src.part1)
src.part1.loc = R
src.part1.master = R
if(src.part2)
src.part2.loc = R
src.part2.master = R
var/turf/T = src.loc
if (!( istype(T, /turf) ))
T = T.loc
if (!( istype(T, /turf) ))
T = T.loc
src.part3.loc = T
part3.loc = src.loc
src.part1 = null
src.part2 = null
src.part3 = null
//SN src = null
del(src)
return
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding))
@@ -798,15 +791,13 @@
bombers += "[key_name(user)] unwelded a time bomb. Temp: [src.part3.air_contents.temperature-T0C]"
user << "\blue The hole has been closed."
src.part2.status = src.status
src.add_fingerprint(user)
return
/obj/item/assembly/t_i_ptank/attack_self(mob/user as mob)
if (src.part1)
src.part1.attack_self(user, 1)
playsound(src.loc, 'armbomb.ogg', 100, 1)
src.part1.attack_self(user, 1)
playsound(src.loc, 'armbomb.ogg', 100, 1)
src.add_fingerprint(user)
return
@@ -848,33 +839,22 @@
if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user)
return
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/obj/item/assembly/rad_ignite/R = new /obj/item/assembly/rad_ignite( )
var/obj/item/assembly/rad_ignite/R = new(get_turf(src.loc))
R.part1 = src.part1
R.part1.master = R
R.part1.loc = R
R.part2 = src.part2
R.loc = src.loc
if (user.r_hand == src)
user.r_hand = R
R.layer = 20
R.part2.master = R
R.part2.loc = R
if (user.get_inactive_hand()==src)
user.put_in_inactive_hand(part3)
else
if (user.l_hand == src)
user.l_hand = R
R.layer = 20
src.part1.loc = R
src.part2.loc = R
src.part1.master = R
src.part2.master = R
var/turf/T = src.loc
if (!( istype(T, /turf) ))
T = T.loc
if (!( istype(T, /turf) ))
T = T.loc
src.part3.loc = T
part3.loc = src.loc
src.part1 = null
src.part2 = null
src.part3 = null
//SN src = null
del(src)
return
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding ))
@@ -904,37 +884,26 @@
..()
if (istype(W, /obj/item/device/analyzer))
src.part4.attackby(W, user)
return
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/obj/item/assembly/a_i_a/R = new /obj/item/assembly/a_i_a( )
var/obj/item/assembly/a_i_a/R = new(get_turf(src.loc))
R.part1 = src.part1
R.part1.master = R
R.part1.loc = R
R.part2 = src.part2
R.part2.master = R
R.part2.loc = R
R.part3 = src.part3
R.loc = src.loc
if (user.r_hand == src)
user.r_hand = R
R.layer = 20
R.part3.master = R
R.part3.loc = R
if (user.get_inactive_hand()==src)
user.put_in_inactive_hand(part4)
else
if (user.l_hand == src)
user.l_hand = R
R.layer = 20
src.part1.loc = R
src.part2.loc = R
src.part3.loc = R
src.part1.master = R
src.part2.master = R
src.part3.master = R
var/turf/T = src.loc
if (!( istype(T, /turf) ))
T = T.loc
if (!( istype(T, /turf) ))
T = T.loc
src.part4.loc = T
part4.loc = src.loc
src.part1 = null
src.part2 = null
src.part3 = null
src.part4 = null
//SN src = null
del(src)
return
if (( istype(W, /obj/item/weapon/weldingtool) && W:welding))
@@ -953,10 +922,8 @@
return
/obj/item/assembly/r_i_ptank/attack_self(mob/user as mob)
if (src.part1)
playsound(src.loc, 'armbomb.ogg', 100, 1)
src.part1.attack_self(user, 1)
playsound(src.loc, 'armbomb.ogg', 100, 1)
src.part1.attack_self(user, 1)
src.add_fingerprint(user)
return