Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
5db5be4
ho
Chubbygummibear Feb 21, 2022
f563e80
pod nerfed by a pod main
Chubbygummibear Apr 11, 2022
9305f3c
sugone
Chubbygummibear Apr 15, 2022
eeb1b9b
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 17, 2022
330d5f8
yea
Chubbygummibear Apr 18, 2022
9c0c9be
yer
Chubbygummibear Apr 18, 2022
8c832eb
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 18, 2022
b063432
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 19, 2022
f6acc95
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 21, 2022
e63214e
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 23, 2022
fe9c7c2
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 25, 2022
bf29214
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 25, 2022
5d0852c
Merge remote-tracking branch 'upstream/master'
Chubbygummibear Apr 25, 2022
afdab0b
lotsa stuff
Chubbygummibear May 2, 2022
3d92ebe
tgui is pain
Chubbygummibear May 3, 2022
d41e978
i don't know
Chubbygummibear May 4, 2022
7ae5937
Merge remote-tracking branch 'upstream/master'
Chubbygummibear May 4, 2022
a94e739
maybe?
Chubbygummibear May 4, 2022
8854d8f
Merge branch 'master' into dna-blocks-but-like-good
Chubbygummibear May 4, 2022
ef71a62
god kill me
Chubbygummibear May 5, 2022
8325ec5
tailed
Chubbygummibear May 5, 2022
636a90d
wait no i fixed it wrong, this should be better
Chubbygummibear May 6, 2022
dcafa5a
Merge branch 'get-some-tail' into dna-blocks-but-like-good
Chubbygummibear May 6, 2022
c7a8fd3
SCOPE CREEP BABEEEEEEEEEE
Chubbygummibear May 7, 2022
2104ab4
sins
Chubbygummibear May 8, 2022
4cfe6a4
mother of all omlettes jack
Chubbygummibear May 8, 2022
90a8390
is it over?
Chubbygummibear May 8, 2022
1060e55
ethereal colors because idk
Chubbygummibear May 8, 2022
574b0e8
i think that's it until we find out what else i broke
Chubbygummibear May 8, 2022
f8699c4
Revert "i think that's it until we find out what else i broke"
Chubbygummibear May 9, 2022
1c063ca
last time with gusto
Chubbygummibear May 9, 2022
7b084b1
hhh
Chubbygummibear May 9, 2022
d5a54f8
ho
Chubbygummibear Feb 21, 2022
0018835
pod nerfed by a pod main
Chubbygummibear Apr 11, 2022
92a7525
yer
Chubbygummibear Apr 18, 2022
118c947
fix
Chubbygummibear May 11, 2022
592b3d4
Revert "fix"
Chubbygummibear May 11, 2022
796d49c
Delete plantpeople.dm
Chubbygummibear May 11, 2022
05f88be
Merge branch 'master' into dna-blocks-but-like-good
Chubbygummibear May 11, 2022
1756ff2
Merge branch 'dna-blocks-but-like-good' of https://github.com/Chubbyg…
Chubbygummibear May 11, 2022
735df29
Revert "Merge branch 'dna-blocks-but-like-good' of https://github.com…
Chubbygummibear May 11, 2022
c209682
Merge remote-tracking branch 'upstream/master' into dna-blocks-but-li…
Chubbygummibear May 11, 2022
88aa491
this shouldn't be in here
Chubbygummibear May 11, 2022
8be4c48
missed that
Chubbygummibear May 12, 2022
e373a31
so many little things
Chubbygummibear May 16, 2022
4cefd31
please for the love of god work
Chubbygummibear May 16, 2022
1196469
Merge branch 'dna-round-2' into dna-blocks-but-like-good
Chubbygummibear Jul 14, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@

#define UI_CHANGED "ui changed"
#define UE_CHANGED "ue changed"
#define UF_CHANGED "uf changed"

#define CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY 204

Expand All @@ -78,6 +79,11 @@
//DNA - Because fuck you and your magic numbers being all over the codebase.
#define DNA_BLOCK_SIZE 3

//this should be in a colors.dm define but we don't use that like tg does
#define DEFAULT_HEX_COLOR_LEN 6

