diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index cfc21b375df..a6f86032bcc 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -87,12 +87,7 @@ 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 + set_respawn_time() if(mind) mind.store_memory("Time of death: [worldtime2text()]", 0) living_mob_list -= src @@ -105,6 +100,9 @@ return 1 +/mob/proc/set_respawn_time() + return + /mob/proc/exit_vr() // If we have a remotely controlled mob, we come back to our body to die properly if(vr_mob) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 2c2fffaace5..864d14b5d4b 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -266,4 +266,10 @@ return var/datum/D = mind.antag_datums[antag_role] if(D) - return D \ No newline at end of file + return D + +/mob/living/carbon/human/set_respawn_time() + if(species?.respawn_type) + set_death_time(species.respawn_type, world.time) + else + set_death_time(CREW, world.time) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm index 122a888b186..9b4c21a9fc7 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm @@ -55,6 +55,7 @@ blood_color = "#0084b8" flesh_color = "#0071db" + respawn_type = ANIMAL remains_type = /obj/effect/decal/cleanable/ash death_message = "dissolves into ash..." death_message_range = 7 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index c250ce86d02..f3a859f96ce 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -90,6 +90,7 @@ var/natural_climbing = FALSE //If true, the species always succeeds at climbing. var/climb_coeff = 1.25 //The coefficient to the climbing speed of the individual = 60 SECONDS * climb_coeff // Death vars. + var/respawn_type = CREW var/meat_type = /obj/item/reagent_containers/food/snacks/meat/human var/gibber_type = /obj/effect/gibspawner/human var/single_gib_type = /obj/effect/decal/cleanable/blood/gibs diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c95348b8ee0..ef26a3375c6 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1012,3 +1012,6 @@ default behaviour is: /mob/living/proc/add_hallucinate(var/amount) hallucination += amount hallucination += amount + +/mob/living/set_respawn_time() + set_death_time(CREW, world.time) \ 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 7cdba8ae5b4..4398ac4f8c7 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -539,5 +539,8 @@ var/selection = input(src, "Choose an icon for you card.") in pai_emotions card.setEmotion(pai_emotions[selection]) +/mob/living/silicon/pai/set_respawn_time() + set_death_time(MINISYNTH, world.time) + /obj/item/device/radio/pai canhear_range = 0 // only people on their tile diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 8a218dba9d5..346d8016d02 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -467,6 +467,9 @@ return dat +/mob/living/silicon/robot/drone/set_respawn_time() + set_death_time(MINISYNTH, world.time) + /mob/living/silicon/robot/drone/construction/Initialize() . = ..() var/turf/T = get_turf(src) @@ -502,4 +505,4 @@ for(var/mob/living/silicon/robot/drone/D in mob_list) if(D.key && D.client) drones++ - return drones >= config.max_maint_drones + return drones >= config.max_maint_drones \ 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 9885dd0b5a2..e951c2affd1 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -825,6 +825,9 @@ mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) else return /obj/effect/gibspawner/generic +/mob/living/simple_animal/set_respawn_time() + set_death_time(ANIMAL, world.time) + #undef BLOOD_NONE #undef BLOOD_LIGHT #undef BLOOD_MEDIUM diff --git a/html/changelogs/geeves-more_revenant_fixes.yml b/html/changelogs/geeves-more_revenant_fixes.yml new file mode 100644 index 00000000000..0c7fb54d29b --- /dev/null +++ b/html/changelogs/geeves-more_revenant_fixes.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Fixed revenants not having the correct respawn timer set." \ No newline at end of file