diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 7169390f12..ee5d418c7e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -23,23 +23,25 @@ #define FRIDAY_13TH "Friday the 13th" //Human Overlays Indexes///////// -#define MUTATIONS_LAYER 26 //mutations. Tk headglows, cold resistance glow, etc -#define BODY_BEHIND_LAYER 25 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 24 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define BODY_ADJ_LAYER 23 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define BODY_LAYER 22 //underwear, undershirts, socks, eyes, lips(makeup) -#define FRONT_MUTATIONS_LAYER 21 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define DAMAGE_LAYER 20 //damage indicators (cuts and burns) -#define UNIFORM_LAYER 19 -#define ID_LAYER 18 -#define SHOES_LAYER 17 -#define GLOVES_LAYER 16 -#define EARS_LAYER 15 -#define SUIT_LAYER 14 -#define GLASSES_LAYER 13 -#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt? -#define SUIT_STORE_LAYER 11 -#define BACK_LAYER 10 +#define SPECIES_LAYER 28 +#define MUTATIONS_LAYER 27 //mutations. Tk headglows, cold resistance glow, etc +#define BODY_BEHIND_LAYER 26 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 25 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define BODY_ADJ_LAYER 24 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define BODY_LAYER 23 //underwear, undershirts, socks, eyes, lips(makeup) +#define FRONT_MUTATIONS_LAYER 22 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define DAMAGE_LAYER 21 //damage indicators (cuts and burns) +#define UNIFORM_LAYER 20 +#define ID_LAYER 19 +#define SHOES_LAYER 18 +#define GLOVES_LAYER 17 +#define EARS_LAYER 16 +#define SUIT_LAYER 15 +#define GLASSES_LAYER 14 +#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt? +#define SUIT_STORE_LAYER 12 +#define BACK_LAYER 11 +#define TAIL_LAYER 10 #define HAIR_LAYER 9 //TODO: make part of head layer? #define FACEMASK_LAYER 8 #define HEAD_LAYER 7 @@ -49,7 +51,7 @@ #define R_HAND_LAYER 3 //Having the two hands seperate seems rather silly, merge them together? It'll allow for code to be reused on mobs with arbitarily many hands #define BODY_FRONT_LAYER 2 #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 26 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 28 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm new file mode 100644 index 0000000000..773a70f424 --- /dev/null +++ b/code/__DEFINES/voreconstants.dm @@ -0,0 +1,150 @@ +// Overhauled vore system + +/* #define DM_HOLD "Hold" +#define DM_DIGEST "Digest" +#define DM_HEAL "Heal" +#define DM_ABSORB "Absorb" +#define DM_DIGESTF "Fast Digest" + +#define VORE_STRUGGLE_EMOTE_CHANCE 40 + +var/global/list/player_sizes_list = list("Macro" = RESIZE_HUGE, "Big" = RESIZE_BIG, "Normal" = RESIZE_NORMAL, "Small" = RESIZE_SMALL, "Tiny" = RESIZE_TINY) + + +var/global/list/digestion_sounds = list( + 'sound/vore/digest1.ogg', + 'sound/vore/digest2.ogg', + 'sound/vore/digest3.ogg', + 'sound/vore/digest4.ogg', + 'sound/vore/digest5.ogg', + 'sound/vore/digest6.ogg', + 'sound/vore/digest7.ogg', + 'sound/vore/digest8.ogg', + 'sound/vore/digest9.ogg', + 'sound/vore/digest10.ogg', + 'sound/vore/digest11.ogg', + 'sound/vore/digest12.ogg') + +var/global/list/death_sounds = list( + 'sound/vore/death1.ogg', + 'sound/vore/death2.ogg', + 'sound/vore/death3.ogg', + 'sound/vore/death4.ogg', + 'sound/vore/death5.ogg', + 'sound/vore/death6.ogg', + 'sound/vore/death7.ogg', + 'sound/vore/death8.ogg', + 'sound/vore/death9.ogg', + 'sound/vore/death10.ogg') +*/ + + //Species listing + +#define iscanine(A) (is_species(A, /datum/species/canine)) +#define isfeline(A) (is_species(A, /datum/species/feline)) +#define isavian(A) (is_species(A, /datum/species/avian)) +#define isrodent(A) (is_species(A, /datum/species/rodent)) +#define isherbivorous(A) (is_species(A, /datum/species/herbivorous)) +#define isexotic(A) (is_species(A, /datum/species/exotic)) + +var/list/canine_species = list ( +anubis, +corgi, +coyote, +dalmatian, +fennec, +fox, +husky, +wolf, +sheperd, +lab, +otusian +) + +var/list/feline_species = list ( +panther, +tajaran, +smilodon +) + +var/list/avian_species = list ( +corvid, +hawk +) + +var/list/lizard_species = list ( +crocodile, +drake, +gria, +lizard, +naga, +turtle, +shark +) + +var/list/rodent_species = list ( +aramdillo, +beaver, +jackalope, +leporid, +murid, +otter, +porcupine, +possum, +raccoon, +roorat, +skunk, +squirrel +) + +var/list/herbivorous_species = list ( +boar, +capra, +cow, +deer, +hippo, +kangaroo, +pig +) + +var/list/exotic_species = list ( +alien, +carp, +drider, +glowfen, +jelly, +moth, +plant, +seaslug, +slime, +) + +var/list/taur = list ( +panther, +tajaran, +horse, +lab, +sheperd, +fox, +cow, +husky, +naga, +wolf, +dirder, +drake, +otie +) + + //Mutant Human bits +var/global/list/tails_list_human = list() +var/global/list/animated_tails_list_human = list() +// var/global/list/ears_list = list() +var/global/list/wings_list = list() + +/proc/log_debug(text) + if (config.log_debug) + diary << "\[[time_stamp()]]DEBUG: [text][log_end]" + + for(var/client/C in admins) + if(C.prefs.toggles & CHAT_DEBUGLOGS) + C << "DEBUG: [text]" \ No newline at end of file diff --git a/code/citadel/races.dm b/code/citadel/races.dm index a72138ddb3..9892d3508e 100644 --- a/code/citadel/races.dm +++ b/code/citadel/races.dm @@ -16,7 +16,7 @@ datum generic="abductor" adjective="spooky" restricted=2 - ailurus + /* ailurus name="red panda" id="ailurus" generic="ailurus" @@ -29,7 +29,7 @@ datum generic="xeno" adjective="phallic" tail=1 - /* armadillo + armadillo name="armadillo" id="armadillo" say_mod = "drawls" @@ -37,7 +37,7 @@ datum adjective = "protected" tail=1 attack_verb = "noms" - attack_sound = 'sound/weapons/bite.ogg' */ + attack_sound = 'sound/weapons/bite.ogg' attack_verb = "nom" // apparently attack verbs are just the verb, no S. shrug attack_sound = 'sound/weapons/bite.ogg' anubis @@ -159,7 +159,7 @@ datum id="fennec" generic="vulpine" adjective="foxy" - tail=1 + tail=1 */ fox name="fox" id="fox" @@ -167,7 +167,7 @@ datum adjective="foxy" // open and shut with this one, huh tail=1 taur=1 - glowfen + /* glowfen name="glowfen" id="glowfen" generic="vulpine" @@ -242,7 +242,7 @@ datum generic="leporid" adjective="hoppy" tail=1 - attack_verb = "kick" + attack_verb = "kick" */ lizard name="lizard" id="lizard" @@ -250,7 +250,8 @@ datum adjective="scaled" taur="naga" tail=1 - murid // i have no idea what this is + restricted=2 + /* murid // i have no idea what this is name="murid" id="murid" say_mod = "squeaks" @@ -403,7 +404,7 @@ datum id="squirrel" generic="rodent" adjective="nutty" - tail=1 + tail=1 */ tajaran name="tajaran" id="tajaran" @@ -413,7 +414,14 @@ datum taur=1 attack_verb = "claw" attack_sound = 'sound/weapons/bladeslice.ogg' - turtle + toucan + name="toucan" + id="toucan" + generic="bird" + adjective="colorful" + tail=1 + attack_verb = "pecks" + /* turtle name="turtle" id="turtle" generic="reptile" @@ -441,7 +449,7 @@ datum id="zig" generic="pokémon" adjective="curious" - tail=1 + tail=1 */ /* @@ -520,7 +528,7 @@ datum generic="plasmaman" adjective="toxic" restricted=2 // but if you do want the world to burn then please, by all means - pepsiman + /* pepsiman //name="PEPSI MAAAAAN" id="PEPSIMAAAN" generic="beverage" @@ -549,7 +557,7 @@ datum generic="amphibian" adjective="fishy" tail=0 - eyes="jelleyes" + eyes="jelleyes"I/ */ /*var/list/kpcode_race_list proc/kpcode_race_genlist() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 17a9406981..06b38d999d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -45,7 +45,7 @@ var/list/preferences_datums = list() var/mutant_tail = "none" var/mutant_wing = "none" var/wingcolor = "FFF" - var/special_color[COLOUR_LIST_SIZE] + //var/special_color[COLOUR_LIST_SIZE] //var/special_color_one = null //var/special_color_two = null var/vore_banned_methods = 0 @@ -216,7 +216,7 @@ var/list/preferences_datums = list() if(!kpcode_cantaur(pref_species.id)) dat += " (not available for [pref_species.id])" dat += "
" - if(special_color[1]) + /*if(special_color[1]) dat += "    Primary
" else dat += "Primary?
" @@ -227,7 +227,7 @@ var/list/preferences_datums = list() if(special_color[3]) dat += "    Tertiary
" else - dat += "Tertiary?
" + dat += "Tertiary?
"*/ else dat += "Species: Human
" @@ -289,7 +289,7 @@ var/list/preferences_datums = list() dat += "" - /*if(config.mutant_races) //We don't allow mutant bodyparts for humans either unless this is true. + if(config.mutant_races) //We don't allow mutant bodyparts for humans either unless this is true. if((MUTCOLORS in pref_species.specflags) || (MUTCOLORS_PARTSONLY in pref_species.specflags)) @@ -384,7 +384,7 @@ var/list/preferences_datums = list() dat += "" - dat += ""*/ + dat += "" if (1) // Game Preferences @@ -996,7 +996,7 @@ var/list/preferences_datums = list() if(new_wingcolor) wingcolor = sanitize_hexcolor(new_wingcolor) - if("special_color") + /*if("special_color") var/index_tc=href_list["which"] switch(alert("Use a special colour for #[index_tc]?","Character Preference","Yes","No","Cancel")) if("Yes") @@ -1004,7 +1004,7 @@ var/list/preferences_datums = list() if(new_color) special_color[text2num(index_tc)] = sanitize_hexcolor(new_color) if("No") - special_color[text2num(index_tc)]=null + special_color[text2num(index_tc)]=null*/ if("character_size") var/new_size = input(user, "Choose your character's size:", "Character Preference") in list("huge", "large", "normal", "small", "tiny") @@ -1019,7 +1019,7 @@ var/list/preferences_datums = list() if("be_taur") be_taur = !be_taur - /*if("tail_lizard") + if("tail_lizard") var/new_tail new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in tails_list_lizard if(new_tail) @@ -1071,7 +1071,7 @@ var/list/preferences_datums = list() var/new_body_markings new_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in body_markings_list if(new_body_markings) - features["body_markings"] = new_body_markings*/ + features["body_markings"] = new_body_markings if("s_tone") var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in skin_tones @@ -1276,12 +1276,12 @@ var/list/preferences_datums = list() if(mutant_tail != "none" && config.mutant_races) character.dna.mutanttail = mutant_tail - if(mutant_wing != "none" && config.mutant_races) + /*(if(mutant_wing != "none" && config.mutant_races) character.dna.mutantwing = mutant_wing - character.dna.wingcolor=wingcolor + character.dna.wingcolor=wingcolor*/ if(be_taur) character.dna.taur=1 - character.dna.special_color = special_color + //character.dna.special_color = special_color character.dna.cock=p_cock character.dna.vagina=p_vagina diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 4a9efad27d..959890e109 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -195,6 +195,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(needs_update == -2) //fatal, can't load any data return 0 + if(!S["species"] || !config.mutant_races) + S["species"] << new /datum/species/human() + //general preferences S["ooccolor"] >> ooccolor S["lastchangelog"] >> lastchangelog @@ -296,17 +299,21 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return 0 //Species - var/species_id - S["species"] >> species_id - if(config.mutant_races && species_id && (species_id in roundstart_species)) - var/newtype = roundstart_species[species_id] + /*var/species_name + S["species"] >> species_name + if(config.mutant_races && species_name && (species_name in roundstart_species)) + var/newtype = roundstart_species[species_name] pref_species = new newtype() else - var/rando_race = pick(config.roundstart_races) - pref_species = new rando_race() + pref_species = new /datum/species/human() if(!S["features["mcolor"]"] || S["features["mcolor"]"] == "#000") - S["features["mcolor"]"] << "#FFF" + S["features["mcolor"]"] << "#FFF"*/ + + if(!S["species"] || !config.mutant_races) + S["species"] << new /datum/species/human() + //if(!S["mutant_color"] || S["mutant_color"] == "#000") + // S["mutant_color"] << "#FFF" //Character S["Flavor_Text"] >> flavor_text @@ -344,6 +351,22 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["cyborg_name"] >> custom_names["cyborg"] S["religion_name"] >> custom_names["religion"] S["deity_name"] >> custom_names["deity"] + S["species"] >> pref_species + + //Customs + S["mutant_tail"] >> mutant_tail + S["mutant_wing"] >> mutant_wing + S["wingcolor"] >> wingcolor + //S["special_color_one"] >> special_color_one + //S["special_color_two"] >> special_color_two + //S["special_color"] >> special_color + S["be_taur"] >> be_taur + S["vore_ability"] >> vore_ability + S["vore_banned_methods"]>> vore_banned_methods + S["vore_extra_bans"] >> vore_extra_bans + S["character_size"] >> character_size + S["p_cock"] >> p_cock + S["p_vagina"] >> p_vagina //Jobs S["userandomjob"] >> userandomjob @@ -364,10 +387,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Sanitize flavor_text = sanitize_text(flavor_text, initial(flavor_text)) real_name = reject_bad_name(real_name) - if(!features["mcolor"] || features["mcolor"] == "#000") - features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") - if(!real_name) - real_name = random_unique_name(gender) + //if(!(pref_species in species_list)) + if(!(pref_species)) + pref_species = new /datum/species/human() + //if(!mutant_color || mutant_color == "#000") + // mutant_color = "#FFF" + if(!real_name) real_name = random_unique_name(gender) be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) be_random_body = sanitize_integer(be_random_body, 0, 1, initial(be_random_body)) gender = sanitize_gender(gender) @@ -398,6 +423,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["spines"] = sanitize_inlist(features["spines"], spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], body_markings_list) + vore_ability=sanitize_vore_list(vore_ability) + if(isnull(vore_banned_methods))vore_banned_methods=0 + if(isnull(vore_extra_bans))vore_extra_bans=65535 + if(isnull(p_vagina)) p_vagina=gender==FEMALE + if(isnull(p_cock)) + p_cock=list("has"=gender==MALE,"type"="human","color"="900") + userandomjob = sanitize_integer(userandomjob, 0, 1, initial(userandomjob)) job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high)) job_civilian_med = sanitize_integer(job_civilian_med, 0, 65535, initial(job_civilian_med)) @@ -454,6 +486,19 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["cyborg_name"] << custom_names["cyborg"] S["religion_name"] << custom_names["religion"] S["deity_name"] << custom_names["deity"] + S["species"] << pref_species + //Custom + S["mutant_tail"] << mutant_tail + S["mutant_wing"] << mutant_wing + S["wingcolor"] << wingcolor + //S["special_color"] << special_color + S["be_taur"] << be_taur + S["vore_ability"] << vore_ability + S["vore_banned_methods"]<< vore_banned_methods + S["vore_extra_bans"] << vore_extra_bans + S["character_size"] << character_size + S["p_cock"] << p_cock + S["p_vagina"] << p_vagina //Jobs S["userandomjob"] << userandomjob diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 50ada062f3..811771aa1f 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -294,8 +294,44 @@ if(U3) standing += image("icon"=U3.icon, "icon_state"="[U3.icon_state]_s", "layer"=-BODY_LAYER) - if(standing.len) - H.overlays_standing[BODY_LAYER] = standing + //Custom Code + if(H.dna&&H.dna.taur&&!kpcode_cantaur(id))H.dna.taur=0//VERY BAD TEMP FIX + + if(H.underwear&&H.underwear!="Nude"&&H.underwear_active&& (!H.dna||!H.dna.taur) ) + var/datum/sprite_accessory/underwear/U = underwear_list[H.underwear] + if(U) + standing += image("icon"=U.icon, "icon_state"="[U.icon_state]_s", "layer"=-BODY_LAYER) + + else if((!H.dna || !H.dna.taur) && (!H.wear_suit || !(H.wear_suit.flags_inv&HIDEJUMPSUIT)) && (!H.w_uniform||!(H.w_uniform.body_parts_covered&GROIN)) ) + if(H.dna&&H.dna.cock) + //cock codes here + var/list/cock=H.dna.cock + var/cock_mod=0 + var/cock_type=cock["type"] + if(cock["has"]==H.dna.COCK_NORMAL)cock_mod="n" + else if(cock["has"]==H.dna.COCK_HYPER)cock_mod="h" + else if(cock["has"]==H.dna.COCK_DOUBLE)cock_mod="d" + if(cock_mod) + var/icon/chk=new/icon('icons/mob/cock.dmi') + var/list/available_states=chk.IconStates() + if(available_states.Find("[cock_type]_c_[cock_mod]")) + var/image/cockimtmp = image("icon"='icons/mob/cock.dmi', "icon_state"="[cock_type]_c_[cock_mod]", "layer"=-BODY_LAYER) + var/new_color = "#" + cock["color"] + cockimtmp.color = new_color + standing += cockimtmp + if(available_states.Find("[cock_type]_s_[cock_mod]")) + var/image/cockimtmp = image("icon"='icons/mob/cock.dmi', "icon_state"="[cock_type]_s_[cock_mod]", "layer"=-BODY_LAYER) + if(H.dna.special_color[2]) + var/new_color = "#" + H.dna.special_color[2] + cockimtmp.color = new_color + standing += cockimtmp + + if(H.dna&&H.dna.taur) + + var/taur_state="[kpcode_cantaur(H.dna.mutantrace())]_overlay" + if(H.vore_womb_datum.has_people()||H.vore_stomach_datum.has_people()) + taur_state+="_f" + standing += generate_colour_icon('icons/mob/special/taur.dmi',"[taur_state]",H.dna.special_color,offset_x=-16,add_layer=-BODY_LAYER) H.apply_overlay(BODY_LAYER) diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index ac36d4c28c..11ec5ae780 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -12,7 +12,7 @@ use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human - +/* /datum/species/human/qualifies_for_rank(rank, list/features) if((!features["tail_human"] || features["tail_human"] == "None") && (!features["ears"] || features["ears"] == "None")) return 1 //Pure humans are always allowed in all roles. @@ -28,7 +28,7 @@ return 0 if(rank == "Quartermaster") //QM is not contained in command_positions but we still want to bar mutants from it. return 0 - return ..() + return ..()*/ /datum/species/human/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) @@ -147,7 +147,7 @@ if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) return - + /* SHADOWPEOPLE diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index e4bd12856c..418bf73e12 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -85,6 +85,53 @@ There are several things that need to be remembered: dna.species.handle_body(src) update_body_parts() + //Tail code + remove_overlay(TAIL_LAYER) + var/list/t_standing = list() + //var/icon/chk=new/icon('icons/mob/tail.dmi') + //var/list/available_states=chk.IconStates() + + var/wing = dna ? dna.mutantwing : null + if(wing&&wing!="none"&&!dna.taur) + var/image/wing_s = image("icon" = 'icons/mob/wing.dmi', "icon_state" = "[wing]", "layer" = -TAIL_LAYER) + wing_s.color = "#" + dna.wingcolor + t_standing += wing_s + + var/race = dna ? dna.mutantrace() : null + if(race&&kpcode_hastail(race) &&!dna.taur) //Temp taur fix + t_standing+=generate_colour_icon('icons/mob/tail.dmi',"[kpcode_hastail(race)]",dna.special_color,add_layer=-TAIL_LAYER) + /*var/list/standingt = list() + standingt += image("icon"='icons/mob/tail.dmi', "icon_state"="[race]", "layer"=-TAIL_LAYER) + if(dna.special_color_one) + if(available_states.Find("[race]_1")) + var/image/standingt_one = image("icon"='icons/mob/tail.dmi', "icon_state"="[race]_1", "layer"=-TAIL_LAYER) + var/new_color = "#" + dna.special_color_one + standingt_one.color = new_color + standingt += standingt_one + overlays_standing[TAIL_LAYER] = standingt*/ + else + if(!race||race=="human") + var/tail = dna ? dna.mutanttail : null + if(tail&&kpcode_hastail(tail) &&!dna.taur) //Temp taur fix + t_standing+=generate_colour_icon('icons/mob/tail.dmi',"[kpcode_hastail(tail)]",dna.special_color,add_layer=-TAIL_LAYER,human=hair_color) + /*var/list/standingt = list() + standingt += image("icon"='icons/mob/tail.dmi', "icon_state"="[kpcode_hastail(tail)]", "pixel_y"=kpcode_tail_offset(tail), "layer"=-TAIL_LAYER) //may need a +(pixel_y/2) + var/image/standingt_one = image("icon"='icons/mob/tail.dmi', "icon_state"="[kpcode_hastail(tail)]_1", "pixel_y"=kpcode_tail_offset(tail), "layer"=-TAIL_LAYER) + var/new_color = "#" + hair_color + standingt_one.color = new_color + standingt += standingt_one + overlays_standing[TAIL_LAYER] = standingt*/ + + if(dna&&dna.taur) + t_standing+=generate_colour_icon('icons/mob/special/taur.dmi',"[kpcode_cantaur(dna.mutantrace())]_tail",dna.special_color,offset_x=-16,add_layer=-TAIL_LAYER) + if(src.vore_womb_datum.has_people()||src.vore_stomach_datum.has_people()) + t_standing+=generate_colour_icon('icons/mob/special/taur.dmi',"[kpcode_cantaur(dna.mutantrace())]_tail_f",dna.special_color,offset_x=-16,add_layer=-TAIL_LAYER) + + if(t_standing.len) + overlays_standing[TAIL_LAYER] =t_standing + + apply_overlay(TAIL_LAYER) + /mob/living/carbon/human/update_fire() ..("Standing") diff --git a/config/admins.txt b/config/admins.txt index 1301b4ee39..c0a463d0df 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -6,4 +6,6 @@ # Ranks can be anything defined in admin_ranks.txt # # NOTE: if the rank-name cannot be found in admin_ranks.txt, they will not be adminned! ~Carn # # NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # -############################################################################################### \ No newline at end of file +############################################################################################### + +JayEh = Host \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index 696eb46c1f..5d8f09ceee 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -276,6 +276,14 @@ JOIN_WITH_MUTANT_RACE ## You probably want humans on your space station, but technically speaking you can turn them off without any ill effect ROUNDSTART_RACES human +## Races because TG is racist +ROUNDSTART_RACES canine +ROUNDSTART_RACES feline +ROUNDSTART_RACES avian +ROUNDSTART_RACES rodent +ROUNDSTART_RACES herbivorous +ROUNDSTART_RACES exotic + ## Races that are strictly worse than humans that could probably be turned on without balance concerns ROUNDSTART_RACES lizard #ROUNDSTART_RACES fly diff --git a/icons/mob/cock.dmi b/icons/mob/cock.dmi new file mode 100644 index 0000000000..d4d29a7255 Binary files /dev/null and b/icons/mob/cock.dmi differ diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index 553db92782..7e3518e8a2 100644 Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi index 54ec9ed433..49970b67ea 100644 Binary files a/icons/mob/human_parts.dmi and b/icons/mob/human_parts.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 484d6ba5e9..be12e23f03 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/special/furryrace.dmi b/icons/mob/special/furryrace.dmi new file mode 100644 index 0000000000..3718b8d8dd Binary files /dev/null and b/icons/mob/special/furryrace.dmi differ diff --git a/icons/mob/special/furrytail.dmi b/icons/mob/special/furrytail.dmi new file mode 100644 index 0000000000..ba0e7a3a6c Binary files /dev/null and b/icons/mob/special/furrytail.dmi differ diff --git a/icons/mob/special/taur.dmi b/icons/mob/special/taur.dmi new file mode 100644 index 0000000000..e70ded7ce1 Binary files /dev/null and b/icons/mob/special/taur.dmi differ diff --git a/icons/mob/tail.dmi b/icons/mob/tail.dmi new file mode 100644 index 0000000000..44b6e823ce Binary files /dev/null and b/icons/mob/tail.dmi differ diff --git a/icons/mob/wing.dmi b/icons/mob/wing.dmi new file mode 100644 index 0000000000..50247693a4 Binary files /dev/null and b/icons/mob/wing.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 15cf201e77..68a92acf5f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -51,6 +51,7 @@ #include "code\__DEFINES\tablecrafting.dm" #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\tick.dm" +#include "code\__DEFINES\voreconstants.dm" #include "code\__DEFINES\wires.dm" #include "code\__HELPERS\_logging.dm" #include "code\__HELPERS\_string_lists.dm" @@ -125,6 +126,17 @@ #include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_objects.dm" #include "code\_onclick\hud\swarmer.dm" +#include "code\citadel\chemistry.dm" +#include "code\citadel\flavour.dm" +#include "code\citadel\genetics.dm" +#include "code\citadel\macro.dm" +#include "code\citadel\panel.dm" +#include "code\citadel\races.dm" +#include "code\citadel\science.dm" +#include "code\citadel\transfer_release.dm" +#include "code\citadel\transformation.dm" +#include "code\citadel\unassigned.dm" +#include "code\citadel\whitelist.dm" #include "code\controllers\admin.dm" #include "code\controllers\configuration.dm" #include "code\controllers\controller.dm" @@ -1812,17 +1824,6 @@ #include "code\modules\vehicles\vehicle.dm" #include "code\modules\zombie\items.dm" #include "code\modules\zombie\organs.dm" -#include "code\narky\chemistry.dm" -#include "code\narky\flavour.dm" -#include "code\narky\genetics.dm" -#include "code\narky\macro.dm" -#include "code\narky\panel.dm" -#include "code\narky\races.dm" -#include "code\narky\science.dm" -#include "code\narky\transfer_release.dm" -#include "code\narky\transformation.dm" -#include "code\narky\unassigned.dm" -#include "code\narky\whitelist.dm" #include "code\orphaned_procs\AStar.dm" #include "code\orphaned_procs\dbcore.dm" #include "code\orphaned_procs\priority_announce.dm"