Trait Tweaks

Adds blood color as a custom species setting
Adds photoresistant trait
Changes haste and slowdown traits to be taj and tesh speeds
This commit is contained in:
Arokha Sieyes
2017-05-30 11:30:53 -04:00
parent dfa560d06b
commit 684f570d0d
5 changed files with 45 additions and 12 deletions

View File

@@ -92,6 +92,7 @@ var/global/list/datum/dna/gene/dna_genes[0]
var/custom_species var/custom_species
var/base_species = "Human" var/base_species = "Human"
var/list/species_traits = list() var/list/species_traits = list()
var/blood_color = "#A10808"
// VOREStation // VOREStation
// New stuff // New stuff
@@ -171,6 +172,7 @@ var/global/list/datum/dna/gene/dna_genes[0]
var/datum/species/custom/CS = character.species var/datum/species/custom/CS = character.species
src.species_traits = CS.traits.Copy() src.species_traits = CS.traits.Copy()
src.base_species = CS.base_species src.base_species = CS.base_species
src.blood_color = CS.blood_color
// +1 to account for the none-of-the-above possibility // +1 to account for the none-of-the-above possibility
SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1) SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1)

View File

@@ -203,7 +203,8 @@
H.custom_species = dna.custom_species H.custom_species = dna.custom_species
if(istype(H.species,/datum/species/custom)) if(istype(H.species,/datum/species/custom))
var/datum/species/custom/CS = H.species var/datum/species/custom/CS = H.species
CS.produceCopy(dna.base_species,dna.species_traits,src) var/datum/species/custom/new_CS = CS.produceCopy(dna.base_species,dna.species_traits,src)
new_CS.blood_color = dna.blood_color
// VOREStation Edit End // VOREStation Edit End

View File

