adds 2 more colors of vox (#9322)
vox can choose to be these in their preferences
@@ -59,27 +59,39 @@ proc/random_name(gender, speciesName = "Human")
|
||||
|
||||
|
||||
|
||||
proc/random_skin_tone()
|
||||
switch(pick(60;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino"))
|
||||
if("caucasian") . = -10
|
||||
if("afroamerican") . = -115
|
||||
if("african") . = -165
|
||||
if("latino") . = -55
|
||||
if("albino") . = 34
|
||||
else . = rand(-185,34)
|
||||
return min(max( .+rand(-25, 25), -185),34)
|
||||
proc/random_skin_tone(species = "Human")
|
||||
if(species == "Human")
|
||||
switch(pick(60;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino"))
|
||||
if("caucasian") . = -10
|
||||
if("afroamerican") . = -115
|
||||
if("african") . = -165
|
||||
if("latino") . = -55
|
||||
if("albino") . = 34
|
||||
else . = rand(-185,34)
|
||||
return min(max( .+rand(-25, 25), -185),34)
|
||||
else if(species == "Vox")
|
||||
. = rand(1,3)
|
||||
return .
|
||||
else return 0
|
||||
|
||||
proc/skintone2racedescription(tone)
|
||||
switch (tone)
|
||||
if(30 to INFINITY) return "albino"
|
||||
if(20 to 30) return "pale"
|
||||
if(5 to 15) return "light skinned"
|
||||
if(-10 to 5) return "white"
|
||||
if(-25 to -10) return "tan"
|
||||
if(-45 to -25) return "darker skinned"
|
||||
if(-65 to -45) return "brown"
|
||||
if(-INFINITY to -65) return "black"
|
||||
else return "unknown"
|
||||
proc/skintone2racedescription(tone, species = "Human")
|
||||
if(species == "Human")
|
||||
switch (tone)
|
||||
if(30 to INFINITY) return "albino"
|
||||
if(20 to 30) return "pale"
|
||||
if(5 to 15) return "light skinned"
|
||||
if(-10 to 5) return "white"
|
||||
if(-25 to -10) return "tan"
|
||||
if(-45 to -25) return "darker skinned"
|
||||
if(-65 to -45) return "brown"
|
||||
if(-INFINITY to -65) return "black"
|
||||
else return "unknown"
|
||||
else if(species == "Vox")
|
||||
switch(tone)
|
||||
if(2) return "brown"
|
||||
if(3) return "gray"
|
||||
else return "green"
|
||||
else return "unknown"
|
||||
|
||||
proc/age2agedescription(age)
|
||||
switch(age)
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
var/mob/living/carbon/human/vox = raider.current
|
||||
raider.name = vox.name
|
||||
vox.age = rand(12,20)
|
||||
vox.s_tone = random_skin_tone("Vox")
|
||||
vox.dna.mutantrace = "vox"
|
||||
vox.set_species("Vox")
|
||||
vox.generate_name()
|
||||
|
||||
@@ -53,13 +53,13 @@
|
||||
H.track_blood = max(round(H.track_blood - 1, 1),0)
|
||||
|
||||
if (bloodDNA)
|
||||
if(istype(M,/mob/living/carbon/human/vox))
|
||||
if(H.species && istype(H.species,/datum/species/vox))
|
||||
src.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints/vox,bloodDNA,H.dir,0,bloodcolor) // Coming
|
||||
else
|
||||
src.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints,bloodDNA,H.dir,0,bloodcolor) // Coming
|
||||
var/turf/simulated/from = get_step(H,reverse_direction(H.dir))
|
||||
if(istype(from) && from)
|
||||
if(istype(M,/mob/living/carbon/human/vox))
|
||||
if(H.species && istype(H.species,/datum/species/vox))
|
||||
from.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints/vox,bloodDNA,0,H.dir,bloodcolor) // Going
|
||||
else
|
||||
from.AddTracks(/obj/effect/decal/cleanable/blood/tracks/footprints,bloodDNA,0,H.dir,bloodcolor) // Going
|
||||
|
||||
@@ -212,7 +212,7 @@ var/const/MAX_SAVE_SLOTS = 8
|
||||
<table width='100%'><tr><td width='24%' valign='top'>
|
||||
<b>Species:</b> <a href='?_src_=prefs;preference=species;task=input'>[species]</a><BR>
|
||||
<b>Secondary Language:</b> <a href='byond://?src=\ref[user];preference=language;task=input'>[language]</a><br>
|
||||
<b>Skin Tone:</b> <a href='?_src_=prefs;preference=s_tone;task=input'>[-s_tone + 35]/220<br></a><BR>
|
||||
<b>Skin Tone:</b> <a href='?_src_=prefs;preference=s_tone;task=input'>[species == "Human" ? "[-s_tone + 35]/220" : "[s_tone]"]</a><br><BR>
|
||||
<b>Handicaps:</b> <a href='byond://?src=\ref[user];task=input;preference=disabilities'><b>Set</a></b><br>
|
||||
<b>Limbs:</b> <a href='byond://?src=\ref[user];preference=limbs;task=input'>Set</a><br>
|
||||
<b>Organs:</b> <a href='byond://?src=\ref[user];preference=organs;task=input'>Set</a><br>
|
||||
@@ -928,7 +928,7 @@ NOTE: The change will take effect AFTER any current recruiting periods."}
|
||||
g_eyes = rand(0,255)
|
||||
b_eyes = rand(0,255)
|
||||
if("s_tone")
|
||||
s_tone = random_skin_tone()
|
||||
s_tone = random_skin_tone(species)
|
||||
if("bag")
|
||||
backbag = rand(1,4)
|
||||
/*if("skin_style")
|
||||
@@ -1079,11 +1079,12 @@ NOTE: The change will take effect AFTER any current recruiting periods."}
|
||||
h_style = new_h_style
|
||||
|
||||
if("facial")
|
||||
var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference") as color|null
|
||||
if(new_facial)
|
||||
r_facial = hex2num(copytext(new_facial, 2, 4))
|
||||
g_facial = hex2num(copytext(new_facial, 4, 6))
|
||||
b_facial = hex2num(copytext(new_facial, 6, 8))
|
||||
if(species == "Human" || species == "Unathi")
|
||||
var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference") as color|null
|
||||
if(new_facial)
|
||||
r_facial = hex2num(copytext(new_facial, 2, 4))
|
||||
g_facial = hex2num(copytext(new_facial, 4, 6))
|
||||
b_facial = hex2num(copytext(new_facial, 6, 8))
|
||||
|
||||
if("f_style")
|
||||
var/list/valid_facialhairstyles = list()
|
||||
@@ -1122,11 +1123,24 @@ NOTE: The change will take effect AFTER any current recruiting periods."}
|
||||
b_eyes = hex2num(copytext(new_eyes, 6, 8))
|
||||
|
||||
if("s_tone")
|
||||
if(species != "Human")
|
||||
if(species == "Human")
|
||||
var/new_s_tone = input(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference") as num|null
|
||||
if(new_s_tone)
|
||||
s_tone = 35 - max(min(round(new_s_tone),220),1)
|
||||
else if(species == "Vox")//Can't reference species flags here, sorry.
|
||||
var/skin_c = input(user, "Choose your Vox's skin color:\n(1 = Green, 2 = Brown, 3 = Gray)", "Character Preference") as num|null
|
||||
if(skin_c)
|
||||
s_tone = max(min(round(skin_c),3),1)
|
||||
switch(s_tone)
|
||||
if(3)
|
||||
to_chat(src,"Your vox will now be gray.")
|
||||
if(2)
|
||||
to_chat(src,"Your vox will now be brown.")
|
||||
else
|
||||
to_chat(src,"Your vox will now be green.")
|
||||
else
|
||||
to_chat(src,"Your species doesn't have different skin tones. Yet?")
|
||||
return
|
||||
var/new_s_tone = input(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference") as num|null
|
||||
if(new_s_tone)
|
||||
s_tone = 35 - max(min( round(new_s_tone), 220),1)
|
||||
|
||||
if("ooccolor")
|
||||
var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null
|
||||
|
||||
@@ -82,6 +82,7 @@ var/global/list/datum/mind/raiders = list() //Antags.
|
||||
|
||||
var/mob/living/carbon/human/vox = raider.current
|
||||
vox.age = rand(12,20)
|
||||
vox.s_tone = random_skin_tone("Vox")
|
||||
vox.dna.mutantrace = "vox"
|
||||
vox.set_species("Vox")
|
||||
vox.generate_name()
|
||||
|
||||
@@ -41,9 +41,11 @@
|
||||
|
||||
for(var/obj/Overlays/O in obj_overlays)
|
||||
returnToPool(O)
|
||||
|
||||
|
||||
obj_overlays = null
|
||||
|
||||
species = null
|
||||
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/death(gibbed)
|
||||
|
||||
@@ -77,9 +77,14 @@
|
||||
/mob/living/carbon/human/New(var/new_loc, var/new_species_name = null, var/delay_ready_dna=0)
|
||||
if(!hair_styles_list.len) buildHairLists()
|
||||
if(!all_species.len) buildSpeciesLists()
|
||||
|
||||
if(new_species_name)
|
||||
s_tone = random_skin_tone(new_species_name)
|
||||
|
||||
if(!src.species)
|
||||
if(new_species_name) src.set_species(new_species_name)
|
||||
else src.set_species()
|
||||
|
||||
default_language = get_default_language()
|
||||
|
||||
create_reagents(1000)
|
||||
@@ -1395,6 +1400,7 @@
|
||||
var/datum/species/S = all_species[new_species_name]
|
||||
|
||||
src.species = new S.type
|
||||
src.species.myhuman = src
|
||||
|
||||
if(species.language)
|
||||
add_language(species.language)
|
||||
@@ -1414,8 +1420,8 @@
|
||||
src.do_deferred_species_setup = 1
|
||||
spawn()
|
||||
src.dna.species = new_species_name
|
||||
src.species.handle_post_spawn(src)
|
||||
src.update_icons()
|
||||
src.species.handle_post_spawn(src)
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_doodle()
|
||||
|
||||
@@ -413,6 +413,8 @@ var/global/list/damage_icon_parts = list()
|
||||
race_icon = 'icons/mob/human_races/r_skeleton.dmi'
|
||||
else
|
||||
//Icon data is kept in species datums within the mob.
|
||||
if(species && istype(species, /datum/species))
|
||||
species.updatespeciescolor(src)
|
||||
race_icon = species.icobase
|
||||
deform_icon = species.deform
|
||||
overlays -= obj_overlays[MUTANTRACE_LAYER]
|
||||
|
||||
@@ -45,6 +45,7 @@ var/global/list/whitelisted_species = list("Human")
|
||||
var/punch_throw_range = 0
|
||||
var/punch_throw_speed = 1
|
||||
var/mutantrace // Safeguard due to old code.
|
||||
var/myhuman // mob reference
|
||||
|
||||
var/breath_type = "oxygen" // Non-oxygen gas breathed, if any.
|
||||
var/survival_gear = /obj/item/weapon/storage/box/survival // For spawnin'.
|
||||
@@ -133,6 +134,11 @@ var/global/list/whitelisted_species = list("Human")
|
||||
default_blocks = globalspeciesholder.default_blocks.Copy()
|
||||
default_mutations = globalspeciesholder.default_mutations.Copy()
|
||||
|
||||
/datum/species/Destroy()
|
||||
if(myhuman)
|
||||
myhuman = null
|
||||
..()
|
||||
|
||||
/datum/species/proc/handle_speech(var/datum/speech/speech, mob/living/carbon/human/H)
|
||||
if(H.dna)
|
||||
if(length(speech.message) >= 2)
|
||||
@@ -199,6 +205,9 @@ var/global/list/whitelisted_species = list("Human")
|
||||
/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment.
|
||||
return
|
||||
|
||||
/datum/species/proc/updatespeciescolor(var/mob/living/carbon/human/H) //Handles changing icobase for species that have multiple skin colors.
|
||||
return
|
||||
|
||||
// Sent from /datum/lung_gas/metabolizable.
|
||||
/datum/species/proc/receiveGas(var/gas_id, var/ratio, var/moles, var/mob/living/carbon/human/H)
|
||||
//testing("receiveGas: [gas_id] ? [breath_type] - ratio=[ratio], moles=[moles]")
|
||||
@@ -465,8 +474,8 @@ var/global/list/whitelisted_species = list("Human")
|
||||
|
||||
/datum/species/vox
|
||||
name = "Vox"
|
||||
icobase = 'icons/mob/human_races/r_vox.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_vox.dmi'
|
||||
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
|
||||
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
|
||||
language = "Vox-pidgin"
|
||||
|
||||
survival_gear = /obj/item/weapon/storage/box/survival/vox
|
||||
@@ -610,6 +619,23 @@ var/global/list/whitelisted_species = list("Human")
|
||||
newname += pick(vox_name_syllables)
|
||||
return capitalize(newname)
|
||||
|
||||
/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
if(myhuman != H) return
|
||||
updatespeciescolor(H)
|
||||
H.update_icon()
|
||||
|
||||
/datum/species/vox/updatespeciescolor(var/mob/living/carbon/human/H)
|
||||
switch(H.s_tone)
|
||||
if(3)
|
||||
icobase = 'icons/mob/human_races/vox/r_voxgry.dmi'
|
||||
deform = 'icons/mob/human_races/vox/r_def_voxgry.dmi'
|
||||
if(2)
|
||||
icobase = 'icons/mob/human_races/vox/r_voxbrn.dmi'
|
||||
deform = 'icons/mob/human_races/vox/r_def_voxbrn.dmi'
|
||||
else
|
||||
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
|
||||
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
|
||||
|
||||
/datum/species/diona
|
||||
name = "Diona"
|
||||
icobase = 'icons/mob/human_races/r_plant.dmi'
|
||||
|
||||
@@ -6,7 +6,7 @@ datum/preferences
|
||||
gender = MALE
|
||||
else
|
||||
gender = FEMALE
|
||||
s_tone = random_skin_tone()
|
||||
s_tone = random_skin_tone(species)
|
||||
h_style = random_hair_style(gender, species)
|
||||
f_style = random_facial_hair_style(gender, species)
|
||||
randomize_hair_color("hair")
|
||||
@@ -149,8 +149,18 @@ datum/preferences
|
||||
var/icon/icobase
|
||||
var/datum/species/current_species = all_species[species]
|
||||
|
||||
//icon based species color
|
||||
if(current_species)
|
||||
icobase = current_species.icobase
|
||||
if(current_species.name == "Vox")
|
||||
switch(s_tone)
|
||||
if(3)
|
||||
icobase = 'icons/mob/human_races/vox/r_voxgry.dmi'
|
||||
if(2)
|
||||
icobase = 'icons/mob/human_races/vox/r_voxbrn.dmi'
|
||||
else
|
||||
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
|
||||
else
|
||||
icobase = current_species.icobase
|
||||
else
|
||||
icobase = 'icons/mob/human_races/r_human.dmi'
|
||||
|
||||
|
||||
5
html/changelogs/Intipox.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
author: Intigracy
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "Vox are now able to choose from 3 colors of skin (the current green has been darkened, a reddish-brown, and gray) in their preferences. Gray is the obvious best choice."
|
||||
- tweak: "Vox raiders and adminspawned vox now get a random skin color. Admins are able to varedit vox skin colors by changing s_tone and regenerating icons."
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
BIN
icons/mob/human_races/vox/r_def_vox.dmi
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
icons/mob/human_races/vox/r_def_voxbrn.dmi
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
icons/mob/human_races/vox/r_def_voxgry.dmi
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
icons/mob/human_races/vox/r_vox.dmi
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
icons/mob/human_races/vox/r_voxbrn.dmi
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
icons/mob/human_races/vox/r_voxgry.dmi
Normal file
|
After Width: | Height: | Size: 2.8 KiB |