mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 07:38:05 +01:00
Mass purrbation affects mutant species (#46779)
* mass purrbation affects all species * mass purrbation code cleanup * remove mass purrbation gives mutant species their special ears and tails back * mass purrbation syntax fix * remove mass purrbation does not remove felinid from original felinids * fuck you travis
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
mutantears = /obj/item/organ/ears/cat
|
||||
mutanttail = /obj/item/organ/tail/cat
|
||||
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
|
||||
var/original_felinid = TRUE //set to false for felinids created by mass-purrbation
|
||||
|
||||
/datum/species/human/felinid/qualifies_for_rank(rank, list/features)
|
||||
return TRUE
|
||||
@@ -108,13 +109,13 @@
|
||||
|
||||
/proc/mass_purrbation()
|
||||
for(var/M in GLOB.mob_list)
|
||||
if(ishumanbasic(M))
|
||||
if(ishuman(M))
|
||||
purrbation_apply(M)
|
||||
CHECK_TICK
|
||||
|
||||
/proc/mass_remove_purrbation()
|
||||
for(var/M in GLOB.mob_list)
|
||||
if(ishumanbasic(M))
|
||||
if(ishuman(M))
|
||||
purrbation_remove(M)
|
||||
CHECK_TICK
|
||||
|
||||
@@ -131,17 +132,35 @@
|
||||
/proc/purrbation_apply(mob/living/carbon/human/H, silent = FALSE)
|
||||
if(!ishuman(H) || isfelinid(H))
|
||||
return
|
||||
H.set_species(/datum/species/human/felinid)
|
||||
|
||||
if(ishumanbasic(H))
|
||||
H.set_species(/datum/species/human/felinid)
|
||||
var/datum/species/human/felinid/cat_species = H.dna.species
|
||||
cat_species.original_felinid = FALSE
|
||||
else
|
||||
var/obj/item/organ/ears/cat/kitty_ears = new
|
||||
var/obj/item/organ/tail/cat/kitty_tail = new
|
||||
kitty_ears.Insert(H, TRUE, FALSE) //Gives nonhumans cat tail and ears
|
||||
kitty_tail.Insert(H, TRUE, FALSE)
|
||||
if(!silent)
|
||||
to_chat(H, "Something is nya~t right.")
|
||||
playsound(get_turf(H), 'sound/effects/meow1.ogg', 50, TRUE, -1)
|
||||
|
||||
/proc/purrbation_remove(mob/living/carbon/human/H, silent = FALSE)
|
||||
if(!ishuman(H) || !isfelinid(H))
|
||||
return
|
||||
|
||||
H.set_species(/datum/species/human)
|
||||
|
||||
if(isfelinid(H))
|
||||
var/datum/species/human/felinid/cat_species = H.dna.species
|
||||
if(!cat_species.original_felinid)
|
||||
H.set_species(/datum/species/human)
|
||||
else if(ishuman(H) && !ishumanbasic(H))
|
||||
var/datum/species/target_species = H.dna.species
|
||||
var/organs = H.internal_organs
|
||||
for(var/obj/item/organ/current_organ in organs)
|
||||
if(istype(current_organ, /obj/item/organ/tail/cat))
|
||||
current_organ.Remove(H, TRUE)
|
||||
if(target_species.mutanttail)
|
||||
var/obj/item/organ/new_tail = new target_species.mutanttail
|
||||
new_tail.Insert(H, TRUE, FALSE)
|
||||
if(istype(current_organ, /obj/item/organ/ears/cat))
|
||||
var/obj/item/organ/new_ears = new target_species.mutantears
|
||||
new_ears.Insert(H, TRUE, FALSE)
|
||||
if(!silent)
|
||||
to_chat(H, "You are no longer a cat.")
|
||||
|
||||
Reference in New Issue
Block a user