diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 1a482e6d244..63c9c1a24eb 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -42,6 +42,7 @@ var/global/list/facial_hair_styles_male_list = list() var/global/list/facial_hair_styles_female_list = list() var/global/list/skin_styles_female_list = list() //unused var/global/list/body_marking_styles_list = list() //stores /datum/sprite_accessory/marking indexed by name +var/global/list/body_marking_nopersist_list = list() // Body marking styles, minus non-genetic markings and augments var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type @@ -149,6 +150,8 @@ GLOBAL_LIST_EMPTY(mannequins) for(var/path in paths) var/datum/sprite_accessory/marking/M = new path() body_marking_styles_list[M.name] = M + if(!M.genetic) + body_marking_nopersist_list[M.name] = M //Surgery Steps - Initialize all /datum/surgery_step into a list paths = subtypesof(/datum/surgery_step) diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index 733fdb28c90..df62ad8ecf4 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -123,6 +123,7 @@ var/global/list/datum/dna/gene/dna_genes[0] // New stuff var/species = SPECIES_HUMAN var/list/body_markings = list() + var/list/body_markings_genetic = list() var/list/body_descriptors = null var/list/genetic_modifiers = list() // Modifiers with the MODIFIER_GENETIC flag are saved. Note that only the type is saved, not an instance. diff --git a/code/game/objects/items/weapons/implants/implantlanguage.dm b/code/game/objects/items/weapons/implants/implantlanguage.dm index 692cdd381f7..595e40c2b9f 100644 --- a/code/game/objects/items/weapons/implants/implantlanguage.dm +++ b/code/game/objects/items/weapons/implants/implantlanguage.dm @@ -7,6 +7,7 @@ desc = "An implant allowing someone to speak the range of frequencies used in Galactic Common, as well as produce any phonemes that they usually cannot. Only helps with producing sounds, not understanding them." known_implant = TRUE var/list/languages = list(LANGUAGE_GALCOM) // List of languages that this assists with + initialize_loc = BP_HEAD /obj/item/weapon/implant/language/post_implant(mob/M) // Amends the mob's voice organ, then deletes itself if(ishuman(M)) diff --git a/code/modules/client/preference_setup/loadout/loadout_cyberware.dm b/code/modules/client/preference_setup/loadout/loadout_cyberware.dm index 2540e86fc83..1fac24c862b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_cyberware.dm +++ b/code/modules/client/preference_setup/loadout/loadout_cyberware.dm @@ -12,19 +12,6 @@ path = /obj/item/weapon/implant/tracking/weak cost = 0 //VOREStation Edit. Changed cost to 0 -// Remove these after generic implant has been in for awhile and everyone has had a reasonable period to copy their old descs. -/datum/gear/utility/implant/dud1 - display_name = "implant, head" - description = "An implant with no obvious purpose (DEPRECATED, USE GENERIC IMPLANT)." - path = /obj/item/weapon/implant/dud - cost = 1 -/datum/gear/utility/implant/dud2 - display_name = "implant, torso" - description = "An implant with no obvious purpose (DEPRECATED, USE GENERIC IMPLANT)." - path = /obj/item/weapon/implant/dud/torso - cost = 1 -// End removal marker. - /datum/gear/utility/implant/generic display_name = "implant, generic, primary" description = "An implant with no obvious purpose." diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index a71c2b29639..5f5a3bfe694 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -2062,9 +2062,12 @@ shaved color_blend_mode = ICON_ADD + var/genetic = TRUE var/body_parts = list() //A list of bodyparts this covers, in organ_tag defines //Reminder: BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD +//Tattoos + /datum/sprite_accessory/marking/tat_rheart name = "Tattoo (Heart, R. Arm)" icon_state = "tat_rheart" @@ -2117,6 +2120,300 @@ shaved icon_state = "tat_tiger" body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN) +//New tats + +/datum/sprite_accessory/marking/tat_belly + name = "Tattoo (Belly)" + icon_state = "tat_belly" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/tat_forrest_left + name = "Tattoo (Forrest, Left Eye)" + icon_state = "tat_forrest_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_forrest_right + name = "Tattoo (Forrest, Right Eye)" + icon_state = "tat_forrest_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_hunter_left + name = "Tattoo (Hunter, Left Eye)" + icon_state = "tat_hunter_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_hunter_right + name = "Tattoo (Hunter, Right Eye)" + icon_state = "tat_hunter_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_jaeger_left + name = "Tattoo (Jaeger, Left Eye)" + icon_state = "tat_jaeger_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_jaeger_right + name = "Tattoo (Jaeger, Right Eye)" + icon_state = "tat_jaeger_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_kater_left + name = "Tattoo (Kater, Left Eye)" + icon_state = "tat_kater_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_kater_right + name = "Tattoo (Kater, Right Eye)" + icon_state = "tat_kater_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_lujan_left + name = "Tattoo (Lujan, Left Eye)" + icon_state = "tat_lujan_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_lujan_right + name = "Tattoo (Lujan, Right Eye)" + icon_state = "tat_lujan_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_montana_left + name = "Tattoo (Montana, Left Face)" + icon_state = "tat_montana_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_montana_right + name = "Tattoo (Montana, Right Face)" + icon_state = "tat_montana_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_natasha_left + name = "Tattoo (Natasha, Left Eye)" + icon_state = "tat_natasha_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_natasha_right + name = "Tattoo (Natasha, Right Eye)" + icon_state = "tat_natasha_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_tamoko + name = "Tattoo (Ta Moko, Face)" + icon_state = "tat_tamoko" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_toshi_left + name = "Tattoo (Toshi, Left Eye)" + icon_state = "tat_toshi_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_toshi_right + name = "Tattoo (Volgin, Right Eye)" + icon_state = "tat_toshi_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tat_wings_back + name = "Tattoo (Wings, Lower Back)" + icon_state = "tat_wingsback" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/tilaka + name = "Tilaka" + icon_state = "tilaka" + body_parts = list(BP_HEAD) + + +/datum/sprite_accessory/marking/bands + name = "Color Bands" + icon_state = "bands" + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN) + +/datum/sprite_accessory/marking/bandsface + name = "Color Bands (Face)" + icon_state = "bandsface" + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_TAJ,SPECIES_UNATHI) + +/datum/sprite_accessory/marking/bandsface_human + name = "Color Bands (Face)" + icon_state = "bandshumanface" + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_HUMAN,SPECIES_HUMAN_VATBORN,SPECIES_SKRELL) + +/datum/sprite_accessory/marking/tiger_stripes + name = "Tiger Stripes" + icon_state = "tiger" + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN) + species_allowed = list(SPECIES_TAJ) //There's a tattoo for non-cats + +/datum/sprite_accessory/marking/tigerhead + name = "Tiger Stripes (Head, Minor)" + icon_state = "tigerhead" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/tigerface + name = "Tiger Stripes (Head, Major)" + icon_state = "tigerface" + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_TAJ) //There's a tattoo for non-cats + +/datum/sprite_accessory/marking/backstripe + name = "Back Stripe" + icon_state = "backstripe" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/bindi + name = "Bindi" + icon_state = "bindi" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/blush + name = "Blush" + icon_state= "blush" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/bridge + name = "Bridge" + icon_state = "bridge" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/brow_left + name = "Brow Left" + icon_state = "brow_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/brow_right + name = "Brow Right" + icon_state = "brow_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/cheekspot_left + name = "Cheek Spot (Left Cheek)" + icon_state = "cheekspot_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/cheekspot_right + name = "Cheek Spot (Right Cheek)" + icon_state = "cheekspot_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/cheshire_left + name = "Cheshire (Left Cheek)" + icon_state = "cheshire_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/cheshire_right + name = "Cheshire (Right Cheek)" + icon_state = "cheshire_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/eyestripe + name = "Eye Stripe" + icon_state = "eyestripe" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/eyecorner_left + name = "Eye Corner Left" + icon_state = "eyecorner_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/eyecorner_right + name = "Eye Corner Right" + icon_state = "eyecorner_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/fullfacepaint + name = "Full Face Paint" + icon_state = "fullface" + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_HUMAN,SPECIES_HUMAN_VATBORN,SPECIES_SKRELL) + +/datum/sprite_accessory/marking/lips + name = "Lips" + icon_state = "lips" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/lowercheek_left + name = "Lower Cheek Left" + icon_state = "lowercheek_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/lowercheek_left + name = "Lower Cheek Right" + icon_state = "lowercheek_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/neck + name = "Neck Cover" + icon_state = "neck" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/neckthick + name = "Neck Cover (Thick)" + icon_state = "neckthick" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/nosestripe + name = "Nose Stripe" + icon_state = "nosestripe" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/nosetape + name = "Nose Tape" + icon_state = "nosetape" + body_parts = list(BP_HEAD) + genetic = FALSE + +/datum/sprite_accessory/marking/scratch_abdomen_left + name = "Scar, Abdomen Left" + icon_state = "scratch_abdomen_l" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/scratch_abdomen_right + name = "Scar, Abdomen Right" + icon_state = "scratch_abdomen_r" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/scratch_abdomen_small_left + name = "Scar, Abdomen Small Left" + icon_state = "scratch_abdomensmall_l" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/scratch_abdomen_small_right + name = "Scar, Abdomen Small Right" + icon_state = "scratch_abdomensmall_r" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/scratch_back + name = "Scar, Back" + icon_state = "scratch_back" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/scratch_chest_left + name = "Scar, Chest (Left)" + icon_state = "scratch_chest_l" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/scratch_chest_right + name = "Scar, Chest (Right)" + icon_state = "scratch_chest_r" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/skull_paint + name = "Skull Paint" + icon_state = "skull" + body_parts = list(BP_HEAD) + genetic = FALSE + +//Heterochromia + +/datum/sprite_accessory/marking/heterochromia + name = "Heterochromia (right eye)" + icon_state = "heterochromia" + body_parts = list(BP_HEAD) + +//Taj/Unathi shared markings + /datum/sprite_accessory/marking/taj_paw_socks name = "Socks Coloration (Taj)" icon_state = "taj_pawsocks" @@ -2171,42 +2468,6 @@ shaved body_parts = list(BP_HEAD) species_allowed = list(SPECIES_TAJ) -/datum/sprite_accessory/marking/bands - name = "Color Bands" - icon_state = "bands" - body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN) - -/datum/sprite_accessory/marking/bandsface - name = "Color Bands (Face)" - icon_state = "bandsface" - body_parts = list(BP_HEAD) - -/datum/sprite_accessory/marking/tiger_stripes - name = "Tiger Stripes" - icon_state = "tiger" - body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN) - species_allowed = list(SPECIES_TAJ) //There's a tattoo for non-cats - -/datum/sprite_accessory/marking/tigerhead - name = "Tiger Stripes (Head, Minor)" - icon_state = "tigerhead" - body_parts = list(BP_HEAD) - -/datum/sprite_accessory/marking/tigerface - name = "Tiger Stripes (Head, Major)" - icon_state = "tigerface" - body_parts = list(BP_HEAD) - species_allowed = list(SPECIES_TAJ) //There's a tattoo for non-cats - -/datum/sprite_accessory/marking/backstripe - name = "Back Stripe" - icon_state = "backstripe" - body_parts = list(BP_TORSO) - -/datum/sprite_accessory/marking/heterochromia - name = "Heterochromia (right eye)" - icon_state = "heterochromia" - body_parts = list(BP_HEAD) //Taj specific stuff /datum/sprite_accessory/marking/taj_belly @@ -2340,10 +2601,174 @@ shaved do_colouration = 0 +//Cybernetic Augments, some species-limited due to sprite misalignment. /aug/ types are excluded from dna. + +/datum/sprite_accessory/marking/aug + name = "Augment (Backports, Back)" + icon_state = "aug_backports" + genetic = FALSE + body_parts = list(BP_TORSO) + species_allowed = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJ,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI,SPECIES_ZADDAT) + +/datum/sprite_accessory/marking/aug/diode + name = "Augment (Backports Diode, Back)" + icon_state = "aug_backportsdiode" + +/datum/sprite_accessory/marking/aug/backportswide + name = "Augment (Backports Wide, Back)" + icon_state = "aug_backportswide" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/aug/backportswide/diode + name = "Augment (Backports Wide Diode, Back)" + icon_state = "aug_backportswidediode" + +/datum/sprite_accessory/marking/aug/headcase + name = "Augment (Headcase, Head)" + icon_state = "aug_headcase" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/headcase_light + name = "Augment (Headcase Light, Head)" + icon_state = "aug_headcaselight" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/headport + name = "Augment (Headport, Head)" + icon_state = "aug_headport" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/headport/diode + name = "Augment (Headport Diode, Head)" + icon_state = "aug_headplugdiode" + +/datum/sprite_accessory/marking/aug/lowerjaw + name = "Augment (Lower Jaw, Head)" + icon_state = "aug_lowerjaw" + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_HUMAN_VATBORN,SPECIES_ZADDAT) + +/datum/sprite_accessory/marking/aug/scalpports + name = "Augment (Scalp Ports)" + icon_state = "aug_scalpports" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/scalpports/vertex_left + name = "Augment (Scalp Port, Vertex Left)" + icon_state = "aug_vertexport_l" + +/datum/sprite_accessory/marking/aug/scalpports/vertex_right + name = "Augment (Scalp Port, Vertex Right)" + icon_state = "aug_vertexport_r" + +/datum/sprite_accessory/marking/aug/scalpports/occipital_left + name = "Augment (Scalp Port, Occipital Left)" + icon_state = "aug_occipitalport_l" + +/datum/sprite_accessory/marking/aug/scalpports/occipital_right + name = "Augment (Scalp Port, Occipital Right)" + icon_state = "aug_occipitalport_r" + +/datum/sprite_accessory/marking/aug/scalpportsdiode + name = "Augment (Scalp Ports Diode)" + icon_state = "aug_scalpportsdiode" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/scalpportsdiode/vertex_left + name = "Augment (Scalp Port Diode, Vertex Left)" + icon_state = "aug_vertexportdiode_l" + +/datum/sprite_accessory/marking/aug/scalpportsdiode/vertex_right + name = "Augment (Scalp Port Diode, Vertex Right)" + icon_state = "aug_vertexportdiode_r" + +/datum/sprite_accessory/marking/aug/scalpportsdiode/occipital_left + name = "Augment (Scalp Port Diode, Occipital Left)" + icon_state = "aug_occipitalportdiode_l" + +/datum/sprite_accessory/marking/aug/scalpportsdiode/occipital_right + name = "Augment (Scalp Port Diode, Occipital Right)" + icon_state = "aug_occipitalportdiode_r" + +/datum/sprite_accessory/marking/aug/backside_left + name = "Augment (Backside Left, Head)" + icon_state = "aug_backside_l" + +/datum/sprite_accessory/marking/aug/backside_left/side_diode + name = "Augment (Backside Left Diode, Head)" + icon_state = "aug_sidediode_l" + +/datum/sprite_accessory/marking/aug/backside_right + name = "Augment (Backside Right, Head)" + icon_state = "aug_backside_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/backside_right/side_diode + name = "Augment (Backside Right Diode, Head)" + icon_state = "aug_sidediode_r" + +/datum/sprite_accessory/marking/aug/side_deunan_left + name = "Augment (Deunan, Side Left)" + icon_state = "aug_sidedeunan_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_deunan_right + name = "Augment (Deunan, Side Right)" + icon_state = "aug_sidedeunan_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_kuze_left + name = "Augment (Kuze, Side Left)" + icon_state = "aug_sidekuze_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_kuze_left/side_diode + name = "Augment (Kuze Diode, Side Left)" + icon_state = "aug_sidekuzediode_l" + +/datum/sprite_accessory/marking/aug/side_kuze_right + name = "Augment (Kuze, Side Right)" + icon_state = "aug_sidekuze_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_kuze_right/side_diode + name = "Augment (Kuze Diode, Side Right)" + icon_state = "aug_sidekuzediode_r" + +/datum/sprite_accessory/marking/aug/side_kinzie_left + name = "Augment (Kinzie, Side Left)" + icon_state = "aug_sidekinzie_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_kinzie_right + name = "Augment (Kinzie, Side Right)" + icon_state = "aug_sidekinzie_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_shelly_left + name = "Augment (Shelly, Side Left)" + icon_state = "aug_sideshelly_l" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/side_shelly_right + name = "Augment (Shelly, Side Right)" + icon_state = "aug_sideshelly_r" + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/aug/chestports + name = "Augment (Chest Ports)" + icon_state = "aug_chestports" + body_parts = list(BP_TORSO) + +/datum/sprite_accessory/marking/aug/abdomenports + name = "Augment (Abdomen Ports)" + icon_state = "aug_abdomenports" + body_parts = list(BP_TORSO) //skin styles - WIP //going to have to re-integrate this with surgery //let the icon_state hold an icon preview for now + /datum/sprite_accessory/skin icon = 'icons/mob/human_races/r_human.dmi' diff --git a/icons/mob/human_races/markings.dmi b/icons/mob/human_races/markings.dmi index f9f91da90bb..de0dcafb7c6 100644 Binary files a/icons/mob/human_races/markings.dmi and b/icons/mob/human_races/markings.dmi differ