mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
Deletes monkey tail DNA block, minor sprite accessory cleanup, monkeys (and lizardpeople) will no longer random spawn without tails (#85112)
## About The Pull Request - Deletes monkey tail DNA block - This is not something DNA blocks should be used for. If your only options are "exists" or "doesn't exist", it doesn't need a DNA block, you should just remove the tail! - Minor sprite accessory cleanup - Replaces a lot of blank SAs with `add_blank` usage. Tested in game and it works. - No reason to copy-paste blanks when we have a designated function for it. - Randomizing features can no longer select locked features - Bugfix, though it doesn't affect us at the moment. - Monkeys (and lizard people) will no longer random into being tailless - Felinids can still random into tailless (though that function is broken ATM) ## Why It's Good For The Game For the tailless change: It's a bit weird for these species to spawn without tails. They're kinda a huge part of their identity. I left in the tailless Sprite Accessory, however, so you can still select them in the prefs menu. ## Changelog 🆑 Melbert qol: All randomly spawned monkeys (and lizardpeople) will spawn with tails. You can still select to be tailless. code: Cleaned up some code relating to species features (like tails, markings, etc). Report any oddities /🆑
This commit is contained in:
@@ -60,9 +60,15 @@
|
||||
#define DNA_MOTH_MARKINGS_BLOCK 13
|
||||
#define DNA_MUSHROOM_CAPS_BLOCK 14
|
||||
#define DNA_POD_HAIR_BLOCK 15
|
||||
#define DNA_MONKEY_TAIL_BLOCK 16
|
||||
|
||||
#define DNA_FEATURE_BLOCKS 16
|
||||
// Hey! Listen up if you're here because you're adding a species feature!
|
||||
//
|
||||
// You don't need to add a DNA block for EVERY species feature!
|
||||
// You ONLY need DNA blocks if you intend to allow players to change it via GENETICS!
|
||||
// (Which means having a DNA block for a feature tied to a mob without DNA is entirely pointless.)
|
||||
|
||||
/// Total amount of DNA blocks, must be equal to the highest DNA block number
|
||||
#define DNA_FEATURE_BLOCKS 15
|
||||
|
||||
#define DNA_SEQUENCE_LENGTH 4
|
||||
#define DNA_MUTATION_BLOCKS 8
|
||||
|
||||
@@ -87,23 +87,23 @@ SUBSYSTEM_DEF(accessories) // just 'accessories' for brevity
|
||||
|
||||
socks_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/socks)[DEFAULT_SPRITE_LIST]
|
||||
|
||||
lizard_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/lizard_markings)[DEFAULT_SPRITE_LIST]
|
||||
lizard_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/lizard_markings, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
tails_list_human = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
tails_list_lizard = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
tails_list_monkey = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/monkey, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
tails_list_lizard = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard)[DEFAULT_SPRITE_LIST]
|
||||
tails_list_monkey = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/monkey)[DEFAULT_SPRITE_LIST]
|
||||
snouts_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts)[DEFAULT_SPRITE_LIST]
|
||||
horns_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/horns)[DEFAULT_SPRITE_LIST]
|
||||
ears_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/ears)[DEFAULT_SPRITE_LIST]
|
||||
wings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/wings)[DEFAULT_SPRITE_LIST]
|
||||
horns_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/horns, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
ears_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
wings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
wings_open_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open)[DEFAULT_SPRITE_LIST]
|
||||
frills_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/frills)[DEFAULT_SPRITE_LIST]
|
||||
spines_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/spines)[DEFAULT_SPRITE_LIST]
|
||||
tail_spines_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/tail_spines)[DEFAULT_SPRITE_LIST]
|
||||
frills_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
spines_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
tail_spines_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/tail_spines, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
legs_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/legs)[DEFAULT_SPRITE_LIST]
|
||||
caps_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/caps)[DEFAULT_SPRITE_LIST]
|
||||
moth_wings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings)[DEFAULT_SPRITE_LIST]
|
||||
moth_antennae_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae)[DEFAULT_SPRITE_LIST]
|
||||
moth_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings)[DEFAULT_SPRITE_LIST]
|
||||
moth_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
|
||||
pod_hair_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair)[DEFAULT_SPRITE_LIST]
|
||||
|
||||
/// This proc just intializes all /datum/sprite_accessory/hair_gradient into an list indexed by gradient-style name
|
||||
|
||||
@@ -28,13 +28,16 @@
|
||||
sprite_datum = get_random_appearance()
|
||||
|
||||
///Grab a random appearance datum (thats not locked)
|
||||
/datum/bodypart_overlay/mutant/proc/get_random_appearance()
|
||||
/datum/bodypart_overlay/mutant/proc/get_random_appearance() as /datum/sprite_accessory
|
||||
RETURN_TYPE(/datum/sprite_accessory)
|
||||
var/list/valid_restyles = list()
|
||||
var/list/feature_list = get_global_feature_list()
|
||||
for(var/accessory in feature_list)
|
||||
var/datum/sprite_accessory/accessory_datum = feature_list[accessory]
|
||||
if(initial(accessory_datum.locked)) //locked is for stuff that shouldn't appear here
|
||||
continue
|
||||
if(!initial(accessory_datum.natural_spawn))
|
||||
continue
|
||||
valid_restyles += accessory_datum
|
||||
return pick(valid_restyles)
|
||||
|
||||
|
||||
@@ -216,8 +216,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
|
||||
L[DNA_TAIL_BLOCK] = construct_block(SSaccessories.tails_list_human.Find(features["tail_cat"]), length(SSaccessories.tails_list_human))
|
||||
if(features["tail_lizard"])
|
||||
L[DNA_LIZARD_TAIL_BLOCK] = construct_block(SSaccessories.tails_list_lizard.Find(features["tail_lizard"]), length(SSaccessories.tails_list_lizard))
|
||||
if(features["tail_monkey"])
|
||||
L[DNA_MONKEY_TAIL_BLOCK] = construct_block(SSaccessories.tails_list_monkey.Find(features["tail_monkey"]), length(SSaccessories.tails_list_monkey))
|
||||
if(features["snout"])
|
||||
L[DNA_SNOUT_BLOCK] = construct_block(SSaccessories.snouts_list.Find(features["snout"]), length(SSaccessories.snouts_list))
|
||||
if(features["horns"])
|
||||
@@ -362,8 +360,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
|
||||
set_uni_feature_block(blocknumber, construct_block(SSaccessories.tails_list_human.Find(features["tail_cat"]), length(SSaccessories.tails_list_human)))
|
||||
if(DNA_LIZARD_TAIL_BLOCK)
|
||||
set_uni_feature_block(blocknumber, construct_block(SSaccessories.tails_list_lizard.Find(features["tail_lizard"]), length(SSaccessories.tails_list_lizard)))
|
||||
if(DNA_MONKEY_TAIL_BLOCK)
|
||||
set_uni_feature_block(blocknumber, construct_block(SSaccessories.tails_list_monkey.Find(features["tail_monkey"]), length(SSaccessories.tails_list_monkey)))
|
||||
if(DNA_SNOUT_BLOCK)
|
||||
set_uni_feature_block(blocknumber, construct_block(SSaccessories.snouts_list.Find(features["snout"]), length(SSaccessories.snouts_list)))
|
||||
if(DNA_HORNS_BLOCK)
|
||||
@@ -669,8 +665,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
|
||||
dna.features["tail_cat"] = SSaccessories.tails_list_human[deconstruct_block(get_uni_feature_block(features, DNA_TAIL_BLOCK), length(SSaccessories.tails_list_human))]
|
||||
if(dna.features["tail_lizard"])
|
||||
dna.features["tail_lizard"] = SSaccessories.tails_list_lizard[deconstruct_block(get_uni_feature_block(features, DNA_LIZARD_TAIL_BLOCK), length(SSaccessories.tails_list_lizard))]
|
||||
if(dna.features["tail_monkey"])
|
||||
dna.features["tail_monkey"] = SSaccessories.tails_list_monkey[deconstruct_block(get_uni_feature_block(features, DNA_MONKEY_TAIL_BLOCK), length(SSaccessories.tails_list_monkey))]
|
||||
if(dna.features["ears"])
|
||||
dna.features["ears"] = SSaccessories.ears_list[deconstruct_block(get_uni_feature_block(features, DNA_EARS_BLOCK), length(SSaccessories.ears_list))]
|
||||
if(dna.features["moth_wings"])
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
var/natural_spawn = TRUE
|
||||
|
||||
/datum/sprite_accessory/blank
|
||||
name = "None"
|
||||
name = SPRITE_ACCESSORY_NONE
|
||||
icon_state = "None"
|
||||
|
||||
//////////////////////
|
||||
@@ -835,7 +835,7 @@
|
||||
var/gradient_category = GRADIENT_APPLIES_TO_HAIR|GRADIENT_APPLIES_TO_FACIAL_HAIR
|
||||
|
||||
/datum/sprite_accessory/gradient/none
|
||||
name = "None"
|
||||
name = SPRITE_ACCESSORY_NONE
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/gradient/full
|
||||
@@ -1726,10 +1726,6 @@
|
||||
/datum/sprite_accessory/lizard_markings
|
||||
icon = 'icons/mob/human/species/lizard/lizard_markings.dmi'
|
||||
|
||||
/datum/sprite_accessory/lizard_markings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/lizard_markings/dtiger
|
||||
name = "Dark Tiger Body"
|
||||
icon_state = "dtiger"
|
||||
@@ -1754,6 +1750,11 @@
|
||||
icon = 'icons/mob/human/species/lizard/lizard_tails.dmi'
|
||||
spine_key = SPINE_KEY_LIZARD
|
||||
|
||||
/datum/sprite_accessory/tails/lizard/none
|
||||
name = SPRITE_ACCESSORY_NONE
|
||||
icon_state = "none"
|
||||
natural_spawn = FALSE
|
||||
|
||||
/datum/sprite_accessory/tails/lizard/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
@@ -1781,6 +1782,13 @@
|
||||
icon_state = "default"
|
||||
color_src = HAIR_COLOR
|
||||
|
||||
/datum/sprite_accessory/tails/monkey
|
||||
|
||||
/datum/sprite_accessory/tails/monkey/none
|
||||
name = SPRITE_ACCESSORY_NONE
|
||||
icon_state = "none"
|
||||
natural_spawn = FALSE
|
||||
|
||||
/datum/sprite_accessory/tails/monkey/default
|
||||
name = "Monkey"
|
||||
icon = 'icons/mob/human/species/monkey/monkey_tail.dmi'
|
||||
@@ -1855,10 +1863,6 @@
|
||||
icon = 'icons/mob/human/species/lizard/lizard_misc.dmi'
|
||||
em_block = TRUE
|
||||
|
||||
/datum/sprite_accessory/horns/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/horns/simple
|
||||
name = "Simple"
|
||||
icon_state = "simple"
|
||||
@@ -1883,10 +1887,6 @@
|
||||
icon = 'icons/mob/human/cat_features.dmi'
|
||||
em_block = TRUE
|
||||
|
||||
/datum/sprite_accessory/ears/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/ears/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
@@ -1921,10 +1921,6 @@
|
||||
color_src = HAIR_COLOR
|
||||
locked = TRUE
|
||||
|
||||
/datum/sprite_accessory/wings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/wings
|
||||
icon = 'icons/mob/human/species/wings.dmi'
|
||||
em_block = TRUE
|
||||
@@ -2068,10 +2064,6 @@
|
||||
/datum/sprite_accessory/frills
|
||||
icon = 'icons/mob/human/species/lizard/lizard_misc.dmi'
|
||||
|
||||
/datum/sprite_accessory/frills/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/frills/simple
|
||||
name = "Simple"
|
||||
icon_state = "simple"
|
||||
@@ -2092,14 +2084,6 @@
|
||||
icon = 'icons/mob/human/species/lizard/lizard_spines.dmi'
|
||||
em_block = TRUE
|
||||
|
||||
/datum/sprite_accessory/spines/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/tail_spines/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/spines/short
|
||||
name = "Short"
|
||||
icon_state = "short"
|
||||
@@ -2360,10 +2344,6 @@
|
||||
icon = 'icons/mob/human/species/moth/moth_markings.dmi'
|
||||
color_src = null
|
||||
|
||||
/datum/sprite_accessory/moth_markings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/reddish
|
||||
name = "Reddish"
|
||||
icon_state = "reddish"
|
||||
|
||||
@@ -744,7 +744,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
sample_overlay = new overlay_path()
|
||||
organs_to_randomize[overlay_path] = sample_overlay
|
||||
|
||||
new_features["[sample_overlay.feature_key]"] = pick(sample_overlay.get_global_feature_list())
|
||||
new_features["[sample_overlay.feature_key]"] = sample_overlay.get_random_appearance().name
|
||||
|
||||
return new_features
|
||||
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@
|
||||
|
||||
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/monkey
|
||||
|
||||
dna_block = DNA_MONKEY_TAIL_BLOCK
|
||||
dna_block = null
|
||||
|
||||
///Monkey tail bodypart overlay
|
||||
/datum/bodypart_overlay/mutant/tail/monkey
|
||||
|
||||
Reference in New Issue
Block a user