mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
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:
@@ -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?"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user