diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 12bf73b43d4..49466400585 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1486,6 +1486,8 @@ if(species.default_language) remove_language(species.default_language) + species.handle_pre_loss(src) + species = all_species[new_species] if(oldspecies) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index f1fbf8c8299..e0c35cbffa0 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -308,6 +308,14 @@ /datum/species/proc/handle_post_spawn(var/mob/living/carbon/C) //Handles anything not already covered by basic species assignment. handle_dna(C) + for (var/foo in abilities) + C.verbs |= foo + return + +// Used so that species lose their abilities before +/datum/species/proc/handle_pre_loss(var/mob/living/carbon/C) + for (var/foo in abilities) + C.verbs -= foo return /datum/species/proc/handle_dna(var/mob/living/carbon/C, var/remove) //Handles DNA mutations, as that doesn't work at init. diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index b8a8338ccab..ebab34d6fc7 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -527,11 +527,9 @@ "r_foot" = list("path" = /obj/item/organ/external/foot/right/ipc) ) + abilities = list(/mob/living/carbon/human/proc/change_monitor,) + /datum/species/machine/handle_death(var/mob/living/carbon/human/H) H.h_style = "" spawn(100) if(H) H.update_hair() - -/datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H) - ..() - H.verbs += /mob/living/carbon/human/proc/change_monitor diff --git a/html/changelogs/crazylemon-funisdumb.yml b/html/changelogs/crazylemon-funisdumb.yml new file mode 100644 index 00000000000..57184327dce --- /dev/null +++ b/html/changelogs/crazylemon-funisdumb.yml @@ -0,0 +1,7 @@ +author: Crazylemon + +delete-after: True + +changes: + - rscadd: "Fully enables a system to allow species to have unique procs and verbs that come and go with the species." + - rscdel: "IPCs lose their change monitor verb when changing species now. Gone are the days of recalling a past IPC life to perform self-barbery! Oh, woe is me!"