Fixes fire extinguishers in space, removes empty hand requirement, which wasn't supposed to be committed. My bad.

Adds the ability for door buttons to both close the doors they're attached to, and also a framework for controlling their other functions like idscan/bolts.
Adds a secure safe to the HoS's office and a new flashbang grenade!  
Secure safes can now hold 8 weight units of stuff by default.  
Adds a reply function to the comm. console prayers as well as a confirmation button on BSA.  


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2946 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
VivianFoxfoot@gmail.com
2012-01-13 02:15:22 +00:00
parent bb41a2f57b
commit 7ffdec48bf
14 changed files with 208 additions and 34 deletions
+1 -1
View File
@@ -148,7 +148,7 @@
sleep(2)
var/area/a = get_area(usr.loc)
if((istype(src.loc, /turf/space)) || (a.has_gravity == 0))
if((istype(usr.loc, /turf/space)) || (a.has_gravity == 0))
user.inertia_dir = get_dir(target, user)
step(user, user.inertia_dir)
+90 -15
View File
@@ -93,6 +93,7 @@ FLASHBANG
var
active = 0
det_time = 30
banglet = 0
proc
bang(var/turf/T , var/mob/living/carbon/M)
prime()
@@ -206,14 +207,16 @@ FLASHBANG
if (M.eye_stat >= 20)
M << "\red Your eyes start to burn badly!"
M.disabilities |= 1
if (prob(M.eye_stat - 20 + 1))
M << "\red You can't see anything!"
M.sdisabilities |= 1
if(!banglet && !(istype(src , /obj/item/weapon/flashbang/clusterbang)))
if (prob(M.eye_stat - 20 + 1))
M << "\red You can't see anything!"
M.sdisabilities |= 1
if (M.ear_damage >= 15)
M << "\red Your ears start to ring badly!"
if (prob(M.ear_damage - 10 + 5))
M << "\red You can't hear anything!"
M.sdisabilities |= 4
if(!banglet && !(istype(src , /obj/item/weapon/flashbang/clusterbang)))
if (prob(M.ear_damage - 10 + 5))
M << "\red You can't hear anything!"
M.sdisabilities |= 4
else
if (M.ear_damage >= 5)
M << "\red Your ears start to ring!"
@@ -232,9 +235,7 @@ FLASHBANG
for(var/mob/living/carbon/M in viewers(T, null))
bang(T, M)
//Blob damage here
for(var/obj/effect/blob/B in view(8,T))
for(var/obj/effect/blob/B in view(8,T)) //Blob damage here
var/damage = round(30/(get_dist(B,T)+1))
B.health -= damage
B.update()
@@ -255,6 +256,12 @@ FLASHBANG
return
attack_hand()
walk(src, null, null)
..()
return
clown_check(var/mob/living/user)
if ((user.mutations & CLUMSY) && prob(50))
user << "\red Huh? How does this thing work?!"
@@ -266,12 +273,80 @@ FLASHBANG
return 0
return 1
/obj/item/weapon/flashbang/clusterbang
desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
name = "Clusterbang"
icon = 'grenade.dmi'
icon_state = "clusterbang"
var/child = 0
attack_self(mob/user as mob)
if(!active)
//world << "cluster attack self"
user << "\red You prime the clusterbang! [det_time/10] seconds!"
src.active = 1
src.icon_state = "clusterbang1"
playsound(src.loc, 'armbomb.ogg', 75, 1, -3)
spawn(src.det_time)
arm(user)
return
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
if (istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container
if (istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..()
if((user.equipped() == src)&&(!active))
//world << "cluster after attack"
arm(user)
user.dir = get_dir(user, target)
user.drop_item()
var/t = (isturf(target) ? target : target.loc)
walk_towards(src, t, 3)
return
/obj/item/weapon/flashbang/clusterbang/proc/arm(mob/user as mob)
//world << "Armed!"
var/numspawned = rand(4,8)
// world << numspawned
var/again = 0
if(!child)
for(var/more = numspawned,more > 0,more--)
if(prob(35))
again++
numspawned --
for(,numspawned > 0, numspawned--)
//world << "Spawned Flashbang!"
spawn(0)
var/obj/item/weapon/flashbang/F = new /obj/item/weapon/flashbang(src)
F.loc = src.loc
F.icon_state = "flashbang1"
playsound(src.loc, 'armbomb.ogg', 75, 1, -3)
F.active = 1
F.banglet = 1
var/stepdist = rand(1,3)
step_away(F,src,stepdist)
var/dettime = rand(15,60)
spawn(dettime)
F.prime()
for(,again > 0, again--)
//world << "Spawned CFlashbang!"
spawn(0)
var/obj/item/weapon/flashbang/clusterbang/F = new /obj/item/weapon/flashbang/clusterbang(src)
F.loc = src.loc
F.active = 1
F.child = 1
F.icon_state = "clusterbang1"
var/stepdist = rand(1,3)
step_away(F,src,stepdist)
spawn(30)
F.arm()
spawn(70)
prime()
return
+2 -1
View File
@@ -13,6 +13,7 @@
var/l_hacking = 0
var/emagged = 0
var/open = 0
var/internalstorage = 3
w_class = 3.0
/obj/item/weapon/secstorage/examine()
@@ -111,7 +112,7 @@
else
user << "You short out the lock on [src]."
return
if ((W.w_class > 3 || istype(W, /obj/item/weapon/secstorage)))
if ((W.w_class > internalstorage || istype(W, /obj/item/weapon/secstorage)))
return
if ((istype(W, /obj/item/weapon/screwdriver)) && (src.locked == 1))
sleep(6)
+6 -1
View File
@@ -7,7 +7,8 @@
icon_sparking = "safespark"
flags = FPRINT | TABLEPASS
force = 8.0
w_class = 4.0
w_class = 8.0
internalstorage = 8
anchored = 1.0
density = 0
@@ -16,5 +17,9 @@
new /obj/item/weapon/paper(src)
new /obj/item/weapon/pen(src)
/obj/item/weapon/secstorage/ssafe/HoS/New()
..()
new /obj/item/weapon/storage/lockbox/clusterbang(src)
/obj/item/weapon/secstorage/ssafe/attack_hand(mob/user as mob)
return attack_self(user)
+11 -1
View File
@@ -74,4 +74,14 @@
new /obj/item/weapon/implantcase/loyalty(src)
new /obj/item/weapon/implantcase/loyalty(src)
new /obj/item/weapon/implantcase/loyalty(src)
new /obj/item/weapon/implanter/loyalty(src)
new /obj/item/weapon/implanter/loyalty(src)
/obj/item/weapon/storage/lockbox/clusterbang
name = "Lockbox (Clusterbang)"
desc = "You have a bad feeling about opening this."
req_access = list(access_security)
New()
..()
new /obj/item/weapon/flashbang/clusterbang(src)