diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 21de1e8c37b..5653e731c1a 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -31,6 +31,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae, GLOB.moth_antennae_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) //Species diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 9762b0e7c92..9b3d6c90f33 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -73,10 +73,12 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) if(!GLOB.moth_wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) + if(!GLOB.moth_antennae_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae, GLOB.moth_antennae_list) if(!GLOB.moth_markings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) //For now we will always return none for tail_human and ears. - return(list("mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),"ethcolor" = GLOB.color_list_ethereal[pick(GLOB.color_list_ethereal)], "tail_lizard" = pick(GLOB.tails_list_lizard), "tail_human" = "None", "wings" = "None", "snout" = pick(GLOB.snouts_list), "horns" = pick(GLOB.horns_list), "ears" = "None", "frills" = pick(GLOB.frills_list), "spines" = pick(GLOB.spines_list), "body_markings" = pick(GLOB.body_markings_list), "legs" = "Normal Legs", "caps" = pick(GLOB.caps_list), "moth_wings" = pick(GLOB.moth_wings_list), "moth_markings" = pick(GLOB.moth_markings_list))) + return(list("mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),"ethcolor" = GLOB.color_list_ethereal[pick(GLOB.color_list_ethereal)], "tail_lizard" = pick(GLOB.tails_list_lizard), "tail_human" = "None", "wings" = "None", "snout" = pick(GLOB.snouts_list), "horns" = pick(GLOB.horns_list), "ears" = "None", "frills" = pick(GLOB.frills_list), "spines" = pick(GLOB.spines_list), "body_markings" = pick(GLOB.body_markings_list), "legs" = "Normal Legs", "caps" = pick(GLOB.caps_list), "moth_wings" = pick(GLOB.moth_wings_list), "moth_antennae" = pick(GLOB.moth_antennae_list), "moth_markings" = pick(GLOB.moth_markings_list))) /proc/random_hairstyle(gender) switch(gender) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 9ecf45d383e..5b0fac6c799 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -35,6 +35,7 @@ GLOBAL_LIST_EMPTY(wings_list) GLOBAL_LIST_EMPTY(wings_open_list) GLOBAL_LIST_EMPTY(r_wings_list) GLOBAL_LIST_EMPTY(moth_wings_list) +GLOBAL_LIST_EMPTY(moth_antennae_list) GLOBAL_LIST_EMPTY(moth_markings_list) GLOBAL_LIST_EMPTY(caps_list) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 594aae2bafc..7520a93038c 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -35,6 +35,7 @@ H.dna.features["spines"] = pick(GLOB.spines_list) H.dna.features["body_markings"] = pick(GLOB.body_markings_list) H.dna.features["moth_wings"] = pick(GLOB.moth_wings_list) + H.dna.features["moth_antennae"] = pick(GLOB.moth_antennae_list) H.update_body() H.update_hair() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 40004e4a491..214d837855b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -78,7 +78,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/skin_tone = "caucasian1" //Skin color var/eye_color = "000" //Eye color var/datum/species/pref_species = new /datum/species/human() //Mutant race - var/list/features = list("mcolor" = "FFF", "ethcolor" = "9c3030", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain", "moth_markings" = "None") + var/list/features = list("mcolor" = "FFF", "ethcolor" = "9c3030", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain", "moth_antennae" = "Plain", "moth_markings" = "None") var/list/randomise = list(RANDOM_UNDERWEAR = TRUE, RANDOM_UNDERWEAR_COLOR = TRUE, RANDOM_UNDERSHIRT = TRUE, RANDOM_SOCKS = TRUE, RANDOM_BACKPACK = TRUE, RANDOM_JUMPSUIT_STYLE = TRUE, RANDOM_HAIRSTYLE = TRUE, RANDOM_HAIR_COLOR = TRUE, RANDOM_FACIAL_HAIRSTYLE = TRUE, RANDOM_FACIAL_HAIR_COLOR = TRUE, RANDOM_SKIN_TONE = TRUE, RANDOM_EYE_COLOR = TRUE) var/phobia = "spiders" @@ -479,6 +479,19 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 + if("moth_antennae" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + + dat += "

