diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 82f38eb092..ef14dbcaa3 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -99,11 +99,11 @@ //Citadel istypes #define isborer(A) (istype(A, /mob/living/simple_animal/borer)) #define isipcperson(A) (is_species(A, /datum/species/ipc)) -#define ismammal(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/mammal) ) -#define isavian(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/avian) ) -#define isaquatic(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/aquatic) ) -#define isinsect(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/insect) ) -#define isxenoperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/xeno) ) +#define ismammal(A) (is_species(A, /datum/species/mammal)) +#define isavian(A) (is_species(A, /datum/species/avian)) +#define isaquatic(A) (is_species(A, /datum/species/aquatic)) +#define isinsect(A) (is_species(A, /datum/species/insect)) +#define isxenoperson(A) (is_species(A, /datum/species/xeno)) #define CITADEL_MENTOR_OOC_COLOUR "#224724" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index eff6f54653..effeb274ab 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -94,20 +94,35 @@ if(!GLOB.mam_snouts_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_snouts, GLOB.mam_snouts_list) -// if(ishuman(src)) - // var/mob/living/carbon/human/H = src - /* if(H.gender == MALE) Fuck if I know how to fix this. - penis = 1 - balls = 1 - vagina = 0 - womb = 0 - breasts = 0 - if(H.gender == FEMALE) - penis = 0 - balls = 0 - vagina = 1 - womb = 1 - breasts = 1 */ + //snowflake check so people's ckey features don't get randomly put on unmonkeys/spawns + var/list/snowflake_mam_tails_list = list() + for(var/mtpath in GLOB.mam_tails_list) + var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[mtpath] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if(!S.ckeys_allowed) + snowflake_mam_tails_list[S.name] = mtpath + var/list/snowflake_markings_list = list() + for(var/mmpath in GLOB.mam_body_markings_list) + var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[mmpath] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if(!S.ckeys_allowed) + snowflake_markings_list[S.name] = mmpath + var/list/snowflake_ears_list = list() + for(var/mepath in GLOB.mam_ears_list) + var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[mepath] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if(!S.ckeys_allowed) + snowflake_ears_list[S.name] = mepath + var/list/snowflake_mam_snouts_list = list() + for(var/mspath in GLOB.mam_snouts_list) + var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[mspath] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if(!S.ckeys_allowed) + snowflake_mam_snouts_list[S.name] = mspath //CIT CHANGE - changes this entire return to support cit's snowflake parts return(list( @@ -115,22 +130,22 @@ "mcolor2" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "mcolor3" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "tail_lizard" = pick(GLOB.tails_list_lizard), - "tail_human" = pick(GLOB.tails_list_human), + "tail_human" = "None", "wings" = "None", "snout" = pick(GLOB.snouts_list), "horns" = pick(GLOB.horns_list), - "ears" = pick(GLOB.ears_list), + "ears" = "None", "frills" = pick(GLOB.frills_list), "spines" = pick(GLOB.spines_list), "body_markings" = pick(GLOB.body_markings_list), - "legs" = "Normal Legs", + "legs" = pick("Normal Legs","Digitigrade Legs"), "caps" = pick(GLOB.caps_list), "moth_wings" = pick(GLOB.moth_wings_list), "taur" = "None", - "mam_body_markings" = pick(GLOB.mam_body_markings_list), - "mam_ears" = pick(GLOB.mam_ears_list), - "mam_snouts" = pick(GLOB.mam_snouts_list), - "mam_tail" = pick(GLOB.mam_tails_list), + "mam_body_markings" = pick(snowflake_markings_list), + "mam_ears" = pick(snowflake_ears_list), + "mam_snouts" = pick(snowflake_mam_snouts_list), + "mam_tail" = pick(snowflake_mam_tails_list), "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index f245dd330e..d6bfc49628 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1385,48 +1385,32 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("hair_style") var/new_hair_style - if(gender == MALE) - new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in GLOB.hair_styles_male_list - else - new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in GLOB.hair_styles_female_list + new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in GLOB.hair_styles_list if(new_hair_style) hair_style = new_hair_style if("next_hair_style") - if (gender == MALE) - hair_style = next_list_item(hair_style, GLOB.hair_styles_male_list) - else - hair_style = next_list_item(hair_style, GLOB.hair_styles_female_list) + hair_style = next_list_item(hair_style, GLOB.hair_styles_list) if("previous_hair_style") - if (gender == MALE) - hair_style = previous_list_item(hair_style, GLOB.hair_styles_male_list) - else - hair_style = previous_list_item(hair_style, GLOB.hair_styles_female_list) + hair_style = previous_list_item(hair_style, GLOB.hair_styles_list) if("facial") var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference","#"+facial_hair_color) as color|null if(new_facial) facial_hair_color = sanitize_hexcolor(new_facial) - if("facial_hair_style") - var/new_facial_hair_style - if(gender == MALE) - new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in GLOB.facial_hair_styles_male_list - else - new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in GLOB.facial_hair_styles_female_list - if(new_facial_hair_style) - facial_hair_style = new_facial_hair_style + + if("facial_hair_style") + var/new_facial_hair_style + new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in GLOB.facial_hair_styles_list + if(new_facial_hair_style) + facial_hair_style = new_facial_hair_style if("next_facehair_style") - if (gender == MALE) - facial_hair_style = next_list_item(facial_hair_style, GLOB.facial_hair_styles_male_list) - else - facial_hair_style = next_list_item(facial_hair_style, GLOB.facial_hair_styles_female_list) - if("previous_facehair_style") - if (gender == MALE) - facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_male_list) - else - facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_female_list) + facial_hair_style = next_list_item(facial_hair_style, GLOB.facial_hair_styles_list) + + if("previous_facehair_style") + facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_list) if("underwear") var/new_underwear @@ -1584,14 +1568,28 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["tail_lizard"] = "None" if("snout") + var/list/snowflake_snouts_list = list() + for(var/path in GLOB.snouts_list) + var/datum/sprite_accessory/mam_snouts/instance = GLOB.snouts_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_snouts_list[S.name] = path var/new_snout - new_snout = input(user, "Choose your character's snout:", "Character Preference") as null|anything in GLOB.snouts_list + new_snout = input(user, "Choose your character's snout:", "Character Preference") as null|anything in snowflake_snouts_list if(new_snout) features["snout"] = new_snout if("mam_snouts") + var/list/snowflake_mam_snouts_list = list() + for(var/path in GLOB.mam_snouts_list) + var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_mam_snouts_list[S.name] = path var/new_mam_snouts - new_mam_snouts = input(user, "Choose your character's snout:", "Character Preference") as null|anything in GLOB.mam_snouts_list + new_mam_snouts = input(user, "Choose your character's snout:", "Character Preference") as null|anything in snowflake_mam_snouts_list if(new_mam_snouts) features["mam_snouts"] = new_mam_snouts @@ -1601,12 +1599,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_horns) features["horns"] = new_horns - if("ears") - var/new_ears - new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in GLOB.ears_list - if(new_ears) - features["ears"] = new_ears - if("wings") var/new_wings new_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.r_wings_list @@ -2152,31 +2144,25 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("tail_lizard" in pref_species.default_features) character.dna.species.mutant_bodyparts |= "tail_lizard" - else if("mam_tail" in pref_species.default_features) + if("mam_tail" in pref_species.default_features) character.dna.species.mutant_bodyparts |= "mam_tail" - else if("xenotail" in pref_species.default_features) + if("xenotail" in pref_species.default_features) character.dna.species.mutant_bodyparts |= "xenotail" - if("legs" in pref_species.default_features) - if(character.dna.features["legs"] == "Digitigrade Legs") - pref_species.species_traits += DIGITIGRADE - character.Digitigrade_Leg_Swap(FALSE) - - if(character.dna.features["legs"] == "Normal Legs" && DIGITIGRADE in pref_species.species_traits) - pref_species.species_traits -= DIGITIGRADE - character.Digitigrade_Leg_Swap(TRUE) - - else if((!"legs" in pref_species.default_features) && DIGITIGRADE in pref_species.species_traits) + if(("legs" in character.dna.species.mutant_bodyparts) && character.dna.features["legs"] == "Digitigrade Legs") + pref_species.species_traits |= DIGITIGRADE + else pref_species.species_traits -= DIGITIGRADE - character.Digitigrade_Leg_Swap(TRUE) if(DIGITIGRADE in pref_species.species_traits) character.Digitigrade_Leg_Swap(FALSE) + else + character.Digitigrade_Leg_Swap(TRUE) - if(icon_updates) - character.update_body() - character.update_hair() - character.update_body_parts() + //let's be sure the character updates + character.update_body() + character.update_hair() + character.update_body_parts() /datum/preferences/proc/get_default_name(name_id) switch(name_id) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 3fd710fcc6..8fff4cfec0 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -724,10 +724,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/list/colorlist = list() colorlist.Cut() - colorlist += ReadRGB(H.dna.features["mcolor"]) - colorlist += ReadRGB(H.dna.features["mcolor2"]) - colorlist += ReadRGB(H.dna.features["mcolor3"]) - colorlist += list(0,0,0) + colorlist += ReadRGB("[H.dna.features["mcolor"]]0") + colorlist += ReadRGB("[H.dna.features["mcolor2"]]0") + colorlist += ReadRGB("[H.dna.features["mcolor3"]]0") + colorlist += list(0,0,0, hair_alpha) for(var/index=1, index<=colorlist.len, index++) colorlist[index] = colorlist[index]/255 @@ -774,11 +774,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) husklist += ReadRGB("#a3a3a3") husklist += ReadRGB("#a3a3a3") husklist += ReadRGB("#a3a3a3") - husklist += list(0,0,0) + husklist += list(0,0,0, hair_alpha) for(var/index=1, index<=husklist.len, index++) husklist[index] = husklist[index]/255 accessory_overlay.color = husklist - standing += accessory_overlay if(S.hasinner) diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 576b231af5..96b43795a2 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -3,8 +3,8 @@ id = "human" default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY) - mutant_bodyparts = list("mam_ears", "mam_tail", "wings", "taur") // CITADEL EDIT gives humans snowflake parts - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "wings" = "None", "taur" = "None") + mutant_bodyparts = list("ears", "tail_human", "wings", "taur") // CITADEL EDIT gives humans snowflake parts + default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "wings" = "None", "taur" = "None") use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index c72534972c..0461fb9b79 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -5,8 +5,8 @@ default_color = "00FF90" say_mod = "chirps" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) - mutant_bodyparts = list("mam_tail", "mam_ears", "taur") //CIT CHANGE - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") //CIT CHANGE + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur") //CIT CHANGE + default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime exotic_blood = "slimejelly" diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 4ecac39ecc..03af32f660 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -306,10 +306,10 @@ //body marking memes var/list/colorlist = list() colorlist.Cut() - colorlist += ReadRGB(H.dna.features["mcolor"]) - colorlist += ReadRGB(H.dna.features["mcolor2"]) - colorlist += ReadRGB(H.dna.features["mcolor3"]) - colorlist += list(0,0,0) + colorlist += ReadRGB("[H.dna.features["mcolor"]]0") + colorlist += ReadRGB("[H.dna.features["mcolor2"]]0") + colorlist += ReadRGB("[H.dna.features["mcolor3"]]0") + colorlist += list(0,0,0, S.hair_alpha) for(var/index=1, index<=colorlist.len, index++) colorlist[index] = colorlist[index]/255 diff --git a/config/game_options.txt b/config/game_options.txt index 6ff9182f0a..6d59f10807 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -441,7 +441,7 @@ ROUNDSTART_RACES avian ROUNDSTART_RACES aquatic ROUNDSTART_RACES insect ROUNDSTART_RACES xeno -ROUNDSTART_RACES datashark +ROUNDSTART_RACES slimeperson ROUNDSTART_RACES guilmon ROUNDSTART_RACES ipc diff --git a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index ecb4a57407..81eb93106c 100644 --- a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -166,6 +166,7 @@ name = "Red Panda" icon_state = "wah" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/human/axolotl name = "Axolotl" @@ -176,11 +177,13 @@ name = "Axolotl" icon_state = "axolotl" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/axolotl name = "Axolotl" icon_state = "axolotl" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/human/bear name = "Bear" @@ -188,25 +191,29 @@ icon = 'modular_citadel/icons/mob/mam_ears.dmi' color_src = MATRIXED -/datum/sprite_accessory/tails/human/bear - name = "Bear" - icon_state = "bear" +/datum/sprite_accessory/tails/human/bee + name = "Bee" + icon_state = "bee" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED -/datum/sprite_accessory/tails_animated/human/bear - name = "Bear" - icon_state = "bear" +/datum/sprite_accessory/tails_animated/human/bee + name = "Bee" + icon_state = "bee" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails/human/catbig name = "Cat, Big" icon_state = "catbig" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/catbig name = "Cat, Big" icon_state = "catbig" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/human/cow name = "Cow" @@ -218,11 +225,21 @@ name = "Cow" icon_state = "cow" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/cow name = "Cow" icon_state = "cow" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED + +/datum/sprite_accessory/tails/human/corvid + name = "Corvid" + icon_state = "crow" + +/datum/sprite_accessory/tails_animated/human/corvid + name = "Corvid" + icon_state = "crow" /datum/sprite_accessory/ears/human/curled name = "Curled Horn" @@ -240,11 +257,13 @@ name = "Eevee" icon_state = "eevee" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/eevee name = "Eevee" icon_state = "eevee" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/human/elephant name = "Elephant" @@ -262,11 +281,13 @@ name = "Fennec" icon_state = "fennec" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/fennec name = "Fennec" icon_state = "fennec" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/fish name = "Fish" @@ -278,11 +299,13 @@ name = "Fish" icon_state = "fish" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/fish name = "Fish" icon_state = "fish" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/fox name = "Fox" @@ -294,11 +317,13 @@ name = "Fox" icon_state = "fox" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/fox name = "Fox" icon_state = "fox" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails/human/horse name = "Horse" @@ -316,21 +341,25 @@ name = "Husky" icon_state = "husky" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/husky name = "Husky" icon_state = "husky" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails/human/insect name = "Insect" icon_state = "insect" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/tails_animated/human/insect name = "insect" icon_state = "insect" icon = 'modular_citadel/icons/mob/mam_tails.dmi' + color_src = MATRIXED /datum/sprite_accessory/ears/human/jellyfish name = "Jellyfish" @@ -481,12 +510,32 @@ color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' -/datum/sprite_accessory/tails/human/shark/datashark +/datum/sprite_accessory/tails_animated/human/shark + name = "Shark" + icon_state = "shark" + color_src = MATRIXED + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + +/datum/sprite_accessory/tails/human/datashark name = "datashark" icon_state = "datashark" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' +/datum/sprite_accessory/tails_animated/human/datashark + name = "datashark" + icon_state = "datashark" + color_src = MATRIXED + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + +/datum/sprite_accessory/tails/human/straighttail + name = "Straight Tail" + icon_state = "straighttail" + +/datum/sprite_accessory/tails_animated/human/straighttail + name = "Straight Tail" + icon_state = "straighttail" + /datum/sprite_accessory/ears/squirrel name = "Squirrel" icon_state = "squirrel" @@ -505,7 +554,7 @@ color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' -/datum/sprite_accessory/tails/human/yentacle +/datum/sprite_accessory/tails/human/tentacle name = "Tentacle" icon_state = "tentacle" color_src = MATRIXED @@ -517,6 +566,18 @@ color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' +/datum/sprite_accessory/tails/human/tiger + name = "Tiger" + icon_state = "tiger" + color_src = MATRIXED + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + +/datum/sprite_accessory/tails_animated/human/tiger + name = "Tiger" + icon_state = "tiger" + color_src = MATRIXED + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + /datum/sprite_accessory/ears/wolf name = "Wolf" icon_state = "wolf" @@ -626,6 +687,10 @@ name = "WahCoon" icon_state = "wah" +/datum/sprite_accessory/mam_snouts/redpandaalt + name = "WahCoon ALT" + icon_state = "wahalt" + /datum/sprite_accessory/mam_snouts/rhino name = "Horn" icon_state = "rhino" @@ -933,13 +998,13 @@ name = "Axolotl" icon_state = "axolotl" -/datum/sprite_accessory/mam_tails/bear - name = "Bear" - icon_state = "bear" +/datum/sprite_accessory/mam_tails/bee + name = "Bee" + icon_state = "bee" -/datum/sprite_accessory/mam_tails_animated/bear - name = "Bear" - icon_state = "bear" +/datum/sprite_accessory/mam_tails_animated/bee + name = "Bee" + icon_state = "bee" /datum/sprite_accessory/mam_tails/cat name = "Cat" diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index d188b43083..64898f0121 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -10,8 +10,8 @@ default_color = "00FFFF" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) inherent_traits = list(TRAIT_TOXINLOVER) - mutant_bodyparts = list("mam_tail", "mam_ears", "taur") - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur") + default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None") say_mod = "says" hair_color = "mutcolor" hair_alpha = 180 @@ -20,6 +20,34 @@ heatmod = 1 burnmod = 1 +/datum/species/jelly/roundstartslime/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/jelly/roundstartslime/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/jelly/roundstartslime/can_wag_tail(mob/living/carbon/human/H) + return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/jelly/roundstartslime/is_wagging_tail(mob/living/carbon/human/H) + return ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/jelly/roundstartslime/start_wagging_tail(mob/living/carbon/human/H) + if("mam_tail" in mutant_bodyparts) + mutant_bodyparts -= "mam_tail" + mutant_bodyparts |= "mam_waggingtail" + H.update_body() + +/datum/species/jelly/roundstartslime/stop_wagging_tail(mob/living/carbon/human/H) + if("mam_waggingtail" in mutant_bodyparts) + mutant_bodyparts -= "mam_waggingtail" + mutant_bodyparts |= "mam_tail" + H.update_body() + + /datum/action/innate/slime_change name = "Alter Form" check_flags = AB_CHECK_CONSCIOUS @@ -41,7 +69,7 @@ /datum/action/innate/slime_change/proc/change_form() var/mob/living/carbon/human/H = owner - var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel") + var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Snout", "Markings", "Ears", "Taur body", "Cancel") if(select_alteration == "Hair Style") if(H.gender == MALE) var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list @@ -102,6 +130,39 @@ H.dna.features["mam_ears"] = new_ears H.update_body() + else if (select_alteration == "Snout") + var/list/snowflake_snouts_list = list("Normal" = null) + for(var/path in GLOB.mam_snouts_list) + var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey))) + snowflake_snouts_list[S.name] = path + var/new_snout + new_snout = input(owner, "Choose your character's face:", "Face Alteration") as null|anything in snowflake_snouts_list + if(new_snout) + H.dna.features["mam_snouts"] = new_snout + H.update_body() + + else if (select_alteration == "Markings") + var/list/snowflake_markings_list = list() + for(var/path in GLOB.mam_body_markings_list) + var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey))) + snowflake_markings_list[S.name] = path + var/new_mam_body_markings + new_mam_body_markings = input(H, "Choose your character's body markings:", "Marking Alteration") as null|anything in snowflake_markings_list + if(new_mam_body_markings) + H.dna.features["mam_body_markings"] = new_mam_body_markings + if(new_mam_body_markings == "None") + H.dna.features["mam_body_markings"] = "Plain" + for(var/X in H.bodyparts) //propagates the markings changes + var/obj/item/bodypart/BP = X + BP.update_limb(FALSE, H) + H.update_body() + else if (select_alteration == "Tail") var/list/snowflake_tails_list = list("Normal" = null) for(var/path in GLOB.mam_tails_list) @@ -113,7 +174,7 @@ var/new_tail new_tail = input(owner, "Choose your character's Tail(s):", "Tail Alteration") as null|anything in snowflake_tails_list if(new_tail) - H.dna.features["mam_tails"] = new_tail + H.dna.features["mam_tail"] = new_tail if(new_tail != "None") H.dna.features["taur"] = "None" H.update_body() @@ -132,7 +193,6 @@ H.dna.features["taur"] = new_taur if(new_taur != "None") H.dna.features["mam_tail"] = "None" - H.dna.features["xenotail"] = "None" H.update_body() else return diff --git a/modular_citadel/icons/mob/mam_markings.dmi b/modular_citadel/icons/mob/mam_markings.dmi index eb7fecb5fc..c391674190 100644 Binary files a/modular_citadel/icons/mob/mam_markings.dmi and b/modular_citadel/icons/mob/mam_markings.dmi differ diff --git a/modular_citadel/icons/mob/mam_snouts.dmi b/modular_citadel/icons/mob/mam_snouts.dmi index 0bcfab6905..d2cb9b7286 100644 Binary files a/modular_citadel/icons/mob/mam_snouts.dmi and b/modular_citadel/icons/mob/mam_snouts.dmi differ diff --git a/modular_citadel/icons/mob/mam_tails.dmi b/modular_citadel/icons/mob/mam_tails.dmi index 8c97b869d6..74eccae2f8 100644 Binary files a/modular_citadel/icons/mob/mam_tails.dmi and b/modular_citadel/icons/mob/mam_tails.dmi differ diff --git a/modular_citadel/icons/mob/taur_canine.dmi b/modular_citadel/icons/mob/taur_canine.dmi index 101430f0e2..215518b779 100644 Binary files a/modular_citadel/icons/mob/taur_canine.dmi and b/modular_citadel/icons/mob/taur_canine.dmi differ diff --git a/modular_citadel/icons/mob/taur_naga.dmi b/modular_citadel/icons/mob/taur_naga.dmi index 7342b52cdb..200c336b2f 100644 Binary files a/modular_citadel/icons/mob/taur_naga.dmi and b/modular_citadel/icons/mob/taur_naga.dmi differ