diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 6d04526d84e..097a91810da 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -64,6 +64,8 @@ var/ventcrawler = 0 //Determines if the mob can go through the vents. var/has_fine_manipulation = 1 // Can use small items. + var/list/allowed_consumed_mobs = list() //If a species can consume mobs, put the type of mobs it can consume here. + var/flags = 0 // Various specific features. var/clothing_flags = 0 // Underwear and socks. var/exotic_blood diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 65e4684c64f..8e0b9f5d2b7 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -56,6 +56,9 @@ reagent_tag = PROCESS_ORG base_color = "#066000" + allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/lizard, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken, + /mob/living/simple_animal/crab, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, /mob/living/simple_animal/tribble) + suicide_messages = list( "is attempting to bite their tongue off!", "is jamming their claws into their eye sockets!", @@ -107,6 +110,9 @@ flesh_color = "#AFA59E" base_color = "#333333" + allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/chick, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, + /mob/living/simple_animal/tribble) + suicide_messages = list( "is attempting to bite their tongue off!", "is jamming their claws into their eye sockets!", @@ -148,6 +154,9 @@ flesh_color = "#966464" base_color = "#B43214" + allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/lizard, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken, + /mob/living/simple_animal/crab, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, /mob/living/simple_animal/tribble) + suicide_messages = list( "is attempting to bite their tongue off!", "is jamming their claws into their eye sockets!", @@ -355,6 +364,8 @@ blood_color = "#FB9800" reagent_tag = PROCESS_ORG + allowed_consumed_mobs = list(/mob/living/simple_animal/diona) + suicide_messages = list( "is attempting to bite their antenna off!", "is jamming their claws into their eye sockets!", diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index ef68dd1a97b..df357e66db2 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -245,7 +245,7 @@ if(M.loc != src) stomach_contents.Remove(M) continue - if(istype(M, /mob/living/carbon) && stat != 2) + if(istype(M, /mob/living) && stat != 2) if(M.stat == 2) M.death(1) stomach_contents.Remove(M) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 79fc66d2408..f5a61359a01 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -6,7 +6,7 @@ #define EAT_TIME_FAT 100 //time it takes for a mob to be eaten (in deciseconds) (overrides mob eat time) -#define EAT_TIME_MOUSE 30 +#define EAT_TIME_ANIMAL 30 /obj/item/weapon/grab name = "grab" @@ -413,10 +413,8 @@ if(isalien(attacker) && iscarbon(prey)) //Xenomorphs eating carbon mobs return 1 - if(ishuman(attacker) && attacker.get_species() == "Kidan" && istype(prey,/mob/living/simple_animal/diona)) //Kidan eating nymphs - return 1 - - if(ishuman(attacker) && attacker.get_species() == "Tajaran" && istype(prey,/mob/living/simple_animal/mouse)) //Tajaran eating mice. Meow! + var/mob/living/carbon/human/H = attacker + if(ishuman(H) && is_type_in_list(prey, H.species.allowed_consumed_mobs)) //species eating of other mobs return 1 return 0 @@ -425,8 +423,8 @@ if(isalien(attacker)) return EAT_TIME_XENO //xenos get a speed boost - if(istype(prey,/mob/living/simple_animal/mouse)) //mice get eaten at xeno-eating-speed regardless - return EAT_TIME_MOUSE + if(istype(prey,/mob/living/simple_animal)) //simple animals get eaten at xeno-eating-speed regardless + return EAT_TIME_ANIMAL return EAT_TIME_FAT //if it doesn't fit into the above, it's probably a fat guy, take EAT_TIME_FAT to do it @@ -447,4 +445,4 @@ #undef EAT_TIME_XENO #undef EAT_TIME_FAT -#undef EAT_TIME_MOUSE +#undef EAT_TIME_ANIMAL