mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
[SPEED MERGE NEEDED] removes cat (#47999)
This commit is contained in:
committed by
Rob Bailey
parent
ff444890a3
commit
345d2bf607
@@ -155,7 +155,6 @@ SUBSYSTEM_DEF(traumas)
|
|||||||
"the supernatural" = typecacheof(list(/datum/species/golem/runic)),
|
"the supernatural" = typecacheof(list(/datum/species/golem/runic)),
|
||||||
"aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod,
|
"aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod,
|
||||||
/datum/species/shadow)),
|
/datum/species/shadow)),
|
||||||
"anime" = typecacheof(list(/datum/species/human/felinid))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -76,14 +76,6 @@
|
|||||||
mood_change = -2
|
mood_change = -2
|
||||||
timeout = 2 MINUTES
|
timeout = 2 MINUTES
|
||||||
|
|
||||||
/datum/mood_event/table/add_effects()
|
|
||||||
if(isfelinid(owner))
|
|
||||||
var/mob/living/carbon/human/H = owner
|
|
||||||
H.dna.species.start_wagging_tail(H)
|
|
||||||
addtimer(CALLBACK(H.dna.species, /datum/species.proc/stop_wagging_tail, H), 30)
|
|
||||||
description = "<span class='nicegreen'>They want to play on the table!</span>\n"
|
|
||||||
mood_change = 2
|
|
||||||
|
|
||||||
/datum/mood_event/table_headsmash
|
/datum/mood_event/table_headsmash
|
||||||
description = "<span class='warning'>My fucking head, that hurt...</span>"
|
description = "<span class='warning'>My fucking head, that hurt...</span>"
|
||||||
mood_change = -3
|
mood_change = -3
|
||||||
|
|||||||
@@ -202,7 +202,6 @@
|
|||||||
var/new_species = input("Set target species","Scan Mode") as null|anything in sortList(list("Human",
|
var/new_species = input("Set target species","Scan Mode") as null|anything in sortList(list("Human",
|
||||||
"Lizardperson",
|
"Lizardperson",
|
||||||
"Flyperson",
|
"Flyperson",
|
||||||
"Felinid",
|
|
||||||
"Plasmaman",
|
"Plasmaman",
|
||||||
"Mothmen",
|
"Mothmen",
|
||||||
"Jellyperson",
|
"Jellyperson",
|
||||||
@@ -218,8 +217,6 @@
|
|||||||
detect_species = /datum/species/lizard
|
detect_species = /datum/species/lizard
|
||||||
if("Flyperson")
|
if("Flyperson")
|
||||||
detect_species = /datum/species/fly
|
detect_species = /datum/species/fly
|
||||||
if("Felinid")
|
|
||||||
detect_species = /datum/species/human/felinid
|
|
||||||
if("Plasmaman")
|
if("Plasmaman")
|
||||||
detect_species = /datum/species/plasmaman
|
detect_species = /datum/species/plasmaman
|
||||||
if("Mothmen")
|
if("Mothmen")
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
|
|
||||||
//catpeople
|
//catpeople
|
||||||
for(var/mob/living/carbon/human/H in view(1,targloc))
|
for(var/mob/living/carbon/human/H in view(1,targloc))
|
||||||
if(!isfelinid(H) || H.incapacitated() || H.eye_blind )
|
if( H.incapacitated() || H.eye_blind )
|
||||||
continue
|
continue
|
||||||
if(user.mobility_flags & MOBILITY_STAND)
|
if(user.mobility_flags & MOBILITY_STAND)
|
||||||
H.setDir(get_dir(H,targloc)) // kitty always looks at the light
|
H.setDir(get_dir(H,targloc)) // kitty always looks at the light
|
||||||
|
|||||||
@@ -166,7 +166,6 @@
|
|||||||
if(!istype(H))
|
if(!istype(H))
|
||||||
return 0
|
return 0
|
||||||
H.set_species(/datum/species/human, 1)//lizards go home
|
H.set_species(/datum/species/human, 1)//lizards go home
|
||||||
purrbation_remove(H)//remove cats
|
|
||||||
H.dna.remove_all_mutations()//hulks out
|
H.dna.remove_all_mutations()//hulks out
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -88,11 +88,7 @@
|
|||||||
return
|
return
|
||||||
if(target.mob_size > max_occupant_weight)
|
if(target.mob_size > max_occupant_weight)
|
||||||
if(ishuman(target))
|
if(ishuman(target))
|
||||||
var/mob/living/carbon/human/H = target
|
to_chat(user, "<span class='warning'>Humans, generally, do not fit into pet carriers.</span>")
|
||||||
if(isfelinid(H))
|
|
||||||
to_chat(user, "<span class='warning'>You'd need a lot of catnip and treats, plus maybe a laser pointer, for that to work.</span>")
|
|
||||||
else
|
|
||||||
to_chat(user, "<span class='warning'>Humans, generally, do not fit into pet carriers.</span>")
|
|
||||||
else
|
else
|
||||||
to_chat(user, "<span class='warning'>You get the feeling [target] isn't meant for a [name].</span>")
|
to_chat(user, "<span class='warning'>You get the feeling [target] isn't meant for a [name].</span>")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -580,20 +580,6 @@
|
|||||||
if(!check_rights(R_ADMIN))
|
if(!check_rights(R_ADMIN))
|
||||||
return
|
return
|
||||||
toggle_all_ctf(usr)
|
toggle_all_ctf(usr)
|
||||||
if("masspurrbation")
|
|
||||||
if(!check_rights(R_FUN))
|
|
||||||
return
|
|
||||||
mass_purrbation()
|
|
||||||
message_admins("[key_name_admin(usr)] has put everyone on \
|
|
||||||
purrbation!")
|
|
||||||
log_admin("[key_name(usr)] has put everyone on purrbation.")
|
|
||||||
if("massremovepurrbation")
|
|
||||||
if(!check_rights(R_FUN))
|
|
||||||
return
|
|
||||||
mass_remove_purrbation()
|
|
||||||
message_admins("[key_name_admin(usr)] has removed everyone from \
|
|
||||||
purrbation.")
|
|
||||||
log_admin("[key_name(usr)] has removed everyone from purrbation.")
|
|
||||||
|
|
||||||
if("customportal")
|
if("customportal")
|
||||||
if(!check_rights(R_FUN))
|
if(!check_rights(R_FUN))
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
if(H.mind?.miming)
|
if(H.mind?.miming)
|
||||||
return
|
return
|
||||||
if(ishumanbasic(H) || isfelinid(H))
|
if(ishumanbasic(H))
|
||||||
if(user.gender == FEMALE)
|
if(user.gender == FEMALE)
|
||||||
return pick('sound/voice/human/femalescream_1.ogg', 'sound/voice/human/femalescream_2.ogg', 'sound/voice/human/femalescream_3.ogg', 'sound/voice/human/femalescream_4.ogg', 'sound/voice/human/femalescream_5.ogg')
|
return pick('sound/voice/human/femalescream_1.ogg', 'sound/voice/human/femalescream_2.ogg', 'sound/voice/human/femalescream_3.ogg', 'sound/voice/human/femalescream_4.ogg', 'sound/voice/human/femalescream_5.ogg')
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -817,7 +817,6 @@
|
|||||||
VV_DROPDOWN_OPTION(VV_HK_MAKE_SLIME, "Make Slime")
|
VV_DROPDOWN_OPTION(VV_HK_MAKE_SLIME, "Make Slime")
|
||||||
VV_DROPDOWN_OPTION(VV_HK_MAKE_ALIEN, "Make Alien")
|
VV_DROPDOWN_OPTION(VV_HK_MAKE_ALIEN, "Make Alien")
|
||||||
VV_DROPDOWN_OPTION(VV_HK_SET_SPECIES, "Set Species")
|
VV_DROPDOWN_OPTION(VV_HK_SET_SPECIES, "Set Species")
|
||||||
VV_DROPDOWN_OPTION(VV_HK_PURRBATION, "Toggle Purrbation")
|
|
||||||
|
|
||||||
/mob/living/carbon/human/vv_do_topic(list/href_list)
|
/mob/living/carbon/human/vv_do_topic(list/href_list)
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -898,19 +897,6 @@
|
|||||||
var/newtype = GLOB.species_list[result]
|
var/newtype = GLOB.species_list[result]
|
||||||
admin_ticket_log("[key_name_admin(usr)] has modified the bodyparts of [src] to [result]")
|
admin_ticket_log("[key_name_admin(usr)] has modified the bodyparts of [src] to [result]")
|
||||||
set_species(newtype)
|
set_species(newtype)
|
||||||
if(href_list[VV_HK_PURRBATION])
|
|
||||||
if(!check_rights(R_SPAWN))
|
|
||||||
return
|
|
||||||
if(!ishumanbasic(src))
|
|
||||||
to_chat(usr, "This can only be done to the basic human species at the moment.")
|
|
||||||
return
|
|
||||||
var/success = purrbation_toggle(src)
|
|
||||||
if(success)
|
|
||||||
to_chat(usr, "Put [src] on purrbation.")
|
|
||||||
log_admin("[key_name(usr)] has put [key_name(src)] on purrbation.")
|
|
||||||
var/msg = "<span class='notice'>[key_name_admin(usr)] has put [key_name(src)] on purrbation.</span>"
|
|
||||||
message_admins(msg)
|
|
||||||
admin_ticket_log(src, msg)
|
|
||||||
|
|
||||||
else
|
else
|
||||||
to_chat(usr, "Removed [src] from purrbation.")
|
to_chat(usr, "Removed [src] from purrbation.")
|
||||||
@@ -1072,9 +1058,6 @@
|
|||||||
/mob/living/carbon/human/species/dullahan
|
/mob/living/carbon/human/species/dullahan
|
||||||
race = /datum/species/dullahan
|
race = /datum/species/dullahan
|
||||||
|
|
||||||
/mob/living/carbon/human/species/felinid
|
|
||||||
race = /datum/species/human/felinid
|
|
||||||
|
|
||||||
/mob/living/carbon/human/species/fly
|
/mob/living/carbon/human/species/fly
|
||||||
race = /datum/species/fly
|
race = /datum/species/fly
|
||||||
|
|
||||||
|
|||||||
@@ -1,166 +0,0 @@
|
|||||||
//Subtype of human
|
|
||||||
/datum/species/human/felinid
|
|
||||||
name = "Felinid"
|
|
||||||
id = "felinid"
|
|
||||||
limbs_id = "human"
|
|
||||||
|
|
||||||
mutant_bodyparts = list("ears", "tail_human")
|
|
||||||
default_features = list("mcolor" = "FFF", "tail_human" = "Cat", "ears" = "Cat", "wings" = "None")
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
//Curiosity killed the cat's wagging tail.
|
|
||||||
/datum/species/human/felinid/spec_death(gibbed, mob/living/carbon/human/H)
|
|
||||||
if(H)
|
|
||||||
stop_wagging_tail(H)
|
|
||||||
|
|
||||||
/datum/species/human/felinid/spec_stun(mob/living/carbon/human/H,amount)
|
|
||||||
if(H)
|
|
||||||
stop_wagging_tail(H)
|
|
||||||
. = ..()
|
|
||||||
|
|
||||||
/datum/species/human/felinid/can_wag_tail(mob/living/carbon/human/H)
|
|
||||||
return ("tail_human" in mutant_bodyparts) || ("waggingtail_human" in mutant_bodyparts)
|
|
||||||
|
|
||||||
/datum/species/human/felinid/is_wagging_tail(mob/living/carbon/human/H)
|
|
||||||
return ("waggingtail_human" in mutant_bodyparts)
|
|
||||||
|
|
||||||
/datum/species/human/felinid/start_wagging_tail(mob/living/carbon/human/H)
|
|
||||||
if("tail_human" in mutant_bodyparts)
|
|
||||||
mutant_bodyparts -= "tail_human"
|
|
||||||
mutant_bodyparts |= "waggingtail_human"
|
|
||||||
H.update_body()
|
|
||||||
|
|
||||||
/datum/species/human/felinid/stop_wagging_tail(mob/living/carbon/human/H)
|
|
||||||
if("waggingtail_human" in mutant_bodyparts)
|
|
||||||
mutant_bodyparts -= "waggingtail_human"
|
|
||||||
mutant_bodyparts |= "tail_human"
|
|
||||||
H.update_body()
|
|
||||||
|
|
||||||
/datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
|
|
||||||
if(ishuman(C))
|
|
||||||
var/mob/living/carbon/human/H = C
|
|
||||||
if(!pref_load) //Hah! They got forcefully purrbation'd. Force default felinid parts on them if they have no mutant parts in those areas!
|
|
||||||
if(H.dna.features["tail_human"] == "None")
|
|
||||||
H.dna.features["tail_human"] = "Cat"
|
|
||||||
if(H.dna.features["ears"] == "None")
|
|
||||||
H.dna.features["ears"] = "Cat"
|
|
||||||
if(H.dna.features["ears"] == "Cat")
|
|
||||||
var/obj/item/organ/ears/cat/ears = new
|
|
||||||
ears.Insert(H, drop_if_replaced = FALSE)
|
|
||||||
else
|
|
||||||
mutantears = /obj/item/organ/ears
|
|
||||||
if(H.dna.features["tail_human"] == "Cat")
|
|
||||||
var/obj/item/organ/tail/cat/tail = new
|
|
||||||
tail.Insert(H, drop_if_replaced = FALSE)
|
|
||||||
else
|
|
||||||
mutanttail = null
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/datum/species/human/felinid/on_species_loss(mob/living/carbon/H, datum/species/new_species, pref_load)
|
|
||||||
var/obj/item/organ/ears/cat/ears = H.getorgan(/obj/item/organ/ears/cat)
|
|
||||||
var/obj/item/organ/tail/cat/tail = H.getorgan(/obj/item/organ/tail/cat)
|
|
||||||
|
|
||||||
if(ears)
|
|
||||||
var/obj/item/organ/ears/NE
|
|
||||||
if(new_species && new_species.mutantears)
|
|
||||||
// Roundstart cat ears override new_species.mutantears, reset it here.
|
|
||||||
new_species.mutantears = initial(new_species.mutantears)
|
|
||||||
if(new_species.mutantears)
|
|
||||||
NE = new new_species.mutantears
|
|
||||||
if(!NE)
|
|
||||||
// Go with default ears
|
|
||||||
NE = new /obj/item/organ/ears
|
|
||||||
NE.Insert(H, drop_if_replaced = FALSE)
|
|
||||||
|
|
||||||
if(tail)
|
|
||||||
var/obj/item/organ/tail/NT
|
|
||||||
if(new_species && new_species.mutanttail)
|
|
||||||
// Roundstart cat tail overrides new_species.mutanttail, reset it here.
|
|
||||||
new_species.mutanttail = initial(new_species.mutanttail)
|
|
||||||
if(new_species.mutanttail)
|
|
||||||
NT = new new_species.mutanttail
|
|
||||||
if(NT)
|
|
||||||
NT.Insert(H, drop_if_replaced = FALSE)
|
|
||||||
else
|
|
||||||
tail.Remove(H)
|
|
||||||
|
|
||||||
/datum/species/human/felinid/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/M)
|
|
||||||
.=..()
|
|
||||||
if(chem.type == /datum/reagent/consumable/coco || chem.type == /datum/reagent/consumable/hot_coco || chem.type ==/datum/reagent/consumable/milk/chocolate_milk)
|
|
||||||
if(prob(20))
|
|
||||||
M.adjust_disgust(20)
|
|
||||||
if(prob(5))
|
|
||||||
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>")
|
|
||||||
if(prob(10))
|
|
||||||
var/sick_message = pick("Your insides revolt at the presence of lethal chocolate!", "You feel nyauseous.", "You're nya't feeling so good.","You feel like your insides are melting.","You feel illsies.")
|
|
||||||
to_chat(M, "<span class='notice'>[sick_message]</span>")
|
|
||||||
if(prob(35))
|
|
||||||
var/obj/item/organ/guts = pick(M.internal_organs)
|
|
||||||
guts.applyOrganDamage(15)
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
|
|
||||||
/proc/mass_purrbation()
|
|
||||||
for(var/M in GLOB.mob_list)
|
|
||||||
if(ishuman(M))
|
|
||||||
purrbation_apply(M)
|
|
||||||
CHECK_TICK
|
|
||||||
|
|
||||||
/proc/mass_remove_purrbation()
|
|
||||||
for(var/M in GLOB.mob_list)
|
|
||||||
if(ishuman(M))
|
|
||||||
purrbation_remove(M)
|
|
||||||
CHECK_TICK
|
|
||||||
|
|
||||||
/proc/purrbation_toggle(mob/living/carbon/human/H, silent = FALSE)
|
|
||||||
if(!ishumanbasic(H))
|
|
||||||
return
|
|
||||||
if(!isfelinid(H))
|
|
||||||
purrbation_apply(H, silent)
|
|
||||||
. = TRUE
|
|
||||||
else
|
|
||||||
purrbation_remove(H, silent)
|
|
||||||
. = FALSE
|
|
||||||
|
|
||||||
/proc/purrbation_apply(mob/living/carbon/human/H, silent = FALSE)
|
|
||||||
if(!ishuman(H) || isfelinid(H))
|
|
||||||
return
|
|
||||||
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, "<span class='boldnotice'>Something is nya~t right.</span>")
|
|
||||||
playsound(get_turf(H), 'sound/effects/meow1.ogg', 50, TRUE, -1)
|
|
||||||
|
|
||||||
/proc/purrbation_remove(mob/living/carbon/human/H, silent = FALSE)
|
|
||||||
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, "<span class='boldnotice'>You are no longer a cat.</span>")
|
|
||||||
@@ -500,12 +500,6 @@
|
|||||||
color = "#13BC5E" // rgb: 19, 188, 94
|
color = "#13BC5E" // rgb: 19, 188, 94
|
||||||
race = /datum/species/jelly/slime
|
race = /datum/species/jelly/slime
|
||||||
|
|
||||||
/datum/reagent/mutationtoxin/felinid
|
|
||||||
name = "Felinid Mutation Toxin"
|
|
||||||
color = "#5EFF3B" //RGB: 94, 255, 59
|
|
||||||
race = /datum/species/human/felinid
|
|
||||||
taste_description = "something nyat good"
|
|
||||||
|
|
||||||
/datum/reagent/mutationtoxin/lizard
|
/datum/reagent/mutationtoxin/lizard
|
||||||
name = "Lizard Mutation Toxin"
|
name = "Lizard Mutation Toxin"
|
||||||
description = "A lizarding toxin."
|
description = "A lizarding toxin."
|
||||||
|
|||||||
@@ -443,7 +443,6 @@
|
|||||||
"Ethereal" = /datum/species/ethereal,
|
"Ethereal" = /datum/species/ethereal,
|
||||||
"Pod" = /datum/species/pod,
|
"Pod" = /datum/species/pod,
|
||||||
"Fly" = /datum/species/fly,
|
"Fly" = /datum/species/fly,
|
||||||
"Felinid" = /datum/species/human/felinid,
|
|
||||||
"Jelly" = /datum/species/jelly
|
"Jelly" = /datum/species/jelly
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -2107,7 +2107,6 @@
|
|||||||
#include "code\modules\mob\living\carbon\human\species_types\corporate.dm"
|
#include "code\modules\mob\living\carbon\human\species_types\corporate.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\species_types\dullahan.dm"
|
#include "code\modules\mob\living\carbon\human\species_types\dullahan.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\species_types\ethereal.dm"
|
#include "code\modules\mob\living\carbon\human\species_types\ethereal.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\species_types\felinid.dm"
|
|
||||||
#include "code\modules\mob\living\carbon\human\species_types\flypeople.dm"
|
#include "code\modules\mob\living\carbon\human\species_types\flypeople.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\species_types\golems.dm"
|
#include "code\modules\mob\living\carbon\human\species_types\golems.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\species_types\humans.dm"
|
#include "code\modules\mob\living\carbon\human\species_types\humans.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user