@@ -5,6 +5,7 @@
/datum/preferences /datum/preferences
var/custom_species // Custom species name, can't be changed due to it having been used in savefiles already. var/custom_species // Custom species name, can't be changed due to it having been used in savefiles already.
var/custom_base // What to base the custom species on var/custom_base // What to base the custom species on
var/blood_color = "#A10808"
var/list/pos_traits = list() // What traits they've selected for their custom species var/list/pos_traits = list() // What traits they've selected for their custom species
var/list/neu_traits = list() var/list/neu_traits = list()
@@ -25,6 +26,7 @@
S["pos_traits"] >> pref.pos_traits S["pos_traits"] >> pref.pos_traits
S["neu_traits"] >> pref.neu_traits S["neu_traits"] >> pref.neu_traits
S["neg_traits"] >> pref.neg_traits S["neg_traits"] >> pref.neg_traits
S["blood_color"] >> pref.blood_color
S["traits_cheating"]>> pref.traits_cheating S["traits_cheating"]>> pref.traits_cheating
S["max_traits"] >> pref.max_traits S["max_traits"] >> pref.max_traits
@@ -36,6 +38,7 @@
S["pos_traits"] << pref.pos_traits S["pos_traits"] << pref.pos_traits
S["neu_traits"] << pref.neu_traits S["neu_traits"] << pref.neu_traits
S["neg_traits"] << pref.neg_traits S["neg_traits"] << pref.neg_traits
S["blood_color"] << pref.blood_color
S["traits_cheating"]<< pref.traits_cheating S["traits_cheating"]<< pref.traits_cheating
S["max_traits"] << pref.max_traits S["max_traits"] << pref.max_traits
@@ -46,6 +49,8 @@
if(!pref.neu_traits) pref.neu_traits = list() if(!pref.neu_traits) pref.neu_traits = list()
if(!pref.neg_traits) pref.neg_traits = list() if(!pref.neg_traits) pref.neg_traits = list()
pref.blood_color = sanitize_hexcolor(pref.blood_color, default="#A10808")
if(!pref.traits_cheating) if(!pref.traits_cheating)
pref.starting_trait_points = STARTING_SPECIES_POINTS pref.starting_trait_points = STARTING_SPECIES_POINTS
pref.max_traits = MAX_SPECIES_TRAITS pref.max_traits = MAX_SPECIES_TRAITS
@@ -76,7 +81,10 @@
if(pref.species == "Custom Species") if(pref.species == "Custom Species")
var/datum/species/custom/CS = character.species var/datum/species/custom/CS = character.species
var/S = pref.custom_base ? pref.custom_base : "Human" var/S = pref.custom_base ? pref.custom_base : "Human"
CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character) var/datum/species/custom/new_CS = CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character)
//Any additional non-trait settings can be applied here
new_CS.blood_color = pref.blood_color
/datum/category_item/player_setup_item/vore/traits/content(var/mob/user) /datum/category_item/player_setup_item/vore/traits/content(var/mob/user)
if(pref.species == "Custom Species" || pref.custom_species) if(pref.species == "Custom Species" || pref.custom_species)
@@ -87,6 +95,10 @@
. += "<b>Icon Base: </b> " . += "<b>Icon Base: </b> "
. += "<a href='?src=\ref[src];custom_base=1'>[pref.custom_base ? pref.custom_base : "Human"]</a><br>" . += "<a href='?src=\ref[src];custom_base=1'>[pref.custom_base ? pref.custom_base : "Human"]</a><br>"
. += "<b>Blood Color: </b> "
. += "<a href='?src=\ref[src];blood_color=1'>Set Color</a>"
. += "<a href='?src=\ref[src];blood_reset=1'>R</a><br>"
var/points_left = pref.starting_trait_points var/points_left = pref.starting_trait_points
var/traits_left = pref.max_traits var/traits_left = pref.max_traits
for(var/T in pref.pos_traits + pref.neu_traits + pref.neg_traits) for(var/T in pref.pos_traits + pref.neu_traits + pref.neg_traits)
@@ -102,21 +114,21 @@
. += "<ul>" . += "<ul>"
for(var/T in pref.pos_traits) for(var/T in pref.pos_traits)
var/datum/trait/trait = positive_traits[T] var/datum/trait/trait = positive_traits[T]
. += "<li><a href='?src=\ref[src];clicked_pos_trait=[T]'>[trait.name] ([trait.cost])</a></li>" . += "<li>- <a href='?src=\ref[src];clicked_pos_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
. += "</ul>" . += "</ul>"
. += "<a href='?src=\ref[src];add_trait=[NEUTRAL_MODE]'>Neutral Trait +</a><br>" . += "<a href='?src=\ref[src];add_trait=[NEUTRAL_MODE]'>Neutral Trait +</a><br>"
. += "<ul>" . += "<ul>"
for(var/T in pref.neu_traits) for(var/T in pref.neu_traits)
var/datum/trait/trait = neutral_traits[T] var/datum/trait/trait = neutral_traits[T]
. += "<li><a href='?src=\ref[src];clicked_neu_trait=[T]'>- [trait.name] ([trait.cost])</a></li>" . += "<li>- <a href='?src=\ref[src];clicked_neu_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
. += "</ul>" . += "</ul>"
. += "<a href='?src=\ref[src];add_trait=[NEGATIVE_MODE]'>Negative Trait +</a><br>" . += "<a href='?src=\ref[src];add_trait=[NEGATIVE_MODE]'>Negative Trait +</a><br>"
. += "<ul>" . += "<ul>"
for(var/T in pref.neg_traits) for(var/T in pref.neg_traits)
var/datum/trait/trait = negative_traits[T] var/datum/trait/trait = negative_traits[T]
. += "<li><a href='?src=\ref[src];clicked_neg_trait=[T]'>- [trait.name] ([trait.cost])</a></li>" . += "<li>- <a href='?src=\ref[src];clicked_neg_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
. += "</ul>" . += "</ul>"
/datum/category_item/player_setup_item/vore/traits/OnTopic(var/href,var/list/href_list, var/mob/user) /datum/category_item/player_setup_item/vore/traits/OnTopic(var/href,var/list/href_list, var/mob/user)
@@ -137,11 +149,23 @@
return TOPIC_REFRESH return TOPIC_REFRESH
else if(href_list["custom_base"]) else if(href_list["custom_base"])
var/text_choice = input("Pick an icon set for your species:","Icon Base") in playable_species - whitelisted_species - "Custom Species" var/text_choice = input("Pick an icon set for your species:","Icon Base") in playable_species - whitelisted_species - "Custom Species" - "Promethean"
if(text_choice in playable_species) if(text_choice in playable_species)
pref.custom_base = text_choice pref.custom_base = text_choice
return TOPIC_REFRESH_UPDATE_PREVIEW return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["blood_color"])
var/color_choice = input("Pick a blood color (does not apply to synths)","Blood Color",pref.blood_color) as color
if(color_choice)
pref.blood_color = sanitize_hexcolor(color_choice, default="#A10808")
return TOPIC_REFRESH
else if(href_list["blood_reset"])
var/choice = alert("Reset blood color to human default (#A10808)?","Reset Blood Color","Reset","Cancel")
if(choice == "Reset")
pref.blood_color = "#A10808"
return TOPIC_REFRESH
else if(href_list["clicked_pos_trait"]) else if(href_list["clicked_pos_trait"])
var/datum/trait/trait = text2path(href_list["clicked_pos_trait"]) var/datum/trait/trait = text2path(href_list["clicked_pos_trait"])
var/choice = alert("Remove [initial(trait.name)] and regain [initial(trait.cost)] points?","Remove Trait","Remove","Cancel") var/choice = alert("Remove [initial(trait.name)] and regain [initial(trait.cost)] points?","Remove Trait","Remove","Cancel")

