Now disassembling of bed/chair will release bucked person.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@671 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2010-12-19 13:50:15 +00:00
parent f2c2a3b8c1
commit c1f1b6365d
2 changed files with 57 additions and 66 deletions
+55 -66
View File
@@ -57,49 +57,72 @@
return
/obj/stool/bed/Del()
for(var/mob/M in src.loc)
for(var/mob/M in src.buckled_mobs)
if (M.buckled == src)
M.buckled = null
M.lying = 0
M.anchored = 0
unbuckle_all()
..()
return
/obj/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob)
/obj/stool/proc/unbuckle_all()
for(var/mob/M in src:buckled_mobs)
if (M.buckled == src)
M.buckled = null
M.anchored = 0
/obj/stool/proc/manual_unbuckle_all(mob/user as mob)
var/N = 0;
for(var/mob/M in src:buckled_mobs)
if (M.buckled == src)
if (M != user)
M.visible_message(\
"\blue [M.name] was unbuckled by [user.name]!",\
"You unbuckled from [src] by [user.name].",\
"You hear metal clanking")
else
M.visible_message(\
"\blue [M.name] was unbuckled himself!",\
"You unbuckle yourself from [src].",\
"You hear metal clanking")
// world << "[M] is no longer buckled to [src]"
M.anchored = 0
M.buckled = null
N++
return N
/obj/stool/proc/buckle_mob(mob/M as mob, mob/user as mob)
if (!ticker)
user << "You can't buckle anyone in before the game starts."
if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat))
return
if (M == usr)
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] buckles in!", M)
M.visible_message(\
"\blue [M.name] buckles in!",\
"You buckle yourself to [src].",\
"You hear metal clanking")
else
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] is buckled in by [].", M, user)
M.lying = 1
M.visible_message(\
"\blue [M.name] is buckled in to [src] by [user.name]!",\
"You buckled in to [src] by [user.name].",\
"You hear metal clanking")
M.anchored = 1
M.buckled = src
M.loc = src.loc
src:buckled_mobs += M
src.add_fingerprint(user)
return
/obj/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob)
buckle_mob(M, user)
M.lying = 1
return
/obj/stool/bed/attack_hand(mob/user as mob)
for(var/mob/M in src.loc)
if (M.buckled)
if (M != user)
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] is unbuckled by [].", M, user)
else
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] unbuckles.", M)
// world << "[M] is no longer buckled to [src]"
M.anchored = 0
M.buckled = null
src.add_fingerprint(user)
for(var/mob/M in src.buckled_mobs)
if (M.buckled == src)
M.lying = 0
if (manual_unbuckle_all(user))
src.add_fingerprint(user)
return
/obj/stool/chair/e_chair/New()
@@ -176,9 +199,7 @@
return
/obj/stool/chair/ex_act(severity)
for(var/mob/M in src.loc)
if(M.buckled == src)
M.buckled = null
unbuckle_all()
switch(severity)
if(1.0)
del(src)
@@ -195,9 +216,7 @@
/obj/stool/chair/blob_act()
if(prob(75))
for(var/mob/M in src.loc)
if(M.buckled == src)
M.buckled = null
unbuckle_all()
del(src)
/obj/stool/chair/New()
@@ -208,9 +227,7 @@
return
/obj/stool/chair/Del()
for(var/mob/M in src.loc)
if (M.buckled == src)
M.buckled = null
unbuckle_all()
..()
return
@@ -226,41 +243,13 @@
return
/obj/stool/chair/MouseDrop_T(mob/M as mob, mob/user as mob)
if (!ticker)
user << "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))
return
if (M == usr)
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] buckles in!", user)
else
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] is buckled in by []!", M, user)
M.anchored = 1
M.buckled = src
M.loc = src.loc
src.add_fingerprint(user)
buckle_mob(M, user)
return
/obj/stool/chair/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/stool/chair/attack_hand(mob/user as mob)
for(var/mob/M in src.loc)
if (M.buckled)
if (M != user)
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] is unbuckled by [].", M, user)
else
for(var/mob/O in viewers(user, null))
if ((O.client && !( O.blinded )))
O << text("\blue [] unbuckles.", M)
// world << "[M] is no longer buckled to [src]"
M.anchored = 0
M.buckled = null
src.add_fingerprint(user)
if (manual_unbuckle_all(user))
src.add_fingerprint(user)
return