mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-29 11:31:38 +00:00
Adds decomposing animations for mice when dusted. They'll leave behind a little mouse skeleton Mice and lizards will decompose to a skeleton 30 mins after death, or if dusted Also some fixes to various small issues and runtime errors related to held mobs and supermatters.
103 lines
2.3 KiB
Plaintext
103 lines
2.3 KiB
Plaintext
//This is the proc for gibbing a mob. Cannot gib ghosts.
|
|
//added different sort of gibs and animations. N
|
|
/mob/proc/gib(anim="gibbed-m",do_gibs)
|
|
death(1)
|
|
transforming = 1
|
|
canmove = 0
|
|
icon = null
|
|
invisibility = 101
|
|
update_canmove()
|
|
dead_mob_list -= src
|
|
|
|
var/atom/movable/overlay/animation = null
|
|
animation = new(loc)
|
|
animation.icon_state = "blank"
|
|
animation.icon = 'icons/mob/mob.dmi'
|
|
animation.master = src
|
|
|
|
flick(anim, animation)
|
|
if(do_gibs) gibs(loc, viruses, dna)
|
|
|
|
spawn(15)
|
|
if(animation) qdel(animation)
|
|
if(src) qdel(src)
|
|
|
|
//This is the proc for turning a mob into ash. Mostly a copy of gib code (above).
|
|
//Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here.
|
|
//Dusting robots does not eject the MMI, so it's a bit more powerful than gib() /N
|
|
/mob/proc/dust(anim="dust-m",remains=/obj/effect/decal/cleanable/ash, iconfile = 'icons/mob/mob.dmi')
|
|
death(1)
|
|
if (istype(loc, /obj/item/weapon/holder))
|
|
var/obj/item/weapon/holder/H = loc
|
|
H.release_mob()
|
|
var/atom/movable/overlay/animation = null
|
|
transforming = 1
|
|
canmove = 0
|
|
icon = null
|
|
invisibility = 101
|
|
|
|
animation = new(loc)
|
|
animation.icon_state = "blank"
|
|
animation.icon = iconfile
|
|
animation.master = src
|
|
|
|
flick(anim, animation)
|
|
new remains(loc)
|
|
|
|
dead_mob_list -= src
|
|
spawn(15)
|
|
if(animation) qdel(animation)
|
|
if(src) qdel(src)
|
|
|
|
|
|
/mob/proc/death(gibbed,deathmessage="seizes up and falls limp...")
|
|
|
|
if(stat == DEAD)
|
|
return 0
|
|
|
|
facing_dir = null
|
|
|
|
if(!gibbed && deathmessage != "no message") // This is gross, but reliable. Only brains use it.
|
|
src.visible_message("<b>\The [src.name]</b> [deathmessage]")
|
|
|
|
stat = DEAD
|
|
|
|
update_canmove()
|
|
|
|
dizziness = 0
|
|
jitteriness = 0
|
|
|
|
layer = MOB_LAYER
|
|
|
|
if(blind && client)
|
|
blind.invisibility = 101
|
|
|
|
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
|
see_in_dark = 8
|
|
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
|
|
|
drop_r_hand()
|
|
drop_l_hand()
|
|
|
|
if(healths)
|
|
healths.icon_state = "health6"
|
|
|
|
timeofdeath = world.time
|
|
if (isanimal(src))
|
|
set_death_time(ANIMAL, world.time)
|
|
else if (ispAI(src) || isDrone(src))
|
|
set_death_time(MINISYNTH, world.time)
|
|
else if (isliving(src))
|
|
set_death_time(CREW, world.time)//Crew is the fallback
|
|
if(mind) mind.store_memory("Time of death: [worldtime2text()]", 0)
|
|
living_mob_list -= src
|
|
dead_mob_list |= src
|
|
|
|
updateicon()
|
|
|
|
if(ticker && ticker.mode)
|
|
ticker.mode.check_win()
|
|
|
|
|
|
return 1
|