Huge Sprite Rework (#342)

* Revert "Revert "Huge Sprite Rework""

* Compilation of all feedback fixes

This commit contains all the suggested fixes so far and the changes we
came up with through discussion about the code.
For example, genitals **may** now use alternate icons for aroused
states, but does not have to, this is decided by a boolean variable in
the sprite accessory itself, defaulting to not using alternate icons.
Genital icon_state names now follow a new format to match these new
options in a modular way for all kinds of genitals.

* Conflict solving

reformats all the taurs to use the TAUR layer instead of the BODY_FRONT
layer. Same for the new Eevee sprites.

* Committing the old, unfixed file.

This will cause errors if used, but at least it won't cause conflicts.

* Contains fixed sprite names

The shepherd taur body should STILL have a hole in the body due to a
pixel error.
I have forgotten which pixes these are, so.... **le shrug**

* Anger commit

Commiting this in anger. I WILL make it work damnit!

* Proper name fixes.

Also renames the taur cow to no longer have an incorrectly duplicate
icon_state.

* Shepherd taur pixel fix

Fixes the missing pixels from the taur body that caused a hole to appear
when viewed from the sides.

* Conflict resolution

This PR will cause some sprite-breaking overlay errors.
But it's the only way to handle the conflicting .dmi.
So I'll make a separate PR to fix the sprites later.

* Fixes global lists

Now they use whatever weird new system we got for them.
This commit is contained in:
ktccd
2017-04-15 13:24:44 +02:00
committed by TalkingCactus
parent bd1a26de8d
commit c785038994
19 changed files with 336 additions and 145 deletions
+38 -8
View File
@@ -86,7 +86,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"exhibitionist" = FALSE,
"genitals_use_skintone" = FALSE,
"has_cock" = FALSE,
"cock_shape" = "human",
"cock_shape" = "Human",
"cock_length" = 6,
"cock_girth_ratio" = COCK_GIRTH_RATIO_DEF,
"cock_color" = "fff",
@@ -115,8 +115,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"has_breasts" = FALSE,
"breasts_color" = "fff",
"breasts_size" = "C",
"breasts_shape" = "pair",
"breasts_fluid" = "milk",
"has_vag" = FALSE,
"vag_shape" = "Human",
"vag_color" = "fff",
"vag_clits" = 1,
"vag_clit_diam" = 0.25,
@@ -353,7 +355,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
else
dat += "High"
dat += "</a><br>"
// dat += "<b>Genital Colors:</b><a href='?_src_=prefs;preference=genitals_color_source'>[features["genitals_use_skintone"] == TRUE ? "Skin Tone" : "Custom"]</a><BR>"
dat += "</td><td width='300px' height='300px' valign='top'>"
@@ -405,6 +406,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Tertiary Color: </b><span style='border: 1px solid #161616; background-color: #[features["mcolor3"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=mutant_color3;task=input'>Change</a><BR>"
if(pref_species.use_skintones)
dat += "<b>Skin Tone: </b><a href='?_src_=prefs;preference=s_tone;task=input'>[skin_tone]</a><BR>"
dat += "<b>Genitals Use Skintone:</b><a href='?_src_=prefs;preference=genital_colour'>[features["genitals_use_skintone"] == TRUE ? "Enabled" : "Disabled"]</a><BR>"
if(HAIR in pref_species.species_traits)
dat += "<b>Hair Style: </b><a href='?_src_=prefs;preference=hair_style;task=input'>[hair_style]</a><BR>"
dat += "<b>Hair Color: </b><span style='border:1px solid #161616; background-color: #[hair_color];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=hair;task=input'>Change</a><BR>"
@@ -473,18 +476,26 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Penis Length:</b> <a href='?_src_=prefs;preference=cock_length;task=input'>[features["cock_length"]] inch(es)</a><BR>"
dat += "<b>Has Testicles:</b><a href='?_src_=prefs;preference=has_balls'>[features["has_balls"] == TRUE ? "Yes" : "No"]</a><BR>"
if(features["has_balls"] == TRUE)
dat += "<b>Testicles Color:</b><span style='border: 1px solid #161616; background-color: #[features["balls_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=balls_color;task=input'>Change</a><BR>"
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
dat += "<b>Testicles Color:</b><span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'>&nbsp;&nbsp;&nbsp;</span>(Skin tone overriding)<BR>"
else
dat += "<b>Testicles Color:</b><span style='border: 1px solid #161616; background-color: #[features["balls_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=balls_color;task=input'>Change</a><BR>"
dat += "<b>Has Vagina:</b><a href='?_src_=prefs;preference=has_vag'>[features["has_vag"] == TRUE ? "Yes" : "No"]</a><BR>"
if(features["has_vag"])
dat += "<b>Vagina Color:</b><span style='border: 1px solid #161616; background-color: #[features["vag_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=vag_color;task=input'>Change</a><BR>"
dat += "<b>Vagina Type:</b> <a href='?_src_=prefs;preference=vag_shape;task=input'>[features["vag_shape"]]</a><BR>"
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
dat += "<b>Vagina Color:</b><span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'>&nbsp;&nbsp;&nbsp;</span>(Skin tone overriding)<BR>"
else
dat += "<b>Vagina Color:</b><span style='border: 1px solid #161616; background-color: #[features["vag_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=vag_color;task=input'>Change</a><BR>"
dat += "<b>Has Womb:</b><a href='?_src_=prefs;preference=has_womb'>[features["has_womb"] == TRUE ? "Yes" : "No"]</a><BR>"
dat += "<b>Has Breasts:</b><a href='?_src_=prefs;preference=has_breasts'>[features["has_breasts"] == TRUE ? "Yes" : "No"]</a><BR>"
if(features["has_breasts"])
// if(pref_species.use_skintones)
// dat += "<b>Color:</b><span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'>&nbsp;&nbsp;&nbsp;</span>(Skin tone overriding)"
// else
// dat += "<b>Color:</b><span style='border: 1px solid #161616; background-color: #[features["breasts_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=breasts_color;task=input'>Change</a>"
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
dat += "<b>Color:</b><span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'>&nbsp;&nbsp;&nbsp;</span>(Skin tone overriding)<BR>"
else
dat += "<b>Color:</b><span style='border: 1px solid #161616; background-color: #[features["breasts_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=breasts_color;task=input'>Change</a><BR>"
dat += "<b>Cup Size:</b><a href='?_src_=prefs;preference=breasts_size;task=input'>[features["breasts_size"]]</a><br>"
dat += "<b>Breast Shape:</b><a href='?_src_=prefs;preference=breasts_shape;task=input'>[features["breasts_shape"]]</a><br>"
/*
dat += "<h3>Ovipositor</h3>"
dat += "<b>Has Ovipositor:</b><a href='?_src_=prefs;preference=has_ovi'>[features["has_ovi"] == TRUE ? "Yes" : "No"]</a>"
@@ -1313,6 +1324,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_size)
features["breasts_size"] = new_size
if("breasts_shape")
var/new_shape
new_shape = input(user, "Breast Shape", "Character Preference") as null|anything in GLOB.breasts_shapes_list
if(new_shape)
features["breasts_shape"] = new_shape
if("breasts_color")
var/new_breasts_color = input(user, "Breast Color:", "Character Preference") as color|null
if(new_breasts_color)
@@ -1323,6 +1340,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["breasts_color"] = sanitize_hexcolor(new_breasts_color)
else
user << "<span class='danger'>Invalid color. Your color is not bright enough.</span>"
if("vag_shape")
var/new_shape
new_shape = input(user, "Vagina Type", "Character Preference") as null|anything in GLOB.vagina_shapes_list
if(new_shape)
features["vag_shape"] = new_shape
if("vag_color")
var/new_vagcolor = input(user, "Vagina color:", "Character Preference") as color|null
if(new_vagcolor)
@@ -1338,6 +1360,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
switch(href_list["preference"])
//citadel code
if("genital_colour")
switch(features["genitals_use_skintone"])
if(TRUE)
features["genitals_use_skintone"] = FALSE
if(FALSE)
features["genitals_use_skintone"] = TRUE
else
features["genitals_use_skintone"] = FALSE
if("arousable")
switch(arousable)
if(TRUE)
+8 -2
View File
@@ -2,7 +2,7 @@
#define SAVEFILE_VERSION_MIN 10
//This is the current version, anything below this will attempt to update (if it's not obsolete)
#define SAVEFILE_VERSION_MAX 18
#define SAVEFILE_VERSION_MAX 19
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
This proc checks if the current directory of the savefile S needs updating
@@ -125,7 +125,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
joblessrole = BEASSISTANT
if(current_version < 17)
features["legs"] = "Normal Legs"
if(current_version < 18)//this should lower the amount of lag when you select or change something.
if(current_version < 19)//this should lower the amount of lag when you select or change something.
features["mam_body_markings"] = sanitize_inlist(features["mam_body_markings"], GLOB.mam_body_markings_list)
features["mam_ears"] = sanitize_inlist(features["mam_ears"], GLOB.mam_ears_list)
features["mam_tail"] = sanitize_inlist(features["mam_tail"], GLOB.mam_tails_list)
@@ -148,10 +148,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//breasts features
features["has_breasts"] = sanitize_integer(features["has_breasts"], 0, 1, 0)
features["breasts_size"] = sanitize_inlist(features["breasts_size"], GLOB.breasts_size_list, "C")
features["breasts_shape"] = sanitize_inlist(features["breasts_shape"], GLOB.breasts_shapes_list, "pair")
features["breasts_color"] = sanitize_hexcolor(features["breasts_color"], 3, 0)
features["breasts_fluid"] = sanitize_inlist(features["breasts_fluid"], GLOB.milk_id_list, "milk")
//vagina features
features["has_vag"] = sanitize_integer(features["has_vag"], 0, 1, 0)
features["vag_shape"] = sanitize_inlist(features["vag_shape"], GLOB.vagina_shapes_list, "Human")
features["vag_color"] = sanitize_hexcolor(features["vag_color"], 3, 0)
//womb features
features["has_womb"] = sanitize_integer(features["has_womb"], 0, 1, 0)
@@ -383,10 +385,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//breasts features
S["feature_has_breasts"] >> features["has_breasts"]
S["feature_breasts_size"] >> features["breasts_size"]
S["feature_breasts_shape"] >> features["breasts_shape"]
S["feature_breasts_color"] >> features["breasts_color"]
S["feature_breasts_fluid"] >> features["breasts_fluid"]
//vagina features
S["feature_has_vag"] >> features["has_vag"]
S["feature_vag_shape"] >> features["vag_shape"]
S["feature_vag_color"] >> features["vag_color"]
//womb features
S["feature_has_womb"] >> features["has_womb"]
@@ -547,10 +551,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//breasts features
S["feature_has_breasts"] << features["has_breasts"]
S["feature_breasts_size"] << features["breasts_size"]
S["feature_breasts_shape"] << features["breasts_shape"]
S["feature_breasts_color"] << features["breasts_color"]
S["feature_breasts_fluid"] << features["breasts_fluid"]
//vagina features
S["feature_has_vag"] << features["has_vag"]
S["feature_vag_shape"] << features["vag_shape"]
S["feature_vag_color"] << features["vag_color"]
//womb features
S["feature_has_womb"] << features["has_womb"]