mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 04:28:12 +01:00
Merge branch 'master' into tgui_character_directory
This commit is contained in:
@@ -13,6 +13,9 @@
|
||||
var/r_ears2 = 30 // Ear extra color.
|
||||
var/g_ears2 = 30 // Ear extra color
|
||||
var/b_ears2 = 30 // Ear extra color
|
||||
var/r_ears3 = 30 // Ear tertiary color.
|
||||
var/g_ears3 = 30 // Ear tertiary color
|
||||
var/b_ears3 = 30 // Ear tertiary color
|
||||
var/tail_style // Type of selected tail style
|
||||
var/r_tail = 30 // Tail/Taur color
|
||||
var/g_tail = 30 // Tail/Taur color
|
||||
@@ -20,6 +23,9 @@
|
||||
var/r_tail2 = 30 // For extra overlay.
|
||||
var/g_tail2 = 30 // For extra overlay.
|
||||
var/b_tail2 = 30 // For extra overlay.
|
||||
var/r_tail3 = 30 // For tertiary overlay.
|
||||
var/g_tail3 = 30 // For tertiary overlay.
|
||||
var/b_tail3 = 30 // For tertiary overlay.
|
||||
var/wing_style // Type of selected wing style
|
||||
var/r_wing = 30 // Wing color
|
||||
var/g_wing = 30 // Wing color
|
||||
@@ -27,6 +33,9 @@
|
||||
var/r_wing2 = 30 // Wing extra color
|
||||
var/g_wing2 = 30 // Wing extra color
|
||||
var/b_wing2 = 30 // Wing extra color
|
||||
var/r_wing3 = 30 // Wing tertiary color
|
||||
var/g_wing3 = 30 // Wing tertiary color
|
||||
var/b_wing3 = 30 // Wing tertiary color
|
||||
|
||||
// Definition of the stuff for Ears
|
||||
/datum/category_item/player_setup_item/vore/ears
|
||||
@@ -41,6 +50,9 @@
|
||||
S["r_ears2"] >> pref.r_ears2
|
||||
S["g_ears2"] >> pref.g_ears2
|
||||
S["b_ears2"] >> pref.b_ears2
|
||||
S["r_ears3"] >> pref.r_ears3
|
||||
S["g_ears3"] >> pref.g_ears3
|
||||
S["b_ears3"] >> pref.b_ears3
|
||||
S["tail_style"] >> pref.tail_style
|
||||
S["r_tail"] >> pref.r_tail
|
||||
S["g_tail"] >> pref.g_tail
|
||||
@@ -48,6 +60,9 @@
|
||||
S["r_tail2"] >> pref.r_tail2
|
||||
S["g_tail2"] >> pref.g_tail2
|
||||
S["b_tail2"] >> pref.b_tail2
|
||||
S["r_tail3"] >> pref.r_tail3
|
||||
S["g_tail3"] >> pref.g_tail3
|
||||
S["b_tail3"] >> pref.b_tail3
|
||||
S["wing_style"] >> pref.wing_style
|
||||
S["r_wing"] >> pref.r_wing
|
||||
S["g_wing"] >> pref.g_wing
|
||||
@@ -55,6 +70,9 @@
|
||||
S["r_wing2"] >> pref.r_wing2
|
||||
S["g_wing2"] >> pref.g_wing2
|
||||
S["b_wing2"] >> pref.b_wing2
|
||||
S["r_wing3"] >> pref.r_wing3
|
||||
S["g_wing3"] >> pref.g_wing3
|
||||
S["b_wing3"] >> pref.b_wing3
|
||||
|
||||
/datum/category_item/player_setup_item/vore/ears/save_character(var/savefile/S)
|
||||
S["ear_style"] << pref.ear_style
|
||||
@@ -64,6 +82,9 @@
|
||||
S["r_ears2"] << pref.r_ears2
|
||||
S["g_ears2"] << pref.g_ears2
|
||||
S["b_ears2"] << pref.b_ears2
|
||||
S["r_ears3"] << pref.r_ears3
|
||||
S["g_ears3"] << pref.g_ears3
|
||||
S["b_ears3"] << pref.b_ears3
|
||||
S["tail_style"] << pref.tail_style
|
||||
S["r_tail"] << pref.r_tail
|
||||
S["g_tail"] << pref.g_tail
|
||||
@@ -71,6 +92,9 @@
|
||||
S["r_tail2"] << pref.r_tail2
|
||||
S["g_tail2"] << pref.g_tail2
|
||||
S["b_tail2"] << pref.b_tail2
|
||||
S["r_tail3"] << pref.r_tail3
|
||||
S["g_tail3"] << pref.g_tail3
|
||||
S["b_tail3"] << pref.b_tail3
|
||||
S["wing_style"] << pref.wing_style
|
||||
S["r_wing"] << pref.r_wing
|
||||
S["g_wing"] << pref.g_wing
|
||||
@@ -78,6 +102,9 @@
|
||||
S["r_wing2"] << pref.r_wing2
|
||||
S["g_wing2"] << pref.g_wing2
|
||||
S["b_wing2"] << pref.b_wing2
|
||||
S["r_wing3"] << pref.r_wing3
|
||||
S["g_wing3"] << pref.g_wing3
|
||||
S["b_wing3"] << pref.b_wing3
|
||||
|
||||
/datum/category_item/player_setup_item/vore/ears/sanitize_character()
|
||||
pref.r_ears = sanitize_integer(pref.r_ears, 0, 255, initial(pref.r_ears))
|
||||
@@ -86,18 +113,28 @@
|
||||
pref.r_ears2 = sanitize_integer(pref.r_ears2, 0, 255, initial(pref.r_ears2))
|
||||
pref.g_ears2 = sanitize_integer(pref.g_ears2, 0, 255, initial(pref.g_ears2))
|
||||
pref.b_ears2 = sanitize_integer(pref.b_ears2, 0, 255, initial(pref.b_ears2))
|
||||
pref.r_ears3 = sanitize_integer(pref.r_ears3, 0, 255, initial(pref.r_ears3))
|
||||
pref.g_ears3 = sanitize_integer(pref.g_ears3, 0, 255, initial(pref.g_ears3))
|
||||
pref.b_ears3 = sanitize_integer(pref.b_ears3, 0, 255, initial(pref.b_ears3))
|
||||
pref.r_tail = sanitize_integer(pref.r_tail, 0, 255, initial(pref.r_tail))
|
||||
pref.g_tail = sanitize_integer(pref.g_tail, 0, 255, initial(pref.g_tail))
|
||||
pref.b_tail = sanitize_integer(pref.b_tail, 0, 255, initial(pref.b_tail))
|
||||
pref.r_tail2 = sanitize_integer(pref.r_tail2, 0, 255, initial(pref.r_tail2))
|
||||
pref.g_tail2 = sanitize_integer(pref.g_tail2, 0, 255, initial(pref.g_tail2))
|
||||
pref.b_tail2 = sanitize_integer(pref.b_tail2, 0, 255, initial(pref.b_tail2))
|
||||
pref.r_tail3 = sanitize_integer(pref.r_tail3, 0, 255, initial(pref.r_tail3))
|
||||
pref.g_tail3 = sanitize_integer(pref.g_tail3, 0, 255, initial(pref.g_tail3))
|
||||
pref.b_tail3 = sanitize_integer(pref.b_tail3, 0, 255, initial(pref.b_tail3))
|
||||
pref.r_wing = sanitize_integer(pref.r_wing, 0, 255, initial(pref.r_wing))
|
||||
pref.g_wing = sanitize_integer(pref.g_wing, 0, 255, initial(pref.g_wing))
|
||||
pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing))
|
||||
pref.r_wing2 = sanitize_integer(pref.r_wing2, 0, 255, initial(pref.r_wing2))
|
||||
pref.g_wing2 = sanitize_integer(pref.g_wing2, 0, 255, initial(pref.g_wing2))
|
||||
pref.b_wing2 = sanitize_integer(pref.b_wing2, 0, 255, initial(pref.b_wing2))
|
||||
pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3))
|
||||
pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3))
|
||||
pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3))
|
||||
|
||||
if(pref.ear_style)
|
||||
pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style))
|
||||
var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style]
|
||||
@@ -122,6 +159,9 @@
|
||||
character.r_ears2 = pref.r_ears2
|
||||
character.b_ears2 = pref.b_ears2
|
||||
character.g_ears2 = pref.g_ears2
|
||||
character.r_ears3 = pref.r_ears3
|
||||
character.b_ears3 = pref.b_ears3
|
||||
character.g_ears3 = pref.g_ears3
|
||||
character.tail_style = tail_styles_list[pref.tail_style]
|
||||
character.r_tail = pref.r_tail
|
||||
character.b_tail = pref.b_tail
|
||||
@@ -129,6 +169,9 @@
|
||||
character.r_tail2 = pref.r_tail2
|
||||
character.b_tail2 = pref.b_tail2
|
||||
character.g_tail2 = pref.g_tail2
|
||||
character.r_tail3 = pref.r_tail3
|
||||
character.b_tail3 = pref.b_tail3
|
||||
character.g_tail3 = pref.g_tail3
|
||||
character.wing_style = wing_styles_list[pref.wing_style]
|
||||
character.r_wing = pref.r_wing
|
||||
character.b_wing = pref.b_wing
|
||||
@@ -136,6 +179,9 @@
|
||||
character.r_wing2 = pref.r_wing2
|
||||
character.b_wing2 = pref.b_wing2
|
||||
character.g_wing2 = pref.g_wing2
|
||||
character.r_wing3 = pref.r_wing3
|
||||
character.b_wing3 = pref.b_wing3
|
||||
character.g_wing3 = pref.g_wing3
|
||||
|
||||
|
||||
|
||||
@@ -153,10 +199,12 @@
|
||||
. += " Style: <a href='?src=\ref[src];ear_style=1'>[ear_display]</a><br>"
|
||||
if(ear_styles_list[pref.ear_style])
|
||||
var/datum/sprite_accessory/ears/ear = ear_styles_list[pref.ear_style]
|
||||
if (ear.do_colouration)
|
||||
if(ear.do_colouration)
|
||||
. += "<a href='?src=\ref[src];ear_color=1'>Change Color</a> [color_square(pref.r_ears, pref.g_ears, pref.b_ears)]<br>"
|
||||
if (ear.extra_overlay)
|
||||
if(ear.extra_overlay)
|
||||
. += "<a href='?src=\ref[src];ear_color2=1'>Change Secondary Color</a> [color_square(pref.r_ears2, pref.g_ears2, pref.b_ears2)]<br>"
|
||||
if(ear.extra_overlay2)
|
||||
. += "<a href='?src=\ref[src];ear_color3=1'>Change Tertiary Color</a> [color_square(pref.r_ears3, pref.g_ears3, pref.b_ears3)]<br>"
|
||||
|
||||
var/tail_display = "Normal"
|
||||
if(pref.tail_style && (pref.tail_style in tail_styles_list))
|
||||
@@ -169,10 +217,12 @@
|
||||
|
||||
if(tail_styles_list[pref.tail_style])
|
||||
var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style]
|
||||
if (T.do_colouration)
|
||||
if(T.do_colouration)
|
||||
. += "<a href='?src=\ref[src];tail_color=1'>Change Color</a> [color_square(pref.r_tail, pref.g_tail, pref.b_tail)]<br>"
|
||||
if (T.extra_overlay)
|
||||
if(T.extra_overlay)
|
||||
. += "<a href='?src=\ref[src];tail_color2=1'>Change Secondary Color</a> [color_square(pref.r_tail2, pref.g_tail2, pref.b_tail2)]<br>"
|
||||
if(T.extra_overlay2)
|
||||
. += "<a href='?src=\ref[src];tail_color3=1'>Change Tertiary Color</a> [color_square(pref.r_tail3, pref.g_tail3, pref.b_tail3)]<br>"
|
||||
|
||||
var/wing_display = "Normal"
|
||||
if(pref.wing_style && (pref.wing_style in wing_styles_list))
|
||||
@@ -189,6 +239,8 @@
|
||||
. += "<a href='?src=\ref[src];wing_color=1'>Change Color</a> [color_square(pref.r_wing, pref.g_wing, pref.b_wing)]<br>"
|
||||
if (W.extra_overlay)
|
||||
. += "<a href='?src=\ref[src];wing_color2=1'>Change Secondary Color</a> [color_square(pref.r_wing2, pref.g_wing2, pref.b_wing2)]<br>"
|
||||
if (W.extra_overlay2)
|
||||
. += "<a href='?src=\ref[src];wing_color3=1'>Change Secondary Color</a> [color_square(pref.r_wing3, pref.g_wing3, pref.b_wing3)]<br>"
|
||||
|
||||
/datum/category_item/player_setup_item/vore/ears/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||
if(!CanUseTopic(user))
|
||||
@@ -219,7 +271,7 @@
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
else if(href_list["ear_color2"])
|
||||
var/new_earc2 = input(user, "Choose your character's ear colour:", "Character Preference",
|
||||
var/new_earc2 = input(user, "Choose your character's secondary ear colour:", "Character Preference",
|
||||
rgb(pref.r_ears2, pref.g_ears2, pref.b_ears2)) as color|null
|
||||
if(new_earc2)
|
||||
pref.r_ears2 = hex2num(copytext(new_earc2, 2, 4))
|
||||
@@ -227,6 +279,15 @@
|
||||
pref.b_ears2 = hex2num(copytext(new_earc2, 6, 8))
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
else if(href_list["ear_color3"])
|
||||
var/new_earc3 = input(user, "Choose your character's tertiary ear colour:", "Character Preference",
|
||||
rgb(pref.r_ears3, pref.g_ears3, pref.b_ears3)) as color|null
|
||||
if(new_earc3)
|
||||
pref.r_ears3 = hex2num(copytext(new_earc3, 2, 4))
|
||||
pref.g_ears3 = hex2num(copytext(new_earc3, 4, 6))
|
||||
pref.b_ears3 = hex2num(copytext(new_earc3, 6, 8))
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
else if(href_list["tail_style"])
|
||||
// Construct the list of names allowed for this user.
|
||||
var/list/pretty_tail_styles = list("Normal" = null)
|
||||
@@ -260,6 +321,15 @@
|
||||
pref.b_tail2 = hex2num(copytext(new_tailc2, 6, 8))
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
else if(href_list["tail_color3"])
|
||||
var/new_tailc3 = input(user, "Choose your character's tertiary tail/taur colour:", "Character Preference",
|
||||
rgb(pref.r_tail3, pref.g_tail3, pref.b_tail3)) as color|null
|
||||
if(new_tailc3)
|
||||
pref.r_tail3 = hex2num(copytext(new_tailc3, 2, 4))
|
||||
pref.g_tail3 = hex2num(copytext(new_tailc3, 4, 6))
|
||||
pref.b_tail3 = hex2num(copytext(new_tailc3, 6, 8))
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
else if(href_list["wing_style"])
|
||||
// Construct the list of names allowed for this user.
|
||||
var/list/pretty_wing_styles = list("Normal" = null)
|
||||
@@ -293,4 +363,13 @@
|
||||
pref.b_wing2 = hex2num(copytext(new_wingc2, 6, 8))
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
else if(href_list["wing_color3"])
|
||||
var/new_wingc3 = input(user, "Choose your character's tertiary wing colour:", "Character Preference",
|
||||
rgb(pref.r_wing3, pref.g_wing3, pref.b_wing3)) as color|null
|
||||
if(new_wingc3)
|
||||
pref.r_wing3 = hex2num(copytext(new_wingc3, 2, 4))
|
||||
pref.g_wing3 = hex2num(copytext(new_wingc3, 4, 6))
|
||||
pref.b_wing3 = hex2num(copytext(new_wingc3, 6, 8))
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -1,15 +1,3 @@
|
||||
var/UNATHI_EGG = "Unathi"
|
||||
var/TAJARAN_EGG = "Tajaran"
|
||||
var/AKULA_EGG = "Akula"
|
||||
var/SKRELL_EGG = "Skrell"
|
||||
var/SERGAL_EGG = "Sergal"
|
||||
var/HUMAN_EGG = "Human"
|
||||
var/NEVREAN_EGG = "nevrean"
|
||||
var/SLIME_EGG = "Slime"
|
||||
var/EGG_EGG = "Egg"
|
||||
var/XENOCHIMERA_EGG = "Xenochimera"
|
||||
var/XENOMORPH_EGG = "Xenomorph"
|
||||
|
||||
// Define a place to save appearance in character setup
|
||||
/datum/preferences
|
||||
var/vore_egg_type = "Egg" //The egg type they have.
|
||||
@@ -26,8 +14,7 @@ var/XENOMORPH_EGG = "Xenomorph"
|
||||
S["vore_egg_type"] << pref.vore_egg_type
|
||||
|
||||
/datum/category_item/player_setup_item/vore/egg/sanitize_character()
|
||||
var/valid_vore_egg_types = global_vore_egg_types
|
||||
pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, valid_vore_egg_types, initial(pref.vore_egg_type))
|
||||
pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, global_vore_egg_types, initial(pref.vore_egg_type))
|
||||
|
||||
/datum/category_item/player_setup_item/vore/egg/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.vore_egg_type = pref.vore_egg_type
|
||||
@@ -44,7 +31,7 @@ var/XENOMORPH_EGG = "Xenomorph"
|
||||
var/list/vore_egg_types = global_vore_egg_types
|
||||
var/selection = input(user, "Choose your character's egg type:", "Character Preference", pref.vore_egg_type) as null|anything in vore_egg_types
|
||||
if(selection)
|
||||
pref.vore_egg_type = vore_egg_types[selection]
|
||||
pref.vore_egg_type = selection
|
||||
return TOPIC_REFRESH
|
||||
else
|
||||
return
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
#define NEUTRAL_MODE 2
|
||||
#define NEGATIVE_MODE 3
|
||||
|
||||
#define ORGANICS 1
|
||||
#define SYNTHETICS 2
|
||||
|
||||
/datum/preferences
|
||||
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
|
||||
@@ -15,6 +18,7 @@
|
||||
var/starting_trait_points = STARTING_SPECIES_POINTS
|
||||
var/max_traits = MAX_SPECIES_TRAITS
|
||||
var/dirty_synth = 0 //Are you a synth
|
||||
var/gross_meatbag = 0 //Where'd I leave my Voight-Kampff test kit?
|
||||
|
||||
// Definition of the stuff for Ears
|
||||
/datum/category_item/player_setup_item/vore/traits
|
||||
@@ -58,21 +62,21 @@
|
||||
|
||||
if(pref.species != SPECIES_CUSTOM)
|
||||
pref.pos_traits.Cut()
|
||||
pref.neu_traits.Cut()
|
||||
pref.neg_traits.Cut()
|
||||
else
|
||||
// Clean up positive traits
|
||||
for(var/path in pref.pos_traits)
|
||||
if(!(path in positive_traits))
|
||||
pref.pos_traits -= path
|
||||
//Neutral traits
|
||||
for(var/path in pref.neu_traits)
|
||||
if(!(path in neutral_traits))
|
||||
pref.neu_traits -= path
|
||||
//Negative traits
|
||||
for(var/path in pref.neg_traits)
|
||||
if(!(path in negative_traits))
|
||||
pref.neg_traits -= path
|
||||
// Clean up positive traits
|
||||
for(var/path in pref.pos_traits)
|
||||
if(!(path in positive_traits))
|
||||
pref.pos_traits -= path
|
||||
//Neutral traits
|
||||
for(var/path in pref.neu_traits)
|
||||
if(!(path in neutral_traits))
|
||||
pref.neu_traits -= path
|
||||
if(!(pref.species == SPECIES_CUSTOM) && !(path in everyone_traits))
|
||||
pref.neu_traits -= path
|
||||
//Negative traits
|
||||
for(var/path in pref.neg_traits)
|
||||
if(!(path in negative_traits))
|
||||
pref.neg_traits -= path
|
||||
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
@@ -82,23 +86,31 @@
|
||||
|
||||
/datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.custom_species = pref.custom_species
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
|
||||
if(character.isSynthetic()) //Checking if we have a synth on our hands, boys.
|
||||
pref.dirty_synth = 1
|
||||
pref.gross_meatbag = 0
|
||||
else
|
||||
pref.gross_meatbag = 1
|
||||
pref.dirty_synth = 0
|
||||
|
||||
if(selected_species.selects_bodytype)
|
||||
var/datum/species/custom/CS = character.species
|
||||
var/S = pref.custom_base ? pref.custom_base : "Human"
|
||||
var/datum/species/custom/new_CS = CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character)
|
||||
var/datum/species/S = character.species
|
||||
var/SB
|
||||
if(S.selects_bodytype)
|
||||
SB = pref.custom_base ? pref.custom_base : "Human"
|
||||
else
|
||||
SB = S.name
|
||||
var/datum/species/new_S = S.produceCopy(SB, 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
|
||||
//Any additional non-trait settings can be applied here
|
||||
new_S.blood_color = pref.blood_color
|
||||
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
//Statistics for this would be nice
|
||||
var/english_traits = english_list(new_S.traits, and_text = ";", comma_text = ";")
|
||||
log_game("TRAITS [pref.client_ckey]/([character]) with: [english_traits]") //Terrible 'fake' key_name()... but they aren't in the same entity yet
|
||||
else
|
||||
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
//Statistics for this would be nice
|
||||
var/english_traits = english_list(new_CS.traits, and_text = ";", comma_text = ";")
|
||||
log_game("TRAITS [pref.client_ckey]/([character]) with: [english_traits]") //Terrible 'fake' key_name()... but they aren't in the same entity yet
|
||||
|
||||
/datum/category_item/player_setup_item/vore/traits/content(var/mob/user)
|
||||
. += "<b>Custom Species Name:</b> "
|
||||
@@ -109,15 +121,16 @@
|
||||
. += "<b>Icon Base: </b> "
|
||||
. += "<a href='?src=\ref[src];custom_base=1'>[pref.custom_base ? pref.custom_base : "Human"]</a><br>"
|
||||
|
||||
var/traits_left = pref.max_traits
|
||||
. += "<b>Traits Left:</b> [traits_left]<br>"
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
var/points_left = pref.starting_trait_points
|
||||
var/traits_left = pref.max_traits
|
||||
|
||||
for(var/T in pref.pos_traits + pref.neg_traits)
|
||||
points_left -= traits_costs[T]
|
||||
traits_left--
|
||||
|
||||
. += "<b>Points Left:</b> [points_left]<br>"
|
||||
. += "<b>Traits Left:</b> [traits_left]<br>"
|
||||
if(points_left < 0 || traits_left < 0 || !pref.custom_species)
|
||||
. += "<span style='color:red;'><b>^ Fix things! ^</b></span><br>"
|
||||
|
||||
@@ -128,19 +141,18 @@
|
||||
. += "<li>- <a href='?src=\ref[src];clicked_pos_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
|
||||
. += "</ul>"
|
||||
|
||||
. += "<a href='?src=\ref[src];add_trait=[NEUTRAL_MODE]'>Neutral Trait +</a><br>"
|
||||
. += "<ul>"
|
||||
for(var/T in pref.neu_traits)
|
||||
var/datum/trait/trait = neutral_traits[T]
|
||||
. += "<li>- <a href='?src=\ref[src];clicked_neu_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
|
||||
. += "</ul>"
|
||||
|
||||
. += "<a href='?src=\ref[src];add_trait=[NEGATIVE_MODE]'>Negative Trait +</a><br>"
|
||||
. += "<ul>"
|
||||
for(var/T in pref.neg_traits)
|
||||
var/datum/trait/trait = negative_traits[T]
|
||||
. += "<li>- <a href='?src=\ref[src];clicked_neg_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
|
||||
. += "</ul>"
|
||||
. += "<a href='?src=\ref[src];add_trait=[NEUTRAL_MODE]'>Neutral Trait +</a><br>"
|
||||
. += "<ul>"
|
||||
for(var/T in pref.neu_traits)
|
||||
var/datum/trait/trait = neutral_traits[T]
|
||||
. += "<li>- <a href='?src=\ref[src];clicked_neu_trait=[T]'>[trait.name] ([trait.cost])</a></li>"
|
||||
. += "</ul>"
|
||||
. += "<b>Blood Color: </b>" //People that want to use a certain species to have that species traits (xenochimera/promethean/spider) should be able to set their own blood color.
|
||||
. += "<a href='?src=\ref[src];blood_color=1'>Set Color</a>"
|
||||
. += "<a href='?src=\ref[src];blood_reset=1'>R</a><br>"
|
||||
@@ -213,8 +225,12 @@
|
||||
picklist = positive_traits.Copy() - pref.pos_traits
|
||||
mylist = pref.pos_traits
|
||||
if(NEUTRAL_MODE)
|
||||
picklist = neutral_traits.Copy() - pref.neu_traits
|
||||
mylist = pref.neu_traits
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
picklist = neutral_traits.Copy() - pref.neu_traits
|
||||
mylist = pref.neu_traits
|
||||
else
|
||||
picklist = everyone_traits.Copy() - pref.neu_traits
|
||||
mylist = pref.neu_traits
|
||||
if(NEGATIVE_MODE)
|
||||
picklist = negative_traits.Copy() - pref.neg_traits
|
||||
mylist = pref.neg_traits
|
||||
@@ -260,13 +276,16 @@
|
||||
|
||||
var/conflict = FALSE
|
||||
|
||||
user.isSynthetic() //Recheck just to be sure
|
||||
if(pref.dirty_synth && instance.not_for_synths)//if you are a synth you can't take this trait.
|
||||
alert("You cannot take this trait as a SYNTH.\
|
||||
Please remove that trait, or pick another trait to add.","Error")
|
||||
if(pref.dirty_synth && !(instance.can_take & SYNTHETICS))
|
||||
alert("The trait you've selected can only be taken by organic characters!","Error")
|
||||
pref.dirty_synth = 0 //Just to be sure
|
||||
return TOPIC_REFRESH
|
||||
|
||||
if(pref.gross_meatbag && !(instance.can_take & ORGANICS))
|
||||
alert("The trait you've selected can only be taken by synthetic characters!","Error")
|
||||
pref.gross_meatbag = 0 //Just to be sure
|
||||
return TOPIC_REFRESH
|
||||
|
||||
|
||||
if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits)
|
||||
conflict = instance.name
|
||||
|
||||
Reference in New Issue
Block a user