#define DNA_BLOCK_SIZE_COLOR DEFAULT_HEX_COLOR_LEN

#define DNA_UNI_IDENTITY_BLOCKS 7
#define DNA_HAIR_COLOR_BLOCK 1
#define DNA_FACIAL_HAIR_COLOR_BLOCK 2
Expand All @@ -87,6 +93,27 @@
#define DNA_FACIAL_HAIR_STYLE_BLOCK 6
#define DNA_HAIR_STYLE_BLOCK 7

#define DNA_FEATURE_BLOCKS 19
#define DNA_MUTANT_COLOR_BLOCK 1
#define DNA_ETHEREAL_COLOR_BLOCK 2
#define DNA_LIZARD_MARKINGS_BLOCK 3
#define DNA_LIZARD_TAIL_BLOCK 4
#define DNA_SNOUT_BLOCK 5
#define DNA_HORNS_BLOCK 6
#define DNA_FRILLS_BLOCK 7
#define DNA_SPINES_BLOCK 8
#define DNA_HUMAN_TAIL_BLOCK 9
#define DNA_EARS_BLOCK 10
#define DNA_MOTH_WINGS_BLOCK 11
#define DNA_MUSHROOM_CAPS_BLOCK 12
#define DNA_POLY_TAIL_BLOCK 13
#define DNA_POLY_TEETH_BLOCK 14
#define DNA_POLY_DOME_BLOCK 15
#define DNA_POLY_DORSAL_BLOCK 16
#define DNA_ETHEREAL_MARK_BLOCK 17
#define DNA_PLANT_HAIR_BLOCK 18
#define DNA_PLANT_FLOWER_BLOCK 19

#define DNA_SEQUENCE_LENGTH 4
#define DNA_MUTATION_BLOCKS 8
#define DNA_UNIQUE_ENZYMES_LEN 32
Expand Down
7 changes: 6 additions & 1 deletion code/__HELPERS/dna.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,9 @@
#define GET_MUTATION_STABILIZER(A) ((A.stabilizer_coeff < 0) ? 1 : A.stabilizer_coeff)
#define GET_MUTATION_SYNCHRONIZER(A) ((A.synchronizer_coeff < 0) ? 1 : A.synchronizer_coeff)
#define GET_MUTATION_POWER(A) ((A.power_coeff < 0) ? 1 : A.power_coeff)
#define GET_MUTATION_ENERGY(A) ((A.energy_coeff < 0) ? 1 : A.energy_coeff)
#define GET_MUTATION_ENERGY(A) ((A.energy_coeff < 0) ? 1 : A.energy_coeff)

///Getter macro used to get the length of a identity block
#define GET_UI_BLOCK_LEN(blocknum) (GLOB.identity_block_lengths["[blocknum]"] || DNA_BLOCK_SIZE)
///Ditto, but for a feature.
#define GET_UF_BLOCK_LEN(blocknum) (GLOB.features_block_lengths["[blocknum]"] || DNA_BLOCK_SIZE)
22 changes: 11 additions & 11 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@
/proc/random_eye_color()
switch(pick(20;"brown",20;"hazel",20;"grey",15;"blue",15;"green",1;"amber",1;"albino"))
if("brown")
return "630"
return "#663300"
if("hazel")
return "542"
return "#554422"
if("grey")
return pick("666","777","888","999","aaa","bbb","ccc")
return pick("#666666","#777777","#888888","#999999","#aaaaaa","#bbbbbb","#cccccc")
if("blue")
return "36c"
return "#3366cc"
if("green")
return "060"
return "#006600"
if("amber")
return "fc0"
return "#ffcc00"
if("albino")
return pick("c","d","e","f") + pick("0","1","2","3","4","5","6","7","8","9") + pick("0","1","2","3","4","5","6","7","8","9")
return "#" + pick("cc","dd","ee","ff") + pick("00","11","22","33","44","55","66","77","88","99") + pick("00","11","22","33","44","55","66","77","88","99")
else
return "000"
return "#000000"

/proc/random_underwear(gender)
if(!GLOB.underwear_list.len)
Expand Down Expand Up @@ -87,9 +87,9 @@