Moth antennae

" + + dat += "[features["moth_antennae"]]
" + + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 + if("moth_markings" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -1462,6 +1475,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_moth_wings) features["moth_wings"] = new_moth_wings + if("moth_antennae") + var/new_moth_antennae + new_moth_antennae = input(user, "Choose your character's antennae:", "Character Preference") as null|anything in GLOB.moth_antennae_list + if(new_moth_antennae) + features["moth_antennae"] = new_moth_antennae + if("moth_markings") var/new_moth_markings new_moth_markings = input(user, "Choose your character's markings:", "Character Preference") as null|anything in GLOB.moth_markings_list diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 84ea86d3752..4492826d7cd 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -340,6 +340,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car READ_FILE(S["feature_lizard_body_markings"], features["body_markings"]) READ_FILE(S["feature_lizard_legs"], features["legs"]) READ_FILE(S["feature_moth_wings"], features["moth_wings"]) + READ_FILE(S["feature_moth_antennae"], features["moth_antennae"]) READ_FILE(S["feature_moth_markings"], features["moth_markings"]) READ_FILE(S["persistent_scars"] , persistent_scars) if(!CONFIG_GET(flag/join_with_mutant_humans)) @@ -430,6 +431,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Normal Legs") features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list, "Plain") + features["moth_antennae"] = sanitize_inlist(features["moth_antennae"], GLOB.moth_antennae_list, "Plain") features["moth_markings"] = sanitize_inlist(features["moth_markings"], GLOB.moth_markings_list, "None") persistent_scars = sanitize_integer(persistent_scars) @@ -488,6 +490,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"]) WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) WRITE_FILE(S["feature_moth_wings"] , features["moth_wings"]) + WRITE_FILE(S["feature_moth_antennae"] , features["moth_antennae"]) WRITE_FILE(S["feature_moth_markings"] , features["moth_markings"]) WRITE_FILE(S["persistent_scars"] , persistent_scars) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index d3b490873cb..c858357f3dd 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -614,6 +614,7 @@ if(exposed_carbon.dna.species.has_innate_wings) to_chat(exposed_carbon, "A terrible pain travels down your back as your wings change shape!") exposed_carbon.dna.features["moth_wings"] = "None" + exposed_carbon.dna.features["moth_antennae"] = "Regal" else to_chat(exposed_carbon, "A terrible pain travels down your back as wings burst out!") exposed_carbon.dna.species.GiveSpeciesFlight(exposed_carbon) diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index f183c0b7951..0cf7c73e60d 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1862,9 +1862,9 @@ name = "White Fly" icon_state = "whitefly" -/datum/sprite_accessory/moth_wings/punished +/datum/sprite_accessory/moth_wings/burnt_off name = "Burnt Off" - icon_state = "punished" + icon_state = "burnt_off" locked = TRUE /datum/sprite_accessory/moth_wings/firewatch @@ -1903,6 +1903,74 @@ name = "Witch Wing" icon_state = "witchwing" +/datum/sprite_accessory/moth_antennae //Finally splitting the sprite + icon = 'icons/mob/moth_antennae.dmi' + color_src = null + +/datum/sprite_accessory/moth_antennae/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/moth_antennae/reddish + name = "Reddish" + icon_state = "reddish" + +/datum/sprite_accessory/moth_antennae/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_antennae/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_antennae/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_antennae/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_antennae/burnt_off + name = "Burnt Off" + icon_state = "burnt_off" + +/datum/sprite_accessory/moth_antennae/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_antennae/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_antennae/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_antennae/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_antennae/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_antennae/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/moth_antennae/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/moth_antennae/witchwing + name = "Witch Wing" + icon_state = "witchwing" + +/datum/sprite_accessory/moth_antennae/regal + name = "Regal" + icon_state = "regal" + /datum/sprite_accessory/moth_markings // the markings that moths can have. finally something other than the boring tan icon = 'icons/mob/moth_markings.dmi' color_src = null @@ -1931,9 +1999,9 @@ name = "Lovers" icon_state = "lovers" -/datum/sprite_accessory/moth_markings/punished - name = "Punished" - icon_state = "punished" +/datum/sprite_accessory/moth_markings/burnt_off + name = "Burnt Off" + icon_state = "burnt_off" /datum/sprite_accessory/moth_markings/firewatch name = "Firewatch" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index b4e89880061..f2d0cb0f291 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -747,6 +747,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) else if ("wings" in mutant_bodyparts) bodyparts_to_add -= "wings_open" + if("moth_antennae" in mutant_bodyparts) + if(!H.dna.features["moth_antennae"] || H.dna.features["moth_antennae"] == "None" || !HD) + bodyparts_to_add -= "moth_antennae" + //Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs. var/update_needed = FALSE var/not_digitigrade = TRUE @@ -812,6 +816,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.legs_list[H.dna.features["legs"]] if("moth_wings") S = GLOB.moth_wings_list[H.dna.features["moth_wings"]] + if("moth_antennae") + S = GLOB.moth_antennae_list[H.dna.features["moth_antennae"]] if("moth_markings") S = GLOB.moth_markings_list[H.dna.features["moth_markings"]] if("caps") diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 1f7032a8587..3dccfc6a49b 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -5,8 +5,8 @@ default_color = "00FF00" species_traits = list(LIPS, NOEYESPRITES, HAS_FLESH, HAS_BONE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG - mutant_bodyparts = list("moth_wings", "moth_markings") - default_features = list("moth_wings" = "Plain", "moth_markings" = "None") + mutant_bodyparts = list("moth_wings", "moth_antennae", "moth_markings") + default_features = list("moth_wings" = "Plain", "moth_antennae" = "Plain", "moth_markings" = "None") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' @@ -46,6 +46,8 @@ to_chat(H, "Your precious wings burn to a crisp!") H.dna.features["original_moth_wings"] = H.dna.features["moth_wings"] //Fire apparently destroys DNA, so let's preserve that elsewhere H.dna.features["moth_wings"] = "Burnt Off" + H.dna.features["original_moth_antennae"] = H.dna.features["moth_antennae"] + H.dna.features["moth_antennae"] = "Burnt Off" if(flying_species) //This is all exclusive to if the person has the effects of a potion of flight if(H.movement_type & FLYING) ToggleFlight(H) @@ -78,6 +80,13 @@ . = ..() if(H.dna.features["original_moth_wings"] != null) H.dna.features["moth_wings"] = H.dna.features["original_moth_wings"] + if(H.dna.features["original_moth_wings"] == null && H.dna.features["moth_wings"] == "Burnt Off") H.dna.features["moth_wings"] = "Plain" + + if(H.dna.features["original_moth_antennae"] != null) + H.dna.features["moth_antennae"] = H.dna.features["original_moth_antennae"] + + if(H.dna.features["original_moth_antennae"] == null && H.dna.features["moth_antennae" == "Burnt Off"]) + H.dna.features["moth_antennae"] = "Plain" handle_mutant_bodyparts(H) diff --git a/icons/mob/clothing/wings.dmi b/icons/mob/clothing/wings.dmi index 5532c46d9c0..357b89f813f 100644 Binary files a/icons/mob/clothing/wings.dmi and b/icons/mob/clothing/wings.dmi differ diff --git a/icons/mob/moth_antennae.dmi b/icons/mob/moth_antennae.dmi new file mode 100644 index 00000000000..53787c9941d Binary files /dev/null and b/icons/mob/moth_antennae.dmi differ diff --git a/icons/mob/moth_markings.dmi b/icons/mob/moth_markings.dmi index 7f1798957d2..4f537baea6b 100644 Binary files a/icons/mob/moth_markings.dmi and b/icons/mob/moth_markings.dmi differ diff --git a/icons/mob/moth_wings.dmi b/icons/mob/moth_wings.dmi index 52626c54c83..a2856646295 100644 Binary files a/icons/mob/moth_wings.dmi and b/icons/mob/moth_wings.dmi differ