mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-23 00:22:12 +00:00
Ported the clickcatcher from tg/bay. You can now click black spots to turn. Isn't that handy, especially with vision cones.
Reworked fullscreen overlays into an easier and better system, courtesy of PsiOmegaDelta.
Similiarly, added fadeout animations to all pain overlays, plus unconsciousness.
Fixed the vampire frenzy overlay never showing.
Unconsciousness is now FULL darkness.
Flashing mobs is now an inbuilt proc.
115 lines
2.8 KiB
Plaintext
115 lines
2.8 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, get_gibs_type())
|
|
|
|
QDEL_IN(animation, 15)
|
|
QDEL_IN(src, 15)
|
|
|
|
/mob/proc/get_gibs_type()
|
|
return /obj/effect/gibspawner/generic
|
|
|
|
//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/holder))
|
|
var/obj/item/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
|
|
|
|
QDEL_IN(animation, 15)
|
|
QDEL_IN(src, 15)
|
|
|
|
/mob/proc/death(gibbed,deathmessage="seizes up and falls limp...", messagerange = world.view)
|
|
|
|
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]", range = messagerange)
|
|
|
|
exit_vr()
|
|
|
|
stat = DEAD
|
|
|
|
update_canmove()
|
|
|
|
dizziness = 0
|
|
jitteriness = 0
|
|
|
|
layer = MOB_LAYER
|
|
|
|
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.overlays.Cut() // This is specific to humans but the relevant code is here; shouldn't mess with other mobs.
|
|
if("health7" in icon_states(healths.icon))
|
|
healths.icon_state = "health7"
|
|
|
|
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
|
|
|
|
update_icon()
|
|
|
|
if(SSticker.mode)
|
|
SSticker.mode.check_win()
|
|
|
|
return 1
|
|
|
|
/mob/proc/exit_vr()
|
|
// If we have a remotely controlled mob, we come back to our body to die properly
|
|
if(vr_mob)
|
|
vr_mob.body_return()
|
|
// Alternatively, if we are the remotely controlled mob, just kick our controller out
|
|
if(old_mob)
|
|
body_return()
|