View File

@@ -2,13 +2,13 @@
name = "Slowdown" name = "Slowdown"
desc = "Allows you to move slower on average than baseline." desc = "Allows you to move slower on average than baseline."
cost = -1 cost = -1
var_changes = list("slowdown" = 0.3) var_changes = list("slowdown" = 0.5)
/datum/trait/speed_slow_plus /datum/trait/speed_slow_plus
name = "Slowdown (Plus)" name = "Slowdown (Plus)"
desc = "Allows you to move MUCH slower on average than baseline." desc = "Allows you to move MUCH slower on average than baseline."
cost = -2 cost = -2
var_changes = list("slowdown" = 0.5) var_changes = list("slowdown" = 1.0)
/datum/trait/weakling /datum/trait/weakling
name = "Weakling" name = "Weakling"

View File

@@ -2,13 +2,13 @@
name = "Haste" name = "Haste"
desc = "Allows you to move faster on average than baseline." desc = "Allows you to move faster on average than baseline."
cost = 2 cost = 2
var_changes = list("slowdown" = -0.3) var_changes = list("slowdown" = -0.5)
/datum/trait/speed_fast_plus /datum/trait/speed_fast_plus
name = "Haste (Plus)" name = "Haste (Plus)"
desc = "Allows you to move MUCH faster on average than baseline." desc = "Allows you to move MUCH faster on average than baseline."
cost = 3 cost = 4
var_changes = list("slowdown" = -0.5) var_changes = list("slowdown" = -1.0)
/datum/trait/hardy /datum/trait/hardy
name = "Hardy" name = "Hardy"
@@ -73,3 +73,9 @@
desc = "Adds some resistance to burn damage sources." desc = "Adds some resistance to burn damage sources."
cost = 2 cost = 2
var_changes = list("burn_mod" = 0.70) var_changes = list("burn_mod" = 0.70)
/datum/trait/photoresistant
name = "Photoresistant"
desc = "Decreases stun duration from flashes and other light-based stuns."
cost = 1
var_changes = list("flash_mod" = 0.5)