//For now we will always return none for tail_human and ears. this shit was unreadable if you do somethign like this make it at least readable
return(list(
"mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"mcolor" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]",
"gradientstyle" = random_hair_gradient_style(10),
"gradientcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"gradientcolor" = "#[pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")]",
"ethcolor" = GLOB.color_list_ethereal[pick(GLOB.color_list_ethereal)],
"tail_lizard" = pick(GLOB.tails_list_lizard),
"tail_human" = "None",
Expand All @@ -103,7 +103,7 @@
"legs" = "Normal Legs",
"caps" = pick(GLOB.caps_list),
"moth_wings" = pick(GLOB.moth_wings_list),
"tail_polysmorph" = "Polys",
"tail_polysmorph" = pick(GLOB.tails_list_polysmorph),
"teeth" = pick(GLOB.teeth_list),
"dome" = pick(GLOB.dome_list),
"dorsal_tubes" = pick(GLOB.dorsal_tubes_list),
Expand Down
54 changes: 37 additions & 17 deletions code/__HELPERS/sanitize_values.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,30 @@
return number
return default

/proc/sanitize_float(number, min=0, max=1, accuracy=1, default=0)
if(isnum(number))
number = round(number, accuracy)
if(min <= number && number <= max)
return number
return default

/proc/sanitize_text(text, default="")
if(istext(text))
return text
return default

/proc/sanitize_islist(value, default)
if(islist(value) && length(value))
return value
if(default)
return default

/proc/sanitize_inlist(value, list/List, default)
if(value in List)
return value
if(default)
return default
if(List && List.len)
if(List?.len)
return pick(List)


Expand All @@ -38,40 +51,47 @@
return default
return default

/proc/sanitize_hexcolor(color, desired_format=3, include_crunch=0, default)
/proc/sanitize_hexcolor(color, desired_format = DEFAULT_HEX_COLOR_LEN, include_crunch = TRUE, default)
var/crunch = include_crunch ? "#" : ""
if(!istext(color))
color = ""

var/start = 1 + (text2ascii(color, 1) == 35)
var/len = length(color)
var/char = ""
// RRGGBB -> RGB but awful
var/convert_to_shorthand = desired_format == 3 && length_char(color) > 3
// Used for conversion between RGBA hex formats.
var/format_input_ratio = "[desired_format]:[length_char(color)-(start-1)]"

. = ""
var/i = start
while(i <= len)
char = color[i]
i += length(char)
switch(text2ascii(char))
if(48 to 57) //numbers 0 to 9
if(48 to 57) //numbers 0 to 9
. += char
if(97 to 102) //letters a to f
. += char
if(97 to 102) //letters a to f
if(65 to 70) //letters A to F
char = lowertext(char)
. += char
if(65 to 70) //letters A to F
. += lowertext(char)
else
break
i += length(char)
if(convert_to_shorthand && i <= len) //skip next one
i += length(color[i])

if(length_char(.) != desired_format)
if(default)
return default
return crunch + repeat_string(desired_format, "0")
switch(format_input_ratio)
if("3:8", "4:8", "3:6", "4:6") //skip next one. RRGGBB(AA) -> RGB(A)
i += length(color[i])
if("6:4", "6:3", "8:4", "8:3") //add current char again. RGB(A) -> RRGGBB(AA)
. += char

return crunch + .
if(length_char(.) == desired_format)
return crunch + .
switch(format_input_ratio) //add or remove alpha channel depending on desired format.
if("3:8", "3:4", "6:4")
return crunch + copytext(., 1, desired_format+1)
if("4:6", "4:3", "8:3")
return crunch + . + ((desired_format == 4) ? "f" : "ff")
else //not a supported hex color format.
return default ? default : crunch + repeat_string(desired_format, "0")

/proc/sanitize_ooccolor(color)
if(length(color) != length_char(color))
Expand Down
21 changes: 20 additions & 1 deletion code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,26 @@ GLOBAL_LIST_EMPTY(moth_wingsopen_list)
GLOBAL_LIST_EMPTY(caps_list)

GLOBAL_LIST_EMPTY(ethereal_mark_list) //ethereal face marks
GLOBAL_LIST_INIT(color_list_ethereal, list("F Class(Green)" = "97ee63", "F2 Class (Light Green)" = "00fa9a", "F3 Class (Dark Green)" = "37835b", "M Class (Red)" = "9c3030", "M1 Class (Purple)" = "ee82ee", "G Class (Yellow)" = "fbdf56", "O Class (Blue)" = "3399ff", "A Class (Cyan)" = "00ffff"))
GLOBAL_LIST_INIT(color_list_ethereal, list(
"F Class (Green)" = "#97ee63",
"F2 Class (Light Green)" = "#00fa9a",
"F3 Class (Dark Green)" = "#37835b",
"F4 Class (Faint Green)" = "#ddff99",
"M Class (Red)" = "#9c3030",
"M1 Class (Purple)" = "#ee82ee",
"M2 Class (Faint Red)" = "#ff4d4d",
"M3 Class (Light Pink)" = "#ffb3b3",
"M4 Class (Pink)" = "#ff99cc",
"G Class (Yellow)" = "#fbdf56",
"G1 Class (Bright Yellow)" = "#ffff99",
"O Class (Blue)" = "#3399ff",
"O1 Class (Dark Blue)" = "#6666ff",
"O2 Class (Faint Blue)" = "#b3d9ff",
"O3 Class (Dark Fuschia)" = "#cc0066",
"A Class (Cyan)" = "#00ffff",
"K Class (Orange)" = "#ffa64d",
"K1 Class (Burnt Orange)" = "#cc4400",
"White Dwarf" = "#f2f2f2",))

GLOBAL_LIST_EMPTY(pod_hair_list) //ethereal face marks
GLOBAL_LIST_EMPTY(pod_flower_list) //ethereal face marks
Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/forensics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
if(!ignoregloves)
H.gloves.add_fingerprint(H, TRUE) //ignoregloves = 1 to avoid infinite loop.
return
var/full_print = md5(H.dna.uni_identity)
var/full_print = md5(H.dna.unique_identity)
LAZYSET(fingerprints, full_print, full_print)
return TRUE

Expand Down
4 changes: 2 additions & 2 deletions code/datums/datacore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@
G.fields["rank"] = assignment
G.fields["age"] = H.age
G.fields["species"] = H.dna.species.name
G.fields["fingerprint"] = md5(H.dna.uni_identity)
G.fields["fingerprint"] = md5(H.dna.unique_identity)
G.fields["p_stat"] = "Active"
G.fields["m_stat"] = "Stable"
G.fields["gender"] = H.gender
Expand Down Expand Up @@ -383,7 +383,7 @@
G.fields["gender"] = "Other"
L.fields["blood_type"] = H.dna.blood_type
L.fields["b_dna"] = H.dna.unique_enzymes
L.fields["identity"] = H.dna.uni_identity
L.fields["identity"] = H.dna.unique_identity
L.fields["species"] = H.dna.species.type
L.fields["features"] = H.dna.features
L.fields["image"] = image
Expand Down
22 changes: 14 additions & 8 deletions code/datums/diseases/retrovirus.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,13 @@
to_chat(affected_mob, span_danger("Your entire body vibrates."))

if (prob(35))
if(prob(50))
scramble_dna(affected_mob, 1, 0, rand(15,45))
else
scramble_dna(affected_mob, 0, 1, rand(15,45))
switch(rand(1,3))
if(1)
scramble_dna(affected_mob, 1, 0, 0, rand(15,45))
if(2)
scramble_dna(affected_mob, 0, 1, 0, rand(15,45))
if(3)
scramble_dna(affected_mob, 0, 0, 1, rand(15,45))

if(4)
if(restcure)
Expand All @@ -78,7 +81,10 @@
cure()
return
if (prob(60))
if(prob(50))
scramble_dna(affected_mob, 1, 0, rand(50,75))
else
scramble_dna(affected_mob, 0, 1, rand(50,75))
switch(rand(1,3))
if(1)
scramble_dna(affected_mob, 1, 0, 0, rand(50,75))
if(2)
scramble_dna(affected_mob, 0, 1, 0, rand(50,75))
if(3)
scramble_dna(affected_mob, 0, 0, 1, rand(50,75))
Loading