mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +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
|
/obj/effect/decal/remains/human
|
||||||
name = "remains"
|
name = "remains"
|
||||||
desc = "They look like human remains. They have a strange aura about them."
|
desc = "They look like human remains. They have a strange aura about them."
|
||||||
@@ -43,6 +35,14 @@
|
|||||||
|
|
||||||
//HUMANS
|
//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
|
/obj/effect/decal/cleanable/blood
|
||||||
name = "blood"
|
name = "blood"
|
||||||
desc = "It's red and gooey. Perhaps it's the chef's cooking?"
|
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
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||||
s.set_up(3, 1, src)
|
s.set_up(3, 1, src)
|
||||||
s.start()
|
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!")
|
src.visible_message("\red The [src.name] explodes!","\red You hear a snap!")
|
||||||
playsound(src, 'snap.ogg', 50, 1)
|
playsound(src, 'snap.ogg', 50, 1)
|
||||||
del(src)
|
del(src)
|
||||||
@@ -350,7 +350,7 @@
|
|||||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||||
s.set_up(2, 0, src)
|
s.set_up(2, 0, src)
|
||||||
s.start()
|
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!")
|
src.visible_message("\red The [src.name] explodes!","\red You hear a snap!")
|
||||||
playsound(src, 'snap.ogg', 50, 1)
|
playsound(src, 'snap.ogg', 50, 1)
|
||||||
del(src)
|
del(src)
|
||||||
|
|||||||
@@ -250,46 +250,37 @@
|
|||||||
if(cremating)
|
if(cremating)
|
||||||
return //don't let you cremate something twice or w/e
|
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))
|
for (var/mob/M in viewers(src))
|
||||||
M.show_message("\red You hear a hollow crackle.", 1)
|
M.show_message("\red You hear a hollow crackle.", 1)
|
||||||
return
|
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))
|
for (var/mob/M in viewers(src))
|
||||||
M.show_message("\red You hear a roar as the crematorium activates.", 1)
|
M.show_message("\red You hear a roar as the crematorium activates.", 1)
|
||||||
|
|
||||||
cremating = 1
|
cremating = 1
|
||||||
locked = 1
|
locked = 1
|
||||||
if(locate(/mob/living/, src))
|
|
||||||
for (var/obj/item/I in contents)
|
for(var/mob/living/M in contents)
|
||||||
del(I)
|
if (M.stat!=2)
|
||||||
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")
|
M.emote("scream")
|
||||||
new /obj/effect/decal/ash(src)
|
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
|
||||||
for (var/obj/item/W in M)
|
//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
|
||||||
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>"
|
//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>")
|
//log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> cremated <b>[M]/[M.ckey]</b>")
|
||||||
M.death(1)
|
M.death(1)
|
||||||
M.ghostize()
|
M.ghostize()
|
||||||
del(M)
|
del(M)
|
||||||
cremating = 0
|
|
||||||
locked = 0
|
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
|
||||||
playsound(src.loc, 'ding.ogg', 50, 1)
|
del(O)
|
||||||
else
|
|
||||||
for(var/obj/item/I in contents)
|
new /obj/effect/decal/cleanable/ash(src)
|
||||||
if(!istype(I, /obj/item/weapon/disk/nuclear))
|
|
||||||
del(I)
|
|
||||||
new /obj/effect/decal/ash(src)
|
|
||||||
sleep(30)
|
sleep(30)
|
||||||
cremating = 0
|
cremating = 0
|
||||||
locked = 0
|
locked = 0
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ ZIPPO
|
|||||||
var/turf/location = get_turf(src)
|
var/turf/location = get_turf(src)
|
||||||
src.smoketime--
|
src.smoketime--
|
||||||
if(src.smoketime < 1)
|
if(src.smoketime < 1)
|
||||||
new /obj/effect/decal/ash(location)
|
new /obj/effect/decal/cleanable/ash(location)
|
||||||
if(ismob(src.loc))
|
if(ismob(src.loc))
|
||||||
var/mob/living/M = src.loc
|
var/mob/living/M = src.loc
|
||||||
M << "\red Your [src.name] goes out, and you empty the ash."
|
M << "\red Your [src.name] goes out, and you empty the ash."
|
||||||
|
|||||||
@@ -1703,10 +1703,6 @@
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
attackby(obj/item/I as obj, mob/user as mob)
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
afterattack(obj/target, mob/user , flag)
|
afterattack(obj/target, mob/user , flag)
|
||||||
|
|
||||||
if(target.is_open_container() == 1 && target.reagents)
|
if(target.is_open_container() == 1 && target.reagents)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
animation.master = src
|
animation.master = src
|
||||||
|
|
||||||
// flick("dust-m", animation)
|
// flick("dust-m", animation)
|
||||||
new /obj/effect/decal/ash(loc)
|
new /obj/effect/decal/cleanable/ash(loc)
|
||||||
|
|
||||||
spawn(15)
|
spawn(15)
|
||||||
if(animation) del(animation)
|
if(animation) del(animation)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
animation.master = src
|
animation.master = src
|
||||||
|
|
||||||
flick("dust-m", animation)
|
flick("dust-m", animation)
|
||||||
new /obj/effect/decal/ash(loc)
|
new /obj/effect/decal/cleanable/ash(loc)
|
||||||
|
|
||||||
spawn(15)
|
spawn(15)
|
||||||
if(animation) del(animation)
|
if(animation) del(animation)
|
||||||
|
|||||||
@@ -306,7 +306,7 @@
|
|||||||
|
|
||||||
if(mob.restrained())//Why being pulled while cuffed prevents you from moving
|
if(mob.restrained())//Why being pulled while cuffed prevents you from moving
|
||||||
for(var/mob/M in range(mob, 1))
|
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!"
|
src << "\blue You're restrained! You can't move!"
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
|
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/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/projectile_type = "/obj/item/projectile"
|
||||||
|
var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile.
|
||||||
//Effects
|
//Effects
|
||||||
var/stun = 0
|
var/stun = 0
|
||||||
var/weaken = 0
|
var/weaken = 0
|
||||||
@@ -127,6 +128,9 @@
|
|||||||
|
|
||||||
|
|
||||||
process()
|
process()
|
||||||
|
if(kill_count < 1)
|
||||||
|
del(src)
|
||||||
|
kill_count--
|
||||||
spawn while(src)
|
spawn while(src)
|
||||||
if((!( current ) || loc == current))
|
if((!( current ) || loc == current))
|
||||||
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)
|
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)
|
||||||
|
|||||||
Reference in New Issue
Block a user