diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 42651ea720..94e9b2ffd0 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -302,4 +302,10 @@ /obj/item/device/paicard/emp_act(severity) for(var/mob/M in src) M.emp_act(severity) - ..() \ No newline at end of file + ..() + +/obj/item/device/paicard/ex_act(severity) + if(pai) + pai.ex_act(severity) + else + del(src) \ No newline at end of file diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index dc1ca25727..cf9fb022e0 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -1,6 +1,6 @@ //This is the proc for gibbing a mob. Cannot gib ghosts. //added different sort of gibs and animations. N -/mob/proc/gib() +/mob/proc/gib(var/anim,var/do_gibs) death(1) var/atom/movable/overlay/animation = null monkeyizing = 1 @@ -13,19 +13,21 @@ animation.icon = 'icons/mob/mob.dmi' animation.master = src -// flick("gibbed-m", animation) - gibs(loc, viruses, dna) + update_canmove() + + flick((anim ? anim : "gibbed-m"), animation) + if(do_gibs) + gibs(loc, viruses, dna) dead_mob_list -= src spawn(15) if(animation) del(animation) if(src) del(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() +/mob/proc/dust(var/anim,var/remains) death(1) var/atom/movable/overlay/animation = null monkeyizing = 1 @@ -38,8 +40,11 @@ animation.icon = 'icons/mob/mob.dmi' animation.master = src -// flick("dust-m", animation) - new /obj/effect/decal/cleanable/ash(loc) + flick(anim ? anim : "dust-m", animation) + if(remains) + new remains(loc) + else + new /obj/effect/decal/cleanable/ash(loc) dead_mob_list -= src spawn(15) @@ -47,17 +52,45 @@ if(src) del(src) -/mob/proc/death(gibbed) +/mob/proc/death(gibbed,deathmessage) + + if(stat == DEAD) + return 0 + + if(!gibbed) + src.visible_message("\The [src.name] [deathmessage ? deathmessage : "seizes up and falls limp..."]") + + stat = DEAD + + update_canmove() + + dizziness = 0 + jitteriness = 0 + + layer = MOB_LAYER + + if(blind && client) + blind.layer = 0 + + sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_LEVEL_TWO - //Quick fix for corpses kept propped up in chairs. ~Z drop_r_hand() drop_l_hand() - //End of fix. + + if(healths) + healths.icon_state = "health6" timeofdeath = world.time - - var/tod = worldtime2text() //weasellos time of death patch - if(mind) mind.store_memory("Time of death: [tod]", 0) + if(mind) mind.store_memory("Time of death: [worldtime2text()]", 0) living_mob_list -= src - dead_mob_list += src - return ..(gibbed) + dead_mob_list |= src + + updateicon() + + if(ticker && ticker.mode) + ticker.mode.check_win() + + + return 1 diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm index ec90c4fb7f..2b82ccbedb 100644 --- a/code/modules/mob/living/blob/blob.dm +++ b/code/modules/mob/living/blob/blob.dm @@ -52,14 +52,8 @@ death(gibbed) - if(key) - var/mob/dead/observer/ghost = new(src) - ghost.name = ghost_name - ghost.real_name = ghost_name - ghost.key = key - if (ghost.client) - ghost.client.eye = ghost - return ..(gibbed) + ghostize() + ..(gibbed) blob_act() diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 7dfd2cc0eb..3c56165213 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -1,13 +1,4 @@ /mob/living/carbon/alien/death(gibbed) - - if(stat == DEAD) return - if(healths) healths.icon_state = "health6" - stat = DEAD - - if(dead_icon) icon_state = dead_icon - - if(!gibbed) - update_canmove() - if(client) blind.layer = 0 - - return ..(gibbed) \ No newline at end of file + if(!gibbed && dead_icon) + icon_state = dead_icon + return ..(gibbed,"lets out a waning guttural screech, green blood bubbling from its maw.") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm index 0efcae7c91..175b14aa21 100644 --- a/code/modules/mob/living/carbon/alien/emote.dm +++ b/code/modules/mob/living/carbon/alien/emote.dm @@ -36,6 +36,9 @@ if (!muzzled) message = "[src] burps." m_type = 2 + if("deathgasp") + message = "The [src.name] lets out a waning guttural screech, green blood bubbling from its maw." + m_type = 2 if("scratch") if (!src.restrained()) message = "The [src.name] scratches." diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 897b03c8a1..3a548669ba 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -1,43 +1,13 @@ /mob/living/carbon/brain/death(gibbed) - if(stat == DEAD) return - if(!gibbed && container && istype(container, /obj/item/device/mmi))//If not gibbed but in a container. - for(var/mob/O in viewers(container, null)) - O.show_message(text("\red []'s MMI flatlines!", src), 1, "\red You hear something flatline.", 2) + if(!gibbed && container && istype(container, /obj/item/device/mmi)) //If not gibbed but in a container. container.icon_state = "mmi_dead" - stat = DEAD - - if(blind) blind.layer = 0 - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - - tod = worldtime2text() //weasellos time of death patch - if(mind) mind.store_memory("Time of death: [tod]", 0) //mind. ? - - return ..(gibbed) + return ..(gibbed,"beeps shrilly as the MMI flatlines!") /mob/living/carbon/brain/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("gibbed-m", animation) - gibs(loc, viruses, dna) - - dead_mob_list -= src if(container && istype(container, /obj/item/device/mmi)) del(container)//Gets rid of the MMI if there is one if(loc) if(istype(loc,/obj/item/organ/brain)) del(loc)//Gets rid of the brain item - spawn(15) - if(animation) del(animation) - if(src) del(src) \ No newline at end of file + ..(null,1) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 03dd42b031..37da1745d2 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -57,7 +57,7 @@ for(var/mob/N in viewers(src, null)) if(N.client) N.show_message(text("\red [M] bursts out of [src]!"), 2) - . = ..() + . = ..(null,1) /mob/living/carbon/attack_hand(mob/M as mob) if(!istype(M, /mob/living/carbon)) return diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index f97397fe4c..fea5366a7f 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,15 +1,4 @@ /mob/living/carbon/human/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src for(var/datum/organ/external/E in src.organs) if(istype(E, /datum/organ/external/chest)) @@ -19,49 +8,25 @@ // Override the current limb status and don't cause an explosion E.droplimb(1,1) + ..(species ? species.gibbed_anim : "gibbed-h") + if(species) - flick(species.gibbed_anim, animation) hgibs(loc, viruses, dna, species.flesh_color, species.blood_color) else - flick("gibbed-h", animation) hgibs(loc, viruses, dna) - spawn(15) - if(animation) del(animation) - if(src) del(src) - /mob/living/carbon/human/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick(species.dusted_anim, animation) - new species.remains_type(loc) - - spawn(15) - if(animation) del(animation) - if(src) del(src) - + if(species) + ..(species.dusted_anim, species.remains_type) + else + ..() /mob/living/carbon/human/death(gibbed) - if(stat == DEAD) return - if(healths) healths.icon_state = "health5" - stat = DEAD - dizziness = 0 - jitteriness = 0 + if(stat == DEAD) return hud_updateflag |= 1 << HEALTH_HUD hud_updateflag |= 1 << STATUS_HUD - handle_hud_list() //Handle species-specific deaths. @@ -88,36 +53,16 @@ callHook("death", list(src, gibbed)) - //Check for heist mode kill count. - if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist) ) ) - //Check for last assailant's mutantrace. - /*if( LAssailant && ( istype( LAssailant,/mob/living/carbon/human ) ) ) - var/mob/living/carbon/human/V = LAssailant - if (V.dna && (V.dna.mutantrace == "vox"))*/ //Not currently feasible due to terrible LAssailant tracking. - //world << "Vox kills: [vox_kills]" - vox_kills++ //Bad vox. Shouldn't be killing humans. + if(!gibbed && species.death_sound) + playsound(loc, species.death_sound, 80, 1, 1) - if(!gibbed) - - emote("deathgasp") //let the world KNOW WE ARE DEAD // Doing this with the deathgasp emote seems odd. - if(species && species.death_sound) playsound(loc, species.death_sound, 80, 1, 1) - - //For ninjas exploding when they die. - if( istype(wear_suit, /obj/item/clothing/suit/space/space_ninja) && wear_suit:s_initialized ) - src << browse(null, "window=spideros")//Just in case. - var/location = loc - explosion(location, 0, 0, 3, 4) - - update_canmove() - if(client) blind.layer = 0 - - tod = worldtime2text() //weasellos time of death patch - if(mind) mind.store_memory("Time of death: [tod]", 0) if(ticker && ticker.mode) -// world.log << "k" sql_report_death(src) - ticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now - return ..(gibbed) + ticker.mode.check_win() + if(istype(ticker.mode,/datum/game_mode/heist)) + vox_kills++ //Bad vox. Shouldn't be killing humans. + + return ..(gibbed,species.death_message) /mob/living/carbon/human/proc/makeSkeleton() if(SKELETON in src.mutations) return diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index b8e004e201..2ebc5c576b 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -1,4 +1,8 @@ /mob/living/carbon/slime/death(gibbed) + + if(stat == DEAD) return + stat = DEAD + if(!gibbed) if(is_adult) var/mob/living/carbon/slime/M = new /mob/living/carbon/slime(loc) @@ -12,17 +16,7 @@ name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" return - if(stat == DEAD) return - stat = DEAD icon_state = "[colour] baby slime dead" - overlays.len = 0 - for(var/mob/O in viewers(src, null)) - O.show_message("The [name] seizes up and falls limp...", 1) //ded -- Urist - - update_canmove() - if(blind) blind.layer = 0 - - if(ticker && ticker.mode) - ticker.mode.check_win() + overlays.Cut() return ..(gibbed) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index 8e982eb935..6d0c48c804 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,56 +1,8 @@ /mob/living/carbon/monkey/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("gibbed-m", animation) - gibs(loc, viruses, dna) - - spawn(15) - if(animation) del(animation) - if(src) del(src) + ..(null,1) /mob/living/carbon/monkey/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("dust-m", animation) - new /obj/effect/decal/cleanable/ash(loc) - - spawn(15) - if(animation) del(animation) - if(src) del(src) - + ..("dust-m") /mob/living/carbon/monkey/death(gibbed) - if(stat == DEAD) return - if(healths) healths.icon_state = "health5" - stat = DEAD - - if(!gibbed) - for(var/mob/O in viewers(src, null)) - O.show_message("The [name] lets out a faint chimper as it collapses and stops moving...", 1) //ded -- Urist - - update_canmove() - if(blind) blind.layer = 0 - - ticker.mode.check_win() - - return ..(gibbed) \ No newline at end of file + ..(gibbed,"lets out a faint chimper as it collapses and stops moving...") \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index aaf82a90c3..1919cf8b62 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -385,13 +385,6 @@ var/list/ai_verbs_default = list( user.reset_view(camera) return 1 -/mob/living/silicon/ai/blob_act() - if (stat != 2) - adjustBruteLoss(60) - updatehealth() - return 1 - return 0 - /mob/living/silicon/ai/restrained() return 0 @@ -404,26 +397,6 @@ var/list/ai_verbs_default = list( ai_call_shuttle() ..() -/mob/living/silicon/ai/ex_act(severity) - if(!blinded) - flick("flash", flash) - - switch(severity) - if(1.0) - if (stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) - if(2.0) - if (stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) - if(3.0) - if (stat != 2) - adjustBruteLoss(30) - - updatehealth() - - /mob/living/silicon/ai/Topic(href, href_list) if(usr != src) return @@ -481,7 +454,7 @@ var/list/ai_verbs_default = list( else src << "\red System error. Cannot locate [html_decode(href_list["trackname"])]." return - + return /mob/living/silicon/ai/meteorhit(obj/O as obj) @@ -495,11 +468,6 @@ var/list/ai_verbs_default = list( updatehealth() return -/mob/living/silicon/ai/bullet_act(var/obj/item/projectile/Proj) - ..(Proj) - updatehealth() - return 2 - /mob/living/silicon/ai/attack_animal(mob/living/M as mob) if(M.melee_damage_upper == 0) M.emote("[M.friendly] [src]") diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index f2cd262f4c..456940bc25 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -1,20 +1,19 @@ /mob/living/silicon/ai/death(gibbed) - if(stat == DEAD) return - stat = DEAD + + if(stat == DEAD) + return + if (src.custom_sprite == 1)//check for custom AI sprite, defaulting to blue screen if no. icon_state = "[ckey]-ai-crash" - else icon_state = "ai-crash" - update_canmove() + else + icon_state = "ai-crash" + if(src.eyeobj) src.eyeobj.setLoc(get_turf(src)) - if(blind) blind.layer = 0 - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO + remove_ai_verbs(src) var/callshuttle = 0 - for(var/obj/machinery/computer/communications/commconsole in world) if(commconsole.z == 2) continue @@ -48,13 +47,10 @@ spawn(10) explosion(src.loc, 3, 6, 12, 15) - for(var/obj/machinery/ai_status_display/O in world) //change status + for(var/obj/machinery/ai_status_display/O in world) spawn( 0 ) O.mode = 2 if (istype(loc, /obj/item/device/aicard)) loc.icon_state = "aicard-404" - tod = worldtime2text() //weasellos time of death patch - if(mind) mind.store_memory("Time of death: [tod]", 0) - return ..(gibbed) diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 45b0268437..2b56af7537 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,41 +1,12 @@ /mob/living/silicon/gib() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("gibbed-r", animation) + ..("gibbed-r") robogibs(loc, viruses) - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) - /mob/living/silicon/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 + ..("dust-r", /obj/effect/decal/remains/robot) - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - -// flick("dust-r", animation) - new /obj/effect/decal/remains/robot(loc) - - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) +/mob/living/silicon/death(gibbed,deathmessage) + if(in_contents_of(/obj/machinery/recharge_station))//exit the recharge station + var/obj/machinery/recharge_station/RC = loc + RC.go_out() + return ..(gibbed,deathmessage) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/decoy/death.dm b/code/modules/mob/living/silicon/decoy/death.dm index d3996e2fa7..b94a311ef7 100644 --- a/code/modules/mob/living/silicon/decoy/death.dm +++ b/code/modules/mob/living/silicon/decoy/death.dm @@ -1,10 +1,8 @@ /mob/living/silicon/decoy/death(gibbed) if(stat == DEAD) return - stat = DEAD icon_state = "ai-crash" spawn(10) explosion(loc, 3, 6, 12, 15) - for(var/obj/machinery/ai_status_display/O in world) //change status O.mode = 2 return ..(gibbed) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index 127091a854..87e70393d0 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -1,18 +1,13 @@ /mob/living/silicon/pai/death(gibbed) - if(stat == DEAD) return - stat = DEAD - canmove = 0 - if(blind) blind.layer = 0 - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - - //var/tod = time2text(world.realtime,"hh:mm:ss") //weasellos time of death patch - //mind.store_memory("Time of death: [tod]", 0) - - //New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here. - //Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak - if(mind) del(mind) - living_mob_list -= src + if(card) + card.removePersonality() + if(gibbed) + src.loc = get_turf(card) + del(card) + else + close_up() + if(mind) + del(mind) + ..(gibbed) ghostize() del(src) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 423287f60c..6c099af932 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -1,6 +1,8 @@ /mob/living/silicon/pai/Life() + if (src.stat == 2) return + if(src.cable) if(get_dist(src, src.cable) > 1) var/turf/T = get_turf_or_move(src.loc) @@ -9,20 +11,26 @@ del(src.cable) regular_hud_updates() + if(src.secHUD == 1) process_sec_hud(src, 1) + if(src.medHUD == 1) process_med_hud(src, 1) + if(silence_time) if(world.timeofday >= silence_time) silence_time = null src << "Communication circuit reinitialized. Speech and messaging functionality restored." + handle_statuses() + if(health <= 0) + death(null,"gives one shrill beep before falling lifeless.") + /mob/living/silicon/pai/updatehealth() if(status_flags & GODMODE) health = 100 stat = CONSCIOUS else - health = 100 - getBruteLoss() - getFireLoss() - + health = 100 - getBruteLoss() - getFireLoss() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 90336528c6..556dbd0014 100755 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -169,28 +169,7 @@ if(3) src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all." -/mob/living/silicon/pai/ex_act(severity) - if(!blinded) - flick("flash", src.flash) - - switch(severity) - if(1.0) - if (src.stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) - if(2.0) - if (src.stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) - if(3.0) - if (src.stat != 2) - adjustBruteLoss(30) - - src.updatehealth() - - // See software.dm for Topic() - /mob/living/silicon/pai/meteorhit(obj/O as obj) for(var/mob/M in viewers(src, null)) M.show_message(text("\red [] has been hit by []", src, O), 1) @@ -201,10 +180,6 @@ src.updatehealth() return -//mob/living/silicon/pai/bullet_act(var/obj/item/projectile/Proj) - -///mob/living/silicon/pai/attack_hand(mob/living/carbon/M as mob) - /mob/living/silicon/pai/proc/switchCamera(var/obj/machinery/camera/C) if(istype(usr, /mob/living)) var/mob/living/U = usr @@ -374,7 +349,8 @@ src.updatehealth() else visible_message("[user.name] bonks [src] harmlessly with [W].") - if(stat != 2) close_up() + spawn(1) + if(stat != 2) close_up() return /mob/living/silicon/pai/attack_hand(mob/user as mob) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index b16efbc34f..ca3c80d3a7 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,72 +1,15 @@ -/mob/living/silicon/robot/gib() - //robots don't die when gibbed. instead they drop their MMI'd brain - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("gibbed-r", animation) - robogibs(loc, viruses) - - living_mob_list -= src - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) - /mob/living/silicon/robot/dust() - death(1) - var/atom/movable/overlay/animation = null - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - flick("dust-r", animation) - new /obj/effect/decal/remains/robot(loc) - if(mmi) del(mmi) //Delete the MMI first so that it won't go popping out. - - dead_mob_list -= src - spawn(15) - if(animation) del(animation) - if(src) del(src) - + //Delete the MMI first so that it won't go popping out. + if(mmi) + del(mmi) + ..() /mob/living/silicon/robot/death(gibbed) - if(stat == DEAD) return - if(!gibbed) - emote("deathgasp") - stat = DEAD - update_canmove() if(camera) camera.status = 0 - - if(in_contents_of(/obj/machinery/recharge_station))//exit the recharge station - var/obj/machinery/recharge_station/RC = loc - RC.go_out() - + if(module) + var/obj/item/weapon/gripper/G = locate(/obj/item/weapon/gripper) in module + if(G) G.drop_item() remove_robot_verbs() - - if(blind) blind.layer = 0 - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - updateicon() - - tod = worldtime2text() //weasellos time of death patch - if(mind) mind.store_memory("Time of death: [tod]", 0) - sql_report_cyborg_death(src) - - return ..(gibbed) \ No newline at end of file + ..(gibbed,"shudders violently for a moment, then becomes motionless, its eyes slowly darkening.") diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 2aaa75fae1..d31f537e1a 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -200,14 +200,6 @@ return ..() -/mob/living/silicon/robot/drone/death(gibbed) - - if(module) - var/obj/item/weapon/gripper/G = locate(/obj/item/weapon/gripper) in module - if(G) G.drop_item() - - ..(gibbed) - //DRONE MOVEMENT. /mob/living/silicon/robot/drone/Process_Spaceslipping(var/prob_slip) //TODO: Consider making a magboot item for drones to equip. ~Z diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 9fc052fde2..bc112a0840 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -455,13 +455,6 @@ var/list/robot_verbs_default = list( C.toggled = 1 src << "\red You enable [C.name]." -/mob/living/silicon/robot/blob_act() - if (stat != 2) - adjustBruteLoss(60) - updatehealth() - return 1 - return 0 - // this function shows information about the malf_ai gameplay type in the status screen /mob/living/silicon/robot/show_malf_ai() ..() @@ -515,29 +508,6 @@ var/list/robot_verbs_default = list( /mob/living/silicon/robot/restrained() return 0 - -/mob/living/silicon/robot/ex_act(severity) - if(!blinded) - flick("flash", flash) - - switch(severity) - if(1.0) - if (stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) - gib() - return - if(2.0) - if (stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) - if(3.0) - if (stat != 2) - adjustBruteLoss(30) - - updatehealth() - - /mob/living/silicon/robot/meteorhit(obj/O as obj) for(var/mob/M in viewers(src, null)) M.show_message(text("\red [src] has been hit by [O]"), 1) @@ -549,14 +519,11 @@ var/list/robot_verbs_default = list( updatehealth() return - /mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj) ..(Proj) - updatehealth() if(prob(75) && Proj.damage > 0) spark_system.start() return 2 - /mob/living/silicon/robot/Bump(atom/movable/AM as mob|obj, yes) spawn( 0 ) if ((!( yes ) || now_pushing)) @@ -988,7 +955,7 @@ var/list/robot_verbs_default = list( return 1 return 0 -/mob/living/silicon/robot/proc/updateicon() +/mob/living/silicon/robot/updateicon() overlays.Cut() if(stat == 0) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f3cc857b17..ee4f34db81 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -67,8 +67,14 @@ /mob/living/silicon/IsAdvancedToolUser() return 1 -/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj) +/mob/living/silicon/blob_act() + if (src.stat != 2) + src.adjustBruteLoss(60) + src.updatehealth() + return 1 + return 0 +/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj) if(!Proj.nodamage) switch(Proj.damage_type) @@ -78,7 +84,7 @@ adjustFireLoss(Proj.damage) Proj.on_hit(src,2) - + updatehealth() return 2 /mob/living/silicon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0) @@ -222,4 +228,25 @@ flavor_text = copytext(sanitize(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text), 1) /mob/living/silicon/binarycheck() - return 1 \ No newline at end of file + return 1 + +/mob/living/silicon/ex_act(severity) + if(!blinded) + flick("flash", flash) + + switch(severity) + if(1.0) + if (stat != 2) + adjustBruteLoss(100) + adjustFireLoss(100) + if(!anchored) + gib() + if(2.0) + if (stat != 2) + adjustBruteLoss(60) + adjustFireLoss(60) + if(3.0) + if (stat != 2) + adjustBruteLoss(30) + + updatehealth() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 3abf928244..fe0bda0b06 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -35,14 +35,10 @@ spell_list += new spell(src) /mob/living/simple_animal/construct/death() - ..() new /obj/item/weapon/ectoplasm (src.loc) - for(var/mob/M in viewers(src, null)) - if((M.client && !( M.blinded ))) - M.show_message("\red [src] collapses in a shattered heap. ") + ..(null,"collapses in a shattered heap.") ghostize() del src - return /mob/living/simple_animal/construct/examine() set src in oview() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index d239e88c6d..1a1aef1e83 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -43,11 +43,8 @@ /mob/living/simple_animal/hostile/mimic/death() ..() - visible_message("\red [src] stops moving!") del(src) - - // // Crate Mimic // diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index ddbd35d0e3..e5474dbcd2 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -158,8 +158,7 @@ walk(src,0) /mob/living/simple_animal/hostile/retaliate/malf_drone/death() - src.visible_message("\blue \icon[src] [src] suddenly breaks apart.") - ..() + ..(null,"suddenly breaks apart.") del(src) /mob/living/simple_animal/hostile/retaliate/malf_drone/Del() diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index ff9aba71a4..e2678bc2f8 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -158,7 +158,5 @@ minbodytemp = 0 /mob/living/simple_animal/hostile/viscerator/death() - ..() - visible_message("\red [src] is smashed into pieces!") - del src - return \ No newline at end of file + ..(null,"is smashed into pieces!") + del src \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index 7f44f8a9b1..63d2f570f0 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -51,7 +51,6 @@ L.visible_message("\the [src] knocks down \the [L]!") /mob/living/simple_animal/hostile/tree/death() - ..() - visible_message("\red [src] is hacked into pieces!") + ..(null,"is hacked into pieces!") new /obj/item/stack/sheet/wood(loc) del(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e06d1af938..11713801aa 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -197,12 +197,10 @@ ..() /mob/living/simple_animal/gib() - if(icon_gib) - flick(icon_gib, src) if(meat_amount && meat_type) for(var/i = 0; i < meat_amount; i++) new meat_type(src.loc) - ..() + ..(icon_gib,1) /mob/living/simple_animal/emote(var/act, var/type, var/desc) if(act) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9e8a8c65fa..de4023163a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1080,3 +1080,6 @@ mob/proc/yank_out_object() return I return 0 + +/mob/proc/updateicon() + return \ No newline at end of file