diff --git a/code/game/objects/effects/decals/Cleanable/reagent_ch.dm b/code/game/objects/effects/decals/Cleanable/reagent_ch.dm index da72466130..904eed546c 100644 --- a/code/game/objects/effects/decals/Cleanable/reagent_ch.dm +++ b/code/game/objects/effects/decals/Cleanable/reagent_ch.dm @@ -38,7 +38,7 @@ START_PROCESSING(SSobj, src) /obj/effect/decal/cleanable/blood/reagent/update_icon() - if(custombasecolor == "rainbow") custombasecolor = "#[get_random_colour(1)]" + if(custombasecolor == "rainbow") custombasecolor = get_random_colour(1) color = custombasecolor name = custombasename diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon_ch.dm index ef55ec40ba..5cafeebddb 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon_ch.dm @@ -374,14 +374,14 @@ I think I covered everything. body = pick(body_styles) overlay_colors["Body"] = pick(bodycolors) ears = pick(ear_styles) - overlay_colors["Ears"] = "#[get_random_colour(0, 100, 150)]" + overlay_colors["Ears"] = get_random_colour(0, 100, 150) mane = pick(mane_styles) overlay_colors["Mane"] = pick(bodycolors) horns = pick(horn_styles) var/list/horncolors = list("#000000","#151515","#303030","#606060","#808080","#AAAAAA","#CCCCCC","#EEEEEE","#FFFFFF") overlay_colors["Horns"] = pick(horncolors) eyes = pick(eye_styles) - overlay_colors["Eyes"] = "#[get_random_colour(1)]" + overlay_colors["Eyes"] = get_random_colour(1) var/image/I = image(icon, "dragon_under[under][resting? "-rest" : (vore_fullness? "-[vore_fullness]" : null)]", pixel_x = -48) I.color = overlay_colors["Underbelly"] diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm index 9cfbffdb36..80626b3e6e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm @@ -65,41 +65,13 @@ "zorgoia_ears" = "#FFFFFF", "zorgoia_spots" = "#FFFFFF", "zorgoia_claws" = "#FFFFFF", - "zorgoia_spikes" = "#FFFFFF", + "zorgoia_spines" = "#FFFFFF", "zorgoia_fluff" = "#FFFFFF", "zorgoia_underbelly" = "#FFFFFF", "zorgoia_eyes" = "#FFFFFF", "zorgoia_spike" = "#FFFFFF" ) -/mob/living/simple_mob/vore/zorgoia/proc/recolor() //Base sprite wont need a radical menu selection - set name = "Change Color" - set desc = "Change your main color." - set category = "Abilities.General" - var/new_color = input("Pick new colors:","Color", goia_overlays[2]) as null|color - if(!new_color) - return 0 - goia_overlays[goia_overlays[2]] = new_color - update_icon() - -/mob/living/simple_mob/vore/zorgoia/proc/appearance_switch() //This is just copypastas of the radial menu code, each block of code is the options for each bit of customisation... all 9 of them - set name = "Adjust Mob Markings" - set desc = "Change your markings and mob colors." - set category = "Abilities.General" - - var/list/options = list("Belly","Spike","Ears","Spots","Claws","Spines","Fluff","Underbelly","Eyes") - for(var/option in options) - LAZYSET(options, option, image('modular_chomp/icons/effects/goia_labels.dmi', option)) - var/choice = show_radial_menu(src, src, options, radius = 60) - if(!choice || QDELETED(src) || src.incapacitated()) - return FALSE - . = TRUE - var/list/belly_styles = list( - "zorgoia_belly" - ) - var/list/spiky_styles = list( - "zorgoia_spike" - ) var/list/ear_styles = list( "null", "zorgoia_ears", @@ -129,37 +101,36 @@ var/list/eyes_styles = list( "zorgoia_eyes" ) + var/list/spiky_styles = list( + "zorgoia_spike" + ) + var/list/belly_styles = list( + "zorgoia_belly" + ) + +/mob/living/simple_mob/vore/zorgoia/proc/recolor() //Base sprite wont need a radical menu selection + set name = "Change Color" + set desc = "Change your main color." + set category = "Abilities.General" + var/new_color = input("Pick new colors:","Color", goia_overlays["zorgoia_main"]) as null|color + if(!new_color) + return 0 + goia_overlays["zorgoia_main"] = new_color + update_icon() + +/mob/living/simple_mob/vore/zorgoia/proc/appearance_switch() //This is just copypastas of the radial menu code, each block of code is the options for each bit of customisation... all 9 of them + set name = "Adjust Mob Markings" + set desc = "Change your markings and mob colors." + set category = "Abilities.General" + + var/list/options = list("Belly","Spike","Ears","Spots","Claws","Spines","Fluff","Underbelly","Eyes") + for(var/option in options) + LAZYSET(options, option, image('modular_chomp/icons/effects/goia_labels.dmi', option)) + var/choice = show_radial_menu(src, src, options, radius = 60) + if(!choice || QDELETED(src) || src.incapacitated()) + return FALSE + . = TRUE switch(choice) - if("Belly") - options = belly_styles - for(var/option in options) - var/image/I = image('modular_chomp/icons/mob/zorgoia64x32.dmi', option, dir = 4) - LAZYSET(options, option, I) - choice = show_radial_menu(src, src, options, radius = 90) - if(!choice || QDELETED(src) || src.incapacitated()) - return 0 - var/new_color = input("Pick belly color:","Belly Color", goia_overlays[1]) as null|color - if(!new_color) - return 0 - goia_overlays[1] = choice - goia_overlays[goia_overlays[1]] = new_color - update_icon() - - if("Spike") - options = spiky_styles - for(var/option in options) - var/image/I = image('modular_chomp/icons/mob/zorgoia64x32.dmi', option, dir = 4) - LAZYSET(options, option, I) - choice = show_radial_menu(src, src, options, radius = 90) - if(!choice || QDELETED(src) || src.incapacitated()) - return 0 - var/new_color = input("Pick tail spike color:","Tail Color", goia_overlays[10]) as null|color //This is overlay 10, not 2, swapped with main body, im not rewriting this array - if(!new_color) - return 0 - goia_overlays[10] = choice - goia_overlays[goia_overlays[10]] = new_color - update_icon() - if("Ears") options = ear_styles @@ -169,11 +140,11 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick ears spike color:","Ears Color", goia_overlays[3]) as null|color + var/new_color = input("Pick ears spike color:","Ears Color", goia_overlays["zorgoia_ears"]) as null|color if(!new_color) return 0 - goia_overlays[3] = choice - goia_overlays[goia_overlays[3]] = new_color + goia_overlays["ears"] = choice + goia_overlays["zorgoia_ears"] = new_color update_icon() if("Spots") @@ -184,11 +155,11 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick spot colors:","Spots Color", goia_overlays[4]) as null|color + var/new_color = input("Pick spot colors:","Spots Color", goia_overlays["zorgoia_spots"]) as null|color if(!new_color) return 0 - goia_overlays[4] = choice - goia_overlays[goia_overlays[4]] = new_color + goia_overlays["spots"] = choice + goia_overlays["zorgoia_spots"] = new_color update_icon() if("Claws") @@ -199,11 +170,11 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick claw colors:","Claws Color", goia_overlays[5]) as null|color + var/new_color = input("Pick claw colors:","Claws Color", goia_overlays["zorgoia_claws"]) as null|color if(!new_color) return 0 - goia_overlays[5] = choice - goia_overlays[goia_overlays[5]] = new_color + goia_overlays["claws"] = choice + goia_overlays["zorgoia_claws"] = new_color update_icon() if("Spines") @@ -214,11 +185,11 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick spines colors:","Spines Color", goia_overlays[6]) as null|color + var/new_color = input("Pick spines colors:","Spines Color", goia_overlays["zorgoia_spines"]) as null|color if(!new_color) return 0 - goia_overlays[6] = choice - goia_overlays[goia_overlays[6]] = new_color + goia_overlays["spines"] = choice + goia_overlays["zorgoia_spines"] = new_color update_icon() if("Fluff") @@ -229,11 +200,11 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick fluff colors:","Fluff Color", goia_overlays[7]) as null|color + var/new_color = input("Pick fluff colors:","Fluff Color", goia_overlays["zorgoia_fluff"]) as null|color if(!new_color) return 0 - goia_overlays[7] = choice - goia_overlays[goia_overlays[7]] = new_color + goia_overlays["fluff"] = choice + goia_overlays["zorgoia_fluff"] = new_color update_icon() if("Underbelly") @@ -244,11 +215,11 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick underbelly colors:","Underbelly Color", goia_overlays[4]) as null|color + var/new_color = input("Pick underbelly colors:","Underbelly Color", goia_overlays["zorgoia_underbelly"]) as null|color if(!new_color) return 0 - goia_overlays[8] = choice - goia_overlays[goia_overlays[8]] = new_color + goia_overlays["underbelly"] = choice + goia_overlays["zorgoia_underbelly"] = new_color update_icon() if("Eyes") @@ -259,11 +230,41 @@ choice = show_radial_menu(src, src, options, radius = 90) if(!choice || QDELETED(src) || src.incapacitated()) return 0 - var/new_color = input("Pick eye color:","Eye Color", goia_overlays[9]) as null|color + var/new_color = input("Pick eye color:","Eye Color", goia_overlays["zorgoia_eyes"]) as null|color if(!new_color) return 0 - goia_overlays[9] = choice - goia_overlays[goia_overlays[9]] = new_color + goia_overlays["eyes"] = choice + goia_overlays["zorgoia_eyes"] = new_color + update_icon() + + if("Spike") + options = spiky_styles + for(var/option in options) + var/image/I = image('modular_chomp/icons/mob/zorgoia64x32.dmi', option, dir = 4) + LAZYSET(options, option, I) + choice = show_radial_menu(src, src, options, radius = 90) + if(!choice || QDELETED(src) || src.incapacitated()) + return 0 + var/new_color = input("Pick tail spike color:","Tail Color", goia_overlays["zorgoia_spike"]) as null|color //This is overlay 10, not 2, swapped with main body, im not rewriting this array + if(!new_color) + return 0 + goia_overlays["spike"] = choice + goia_overlays["zorgoia_spike"] = new_color + update_icon() + + if("Belly") + options = belly_styles + for(var/option in options) + var/image/I = image('modular_chomp/icons/mob/zorgoia64x32.dmi', option, dir = 4) + LAZYSET(options, option, I) + choice = show_radial_menu(src, src, options, radius = 90) + if(!choice || QDELETED(src) || src.incapacitated()) + return 0 + var/new_color = input("Pick belly color:","Belly Color", goia_overlays["zorgoia_belly"]) as null|color + if(!new_color) + return 0 + goia_overlays["belly"] = choice + goia_overlays["zorgoia_belly"] = new_color update_icon() else @@ -271,10 +272,11 @@ /mob/living/simple_mob/vore/zorgoia/Initialize() ..() - update_icon() add_verb(src,/mob/living/simple_mob/vore/zorgoia/proc/appearance_switch) add_verb(src,/mob/living/simple_mob/vore/zorgoia/proc/recolor) add_verb(src,/mob/living/proc/injection) //Poison sting c: + add_verb(src,/mob/living/simple_mob/vore/zorgoia/proc/export_style) + add_verb(src,/mob/living/simple_mob/vore/zorgoia/proc/import_style) src.trait_injection_reagents += "microcillin" // get small src.trait_injection_reagents += "macrocillin" // get BIG src.trait_injection_reagents += "normalcillin" // normal @@ -288,6 +290,31 @@ src.trait_injection_reagents += "painenzyme" // Pain INCREASER src.trait_injection_reagents += "aphrodisiac" // Horni + var/list/goia_colors = list("#1a00ff", "#6c5bff", "#ff00fe", "#ff0000", "#00d3ff", "#00ff7c", "#00ff35", "#e1ff00", "#ff9f00", "#393939") + var/bodycolor = pick(goia_colors) + var/spines = pick(goia_colors) + goia_overlays["main"]= "zorgoia_main" + goia_overlays["zorgoia_main"] = bodycolor + goia_overlays["ears"] = pick(ear_styles) + goia_overlays["zorgoia_ears"] = bodycolor + goia_overlays["spots"] = pick(spots_styles) + goia_overlays["zorgoia_spots"] = pick(goia_colors) + goia_overlays["claws"] = pick(claws_styles) + goia_overlays["zorgoia_claws"] = spines + goia_overlays["spines"] = pick(spines_styles) + goia_overlays["zorgoia_spines"] = spines + goia_overlays["fluff"] = pick(fluff_styles) + goia_overlays["zorgoia_fluff"] = bodycolor + goia_overlays["underbelly"] = pick(underbelly_styles) + goia_overlays["zorgoia_underbelly"] = bodycolor + goia_overlays["eyes"] = pick(eyes_styles) + goia_overlays["zorgoia_eyes"] = "#[get_random_colour(1)]" + goia_overlays["spike"] = pick(spiky_styles) + goia_overlays["zorgoia_spike"] = "#[get_random_colour(0,0,255)]" + goia_overlays["belly"] = pick(belly_styles) + goia_overlays["zorgoia_belly"] = bodycolor + update_icon() + /mob/living/simple_mob/vore/zorgoia/update_icon() ..() if(stat == DEAD) @@ -300,79 +327,79 @@ vore_capacity = 3 //Heads up, the order of these overlays stacking on top of each other is different from the array order. So goia_overlay[1] is the belly, but rendering on top of everything at the end instead - var/image/I = image(icon, "[goia_overlays[2]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[2]] + var/image/I = image(icon, "[goia_overlays["main"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_main"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[3]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[3]] + I = image(icon, "[goia_overlays["ears"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_ears"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[4]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[4]] + I = image(icon, "[goia_overlays["spots"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_spots"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[5]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[5]] + I = image(icon, "[goia_overlays["claws"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_claws"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[6]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[6]] + I = image(icon, "[goia_overlays["spines"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_spines"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[7]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[7]] + I = image(icon, "[goia_overlays["fluff"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_fluff"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[8]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[8]] + I = image(icon, "[goia_overlays["underbelly"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_underbelly"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[9]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[9]] + I = image(icon, "[goia_overlays["eyes"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_eyes"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = PLANE_LIGHTING_ABOVE add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[10]][resting? "-rest" : null]", pixel_x = -16) - I.color = goia_overlays[goia_overlays[10]] + I = image(icon, "[goia_overlays["spike"]][resting? "-rest" : null]", pixel_x = -16) + I.color = goia_overlays["zorgoia_spike"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER add_overlay(I) qdel(I) - I = image(icon, "[goia_overlays[1]][resting? "-rest" : (vore_fullness? "-[vore_fullness]" : null)]", pixel_x = -16) //todo, check kasscs resting sprite - I.color = goia_overlays[goia_overlays[1]] + I = image(icon, "[goia_overlays["belly"]][resting? "-rest" : (vore_fullness? "-[vore_fullness]" : null)]", pixel_x = -16) //todo, check kasscs resting sprite + I.color = goia_overlays["zorgoia_belly"] I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) I.plane = MOB_PLANE I.layer = MOB_LAYER @@ -437,3 +464,94 @@ .=..() if(new_holder.tamed) hostile = FALSE + +/mob/living/simple_mob/vore/zorgoia/proc/export_style() + set name = "Export style string" + set desc = "Export a string of text that can be used to instantly get the current style back using the import style verb" + set category = "Abilities.Settings" + var/output_style = jointext(list( + goia_overlays["zorgoia_main"], + goia_overlays["main"], // No alt styles for it currently + goia_overlays["zorgoia_ears"], + goia_overlays["ears"], + goia_overlays["zorgoia_spots"], + goia_overlays["spots"], + goia_overlays["zorgoia_claws"], + goia_overlays["claws"], + goia_overlays["zorgoia_spines"], + goia_overlays["spines"], + goia_overlays["zorgoia_fluff"], + goia_overlays["fluff"], + goia_overlays["zorgoia_underbelly"], + goia_overlays["underbelly"], + goia_overlays["zorgoia_eyes"], + goia_overlays["eyes"], + goia_overlays["zorgoia_spike"], + goia_overlays["spike"], + goia_overlays["zorgoia_belly"], + goia_overlays["belly"]), ";") + to_chat(src, "Exported style string is \" [output_style] \". Use this to get the same style in the future with import style") + +/mob/living/simple_mob/vore/zorgoia/proc/import_style() + set name = "Import style string" + set desc = "Import a string of text that was made using the import style verb to get back that style" + set category = "Abilities.Settings" + var/input_style + input_style = sanitizeSafe(input(src,"Paste the style string you exported with Export Style.", "Style loading","") as text, MAX_MESSAGE_LEN) + if(input_style) + var/list/input_style_list = splittext(input_style, ";") + if((LAZYLEN(input_style_list) == 20) /* && (input_style_list[2] in main_styles) */ \ + && (input_style_list[4] in ear_styles) && (input_style_list[6] in spots_styles) && (input_style_list[8] in claws_styles) \ + && (input_style_list[10] in spines_styles) && (input_style_list[12] in fluff_styles) && (input_style_list[14] in underbelly_styles) \ + && (input_style_list[16] in eyes_styles) && (input_style_list[18] in spiky_styles) && (input_style_list[20] in belly_styles)) + try + if(rgb2num(input_style_list[1])) + goia_overlays["zorgoia_main"] = input_style_list[1] + catch + // goia_overlays["main"] = input_style_list[2] // We only have one yet + try + if(rgb2num(input_style_list[3])) + goia_overlays["zorgoia_ears"] = input_style_list[3] + catch + goia_overlays["ears"] = input_style_list[4] + try + if(rgb2num(input_style_list[5])) + goia_overlays["zorgoia_spots"] = input_style_list[5] + catch + goia_overlays["spots"] = input_style_list[6] + try + if(rgb2num(input_style_list[7])) + goia_overlays["zorgoia_claws"] = input_style_list[7] + catch + goia_overlays["claws"] = input_style_list[8] + try + if(rgb2num(input_style_list[9])) + goia_overlays["zorgoia_spines"] = input_style_list[9] + catch + goia_overlays["spines"] = input_style_list[10] + try + if(rgb2num(input_style_list[11])) + goia_overlays["zorgoia_fluff"] = input_style_list[11] + catch + goia_overlays["fluff"] = input_style_list[12] + try + if(rgb2num(input_style_list[13])) + goia_overlays["zorgoia_underbelly"] = input_style_list[13] + catch + goia_overlays["underbelly"] = input_style_list[14] + try + if(rgb2num(input_style_list[15])) + goia_overlays["zorgoia_eyes"] = input_style_list[15] + catch + goia_overlays["eyes"] = input_style_list[16] + try + if(rgb2num(input_style_list[17])) + goia_overlays["zorgoia_spike"] = input_style_list[17] + catch + input_style_list["spike"] = input_style_list[18] + try + if(rgb2num(input_style_list[19])) + goia_overlays["zorgoia_belly"] = input_style_list[19] + catch + goia_overlays["belly"] = input_style_list[20] + update_icon() diff --git a/code/modules/vore/fluffstuff/custom_clothes_yw.dm b/code/modules/vore/fluffstuff/custom_clothes_yw.dm index 81c075f078..a4180cd57f 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_yw.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_yw.dm @@ -1380,7 +1380,7 @@ /obj/item/accessory/fluff/kettek_collar/New() ..() verbs |= /obj/item/accessory/fluff/kettek_collar/proc/change_color - color = "#"+get_random_colour() + color = get_random_colour() update_icon() /obj/item/accessory/fluff/kettek_collar/proc/change_color()