Separates mothpeople antennae into a mutant bodypart (#53928)

Removes the antennae part of the original moth wing sprites and adds them back as a mutant bodypart.
Seeing as they were then separated I made it a preference so that players can choose which antennae sprite they would like to have, instead of being restricted solely to the ones built into the wing sprite.
This commit is contained in:
ArcaneDefence
2020-09-25 05:47:00 -06:00
committed by GitHub
parent e416283f16
commit 2eb6b1362e
14 changed files with 120 additions and 9 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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()

View File

@@ -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 += "</td>"
mutant_category = 0
if("moth_antennae" in pref_species.default_features)
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
dat += "<h3>Moth antennae</h3>"
dat += "<a href='?_src_=prefs;preference=moth_antennae;task=input'>[features["moth_antennae"]]</a><BR>"
mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
dat += "</td>"
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

View File

@@ -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)

View File

@@ -614,6 +614,7 @@
if(exposed_carbon.dna.species.has_innate_wings)
to_chat(exposed_carbon, "<span class='userdanger'>A terrible pain travels down your back as your wings change shape!</span>")
exposed_carbon.dna.features["moth_wings"] = "None"
exposed_carbon.dna.features["moth_antennae"] = "Regal"
else
to_chat(exposed_carbon, "<span class='userdanger'>A terrible pain travels down your back as wings burst out!</span>")
exposed_carbon.dna.species.GiveSpeciesFlight(exposed_carbon)

View File

@@ -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"

View File

@@ -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")

View File

@@ -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, "<span class='danger'>Your precious wings burn to a crisp!</span>")
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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

BIN
icons/mob/moth_antennae.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 69 KiB