Bugfixes:

Projectiles now last 50 ticks then dissipate. 
- This is to prevent people from firing these into space causing large amounts of projectiles to be processed needlessly.

Re-coded the cremator's cremate(), it should not lock up any more.

Removed a duplicate attackby() in pill bottles. They should now be able to pick up all pills on a tile properly.
- Fixes Issue 490
- Thanks to Zelacks for pointing this out.

Handcuffed mobs who are being dragged by another player can now move when the puller is stunned or paralysed.

Ashes are now decal/cleanable and can be mopped up by janitors

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4103 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
johnsonmt88@gmail.com
2012-07-18 04:53:18 +00:00
parent 14aec630f4
commit 8063f6dd06
9 changed files with 46 additions and 55 deletions

View File

@@ -1,11 +1,3 @@
/obj/effect/decal/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
gender = PLURAL
icon = 'objects.dmi'
icon_state = "ash"
anchored = 1
/obj/effect/decal/remains/human
name = "remains"
desc = "They look like human remains. They have a strange aura about them."
@@ -43,6 +35,14 @@
//HUMANS
/obj/effect/decal/cleanable/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
gender = PLURAL
icon = 'objects.dmi'
icon_state = "ash"
anchored = 1
/obj/effect/decal/cleanable/blood
name = "blood"
desc = "It's red and gooey. Perhaps it's the chef's cooking?"

View File

@@ -336,7 +336,7 @@
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
new /obj/effect/decal/ash(src.loc)
new /obj/effect/decal/cleanable/ash(src.loc)
src.visible_message("\red The [src.name] explodes!","\red You hear a snap!")
playsound(src, 'snap.ogg', 50, 1)
del(src)
@@ -350,7 +350,7 @@
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 0, src)
s.start()
new /obj/effect/decal/ash(src.loc)
new /obj/effect/decal/cleanable/ash(src.loc)
src.visible_message("\red The [src.name] explodes!","\red You hear a snap!")
playsound(src, 'snap.ogg', 50, 1)
del(src)

View File

@@ -250,50 +250,41 @@
if(cremating)
return //don't let you cremate something twice or w/e
if(length(contents) == 0)
if(contents.len <= 0)
for (var/mob/M in viewers(src))
M.show_message("\red You hear a hollow crackle.", 1)
return
else if(contents)
else
if(!isemptylist(src.search_contents_for(/obj/item/weapon/disk/nuclear)))
usr << "You get the feeling that you shouldn't cremate one of the items in the cremator."
return
for (var/mob/M in viewers(src))
M.show_message("\red You hear a roar as the crematorium activates.", 1)
cremating = 1
locked = 1
if(locate(/mob/living/, src))
for (var/obj/item/I in contents)
del(I)
for (var/mob/living/M in contents)
M.Stun(100) //You really dont want to place this inside the loop.
spawn(1)
for(var/i=1 to 10)
sleep(10)
if(M)
M.take_overall_damage(0,30)
if (M.stat!=2 && prob(30))
M.emote("scream")
new /obj/effect/decal/ash(src)
for (var/obj/item/W in M)
if (prob(10))
W.loc = src
//Logging for this runtimes and causes the cremator to lock up
//M.attack_log += "\[[time_stamp()]\] Has been cremated by <b>[user]/[user.ckey]</b>" //No point when the mob's about to be deleted
//user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>"
//log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> gibbed <b>[M]/[M.ckey]</b>")
M.death(1)
M.ghostize()
del(M)
cremating = 0
locked = 0
playsound(src.loc, 'ding.ogg', 50, 1)
else
for(var/obj/item/I in contents)
if(!istype(I, /obj/item/weapon/disk/nuclear))
del(I)
new /obj/effect/decal/ash(src)
sleep(30)
cremating = 0
locked = 0
playsound(src.loc, 'ding.ogg', 50, 1)
for(var/mob/living/M in contents)
if (M.stat!=2)
M.emote("scream")
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
//M.attack_log += "\[[time_stamp()]\] Has been cremated by <b>[user]/[user.ckey]</b>" //No point in this when the mob's about to be deleted
//user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>"
//log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> cremated <b>[M]/[M.ckey]</b>")
M.death(1)
M.ghostize()
del(M)
for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up
del(O)
new /obj/effect/decal/cleanable/ash(src)
sleep(30)
cremating = 0
locked = 0
playsound(src.loc, 'ding.ogg', 50, 1)
return
/obj/structure/c_tray/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)

View File

@@ -342,7 +342,7 @@ ZIPPO
var/turf/location = get_turf(src)
src.smoketime--
if(src.smoketime < 1)
new /obj/effect/decal/ash(location)
new /obj/effect/decal/cleanable/ash(location)
if(ismob(src.loc))
var/mob/living/M = src.loc
M << "\red Your [src.name] goes out, and you empty the ash."

View File

@@ -1703,10 +1703,6 @@
return 0
attackby(obj/item/I as obj, mob/user as mob)
return
afterattack(obj/target, mob/user , flag)
if(target.is_open_container() == 1 && target.reagents)

View File

@@ -38,7 +38,7 @@
animation.master = src
// flick("dust-m", animation)
new /obj/effect/decal/ash(loc)
new /obj/effect/decal/cleanable/ash(loc)
spawn(15)
if(animation) del(animation)

View File

@@ -32,7 +32,7 @@
animation.master = src
flick("dust-m", animation)
new /obj/effect/decal/ash(loc)
new /obj/effect/decal/cleanable/ash(loc)
spawn(15)
if(animation) del(animation)

View File

@@ -306,7 +306,7 @@
if(mob.restrained())//Why being pulled while cuffed prevents you from moving
for(var/mob/M in range(mob, 1))
if(((M.pulling == mob && (!( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, mob.grabbed_by.len)))
if(M.pulling == mob && !M.restrained() && M.stat == 0 && M.canmove)
src << "\blue You're restrained! You can't move!"
return 0

View File

@@ -38,6 +38,7 @@
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
var/projectile_type = "/obj/item/projectile"
var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile.
//Effects
var/stun = 0
var/weaken = 0
@@ -127,6 +128,9 @@
process()
if(kill_count < 1)
del(src)
kill_count--
spawn while(src)
if((!( current ) || loc == current))
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)