Change humanoid gibbing to use per species gib() act. (#24819)

* Unique gibbing proc for each humanoid species

* remove else add return

* Update species.dm

* Update species.dm

* im not sure what to title this

* remove as mob
This commit is contained in:
Ephememory
2019-11-11 11:20:53 -05:00
committed by Kurfursten
parent df6007eb94
commit 6f745d17fc
2 changed files with 94 additions and 3 deletions

View File

@@ -1,10 +1,17 @@
/mob/living/carbon/human/gib()
if(species)
species.gib(src)
return
death(1)
monkeyizing = 1
canmove = 0
icon = null
invisibility = 101
default_gib()
//This will get called often at first until custom gibbing events get made up for each species.
/mob/living/carbon/human/proc/default_gib()
for(var/datum/organ/external/E in src.organs)
if(istype(E, /datum/organ/external/chest) || istype(E, /datum/organ/external/groin)) //Really bad stuff happens when either get removed
continue
@@ -19,7 +26,8 @@
anim(target = src, a_icon = 'icons/mob/mob.dmi', flick_anim = "gibbed-h", sleeptime = 15)
hgibs(loc, virus2, dna, species.flesh_color, species.blood_color, gib_radius)
qdel(src)
qdel(src)
/mob/living/carbon/human/dust(var/drop_everything = FALSE)
death(1)

View File

@@ -157,6 +157,13 @@ var/global/list/whitelisted_species = list("Human")
myhuman = null
..()
/datum/species/proc/gib(var/mob/living/carbon/human/H)
H.death(1)
H.monkeyizing = 1
H.canmove = 0
H.icon = null
H.invisibility = 101
/datum/species/proc/handle_speech(var/datum/speech/speech, mob/living/carbon/human/H)
if(H.dna)
if(length(speech.message) >= 2)
@@ -298,6 +305,10 @@ var/global/list/whitelisted_species = list("Human")
anatomy_flags = HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT | HAS_SWEAT_GLANDS
/datum/species/human/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/manifested
name = "Manifested"
icobase = 'icons/mob/human_races/r_manifested.dmi'
@@ -344,6 +355,9 @@ var/global/list/whitelisted_species = list("Human")
/datum/species/manifested/can_artifact_revive()
return 0
/datum/species/manifested/gib(mob/living/carbon/human/H)
handle_death(H)
/datum/species/unathi
name = "Unathi"
icobase = 'icons/mob/human_races/r_lizard.dmi'
@@ -377,6 +391,9 @@ var/global/list/whitelisted_species = list("Human")
speech.message = replacetext(speech.message, "s", "s-s") //not using stutter("s") because it likes adding more s's.
speech.message = replacetext(speech.message, "s-ss-s", "ss-ss") //asshole shows up as ass-sshole
/datum/species/unathi/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/skellington // /vg/
name = "Skellington"
@@ -418,6 +435,19 @@ var/global/list/whitelisted_species = list("Human")
/datum/species/skellington/can_artifact_revive()
return 0
/datum/species/skellington/gib(mob/living/carbon/human/H)
..()
var/datum/organ/external/head_organ = H.get_organ(LIMB_HEAD)
if(head_organ.status & ORGAN_DESTROYED)
new /obj/effect/decal/remains/human/noskull(H.loc)
else
new /obj/effect/decal/remains/human(H.loc)
head_organ.droplimb(1,1)
H.drop_all()
qdel(src)
/datum/species/skellington/skelevox // Science never goes too far, it's the public that's too conservative
name = "Skeletal Vox"
icobase = 'icons/mob/human_races/vox/r_voxboney.dmi'
@@ -565,6 +595,10 @@ var/global/list/whitelisted_species = list("Human")
speech.message = speech_filter.FilterSpeech(speech.message)
return ..()
/datum/species/tajaran/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/grey // /vg/
name = "Grey"
icobase = 'icons/mob/human_races/r_grey.dmi'
@@ -612,6 +646,10 @@ var/global/list/whitelisted_species = list("Human")
You are particularly allergic to water, which acts like acid to you, but the inverse is so for acid, so you're fun at parties.<br>\
You're not as good in a fist fight as a regular baseline human, but you make up for this by bullying them from afar by talking directly into peoples minds."
/datum/species/grey/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/muton // /vg/
name = "Muton"
icobase = 'icons/mob/human_races/r_muton.dmi'
@@ -650,6 +688,10 @@ var/global/list/whitelisted_species = list("Human")
move_speed_mod = 1
/datum/species/muton/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/skrell
name = "Skrell"
icobase = 'icons/mob/human_races/r_skrell.dmi'
@@ -666,7 +708,10 @@ var/global/list/whitelisted_species = list("Human")
head_icons = 'icons/mob/species/skrell/head.dmi'
wear_suit_icons = 'icons/mob/species/skrell/suit.dmi'
/datum/species/skrell/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/vox
name = "Vox"
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
@@ -871,6 +916,10 @@ var/global/list/whitelisted_species = list("Human")
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
/datum/species/vox/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/diona
name = "Diona"
icobase = 'icons/mob/human_races/r_plant.dmi'
@@ -909,6 +958,10 @@ var/global/list/whitelisted_species = list("Human")
You do not need to breathe, do not feel pain, you are incredibly resistant to cold and low pressure, and have no blood to bleed.<br>\
However, as you are a plant, you are incredibly susceptible to burn damage, which is something you can not regenerate normally."
/datum/species/diona/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/golem
name = "Golem"
icobase = 'icons/mob/human_races/r_golem.dmi'
@@ -983,6 +1036,9 @@ var/list/has_died_as_golem = list()
/datum/species/golem/can_artifact_revive()
return 0
/datum/species/golem/gib(mob/living/carbon/human/H)
handle_death()
/mob/living/adamantine_dust //serves as the corpse of adamantine golems
name = "adamantine dust"
desc = "The remains of an adamantine golem."
@@ -1059,7 +1115,10 @@ var/list/has_died_as_golem = list()
/datum/species/grue/makeName()
return "grue"
/datum/species/grue/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/ghoul
name = "Ghoul"
icobase = 'icons/mob/human_races/r_ghoul.dmi'
@@ -1077,6 +1136,10 @@ var/list/has_died_as_golem = list()
primitive = /mob/living/carbon/monkey //Just to keep them SoC friendly.
/datum/species/ghoul/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/slime
name = "Slime"
icobase = 'icons/mob/human_races/r_slime.dmi'
@@ -1124,6 +1187,10 @@ var/list/has_died_as_golem = list()
S.slime_person = H
H.forceMove(S)
/datum/species/slime/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/mob/living/slime_pile //serves as the corpse of slime people
name = "puddle of slime"
desc = "The remains of a slime person."
@@ -1241,6 +1308,10 @@ var/list/has_died_as_golem = list()
However, you lack a mouth with which to talk. Instead you can remotely talk into somebodies mind should you examine them, or they talk to you.<br>\
You also have access to the Sporemind, which allows you to communicate with others on the Sporemind through :~"
/datum/species/mushroom/gib(mob/living/carbon/human/H)
..()
H.default_gib()
/datum/species/lich
name = "Undead"
icobase = 'icons/mob/human_races/r_lich.dmi'
@@ -1265,3 +1336,15 @@ var/list/has_died_as_golem = list()
A more refined version of the skellington, you're not as brittle, but not quite as fast.<br>\
You have no skin, no blood, and only a brain to guide you.<br>\
You can not eat normally, as your necrotic state permits you to only eat raw flesh. As you lack skin, you can not be injected via syringe."
/datum/species/lich/gib(mob/living/carbon/human/H)
..()
var/datum/organ/external/head_organ = H.get_organ(LIMB_HEAD)
if(head_organ.status & ORGAN_DESTROYED)
new /obj/effect/decal/remains/human/noskull(H.loc)
else
new /obj/effect/decal/remains/human(H.loc)
head_organ.droplimb(1,1)
H.drop_all()
qdel(src)