From 796e22beac8f12e0657da85008ea7b8fee0fa92f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Mar 2018 09:02:13 -0500 Subject: [PATCH 01/12] LOCAL SUNE PORTS... OH GOD WHAT HAPPENED That feel when you're in the 'Oh, well while I'm here...' mindset. --- code/__HELPERS/_cit_helpers.dm | 2 + code/__HELPERS/mobs.dm | 15 +- code/modules/client/preferences.dm | 871 ++++-------------- code/modules/clothing/glasses/vg_glasses.dm | 20 +- code/modules/clothing/gloves/vg_gloves.dm | 18 +- code/modules/clothing/head/cit_hats.dm | 4 +- code/modules/clothing/head/vg_hats.dm | 86 +- code/modules/clothing/masks/vg_masks.dm | 12 +- code/modules/clothing/shoes/vg_shoes.dm | 68 +- code/modules/clothing/spacesuits/vg_spess.dm | 28 +- code/modules/clothing/suits/vg_suits.dm | 52 +- code/modules/clothing/under/vg_under.dm | 152 +-- code/modules/mob/living/carbon/emote.dm | 11 - .../projectiles/guns/energy/megabuster.dm | 4 +- .../projectiles/guns/energy/plasma_cit.dm | 22 +- .../projectiles/projectile/megabuster.dm | 12 +- code/modules/projectiles/projectile/plasma.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 8 + icons/mob/human_parts_greyscale.dmi | Bin 64731 -> 41962 bytes icons/obj/clothing/turtlenecks.dmi | Bin 1009 -> 0 bytes .../code/game/objects/items/meat.dm | 26 + modular_citadel/code/init.dm | 1 + .../code/modules/client/preferences.dm | 737 +++++++++++++++ .../modules/client/preferences_savefile.dm | 6 + .../code/modules/clothing/suits/suits.dm | 2 +- .../modules/clothing/under/turtlenecks.dm | 4 +- .../code/modules/clothing/under/under.dm | 8 +- .../mob/dead/new_player/sprite_accessories.dm | 177 ++-- .../mob/living/carbon/human/species.dm | 22 + .../carbon/human/species_types/furrypeople.dm | 42 +- .../living/carbon/human/species_types/ipc.dm | 23 + .../mob/living/silicon/robot/robot_modules.dm | 8 +- .../projectiles/guns/ballistic/flechette.dm | 4 +- .../projectiles/guns/ballistic/handguns.dm | 36 +- .../projectiles/guns/ballistic/magweapon.dm | 52 +- .../projectiles/guns/ballistic/rifles.dm | 20 +- .../projectiles/guns/ballistic/spinfusor.dm | 8 +- .../projectiles/guns/energy/energy_gun.dm | 8 +- .../modules/projectiles/guns/energy/laser.dm | 2 +- .../icons}/mob/citadel/glasses.dmi | Bin .../icons}/mob/citadel/guns_lefthand.dmi | Bin .../icons}/mob/citadel/guns_righthand.dmi | Bin .../icons}/mob/citadel/head.dmi | Bin .../icons}/mob/citadel/masks.dmi | Bin .../icons}/mob/citadel/neck.dmi | Bin .../icons}/mob/citadel/shoes.dmi | Bin .../icons}/mob/citadel/suit.dmi | Bin .../icons}/mob/citadel/uniforms.dmi | Bin .../icons}/mob/citadel_refs/borg HUDs.dmi | Bin .../mob/citadel_refs/cit_tail_reference.dmi | Bin .../icons}/mob/citadel_refs/cit_wings.dmi | Bin .../mob/citadel_refs/dogborg animations.dmi | Bin .../citadel_refs/furry_parts_greyscale.dmi | Bin .../mob/citadel_refs/furryrace_references.dmi | Bin .../mob/citadel_refs/furrytail_references.dmi | Bin .../mob/citadel_refs/snowflake_parts.dmi | Bin .../taur_referencesVOREbellies.dmi | Bin .../icons}/mob/citadel_refs/widerobot_vr.dmi | Bin .../icons}/mob/mam_body_markings.dmi | Bin .../icons}/mob/mam_bodyparts.dmi | Bin .../icons}/mob/mam_taur.dmi | Bin .../icons/mob/mutant_bodyparts.dmi | Bin 0 -> 29990 bytes .../icons}/mob/werenerd.dmi | Bin .../icons}/mob/werenerdleap.dmi | Bin .../icons}/mob/widerobot.dmi | Bin .../icons}/mob/xeno_parts_greyscale.dmi | Bin .../icons}/obj/VGProjectile.dmi | Bin .../icons}/obj/clothing/cit_clothes.dmi | Bin .../icons}/obj/clothing/cit_hats.dmi | Bin .../icons/obj/clothing/turtlenecks.dmi | Bin 307 -> 1130 bytes .../icons}/obj/clothing/vg_clothes.dmi | Bin modular_citadel/icons/obj/food/food.dmi | Bin 0 -> 3363 bytes modular_citadel/icons/obj/foods.dmi | Bin 0 -> 898 bytes .../icons}/obj/guns/VGguns.dmi | Bin .../icons}/obj/guns/cit_guns.dmi | Bin modular_citadel/sound/voice/scream_cat.ogg | Bin 0 -> 11599 bytes modular_citadel/sound/voice/scream_f1.ogg | Bin 0 -> 7234 bytes modular_citadel/sound/voice/scream_f2.ogg | Bin 0 -> 11794 bytes modular_citadel/sound/voice/scream_f3.ogg | Bin 0 -> 5387 bytes modular_citadel/sound/voice/scream_lizard.ogg | Bin 0 -> 7472 bytes modular_citadel/sound/voice/scream_m.ogg | Bin 0 -> 17075 bytes modular_citadel/sound/voice/scream_m1.ogg | Bin 0 -> 9625 bytes modular_citadel/sound/voice/scream_m2.ogg | Bin 0 -> 13178 bytes modular_citadel/sound/voice/scream_monkey.ogg | Bin 0 -> 8382 bytes modular_citadel/sound/voice/scream_moth.ogg | Bin 0 -> 82001 bytes .../sound/voice/scream_silicon.ogg | Bin 0 -> 10953 bytes .../sound/voice/scream_skeleton.ogg | Bin 0 -> 14818 bytes modular_citadel/sound/voice/snap.ogg | Bin 0 -> 9372 bytes modular_citadel/sound/voice/snap2.ogg | Bin 0 -> 13617 bytes modular_citadel/sound/voice/snap3.ogg | Bin 0 -> 18541 bytes tgstation.dme | 6 +- 91 files changed, 1477 insertions(+), 1102 deletions(-) delete mode 100644 icons/obj/clothing/turtlenecks.dmi create mode 100644 modular_citadel/code/game/objects/items/meat.dm rename code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm => modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm (80%) rename {code => modular_citadel/code}/modules/mob/living/carbon/human/species_types/furrypeople.dm (88%) create mode 100644 modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm rename {icons => modular_citadel/icons}/mob/citadel/glasses.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/guns_lefthand.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/guns_righthand.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/head.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/masks.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/neck.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/shoes.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/suit.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel/uniforms.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/borg HUDs.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/cit_tail_reference.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/cit_wings.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/dogborg animations.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/furry_parts_greyscale.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/furryrace_references.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/furrytail_references.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/snowflake_parts.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/taur_referencesVOREbellies.dmi (100%) rename {icons => modular_citadel/icons}/mob/citadel_refs/widerobot_vr.dmi (100%) rename {icons => modular_citadel/icons}/mob/mam_body_markings.dmi (100%) rename {icons => modular_citadel/icons}/mob/mam_bodyparts.dmi (100%) rename {icons => modular_citadel/icons}/mob/mam_taur.dmi (100%) create mode 100644 modular_citadel/icons/mob/mutant_bodyparts.dmi rename {icons => modular_citadel/icons}/mob/werenerd.dmi (100%) rename {icons => modular_citadel/icons}/mob/werenerdleap.dmi (100%) rename {icons => modular_citadel/icons}/mob/widerobot.dmi (100%) rename {icons => modular_citadel/icons}/mob/xeno_parts_greyscale.dmi (100%) rename {icons => modular_citadel/icons}/obj/VGProjectile.dmi (100%) rename {icons => modular_citadel/icons}/obj/clothing/cit_clothes.dmi (100%) rename {icons => modular_citadel/icons}/obj/clothing/cit_hats.dmi (100%) rename {icons => modular_citadel/icons}/obj/clothing/vg_clothes.dmi (100%) create mode 100644 modular_citadel/icons/obj/food/food.dmi create mode 100644 modular_citadel/icons/obj/foods.dmi rename {icons => modular_citadel/icons}/obj/guns/VGguns.dmi (100%) rename {icons => modular_citadel/icons}/obj/guns/cit_guns.dmi (100%) create mode 100644 modular_citadel/sound/voice/scream_cat.ogg create mode 100644 modular_citadel/sound/voice/scream_f1.ogg create mode 100644 modular_citadel/sound/voice/scream_f2.ogg create mode 100644 modular_citadel/sound/voice/scream_f3.ogg create mode 100644 modular_citadel/sound/voice/scream_lizard.ogg create mode 100644 modular_citadel/sound/voice/scream_m.ogg create mode 100644 modular_citadel/sound/voice/scream_m1.ogg create mode 100644 modular_citadel/sound/voice/scream_m2.ogg create mode 100644 modular_citadel/sound/voice/scream_monkey.ogg create mode 100644 modular_citadel/sound/voice/scream_moth.ogg create mode 100644 modular_citadel/sound/voice/scream_silicon.ogg create mode 100644 modular_citadel/sound/voice/scream_skeleton.ogg create mode 100644 modular_citadel/sound/voice/snap.ogg create mode 100644 modular_citadel/sound/voice/snap2.ogg create mode 100644 modular_citadel/sound/voice/snap3.ogg diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index f4772fa464..8d1c01fdfa 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -50,6 +50,8 @@ GLOBAL_LIST_EMPTY(xeno_head_list) GLOBAL_LIST_EMPTY(xeno_tail_list) GLOBAL_LIST_EMPTY(xeno_dorsal_list) + //IPC species +GLOBAL_LIST_EMPTY(ipc_screens_list) //Genitals and Arousal Lists GLOBAL_LIST_EMPTY(cock_shapes_list)//global_lists.dm for the list initializations //Now also _DATASTRUCTURES globals.dm diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index d2b8ad7d9f..338e289508 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -81,6 +81,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list) if(!GLOB.breasts_shapes_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list) + if(!GLOB.ipc_screens_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/screen, GLOB.ipc_screens_list) // if(ishuman(src)) // var/mob/living/carbon/human/H = src /* if(H.gender == MALE) Fuck if I know how to fix this. @@ -114,13 +116,13 @@ "caps" = pick(GLOB.caps_list), "moth_wings" = pick(GLOB.moth_wings_list), "taur" = "None", - "mam_body_markings" = "None", - "mam_ears" = "None", - "mam_tail" = "None", + "mam_body_markings" = "wolf", + "mam_ears" = "wolf", + "mam_tail" = "wolf", "mam_tail_animated" = "None", - "xenodorsal" = "None", - "xenohead" = "None", - "xenotail" = "None", + "xenodorsal" = "standard", + "xenohead" = "standard", + "xenotail" = "standard", "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, @@ -166,6 +168,7 @@ "womb_cum_mult" = CUM_RATE_MULT, "womb_efficiency" = CUM_EFFICIENCY, "womb_fluid" = "femcum", + "ipc_screen" = "Sunburst", "flavor_text" = "")) /proc/random_hair_style(gender) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e739e7ea86..cddf64b6db 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1,5 +1,5 @@ /* CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! *\ - | THIS FILE CONTAINS A SHITTON OF | + | THIS FILE CONTAINS HOOKS FOR FOR | | CHANGES SPECIFIC TO CITADEL. IF | | YOU'RE FIXING A MERGE CONFLICT | | HERE, PLEASE ASK FOR REVIEW FROM | @@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) //doohickeys for savefiles var/path var/default_slot = 1 //Holder so it doesn't default to slot 1, rather the last one used - var/max_save_slots = 10 + var/max_save_slots = 3 //non-preference stuff var/muted = 0 @@ -75,73 +75,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/skin_tone = "caucasian1" //Skin color var/eye_color = "000" //Eye color var/datum/species/pref_species = new /datum/species/human() //Mutant race - var/list/features = list("mcolor" = "FFF", - "tail_lizard" = "Smooth", - "tail_human" = "None", - "snout" = "Round", - "horns" = "None", - "ears" = "None", - "wings" = "None", - "frills" = "None", - "spines" = "None", - "body_markings" = "None", - "legs" = "Normal Legs", - "moth_wings" = "Plain", - "mcolor2" = "FFF", - "mcolor3" = "FFF", - "mam_body_markings" = "None", - "mam_ears" = "None", - "mam_tail" = "None", - "mam_tail_animated" = "None", - "xenodorsal" = "None", - "xenohead" = "None", - "xenotail" = "None", - "taur" = "None", - "exhibitionist" = FALSE, - "genitals_use_skintone" = FALSE, - "has_cock" = FALSE, - "cock_shape" = "Human", - "cock_length" = 6, - "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, - "cock_color" = "fff", - "has_sheath" = FALSE, - "sheath_color" = "fff", - "has_balls" = FALSE, - "balls_internal" = FALSE, - "balls_color" = "fff", - "balls_amount" = 2, - "balls_sack_size" = BALLS_SACK_SIZE_DEF, - "balls_size" = BALLS_SIZE_DEF, - "balls_cum_rate" = CUM_RATE, - "balls_cum_mult" = CUM_RATE_MULT, - "balls_efficiency" = CUM_EFFICIENCY, - "balls_fluid" = "semen", - "has_ovi" = FALSE, - "ovi_shape" = "knotted", - "ovi_length" = 6, - "ovi_color" = "fff", - "has_eggsack" = FALSE, - "eggsack_internal" = TRUE, - "eggsack_color" = "fff", - "eggsack_size" = BALLS_SACK_SIZE_DEF, - "eggsack_egg_color" = "fff", - "eggsack_egg_size" = EGG_GIRTH_DEF, - "has_breasts" = FALSE, - "breasts_color" = "fff", - "breasts_size" = "C", - "breasts_shape" = "Pair", - "breasts_fluid" = "milk", - "has_vag" = FALSE, - "vag_shape" = "Human", - "vag_color" = "fff", - "vag_clits" = 1, - "vag_clit_diam" = 0.25, - "has_womb" = FALSE, - "womb_cum_rate" = CUM_RATE, - "womb_cum_mult" = CUM_RATE_MULT, - "womb_efficiency" = CUM_EFFICIENCY, - "womb_fluid" = "femcum", - "flavor_text" = "") + var/list/features = list("mcolor" = "FFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain") var/list/custom_names = list("human", "clown", "mime", "ai", "cyborg", "religion", "deity") var/prefered_security_department = SEC_DEPT_RANDOM @@ -172,7 +106,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) // Want randomjob if preferences already filled - Donkie var/joblessrole = BERANDOMJOB //defaults to 1 for fewer assistants - // 0 = character settings, 1 = game preferences, 2 = character appearance + // 0 = character settings, 1 = game preferences var/current_tab = 0 // OOC Metadata: @@ -193,7 +127,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/action_buttons_screen_locs = list() - /datum/preferences/New(client/C) parent = C custom_names["human"] = random_unique_name() @@ -223,16 +156,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/ShowChoices(mob/user) if(!user || !user.client) return - if(current_tab == 2) - update_preview_icon(nude=TRUE) - else - update_preview_icon(nude=FALSE) + update_preview_icon() user << browse_rsc(preview_icon, "previewicon.png") var/dat = "
" - dat += "Character Settings" - dat += "Character Appearance" - dat += "Loadout" + dat += "Character Settings " dat += "Game Preferences" if(!path) @@ -275,8 +203,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Gender: [gender == MALE ? "Male" : "Female"]
" dat += "Age: [age]
" - dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" - dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" dat += "Special Names:
" dat += "Backup Human Name: [custom_names["human"]] " @@ -295,11 +221,175 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "" - dat += "
" + dat += "

Body

" + dat += "Random Body " + dat += "Always Random Body: [be_random_body ? "Yes" : "No"]
" + + dat += "" + if(pref_species.use_skintones) + + dat += "" + + if(HAIR in pref_species.species_traits) + + dat += "" + + if((EYECOLOR in pref_species.species_traits) && !(NOEYES in pref_species.species_traits)) + + dat += "" + + + if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits)) + + dat += "" + + if("tail_lizard" in pref_species.mutant_bodyparts) + dat += "" + + if("snout" in pref_species.mutant_bodyparts) + dat += "" + + if("horns" in pref_species.mutant_bodyparts) + dat += "" + + if("frills" in pref_species.mutant_bodyparts) + dat += "" + + if("spines" in pref_species.mutant_bodyparts) + dat += "" + + if("body_markings" in pref_species.mutant_bodyparts) + dat += "" + if("legs" in pref_species.mutant_bodyparts) + dat += "" + if("moth_wings" in pref_species.mutant_bodyparts) + + dat += "" + + dat = add_citadel_choices(dat) + + if(CONFIG_GET(flag/join_with_mutant_humans)) + + if("tail_human" in pref_species.mutant_bodyparts) + dat += "" + + if("ears" in pref_species.mutant_bodyparts) + dat += "" + + if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) + dat += "" + dat += "
" + + dat += "Species:
[pref_species.name]
" + + dat += "Underwear:
[underwear]
" + dat += "Undershirt:
[undershirt]
" + dat += "Socks:
[socks]
" dat += "Backpack:
[backbag]
" dat += "Uplink Spawn Location:
[uplink_spawn_loc]
" + + dat += "

Skin Tone

" + + dat += "[skin_tone]
" + + dat += "
" + + dat += "

Hair Style

" + + dat += "[hair_style]
" + dat += "< >
" + dat += "    Change
" + + + dat += "
" + + dat += "

Facial Hair Style

" + + dat += "[facial_hair_style]
" + dat += "< >
" + dat += "    Change
" + + dat += "
" + + dat += "

Eye Color

" + + dat += "    Change
" + + dat += "
" + + dat += "

Mutant Color

" + + dat += "    Change
" + + dat += "
" + + dat += "

Tail

" + + dat += "[features["tail_lizard"]]
" + + dat += "
" + + dat += "

Snout

" + + dat += "[features["snout"]]
" + + dat += "
" + + dat += "

Horns

" + + dat += "[features["horns"]]
" + + dat += "
" + + dat += "

Frills

" + + dat += "[features["frills"]]
" + + dat += "
" + + dat += "

Spines

" + + dat += "[features["spines"]]
" + + dat += "
" + + dat += "

Body Markings

" + + dat += "[features["body_markings"]]
" + + dat += "
" + + dat += "

Legs

" + + dat += "[features["legs"]]
" + + dat += "
" + + dat += "

Moth wings

" + + dat += "[features["moth_wings"]]
" + + dat += "
" + + dat += "

Tail

" + + dat += "[features["tail_human"]]
" + + dat += "
" + + dat += "

Ears

" + + dat += "[features["ears"]]
" + + dat += "
" + + dat += "

Wings

" + + dat += "[features["wings"]]
" + + dat += "
" @@ -316,7 +406,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Window Flashing: [(windowflashing) ? "Yes" : "No"]
" dat += "Play admin midis: [(toggles & SOUND_MIDI) ? "Yes" : "No"]
" dat += "Play lobby music: [(toggles & SOUND_LOBBY) ? "Yes" : "No"]
" - dat += "Allow MediHound sleeper: [(toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" dat += "Ghost ears: [(chat_toggles & CHAT_GHOSTEARS) ? "All Speech" : "Nearest Creatures"]
" dat += "Ghost sight: [(chat_toggles & CHAT_GHOSTSIGHT) ? "All Emotes" : "Nearest Creatures"]
" dat += "Ghost whispers: [(chat_toggles & CHAT_GHOSTWHISPER) ? "All Speech" : "Nearest Creatures"]
" @@ -324,9 +413,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Ghost pda: [(chat_toggles & CHAT_GHOSTPDA) ? "All Messages" : "Nearest Creatures"]
" dat += "Pull requests: [(chat_toggles & CHAT_PULLR) ? "Yes" : "No"]
" dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Yes" : "No"]
" - //VORE SOUNDS - dat += "Hear Vore Sounds: [(toggles & EATING_NOISES) ? "Yes" : "No"]
" - dat += "Hear Vore Digestion Sounds: [(toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" if(CONFIG_GET(flag/allow_metadata)) dat += "OOC Notes: Edit
" @@ -398,15 +484,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "High" dat += "
" - dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
" - - dat += "Auto stand: [autostand ? "Enabled" : "Disabled"]
" - - dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
" - - if (!user.client.prefs.screenshake==0) - dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" - dat += "" dat += "

Special Role Settings

" @@ -433,187 +510,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" - //Character Appearance - if(2) - dat += "" - */ - - dat += "
" - dat += "

" - dat += "Set Flavor Text
" - if(lentext(features["flavor_text"]) <= 40) - if(!lentext(features["flavor_text"])) - dat += "\[...\]" - else - dat += "[features["flavor_text"]]" - else - dat += "[TextPreview(features["flavor_text"])]...
" - dat += "

Body

" - dat += "Gender: [gender == MALE ? "Male" : "Female"]
" - dat += "Species:[pref_species.id]
" - dat += "Random Body
" - dat += "Always Random Body: [be_random_body ? "Yes" : "No"]
" - if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits)) - dat += "Primary Color:     Change
" - dat += "Secondary Color:     Change
" - dat += "Tertiary Color:     Change
" - if(pref_species.use_skintones) - dat += "Skin Tone: [skin_tone]
" - dat += "Genitals Use Skintone:[features["genitals_use_skintone"] == TRUE ? "Enabled" : "Disabled"]
" + else + dat = citadel_dat_replace(current_tab) - if(HAIR in pref_species.species_traits) - dat += "Hair Style: [hair_style]
" - dat += "Hair Color:     Change
" - dat += "Facial Hair Style: [facial_hair_style]
" - dat += "Facial Hair Color:     Change
" - if(EYECOLOR in pref_species.species_traits) - dat += "Eye Color:     Change
" - if("tail_lizard" in pref_species.mutant_bodyparts) - dat += "Tail: [features["tail_lizard"]]
" - else if("mam_tail" in pref_species.mutant_bodyparts) - dat += "Tail: [features["mam_tail"]]
" - else if("tail_human" in pref_species.mutant_bodyparts) - dat += "Tail: [features["tail_human"]]
" - if("snout" in pref_species.mutant_bodyparts) - dat += "Snout: [features["snout"]]
" - if("horns" in pref_species.mutant_bodyparts) - dat += "Horns: [features["horns"]]
" - if("frills" in pref_species.mutant_bodyparts) - dat += "Frills: [features["frills"]]
" - if("spines" in pref_species.mutant_bodyparts) - dat += "Spines: [features["spines"]]
" - if("body_markings" in pref_species.mutant_bodyparts) - dat += "Body Markings: [features["body_markings"]]
" - else if("mam_body_markings" in pref_species.mutant_bodyparts) - dat += "Body Markings: [features["mam_body_markings"]]
" - if("mam_ears" in pref_species.mutant_bodyparts) - dat += "Ears: [features["mam_ears"]]
" - else if("ears" in pref_species.mutant_bodyparts) - dat += "Ears: [features["ears"]]
" - if("legs" in pref_species.mutant_bodyparts) - dat += "Legs: [features["legs"]]
" - if("moth_wings" in pref_species.mutant_bodyparts) - dat += "Moth wings[features["moth_wings"]]
" - - if("taur" in pref_species.mutant_bodyparts) - dat += "Taur: [features["taur"]]
" - if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) - dat += "Wings: [features["wings"]]
" - if("xenohead" in pref_species.mutant_bodyparts) - dat += "Caste: [features["xenohead"]]
" - if("xenotail" in pref_species.mutant_bodyparts) - dat += "Tail: [features["xenotail"]]
" - if("xenodorsal" in pref_species.mutant_bodyparts) - dat += "Dorsal Tubes: [features["xenodorsal"]]
" - - dat += "
" - - - dat += "

Clothing & Equipment

" -//underwear will be refactored later so it fits in with other wearable equipment and isn't just an overlay -// dat += "Underwear:[underwear]
" -// dat += "Undershirt:[undershirt]
" -// dat += "Socks:[socks]
" - dat += "Backpack:[backbag]
" - dat += "Uplink Location:[uplink_spawn_loc]
" - - dat += "

Genitals

" - if(NOGENITALS in pref_species.species_traits) - dat += "Your species ([pref_species.name]) does not support genitals!
" - else - dat += "Has Penis:[features["has_cock"] == TRUE ? "Yes" : "No"]
" - if(features["has_cock"] == TRUE) - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - dat += "Penis Color:   (Skin tone overriding)
" - else - dat += "Penis Color:    Change
" -// dat += "
" - dat += "Penis Shape: [features["cock_shape"]]
" - dat += "Penis Length: [features["cock_length"]] inch(es)
" - dat += "Has Testicles:[features["has_balls"] == TRUE ? "Yes" : "No"]
" - if(features["has_balls"] == TRUE) - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - dat += "Testicles Color:   (Skin tone overriding)
" - else - dat += "Testicles Color:    Change
" - dat += "Has Vagina:[features["has_vag"] == TRUE ? "Yes" : "No"]
" - if(features["has_vag"]) - dat += "Vagina Type: [features["vag_shape"]]
" - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - dat += "Vagina Color:   (Skin tone overriding)
" - else - dat += "Vagina Color:    Change
" - dat += "Has Womb:[features["has_womb"] == TRUE ? "Yes" : "No"]
" - dat += "Has Breasts:[features["has_breasts"] == TRUE ? "Yes" : "No"]
" - if(features["has_breasts"]) - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - dat += "Color:   (Skin tone overriding)
" - else - dat += "Color:    Change
" - dat += "Cup Size:[features["breasts_size"]]
" - dat += "Breast Shape:[features["breasts_shape"]]
" - /* - dat += "

Ovipositor

" - dat += "Has Ovipositor:[features["has_ovi"] == TRUE ? "Yes" : "No"]" - if(features["has_ovi"]) - dat += "Ovi Color:    Change" - dat += "

Eggsack

" - dat += "Has Eggsack:[features["has_eggsack"] == TRUE ? "Yes" : "No"]
" - if(features["has_eggsack"] == TRUE) - dat += "Color:    Change" - dat += "Egg Color:    Change" - dat += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" - dat += "
" - if(3) - if(!gear_tab) - gear_tab = GLOB.loadout_items[1] - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - for(var/j in GLOB.loadout_items[gear_tab]) - var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] - var/donoritem - if(gear.ckeywhitelist && gear.ckeywhitelist.len) - donoritem = TRUE - if(!(user.ckey in gear.ckeywhitelist)) - continue - var/class_link = "" - if(gear.type in chosen_gear) - class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=0'" - else if(gear_points <= 0) - class_link = "style='white-space:normal;' class='linkOff'" - else if(donoritem) - class_link = "style='white-space:normal;background:#ebc42e;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" - else - class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" - dat += "" - dat += "" - dat += "
[gear_points] loadout points remaining. \[Clear Loadout\]
You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
" - var/firstcat = TRUE - for(var/i in GLOB.loadout_items) - if(firstcat) - firstcat = FALSE - else - dat += " |" - if(i == gear_tab) - dat += " [i] " - else - dat += " [i] " - dat += "

[gear_tab]

NameCostRestrictionsDescription
[j][gear.cost]" - if(islist(gear.restricted_roles)) - if(gear.restricted_roles.len) - dat += "" - dat += gear.restricted_roles.Join(";") - dat += "" - dat += "[gear.description]
" dat += "
" if(!IsGuestKey(user.key)) @@ -1123,12 +1022,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_age) age = max(min( round(text2num(new_age)), AGE_MAX),AGE_MIN) - if("flavor_text") - var/msg = stripped_multiline_input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(features["flavor_text"]), MAX_MESSAGE_LEN*2, TRUE) as message - if(msg != null) - msg = copytext(msg, 1, MAX_MESSAGE_LEN*2) - features["flavor_text"] = msg - if("metadata") var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null if(new_metadata) @@ -1216,7 +1109,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_eyes) eye_color = sanitize_hexcolor(new_eyes) - if("species") +/* if("species") var/result = input(user, "Select a species", "Species Selection") as null|anything in GLOB.roundstart_races @@ -1225,12 +1118,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) pref_species = new newtype() //Now that we changed our species, we must verify that the mutant colour is still allowed. var/temp_hsv = RGBtoHSV(features["mcolor"]) - if(features["mcolor"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3])) + if(features["mcolor"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#7F7F7F")[3])) features["mcolor"] = pref_species.default_color - if(features["mcolor2"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3])) - features["mcolor2"] = pref_species.default_color - if(features["mcolor3"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3])) - features["mcolor3"] = pref_species.default_color if("mutant_color") var/new_mutantcolor = input(user, "Choose your character's alien/mutant color:", "Character Preference","#"+features["mcolor"]) as color|null @@ -1238,86 +1127,22 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor"] = sanitize_hexcolor(new_mutantcolor) else to_chat(user, "Invalid color. Your color is not bright enough.") - if("mutant_color2") - var/new_mutantcolor = input(user, "Choose your character's secondary alien/mutant color:", "Character Preference") as color|null - if(new_mutantcolor) - var/temp_hsv = RGBtoHSV(new_mutantcolor) - if(new_mutantcolor == "#000000") - features["mcolor2"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin - features["mcolor2"] = sanitize_hexcolor(new_mutantcolor) - else - to_chat(user, "Invalid color. Your color is not bright enough.") - - if("mutant_color3") - var/new_mutantcolor = input(user, "Choose your character's tertiary alien/mutant color:", "Character Preference") as color|null - if(new_mutantcolor) - var/temp_hsv = RGBtoHSV(new_mutantcolor) - if(new_mutantcolor == "#000000") - features["mcolor3"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin - features["mcolor3"] = sanitize_hexcolor(new_mutantcolor) - else - to_chat(user, "Invalid color. Your color is not bright enough.") - if("tail_lizard") var/new_tail new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.tails_list_lizard if(new_tail) features["tail_lizard"] = new_tail - if(new_tail != "None") - features["taur"] = "None" if("tail_human") - var/list/snowflake_tails_list = list("Normal" = null) - for(var/path in GLOB.tails_list_human) - var/datum/sprite_accessory/tails/human/instance = GLOB.tails_list_human[path] - if(istype(instance, /datum/sprite_accessory)) - var/datum/sprite_accessory/S = instance - if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) - snowflake_tails_list[S.name] = path var/new_tail - new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in snowflake_tails_list + new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.tails_list_human if(new_tail) - features["tail_human"] = new_tail - if(new_tail != "None") - features["taur"] = "None" - - if("mam_tail") - var/list/snowflake_tails_list = list("Normal" = null) - for(var/path in GLOB.mam_tails_list) - var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[path] - if(istype(instance, /datum/sprite_accessory)) - var/datum/sprite_accessory/S = instance - if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) - snowflake_tails_list[S.name] = path - var/new_tail - new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in snowflake_tails_list - if(new_tail) - features["mam_tail"] = new_tail - if(new_tail != "None") - features["taur"] = "None" - - if("taur") - var/list/snowflake_taur_list = list("Normal" = null) - for(var/path in GLOB.taur_list) - var/datum/sprite_accessory/taur/instance = GLOB.taur_list[path] - if(istype(instance, /datum/sprite_accessory)) - var/datum/sprite_accessory/S = instance - if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) - snowflake_taur_list[S.name] = path - var/new_taur - new_taur = input(user, "Choose your character's tauric body:", "Character Preference") as null|anything in snowflake_taur_list - if(new_taur) - features["taur"] = new_taur - if(new_taur != "None") - features["mam_tail"] = "None" - features["xenotail"] = "None" + features["tail_human"] = new_tail */ if("snout") var/new_snout @@ -1325,37 +1150,17 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_snout) features["snout"] = new_snout - if("mam_ears") - var/list/snowflake_ears_list = list("Normal" = null) - for(var/path in GLOB.mam_ears_list) - var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[path] - if(istype(instance, /datum/sprite_accessory)) - var/datum/sprite_accessory/S = instance - if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) - snowflake_ears_list[S.name] = path - var/new_ears - new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in snowflake_ears_list - if(new_ears) - features["mam_ears"] = new_ears - if("horns") var/new_horns new_horns = input(user, "Choose your character's horns:", "Character Preference") as null|anything in GLOB.horns_list if(new_horns) features["horns"] = new_horns - if("ears") - var/list/snowflake_ears_list = list("Normal" = null) - for(var/path in GLOB.ears_list) - var/datum/sprite_accessory/ears/instance = GLOB.ears_list[path] - if(istype(instance, /datum/sprite_accessory)) - var/datum/sprite_accessory/S = instance - if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) - snowflake_ears_list[S.name] = path +/* if("ears") var/new_ears - new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in snowflake_ears_list + new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in GLOB.ears_list if(new_ears) - features["ears"] = new_ears + features["ears"] = new_ears */ if("wings") var/new_wings @@ -1363,12 +1168,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_wings) features["wings"] = new_wings - if("moth_wings") - var/new_moth_wings - new_moth_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.moth_wings_list - if(new_moth_wings) - features["moth_wings"] = new_moth_wings - if("frills") var/new_frills new_frills = input(user, "Choose your character's frills:", "Character Preference") as null|anything in GLOB.frills_list @@ -1387,44 +1186,18 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_body_markings) features["body_markings"] = new_body_markings - if("mam_body_markings") - var/list/snowflake_markings_list = list("Normal" = null) - for(var/path in GLOB.mam_body_markings_list) - var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[path] - if(istype(instance, /datum/sprite_accessory)) - var/datum/sprite_accessory/S = instance - if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) - snowflake_markings_list[S.name] = path - var/new_mam_body_markings - new_mam_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in snowflake_markings_list - if(new_mam_body_markings) - features["mam_body_markings"] = new_mam_body_markings - - //Xeno Bodyparts - if("xenohead")//Head or caste type - var/new_head - new_head = input(user, "Choose your character's caste:", "Character Preference") as null|anything in GLOB.xeno_head_list - if(new_head) - features["xenohead"] = new_head - - if("xenotail")//Currently one one type, more maybe later if someone sprites them. Might include animated variants in the future. - var/new_tail - new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.xeno_tail_list - if(new_tail) - features["xenotail"] = new_tail - - if("xenodorsal") - var/new_dors - new_dors = input(user, "Choose your character's dorsal tube type:", "Character Preference") as null|anything in GLOB.xeno_dorsal_list - if(new_dors) - features["xenodorsal"] = new_dors - if("legs") var/new_legs new_legs = input(user, "Choose your character's legs:", "Character Preference") as null|anything in GLOB.legs_list if(new_legs) features["legs"] = new_legs + if("moth_wings") + var/new_moth_wings + new_moth_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.moth_wings_list + if(new_moth_wings) + features["moth_wings"] = new_moth_wings + if("s_tone") var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones if(new_s_tone) @@ -1533,231 +1306,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(pickedPDAColor) pda_color = pickedPDAColor - //citadel code - if("cock_color") - var/new_cockcolor = input(user, "Penis color:", "Character Preference") as color|null - if(new_cockcolor) - var/temp_hsv = RGBtoHSV(new_cockcolor) - if(new_cockcolor == "#000000") - features["cock_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) - features["cock_color"] = sanitize_hexcolor(new_cockcolor) - else - user << "Invalid color. Your color is not bright enough." - - if("cock_length") - var/new_length = input(user, "Penis length in inches:\n([COCK_SIZE_MIN]-[COCK_SIZE_MAX])", "Character Preference") as num|null - if(new_length) - features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN) - - if("cock_shape") - var/new_shape - new_shape = input(user, "Penis shape:", "Character Preference") as null|anything in GLOB.cock_shapes_list - if(new_shape) - features["cock_shape"] = new_shape - - if("balls_color") - var/new_ballscolor = input(user, "Testicle Color:", "Character Preference") as color|null - if(new_ballscolor) - var/temp_hsv = RGBtoHSV(new_ballscolor) - if(new_ballscolor == "#000000") - features["balls_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) - features["balls_color"] = sanitize_hexcolor(new_ballscolor) - else - user << "Invalid color. Your color is not bright enough." - - if("egg_size") - var/new_size - var/list/egg_sizes = list(1,2,3) - new_size = input(user, "Egg Diameter(inches):", "Egg Size") as null|anything in egg_sizes - if(new_size) - features["eggsack_egg_size"] = new_size - - if("egg_color") - var/new_egg_color = input(user, "Egg Color:", "Character Preference") as color|null - if(new_egg_color) - var/temp_hsv = RGBtoHSV(new_egg_color) - if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) - features["eggsack_egg_color"] = sanitize_hexcolor(new_egg_color) - else - user << "Invalid color. Your color is not bright enough." - if("breasts_size") - var/new_size - new_size = input(user, "Breast Size", "Character Preference") as null|anything in GLOB.breasts_size_list - if(new_size) - features["breasts_size"] = new_size - - if("breasts_shape") - var/new_shape - new_shape = input(user, "Breast Shape", "Character Preference") as null|anything in GLOB.breasts_shapes_list - if(new_shape) - features["breasts_shape"] = new_shape - - if("breasts_color") - var/new_breasts_color = input(user, "Breast Color:", "Character Preference") as color|null - if(new_breasts_color) - var/temp_hsv = RGBtoHSV(new_breasts_color) - if(new_breasts_color == "#000000") - features["breasts_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) - features["breasts_color"] = sanitize_hexcolor(new_breasts_color) - else - user << "Invalid color. Your color is not bright enough." - - if("vag_shape") - var/new_shape - new_shape = input(user, "Vagina Type", "Character Preference") as null|anything in GLOB.vagina_shapes_list - if(new_shape) - features["vag_shape"] = new_shape - if("vag_color") - var/new_vagcolor = input(user, "Vagina color:", "Character Preference") as color|null - if(new_vagcolor) - var/temp_hsv = RGBtoHSV(new_vagcolor) - if(new_vagcolor == "#000000") - features["vag_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) - features["vag_color"] = sanitize_hexcolor(new_vagcolor) - else - user << "Invalid color. Your color is not bright enough." - - - else switch(href_list["preference"]) - - //citadel code - if("genital_colour") - switch(features["genitals_use_skintone"]) - if(TRUE) - features["genitals_use_skintone"] = FALSE - if(FALSE) - features["genitals_use_skintone"] = TRUE - else - features["genitals_use_skintone"] = FALSE - if("arousable") - switch(arousable) - if(TRUE) - arousable = FALSE - if(FALSE) - arousable = TRUE - else//failsafe - arousable = FALSE - if("has_cock") - switch(features["has_cock"]) - if(TRUE) - features["has_cock"] = FALSE - if(FALSE) - features["has_cock"] = TRUE - features["has_ovi"] = FALSE - features["has_eggsack"] = FALSE - else - features["has_cock"] = FALSE - features["has_ovi"] = FALSE - if("has_balls") - switch(features["has_balls"]) - if(TRUE) - features["has_balls"] = FALSE - if(FALSE) - features["has_balls"] = TRUE - features["has_eggsack"] = FALSE - else - features["has_balls"] = FALSE - features["has_eggsack"] = FALSE - if("has_ovi") - switch(features["has_ovi"]) - if(TRUE) - features["has_ovi"] = FALSE - if(FALSE) - features["has_ovi"] = TRUE - features["has_cock"] = FALSE - features["has_balls"] = FALSE - else - features["has_ovi"] = FALSE - features["has_cock"] = FALSE - - if("has_eggsack") - switch(features["has_eggsack"]) - if(TRUE) - features["has_eggsack"] = FALSE - if(FALSE) - features["has_eggsack"] = TRUE - features["has_balls"] = FALSE - else - features["has_eggsack"] = FALSE - features["has_balls"] = FALSE - if("balls_internal") - switch(features["balls_internal"]) - if(TRUE) - features["balls_internal"] = FALSE - if(FALSE) - features["balls_internal"] = TRUE - features["eggsack_internal"] = FALSE - else - features["balls_internal"] = FALSE - features["eggsack_internal"] = FALSE - - if("eggsack_internal") - switch(features["eggsack_internal"]) - if(TRUE) - features["eggsack_internal"] = FALSE - if(FALSE) - features["eggsack_internal"] = TRUE - features["balls_internal"] = FALSE - else - features["eggsack_internal"] = FALSE - features["balls_internal"] = FALSE - if("has_breasts") - switch(features["has_breasts"]) - if(TRUE) - features["has_breasts"] = FALSE - if(FALSE) - features["has_breasts"] = TRUE - else - features["has_breasts"] = FALSE - if("has_vag") - switch(features["has_vag"]) - if(TRUE) - features["has_vag"] = FALSE - if(FALSE) - features["has_vag"] = TRUE - else - features["has_vag"] = FALSE - if("has_womb") - switch(features["has_womb"]) - if(TRUE) - features["has_womb"] = FALSE - if(FALSE) - features["has_womb"] = TRUE - else - features["has_womb"] = FALSE - if("exhibitionist") - switch(features["exhibitionist"]) - if(TRUE) - features["exhibitionist"] = FALSE - if(FALSE) - features["exhibitionist"] = TRUE - else - features["exhibitionist"] = FALSE - if("widescreenpref") - widescreenpref = !widescreenpref - user.client.change_view(CONFIG_GET(string/default_view)) - if("autostand") - autostand = !autostand - if ("screenshake") - var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num - if (!isnull(desiredshake)) - screenshake = desiredshake - if("damagescreenshake") - switch(damagescreenshake) - if(0) - damagescreenshake = 1 - if(1) - damagescreenshake = 2 - if(2) - damagescreenshake = 0 - else - damagescreenshake = 1 if("publicity") if(unlock_content) toggles ^= MEMBER_PUBLIC @@ -1813,12 +1363,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) user.client.playtitlemusic() else user.stop_sound_channel(CHANNEL_LOBBYMUSIC) - // VORE SOUND TOGGLES - if("toggleeatingnoise") - toggles ^= EATING_NOISES - - if("toggledigestionnoise") - toggles ^= DIGESTION_NOISES if("ghost_ears") chat_toggles ^= CHAT_GHOSTEARS @@ -1838,9 +1382,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("pull_requests") chat_toggles ^= CHAT_PULLR - if("hound_sleeper") - toggles ^= MEDIHOUND_SLEEPER - if("allow_midround_antag") toggles ^= MIDROUND_ANTAG @@ -1875,35 +1416,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("tab") if (href_list["tab"]) current_tab = text2num(href_list["tab"]) - - if(href_list["preference"] == "gear") - if(href_list["clear_loadout"]) - LAZYCLEARLIST(chosen_gear) - gear_points = initial(gear_points) - save_preferences() - if(href_list["select_category"]) - for(var/i in GLOB.loadout_items) - if(i == href_list["select_category"]) - gear_tab = i - if(href_list["toggle_gear_path"]) - var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])] - if(!G) - return - var/toggle = text2num(href_list["toggle_gear"]) - if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear) - LAZYREMOVE(chosen_gear, G.type) - gear_points += initial(G.cost) - else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) - if(!is_loadout_slot_available(G.category)) - to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") - return - if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) - to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") - return - if(gear_points >= initial(G.cost)) - LAZYADD(chosen_gear, G.type) - gear_points -= initial(G.cost) - + process_citadel_link(user, href_list) ShowChoices(user) return 1 @@ -1957,13 +1470,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) save_character() character.set_species(chosen_species, icon_update=0) - //citadel code - character.give_genitals(TRUE) - character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially - character.canbearoused = arousable - if(icon_updates) character.update_body() character.update_hair() - character.update_body_parts() - character.update_genitals() + character.update_body_parts() \ No newline at end of file diff --git a/code/modules/clothing/glasses/vg_glasses.dm b/code/modules/clothing/glasses/vg_glasses.dm index 8cccfe9e08..58df3102ce 100644 --- a/code/modules/clothing/glasses/vg_glasses.dm +++ b/code/modules/clothing/glasses/vg_glasses.dm @@ -5,38 +5,38 @@ desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes, and the colored lenses let you see the world in purple." name = "purple sunglasses" icon_state = "sun_purple" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/glasses.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi' /obj/item/clothing/glasses/sunglasses/star name = "star-shaped sunglasses" desc = "Novelty sunglasses, both lenses are in the shape of a star." icon_state = "sun_star" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/glasses.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi' /obj/item/clothing/glasses/sunglasses/rockstar name = "red star-shaped sunglasses" desc = "Novelty sunglasses with a fancy silver frame and two red-tinted star-shaped lenses. You should probably stomp on them and get a pair of normal ones." icon_state = "sun_star_silver" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/glasses.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi' /obj/item/clothing/glasses/gglasses name = "Green Glasses" desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme." icon_state = "gglasses" item_state = "gglasses" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/glasses.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi' /obj/item/clothing/glasses/welding/superior name = "superior welding goggles" desc = "Welding goggles made from more expensive materials, strangely smells like potatoes. Allows for better vision than normal goggles.." icon_state = "rwelding-g" item_state = "rwelding-g" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/glasses.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi' actions_types = list(/datum/action/item_action/toggle) flash_protect = 2 tint = 1 diff --git a/code/modules/clothing/gloves/vg_gloves.dm b/code/modules/clothing/gloves/vg_gloves.dm index 2b20d478eb..6d7e775314 100644 --- a/code/modules/clothing/gloves/vg_gloves.dm +++ b/code/modules/clothing/gloves/vg_gloves.dm @@ -5,49 +5,49 @@ icon_state = "bmgloves" item_state = "bmgloves" item_color = "bmgloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' obj/item/clothing/gloves/bikergloves name = "Biker's Gloves" icon_state = "biker-gloves" item_state = "biker-gloves" item_color = "bikergloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/megagloves desc = "Uncomfortably bulky armored gloves." name = "DRN-001 Gloves" icon_state = "megagloves" item_state = "megagloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/protogloves desc = "Funcionally identical to the DRN-001 model's, but in red!" name = "Prototype Gloves" icon_state = "protogloves" item_state = "protogloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/megaxgloves desc = "An upgrade to the DRN-001's gauntlets, retains the uncomfortable armor, but comes with white gloves!" name = "Maverick Hunter gloves" icon_state = "megaxgloves" item_state = "megaxgloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/joegloves desc = "Large grey gloves, very similar to the Prototype's." name = "Sniper Gloves" icon_state = "joegloves" item_state = "joegloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/doomguy desc = "" name = "Doomguy's gloves" icon_state = "doom" item_state = "doom" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/anchor_arms name = "Anchor Arms" @@ -60,11 +60,11 @@ obj/item/clothing/gloves/bikergloves desc = "Utilizes a non-slip technology that allows you to never drop your precious bottles of vodka." icon_state = "nr_gloves" item_state = "nr_gloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/gloves/neorussian/fingerless name = "neo-Russian fingerless gloves" desc = "For these tense combat situations when you just have to pick your nose." icon_state = "nr_fgloves" item_state = "nr_fgloves" - icon = 'icons/obj/clothing/vg_clothes.dmi' \ No newline at end of file + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' \ No newline at end of file diff --git a/code/modules/clothing/head/cit_hats.dm b/code/modules/clothing/head/cit_hats.dm index 92d1a2224c..8cdfe807c8 100644 --- a/code/modules/clothing/head/cit_hats.dm +++ b/code/modules/clothing/head/cit_hats.dm @@ -1,7 +1,7 @@ /obj/item/clothing/head/hunter name = "hunter" desc = "A basic hat for hunting things." - icon = 'icons/obj/clothing/cit_hats.dmi' + icon = 'modular_citadel/icons/obj/clothing/cit_hats.dmi' icon_state = "hunter" item_state = "hunter_worn" - icon_override = 'icons/mob/citadel/head.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' diff --git a/code/modules/clothing/head/vg_hats.dm b/code/modules/clothing/head/vg_hats.dm index 1113d1b3fc..56844193c6 100644 --- a/code/modules/clothing/head/vg_hats.dm +++ b/code/modules/clothing/head/vg_hats.dm @@ -4,7 +4,7 @@ desc = "Judge, Jury, and Executioner." icon_state = "dredd-helmet" item_state = "dredd-helmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 50, acid = 50) cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT @@ -13,7 +13,7 @@ flags_1 = STOPSPRESSUREDMAGE_1 strip_delay = 80 dog_fashion = null - icon_override = 'icons/mob/citadel/head.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/helmet/aviatorhelmet name = "Aviator Helmet" @@ -21,16 +21,16 @@ armor = list(melee = 25, bullet = 0, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0) item_state = "aviator_helmet" icon_state = "aviator_helmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/helmet/biker name = "Biker's Helmet" desc = "This helmet should protect you from russians and masked vigilantes." armor = list(melee = 25, bullet = 15, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0) icon_state = "biker_helmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR /obj/item/clothing/head/helmet/richard @@ -38,8 +38,8 @@ desc = "Do you like hurting people?" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) icon_state = "richard" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR /obj/item/clothing/head/helmet/megahelmet @@ -47,8 +47,8 @@ desc = "The helmet of the DRN-001 model. A simple, sturdy blue helmet." icon_state = "megahelmet" item_state = "megahelmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' siemens_coefficient = 1 /obj/item/clothing/head/helmet/protohelmet @@ -56,8 +56,8 @@ desc = "Shiny red helmet with white accents and a built in shaded visor that does absolutely nothing, nothing but look rad as hell." icon_state = "protohelmet" item_state = "protohelmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' siemens_coefficient = 1 /obj/item/clothing/head/helmet/megaxhelmet @@ -65,8 +65,8 @@ desc = "Heavily armored upgrade to the DRN-001 model's helmet, now comes with a pointless red crystal thing!" icon_state = "megaxhelmet" item_state = "megaxhelmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/helmet/joehelmet name = "Sniper Helmet" @@ -74,8 +74,8 @@ icon_state = "joehelmet" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR item_state = "joehelmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/helmet/doomguy name = "Doomguy's helmet" @@ -83,8 +83,8 @@ icon_state = "doom" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR item_state = "doom" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' armor = list(melee = 50, bullet = 40, laser = 40,energy = 40, bomb = 5, bio = 0, rad = 0) /obj/item/clothing/head/helmet/neorussian @@ -92,8 +92,8 @@ desc = "This piece of equipment can double as a pillow, a bowl, an emergency toilet, and sometimes as a helmet." icon_state = "nr_helmet" item_state = "nr_helmet" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/stalhelm @@ -101,24 +101,24 @@ desc = "Ein Helm, um die Nazi-Interesse an fremden Raumstationen zu sichern." icon_state = "stalhelm" item_state = "stalhelm" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/panzer name = "Panzer Cap" desc = "Command any mech in style." icon_state = "panzercap" item_state = "panzercap" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/naziofficer name = "Officer Cap" desc = "Style is all that matters." icon_state = "officercap" item_state = "officercap" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/russobluecamohat @@ -126,31 +126,31 @@ desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food." icon_state = "russobluecamohat" item_state = "russobluecamohat" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/russofurhat name = "russian fur hat" desc = "Russian winter got you down? Maybe your enemy, but not you!" icon_state = "russofurhat" item_state = "russofurhat" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/squatter_hat name = "slav squatter hat" icon_state = "squatter_hat" item_state = "squatter_hat" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' desc = "Cyka blyat." - icon_override = 'icons/mob/citadel/head.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/snake name = "snake head" desc = "Reenact acts of violence against reptiles, or sneak into a swamp unnoticed." icon_state = "snakehead" item_state = "snakehead" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/mummy_rags name = "mummy rags" @@ -158,8 +158,8 @@ icon_state = "mummy" item_state = "mummy" item_color = "mummy" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS /obj/item/clothing/head/clownpiece @@ -167,24 +167,24 @@ desc = "A purple polka-dotted jester's hat with yellow pompons." icon_state = "clownpiece" item_state = "clownpiece" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/mitre name = "mitre" desc = "A funny hat worn by extremely boring people." icon_state = "mitre" item_state = "mitre" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/head/tinfoil name = "tinfoil hat" desc = "There's no evidence that the security staff is NOT out to get you." icon_state = "foilhat" item_state = "paper" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' siemens_coefficient = 2 /obj/item/clothing/head/celtic @@ -192,5 +192,5 @@ desc = "According to legend, Celtic kings would use crowns like this one to shield their subjects from harsh winters back on Earth." icon_state = "celtic_crown" item_state = "celtic_crown" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' diff --git a/code/modules/clothing/masks/vg_masks.dm b/code/modules/clothing/masks/vg_masks.dm index 70759bffca..712a023651 100644 --- a/code/modules/clothing/masks/vg_masks.dm +++ b/code/modules/clothing/masks/vg_masks.dm @@ -2,19 +2,19 @@ name = "purple clown wig and mask" desc = "Some pranksters are truly magical." icon_state = "wizzclown" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/masks.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/masks.dmi' /obj/item/clothing/mask/chapmask name = "venetian mask" desc = "A plain porcelain mask that covers the entire face. Standard attire for particularly unspeakable religions. The eyes are wide shut." icon_state = "chapmask" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/masks.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/masks.dmi' /obj/item/clothing/mask/neorussian name = "neo-Russian mask" desc = "Somehow, it makes you act and look way more polite than usual." icon_state = "nr_mask" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/masks.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/masks.dmi' diff --git a/code/modules/clothing/shoes/vg_shoes.dm b/code/modules/clothing/shoes/vg_shoes.dm index fb2510be89..f867b537c7 100644 --- a/code/modules/clothing/shoes/vg_shoes.dm +++ b/code/modules/clothing/shoes/vg_shoes.dm @@ -4,24 +4,24 @@ desc = "A sturdy pair of leather shoes." icon_state = "leather" item_color = "leather" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/magboots/deathsquad desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle." name = "deathsquad magboots" icon_state = "DS-magboots0" magboot_state = "DS-magboots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/item/clothing/shoes/magboots/atmos desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician." name = "atmospherics magboots" icon_state = "atmosmagboots0" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' magboot_state = "atmosmagboots" resistance_flags = FIRE_PROOF @@ -29,96 +29,96 @@ name = "Simon's Shoes" desc = "Simon's Shoes." icon_state = "simonshoes" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/kneesocks name = "kneesocks" desc = "A pair of girly knee-high socks." icon_state = "kneesock" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/jestershoes name = "Jester Shoes" desc = "As worn by the clowns of old." icon_state = "jestershoes" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/aviatorboots name = "Aviator Boots" desc = "Boots suitable for just about any occasion." icon_state = "aviator_boots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/libertyshoes name = "Liberty Shoes" desc = "Freedom isn't free, neither were these shoes." icon_state = "libertyshoes" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/megaboots name = "DRN-001 Boots" desc = "Large armored boots, very weak to large spikes." icon_state = "megaboots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/protoboots name = "Prototype Boots" desc = "Functionally identical to the DRN-001 model's boots, but in red." icon_state = "protoboots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/megaxboots name = "Maverick Hunter boots" desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike." icon_state = "megaxboots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/joeboots name = "Sniper Boots" desc = "Nearly identical to the Prototype's boots, except in black." icon_state = "joeboots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/doomguy name = "Doomguy's boots" desc = "If you look closely, you might see skull fragments still buried in these boots." icon_state = "doom" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/rottenshoes name = "rotten shoes" desc = "These shoes seem perfect for sneaking around." icon_state = "rottenshoes" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/sandal/slippers name = "magic slippers" icon_state = "slippers" desc = "For the wizard that puts comfort first. Who's going to laugh?" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/slippers_worn name = "worn bunny slippers" desc = "Fluffy..." icon_state = "slippers_worn" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' /obj/item/clothing/shoes/jackboots/neorussian name = "neo-Russian boots" desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit." icon_state = "nr_boots" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/head.dmi' \ No newline at end of file + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/vg_spess.dm b/code/modules/clothing/spacesuits/vg_spess.dm index 3dad9c2610..237e5ebfa6 100644 --- a/code/modules/clothing/spacesuits/vg_spess.dm +++ b/code/modules/clothing/spacesuits/vg_spess.dm @@ -7,7 +7,7 @@ icon_state = "hardsuit0-nazi" armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) item_color = "nazi" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/space/hardsuit/nazi name = "nazi hardsuit" @@ -18,7 +18,7 @@ armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/hardsuit/soviet name = "soviet hardhelmet" @@ -27,7 +27,7 @@ icon_state = "hardsuit0-soviet" armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) item_color = "soviet" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/space/hardsuit/soviet name = "soviet hardsuit" @@ -38,7 +38,7 @@ armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/soviet - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/hardsuit/knight name = "Space-Knight helm" @@ -48,7 +48,7 @@ armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60) max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT item_color="knight" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/space/hardsuit/knight name = "Space-Knight armour" @@ -61,7 +61,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT siemens_coefficient = 0.5 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/hardsuit/knight/black name = "Black Knight's helm" @@ -70,7 +70,7 @@ item_state = "hardsuit0-blackknight" armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60) item_color="blackknight" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/space/hardsuit/knight/black name = "Black Knight's armour" @@ -79,7 +79,7 @@ item_state = "hardsuit-blackknight" armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/black - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/hardsuit/knight/solaire name = "Solar helm" @@ -88,7 +88,7 @@ item_state = "hardsuit0-solaire" armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100) item_color="solaire" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/space/hardsuit/knight/solaire name = "Solar armour" @@ -97,7 +97,7 @@ item_state = "hardsuit-solaire" armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/solaire - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/hardsuit/t51b name = "T-51b Power Armor" @@ -106,7 +106,7 @@ item_state = "hardsuit0-t51b" armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100) item_color="t51b" - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/space/hardsuit/t51b name = "T-51b Power Armor" @@ -115,7 +115,7 @@ item_state = "hardsuit-t51b" armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/t51b - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/bomberman @@ -125,7 +125,7 @@ item_state = "bomberman" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) siemens_coefficient = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' obj/item/clothing/suit/space/bomberman name = "Bomberman's suit" @@ -136,4 +136,4 @@ obj/item/clothing/suit/space/bomberman armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) siemens_coefficient = 0 max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - icon = 'icons/obj/clothing/vg_clothes.dmi' \ No newline at end of file + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' \ No newline at end of file diff --git a/code/modules/clothing/suits/vg_suits.dm b/code/modules/clothing/suits/vg_suits.dm index cb876ab153..da06e85392 100644 --- a/code/modules/clothing/suits/vg_suits.dm +++ b/code/modules/clothing/suits/vg_suits.dm @@ -7,16 +7,16 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 60, bio = 30, rad = 20) siemens_coefficient = 0.5 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/armor/xcomsquaddie/dredd name = "Judge Armor" desc = "A large suit of heavy armor, fit for a Judge." icon_state = "dredd-suit" item_state = "dredd-suit" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/armor/xcomarmor @@ -28,16 +28,16 @@ armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 60, bio = 30, rad = 20) slowdown = 1 siemens_coefficient = 0.5 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/armor/vest/neorussian name = "neo-Russian vest" desc = "The narkotiki camo pattern will come useful for botany raids." icon_state = "nr_vest" item_state = "nr_vest" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/armor/doomguy name = "Doomguy's armor" @@ -47,8 +47,8 @@ body_parts_covered = CHEST|GROIN slowdown = 0 armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0) - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/kaminacape @@ -56,22 +56,22 @@ desc = "Don't believe in yourself, dumbass. Believe in me. Believe in the Kamina who believes in you." icon_state = "kaminacape" body_parts_covered = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/officercoat name = "Officer's Coat" desc = "Ein Mantel gemacht, um die Juden zu bestrafen." icon_state = "officersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/soldiercoat name = "Soldier's Coat" desc = "Und das heißt: Erika." icon_state = "soldiersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/suit/russofurcoat name = "russian fur coat" @@ -79,46 +79,46 @@ icon_state = "russofurcoat" allowed = list(/obj/item/gun) body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/doshjacket name = "Plasterer's Jacket" desc = "Perfect for doing up the house." icon_state = "doshjacket" body_parts_covered = CHEST|GROIN|ARMS - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/maidapron name = "Apron" desc = "Simple white apron." icon_state = "maidapron" body_parts_covered = CHEST|GROIN - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/clownpiece name = "small fairy wings" desc = "Some small and translucid insect-like wings." icon_state = "clownpiece" body_parts_covered = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/clownpiece/flying name = "small fairy wings" desc = "Some small and translucid insect-like wings. Looks like these are the real deal!" icon_state = "clownpiece-fly" - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' /obj/item/clothing/suit/raincoat name = "Raincoat" desc = "Do you like Huey Lewis and the News?" icon_state = "raincoat" body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/suit.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi' diff --git a/code/modules/clothing/under/vg_under.dm b/code/modules/clothing/under/vg_under.dm index f468e9468a..f9b521cade 100644 --- a/code/modules/clothing/under/vg_under.dm +++ b/code/modules/clothing/under/vg_under.dm @@ -4,8 +4,8 @@ item_state = "stripper_p" item_color = "stripper_p" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/stripper_green @@ -14,8 +14,8 @@ item_state = "stripper_g" item_color = "stripper_g" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' @@ -26,8 +26,8 @@ item_state = "bride_orange" item_color = "bride_orange" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/wedding/bride_purple @@ -37,8 +37,8 @@ item_state = "bride_purple" item_color = "bride_purple" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/wedding/bride_blue @@ -48,8 +48,8 @@ item_state = "bride_blue" item_color = "bride_blue" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/wedding/bride_red @@ -59,8 +59,8 @@ item_state = "bride_red" item_color = "bride_red" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/wedding/bride_white @@ -70,8 +70,8 @@ item_state = "bride_white" item_color = "bride_white" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/mankini @@ -80,8 +80,8 @@ item_state = "mankini" item_color = "mankini" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /* /obj/item/clothing/under/psysuit @@ -91,8 +91,8 @@ item_state = "psysuit" item_color = "psysuit" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/officeruniform @@ -102,8 +102,8 @@ item_state = "officeruniform" item_color = "officeruniform" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/soldieruniform @@ -113,8 +113,8 @@ item_state = "soldieruniform" item_color = "soldieruniform" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' */ /obj/item/clothing/under/squatter_outfit @@ -124,8 +124,8 @@ item_state = "squatteroutfit" item_color = "squatteroutfit" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/russobluecamooutfit @@ -135,8 +135,8 @@ item_state = "russobluecamo" item_color = "russobluecamo" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/stilsuit @@ -146,8 +146,8 @@ item_state = "stilsuit" item_color = "stilsuit" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/aviatoruniform @@ -157,8 +157,8 @@ item_state = "aviator_uniform" item_color = "aviator_uniform" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/bikersuit @@ -167,8 +167,8 @@ item_state = "biker" item_color = "biker" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/jacketsuit @@ -178,8 +178,8 @@ item_state = "jacket" item_color = "jacket" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' obj/item/clothing/under/mega @@ -189,8 +189,8 @@ obj/item/clothing/under/mega item_state = "mega" item_color = "mega" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/proto @@ -200,8 +200,8 @@ obj/item/clothing/under/mega item_state = "proto" item_color = "proto" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/megax @@ -211,8 +211,8 @@ obj/item/clothing/under/mega item_state = "megax" item_color = "megax" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/joe @@ -222,8 +222,8 @@ obj/item/clothing/under/mega item_state = "joe" item_color = "joe" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/roll @@ -233,8 +233,8 @@ obj/item/clothing/under/mega item_state = "roll" item_color = "roll" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/gokugidown @@ -244,8 +244,8 @@ obj/item/clothing/under/mega item_state = "gokugidown" item_color = "gokugidown" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/gokugi @@ -255,8 +255,8 @@ obj/item/clothing/under/mega item_state = "gokugi" item_color = "gokugi" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/doomguy @@ -266,8 +266,8 @@ obj/item/clothing/under/mega item_state = "doom" item_color = "doom" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/vault13 @@ -277,8 +277,8 @@ obj/item/clothing/under/mega item_state = "v13-jumpsuit" item_color = "v13-jumpsuit" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/vault @@ -288,8 +288,8 @@ obj/item/clothing/under/mega item_state = "v-jumpsuit" item_color = "v-jumpsuit" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/clownpiece @@ -299,8 +299,8 @@ obj/item/clothing/under/mega item_state = "clownpiece" item_color = "clownpiece" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/cia @@ -310,8 +310,8 @@ obj/item/clothing/under/mega item_state = "cia" item_color = "cia" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/greaser @@ -320,8 +320,8 @@ obj/item/clothing/under/mega icon_state = "greaser_default" item_state = "greaser_default" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/greaser/New() @@ -340,7 +340,7 @@ obj/item/clothing/under/mega item_state = "greaser_[greaser_colour]" item_color = "greaser_[greaser_colour]" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/under/wintercasualwear name = "winter casualwear" @@ -349,8 +349,8 @@ obj/item/clothing/under/mega item_state = "shizunewinter" item_color = "shizunewinter" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' @@ -361,8 +361,8 @@ obj/item/clothing/under/mega item_state = "shizunenormal" item_color = "shizunenormal" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/keyholesweater @@ -372,8 +372,8 @@ obj/item/clothing/under/mega item_state = "keyholesweater" item_color = "keyholesweater" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/casualhoodie @@ -383,8 +383,8 @@ obj/item/clothing/under/mega item_state = "hoodiejeans" item_color = "hoodiejeans" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' @@ -393,7 +393,7 @@ obj/item/clothing/under/mega item_state = "hoodieskirt" item_color = "hoodieskirt" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /* /obj/item/clothing/under/mummy_rags name = "mummy rags" @@ -403,8 +403,8 @@ obj/item/clothing/under/mega item_color = "mummy" can_adjust = 0 has_sensor = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/neorussian @@ -414,8 +414,8 @@ obj/item/clothing/under/mega item_state = "nr_uniform" item_color = "nr_uniform" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' */ /obj/item/clothing/under/rottensuit @@ -425,5 +425,5 @@ obj/item/clothing/under/mega item_state = "rottensuit" item_color = "rottensuit" can_adjust = 0 - icon = 'icons/obj/clothing/vg_clothes.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 48ebd53435..30fa676500 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -68,17 +68,6 @@ if(!isnum(text2num(params))) return message -/datum/emote/sound/carbon/snap - key = "snap" - key_third_person = "snaps" - message = "snaps their fingers." - muzzle_ignore = TRUE - restraint_check = TRUE - emote_type = EMOTE_AUDIBLE - sound = 'sound/effects/snap01.ogg' - mob_type_allowed_typecache = list(/mob/living/carbon/) - - /datum/emote/living/carbon/sign/signal key = "signal" key_third_person = "signals" diff --git a/code/modules/projectiles/guns/energy/megabuster.dm b/code/modules/projectiles/guns/energy/megabuster.dm index 6fd2de777b..3f14fe3b8d 100644 --- a/code/modules/projectiles/guns/energy/megabuster.dm +++ b/code/modules/projectiles/guns/energy/megabuster.dm @@ -9,7 +9,7 @@ item_flags = NEEDS_PERMIT selfcharge = TRUE cell_type = "/obj/item/stock_parts/cell/pulse" - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' /obj/item/gun/energy/megabuster/proto name = "Proto-buster" @@ -19,7 +19,7 @@ /obj/item/gun/energy/mmlbuster name = "Buster Cannon" desc = "An antique arm-mounted buster cannon." - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' icon_state = "mmlbuster" item_state = "mmlbuster" w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/projectiles/guns/energy/plasma_cit.dm b/code/modules/projectiles/guns/energy/plasma_cit.dm index 4324053a14..9f9340a725 100644 --- a/code/modules/projectiles/guns/energy/plasma_cit.dm +++ b/code/modules/projectiles/guns/energy/plasma_cit.dm @@ -7,8 +7,8 @@ cell_type = "/obj/item/stock_parts/cell/pulse/carbine" ammo_x_offset = 2 shaded_charge = 1 - lefthand_file = 'icons/mob/citadel/guns_lefthand.dmi' - righthand_file = 'icons/mob/citadel/guns_righthand.dmi' + lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' /obj/item/gun/energy/plasma/rifle @@ -16,7 +16,7 @@ desc = "A state of the art cannon utilizing plasma in a uranium-235 lined core to output hi-power, radiating bolts of energy." icon_state = "alienrifle" item_state = null - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' w_class = WEIGHT_CLASS_BULKY ammo_type = list(/obj/item/ammo_casing/energy/plasmagun/rifle) ammo_x_offset = 4 @@ -28,7 +28,7 @@ desc = "A state of the art rifle utilizing plasma in a uranium-235 lined core to output radiating bolts of energy." icon_state = "lightalienrifle" item_state = null - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' ammo_type = list(/obj/item/ammo_casing/energy/plasmagun/light) ammo_x_offset = 2 @@ -38,7 +38,7 @@ desc = "A plasma MP40k. Ich liebe den geruch von plasma am morgen." icon_state = "PlasMP" item_state = null - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' ammo_type = list(/obj/item/ammo_casing/energy/plasmagun/MP40k) ammo_x_offset = 3 @@ -49,21 +49,21 @@ desc = "A laser rifle issued to high ranking members of a certain shadow corporation." icon_state = "xcomlasergun" item_state = null - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' cell_type = "/obj/item/stock_parts/cell/pulse/carbine" ammo_type = list(/obj/item/ammo_casing/energy/lasergun) ammo_x_offset = 4 - lefthand_file = 'icons/mob/citadel/guns_lefthand.dmi' - righthand_file = 'icons/mob/citadel/guns_righthand.dmi' + lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' /obj/item/gun/energy/laser/LaserAK name = "Laser AK470" desc = "A laser AK. Death solves all problems -- No man, no problem." icon_state = "LaserAK" item_state = null - icon = 'icons/obj/guns/VGguns.dmi' + icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' cell_type = "/obj/item/stock_parts/cell/pulse/carbine" ammo_type = list(/obj/item/ammo_casing/energy/laser) ammo_x_offset = 4 - lefthand_file = 'icons/mob/citadel/guns_lefthand.dmi' - righthand_file = 'icons/mob/citadel/guns_righthand.dmi' + lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' diff --git a/code/modules/projectiles/projectile/megabuster.dm b/code/modules/projectiles/projectile/megabuster.dm index e3f3f9403e..bfe9f40297 100644 --- a/code/modules/projectiles/projectile/megabuster.dm +++ b/code/modules/projectiles/projectile/megabuster.dm @@ -6,14 +6,14 @@ damage_type = BURN hitsound = 'sound/weapons/sear.ogg' hitsound_wall = 'sound/weapons/effects/searwall.ogg' - icon = 'icons/obj/VGprojectile.dmi' - lefthand_file = 'icons/mob/citadel/guns_lefthand.dmi' - righthand_file = 'icons/mob/citadel/guns_righthand.dmi' + icon = 'modular_citadel/icons/obj/VGprojectile.dmi' + lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' /obj/item/projectile/energy/megabuster name = "buster pellet" icon_state = "megabuster" nodamage = 1 - icon = 'icons/obj/VGprojectile.dmi' - lefthand_file = 'icons/mob/citadel/guns_lefthand.dmi' - righthand_file = 'icons/mob/citadel/guns_righthand.dmi' + icon = 'modular_citadel/icons/obj/VGprojectile.dmi' + lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' diff --git a/code/modules/projectiles/projectile/plasma.dm b/code/modules/projectiles/projectile/plasma.dm index 0e40e80828..f9adb9f3d7 100644 --- a/code/modules/projectiles/projectile/plasma.dm +++ b/code/modules/projectiles/projectile/plasma.dm @@ -1,5 +1,5 @@ obj/item/projectile/energy/plasmabolt - icon = 'icons/obj/VGProjectile.dmi' + icon = 'modular_citadel/icons/obj/VGProjectile.dmi' name = "plasma bolt" icon_state = "plasma" flag = "energy" diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 133c22510e..fa8c8f7339 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -334,6 +334,14 @@ limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" else limb.icon_state = "[species_id]_[body_zone]" + // Citadel Start + if(should_draw_citadel) + limb.icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + if(should_draw_gender) + limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" + else + limb.icon_state = "[species_id]_[body_zone]" + // Citadel End if(aux_zone) aux = image(limb.icon, "[species_id]_[aux_zone]", -aux_layer, image_dir) . += aux diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 529968d7f8a2bca486dc9e917b2216e290b04437..cef7b421e586721b7ae6608d6016164eb080687b 100644 GIT binary patch literal 41962 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
  • ErZcVe7#lL!u`Jz( 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 literal 64731 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 diff --git a/icons/obj/clothing/turtlenecks.dmi b/icons/obj/clothing/turtlenecks.dmi deleted file mode 100644 index 59b2876c0c18d703f7871b45ae9cdeef9aec77d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1009 zcmV@f04o3hVgLYH z11Aj$Sse#b8x<85FfcGIEGz&3Q3gsEC@3fZ05t?L5E>d9002A%HWD2j9am|aLjV8( z0d!JMQvg8b*k%9#0El{2Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1rpldUlYN-wblNtl zf`Z5DK#07C4bv7A;;zk?$om&Z|bsj ze-gHKSP_%Hjd-%W+T*hyM2-*``u2c9}dSf zO^=6zP|r?z4CSYctrzDqfy#5i)~idMLiME*{7Pj!>M>=dw)7l1`3LT`rfp zPV1UZjzIn~5gPK(IRg17L}9*Z-= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + features["mcolor"] = sanitize_hexcolor(new_mutantcolor) + else + to_chat(user, "Invalid color. Your color is not bright enough.") + + if("mutant_color2") + var/new_mutantcolor = input(user, "Choose your character's secondary alien/mutant color:", "Character Preference") as color|null + if(new_mutantcolor) + var/temp_hsv = RGBtoHSV(new_mutantcolor) + if(new_mutantcolor == "#000000") + features["mcolor2"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + features["mcolor2"] = sanitize_hexcolor(new_mutantcolor) + else + to_chat(user, "Invalid color. Your color is not bright enough.") + + if("mutant_color3") + var/new_mutantcolor = input(user, "Choose your character's tertiary alien/mutant color:", "Character Preference") as color|null + if(new_mutantcolor) + var/temp_hsv = RGBtoHSV(new_mutantcolor) + if(new_mutantcolor == "#000000") + features["mcolor3"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + features["mcolor3"] = sanitize_hexcolor(new_mutantcolor) + else + to_chat(user, "Invalid color. Your color is not bright enough.") + + if("ipc_screen") + var/new_ipc_screen + new_ipc_screen = input(user, "Choose your character's screen:", "Character Preference") as null|anything in GLOB.ipc_screens_list + if(new_ipc_screen) + features["ipc_screen"] = new_ipc_screen + + if("tail_lizard") + var/new_tail + new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.tails_list_lizard + if(new_tail) + features["tail_lizard"] = new_tail + if(new_tail != "None") + features["taur"] = "None" + + if("tail_human") + var/list/snowflake_tails_list = list("Normal" = null) + for(var/path in GLOB.tails_list_human) + var/datum/sprite_accessory/tails/human/instance = GLOB.tails_list_human[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_tails_list[S.name] = path + var/new_tail + new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in snowflake_tails_list + if(new_tail) + features["tail_human"] = new_tail + if(new_tail != "None") + features["taur"] = "None" + + if("mam_tail") + var/list/snowflake_tails_list = list("Normal" = null) + for(var/path in GLOB.mam_tails_list) + var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_tails_list[S.name] = path + var/new_tail + new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in snowflake_tails_list + if(new_tail) + features["mam_tail"] = new_tail + if(new_tail != "None") + features["taur"] = "None" + + if("taur") + var/list/snowflake_taur_list = list("Normal" = null) + for(var/path in GLOB.taur_list) + var/datum/sprite_accessory/taur/instance = GLOB.taur_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_taur_list[S.name] = path + var/new_taur + new_taur = input(user, "Choose your character's tauric body:", "Character Preference") as null|anything in snowflake_taur_list + if(new_taur) + features["taur"] = new_taur + if(new_taur != "None") + features["mam_tail"] = "None" + features["xenotail"] = "None" + + if("ears") + var/list/snowflake_ears_list = list("Normal" = null) + for(var/path in GLOB.ears_list) + var/datum/sprite_accessory/ears/instance = GLOB.ears_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_ears_list[S.name] = path + var/new_ears + new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in snowflake_ears_list + if(new_ears) + features["ears"] = new_ears + + if("mam_ears") + var/list/snowflake_ears_list = list("Normal" = null) + for(var/path in GLOB.mam_ears_list) + var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_ears_list[S.name] = path + var/new_ears + new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in snowflake_ears_list + if(new_ears) + features["mam_ears"] = new_ears + + if("mam_body_markings") + var/list/snowflake_markings_list = list("Normal" = null) + for(var/path in GLOB.mam_body_markings_list) + var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[path] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey))) + snowflake_markings_list[S.name] = path + var/new_mam_body_markings + new_mam_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in snowflake_markings_list + if(new_mam_body_markings) + features["mam_body_markings"] = new_mam_body_markings + + //Xeno Bodyparts + if("xenohead")//Head or caste type + var/new_head + new_head = input(user, "Choose your character's caste:", "Character Preference") as null|anything in GLOB.xeno_head_list + if(new_head) + features["xenohead"] = new_head + + if("xenotail")//Currently one one type, more maybe later if someone sprites them. Might include animated variants in the future. + var/new_tail + new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.xeno_tail_list + if(new_tail) + features["xenotail"] = new_tail + + if("xenodorsal") + var/new_dors + new_dors = input(user, "Choose your character's dorsal tube type:", "Character Preference") as null|anything in GLOB.xeno_dorsal_list + if(new_dors) + features["xenodorsal"] = new_dors + //Genital code + if("cock_color") + var/new_cockcolor = input(user, "Penis color:", "Character Preference") as color|null + if(new_cockcolor) + var/temp_hsv = RGBtoHSV(new_cockcolor) + if(new_cockcolor == "#000000") + features["cock_color"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + features["cock_color"] = sanitize_hexcolor(new_cockcolor) + else + user << "Invalid color. Your color is not bright enough." + + if("cock_length") + var/new_length = input(user, "Penis length in inches:\n([COCK_SIZE_MIN]-[COCK_SIZE_MAX])", "Character Preference") as num|null + if(new_length) + features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN) + + if("cock_shape") + var/new_shape + new_shape = input(user, "Penis shape:", "Character Preference") as null|anything in GLOB.cock_shapes_list + if(new_shape) + features["cock_shape"] = new_shape + + if("balls_color") + var/new_ballscolor = input(user, "Testicle Color:", "Character Preference") as color|null + if(new_ballscolor) + var/temp_hsv = RGBtoHSV(new_ballscolor) + if(new_ballscolor == "#000000") + features["balls_color"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + features["balls_color"] = sanitize_hexcolor(new_ballscolor) + else + user << "Invalid color. Your color is not bright enough." + + if("egg_size") + var/new_size + var/list/egg_sizes = list(1,2,3) + new_size = input(user, "Egg Diameter(inches):", "Egg Size") as null|anything in egg_sizes + if(new_size) + features["eggsack_egg_size"] = new_size + + if("egg_color") + var/new_egg_color = input(user, "Egg Color:", "Character Preference") as color|null + if(new_egg_color) + var/temp_hsv = RGBtoHSV(new_egg_color) + if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + features["eggsack_egg_color"] = sanitize_hexcolor(new_egg_color) + else + user << "Invalid color. Your color is not bright enough." + + if("breasts_size") + var/new_size + new_size = input(user, "Breast Size", "Character Preference") as null|anything in GLOB.breasts_size_list + if(new_size) + features["breasts_size"] = new_size + + if("breasts_shape") + var/new_shape + new_shape = input(user, "Breast Shape", "Character Preference") as null|anything in GLOB.breasts_shapes_list + if(new_shape) + features["breasts_shape"] = new_shape + + if("breasts_color") + var/new_breasts_color = input(user, "Breast Color:", "Character Preference") as color|null + if(new_breasts_color) + var/temp_hsv = RGBtoHSV(new_breasts_color) + if(new_breasts_color == "#000000") + features["breasts_color"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + features["breasts_color"] = sanitize_hexcolor(new_breasts_color) + else + user << "Invalid color. Your color is not bright enough." + + if("vag_shape") + var/new_shape + new_shape = input(user, "Vagina Type", "Character Preference") as null|anything in GLOB.vagina_shapes_list + if(new_shape) + features["vag_shape"] = new_shape + + if("vag_color") + var/new_vagcolor = input(user, "Vagina color:", "Character Preference") as color|null + if(new_vagcolor) + var/temp_hsv = RGBtoHSV(new_vagcolor) + if(new_vagcolor == "#000000") + features["vag_color"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + features["vag_color"] = sanitize_hexcolor(new_vagcolor) + else + user << "Invalid color. Your color is not bright enough." + + if("input") + switch(href_list["preference"]) + + //genital code + if("genital_colour") + switch(features["genitals_use_skintone"]) + if(TRUE) + features["genitals_use_skintone"] = FALSE + if(FALSE) + features["genitals_use_skintone"] = TRUE + else + features["genitals_use_skintone"] = FALSE + if("arousable") + switch(arousable) + if(TRUE) + arousable = FALSE + if(FALSE) + arousable = TRUE + else//failsafe + arousable = FALSE + if("has_cock") + switch(features["has_cock"]) + if(TRUE) + features["has_cock"] = FALSE + if(FALSE) + features["has_cock"] = TRUE + features["has_ovi"] = FALSE + features["has_eggsack"] = FALSE + else + features["has_cock"] = FALSE + features["has_ovi"] = FALSE + if("has_balls") + switch(features["has_balls"]) + if(TRUE) + features["has_balls"] = FALSE + if(FALSE) + features["has_balls"] = TRUE + features["has_eggsack"] = FALSE + else + features["has_balls"] = FALSE + features["has_eggsack"] = FALSE + if("has_ovi") + switch(features["has_ovi"]) + if(TRUE) + features["has_ovi"] = FALSE + if(FALSE) + features["has_ovi"] = TRUE + features["has_cock"] = FALSE + features["has_balls"] = FALSE + else + features["has_ovi"] = FALSE + features["has_cock"] = FALSE + if("has_eggsack") + switch(features["has_eggsack"]) + if(TRUE) + features["has_eggsack"] = FALSE + if(FALSE) + features["has_eggsack"] = TRUE + features["has_balls"] = FALSE + else + features["has_eggsack"] = FALSE + features["has_balls"] = FALSE + if("balls_internal") + switch(features["balls_internal"]) + if(TRUE) + features["balls_internal"] = FALSE + if(FALSE) + features["balls_internal"] = TRUE + features["eggsack_internal"] = FALSE + else + features["balls_internal"] = FALSE + features["eggsack_internal"] = FALSE + + if("eggsack_internal") + switch(features["eggsack_internal"]) + if(TRUE) + features["eggsack_internal"] = FALSE + if(FALSE) + features["eggsack_internal"] = TRUE + features["balls_internal"] = FALSE + else + features["eggsack_internal"] = FALSE + features["balls_internal"] = FALSE + if("has_breasts") + switch(features["has_breasts"]) + if(TRUE) + features["has_breasts"] = FALSE + if(FALSE) + features["has_breasts"] = TRUE + else + features["has_breasts"] = FALSE + if("has_vag") + switch(features["has_vag"]) + if(TRUE) + features["has_vag"] = FALSE + if(FALSE) + features["has_vag"] = TRUE + else + features["has_vag"] = FALSE + if("has_womb") + switch(features["has_womb"]) + if(TRUE) + features["has_womb"] = FALSE + if(FALSE) + features["has_womb"] = TRUE + else + features["has_womb"] = FALSE + if("exhibitionist") + switch(features["exhibitionist"]) + if(TRUE) + features["exhibitionist"] = FALSE + if(FALSE) + features["exhibitionist"] = TRUE + else + features["exhibitionist"] = FALSE + else + switch(href_list["preference"]) + if("widescreenpref") + widescreenpref = !widescreenpref + user.client.change_view(CONFIG_GET(string/default_view)) + if("autostand") + autostand = !autostand + if("screenshake") + var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num + if (!isnull(desiredshake)) + screenshake = desiredshake + if("damagescreenshake") + switch(damagescreenshake) + if(0) + damagescreenshake = 1 + if(1) + damagescreenshake = 2 + if(2) + damagescreenshake = 0 + else + damagescreenshake = 1 + + if("hound_sleeper") + toggles ^= MEDIHOUND_SLEEPER + // VORE SOUND TOGGLES + if("toggleeatingnoise") + toggles ^= EATING_NOISES + + if("toggledigestionnoise") + toggles ^= DIGESTION_NOISES + + if(href_list["preference"] == "gear") + if(href_list["clear_loadout"]) + LAZYCLEARLIST(chosen_gear) + gear_points = initial(gear_points) + save_preferences() + if(href_list["select_category"]) + for(var/i in GLOB.loadout_items) + if(i == href_list["select_category"]) + gear_tab = i + if(href_list["toggle_gear_path"]) + var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])] + if(!G) + return + var/toggle = text2num(href_list["toggle_gear"]) + if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear) + LAZYREMOVE(chosen_gear, G.type) + gear_points += initial(G.cost) + else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) + if(!is_loadout_slot_available(G.category)) + to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") + return + if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) + to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") + return + if(gear_points >= initial(G.cost)) + LAZYADD(chosen_gear, G.type) + gear_points -= initial(G.cost) + + +/datum/preferences/proc/citadel_dat_replace(current_tab) + var/mob/user + + //This proc is for menus other than game pref and char pref + . = "
      " + + . += "Character Settings" + . += "Character Appearance" + . += "Loadout" + . += "Game Preferences" + + if(!path) + . += "
      Please create an account to save your preferences
      " + + . += "
      " + + . += "
      " + if(current_tab == 0) + . += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
      " + . += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
      " + // game prefs + if(current_tab == 1) + //VORE SOUNDS + . += "Hear Vore Sounds: [(toggles & EATING_NOISES) ? "Yes" : "No"]
      " + . += "Hear Vore Digestion Sounds: [(toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " + . += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
      " + . += "Auto stand: [autostand ? "Enabled" : "Disabled"]
      " + . += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
      " + if (user && user.client && !user.client.prefs.screenshake==0) + . += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
      " + + + //Character Appearance + if(current_tab == 2) + . += "" + */ + . += "
      " + . += "

      " + . += "Set Flavor Text
      " + if(lentext(features["flavor_text"]) <= 40) + if(!lentext(features["flavor_text"])) + . += "\[...\]" + else + . += "[features["flavor_text"]]" + else + . += "[TextPreview(features["flavor_text"])]...
      " + . += "

      Body

      " + . += "Gender: [gender == MALE ? "Male" : "Female"]
      " + . += "Species:[pref_species.id]
      " + . += "Random Body
      " + . += "Always Random Body: [be_random_body ? "Yes" : "No"]
      " + if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits)) + . += "Primary Color:     Change
      " + . += "Secondary Color:     Change
      " + . += "Tertiary Color:     Change
      " + if(pref_species.use_skintones) + . += "Skin Tone: [skin_tone]
      " + . += "Genitals Use Skintone:[features["genitals_use_skintone"] == TRUE ? "Enabled" : "Disabled"]
      " + + if(HAIR in pref_species.species_traits) + . += "Hair Style: [hair_style]
      " + . += "Hair Color:     Change
      " + . += "Facial Hair Style: [facial_hair_style]
      " + . += "Facial Hair Color:     Change
      " + if(EYECOLOR in pref_species.species_traits) + . += "Eye Color:     Change
      " + if("tail_lizard" in pref_species.mutant_bodyparts) + . += "Tail: [features["tail_lizard"]]
      " + else if("mam_tail" in pref_species.mutant_bodyparts) + . += "Tail: [features["mam_tail"]]
      " + else if("tail_human" in pref_species.mutant_bodyparts) + . += "Tail: [features["tail_human"]]
      " + if("snout" in pref_species.mutant_bodyparts) + . += "Snout: [features["snout"]]
      " + if("horns" in pref_species.mutant_bodyparts) + . += "Horns: [features["horns"]]
      " + if("frills" in pref_species.mutant_bodyparts) + . += "Frills: [features["frills"]]
      " + if("spines" in pref_species.mutant_bodyparts) + . += "Spines: [features["spines"]]
      " + if("body_markings" in pref_species.mutant_bodyparts) + . += "Body Markings: [features["body_markings"]]
      " + else if("mam_body_markings" in pref_species.mutant_bodyparts) + . += "Body Markings: [features["mam_body_markings"]]
      " + if("mam_ears" in pref_species.mutant_bodyparts) + . += "Ears: [features["mam_ears"]]
      " + else if("ears" in pref_species.mutant_bodyparts) + . += "Ears: [features["ears"]]
      " + if("legs" in pref_species.mutant_bodyparts) + . += "Legs: [features["legs"]]
      " + if("moth_wings" in pref_species.mutant_bodyparts) + . += "Moth wings[features["moth_wings"]]
      " + if("taur" in pref_species.mutant_bodyparts) + . += "Taur: [features["taur"]]
      " + if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) + . += "Wings: [features["wings"]]
      " + if("xenohead" in pref_species.mutant_bodyparts) + . += "Caste: [features["xenohead"]]
      " + if("xenotail" in pref_species.mutant_bodyparts) + . += "Tail: [features["xenotail"]]
      " + if("xenodorsal" in pref_species.mutant_bodyparts) + . += "Dorsal Tubes: [features["xenodorsal"]]
      " + if("ipc_screen" in pref_species.mutant_bodyparts) + . += "Screen:[features["ipc_screen"]]
      " + + . += "
      " + + . += "

      Clothing & Equipment

      " + + . += "Underwear:[underwear]
      " + . += "Undershirt:[undershirt]
      " + . += "Socks:[socks]
      " + . += "Backpack:[backbag]
      " + . += "Uplink Location:[uplink_spawn_loc]
      " + + . += "

      Genitals

      " + if(NOGENITALS in pref_species.species_traits) + . += "Your species ([pref_species.name]) does not support genitals!
      " + else + . += "Has Penis:[features["has_cock"] == TRUE ? "Yes" : "No"]
      " + if(features["has_cock"] == TRUE) + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Penis Color:   (Skin tone overriding)
      " + else + . += "Penis Color:    Change
      " + // . += "
      " + . += "Penis Shape: [features["cock_shape"]]
      " + . += "Penis Length: [features["cock_length"]] inch(es)
      " + . += "Has Testicles:[features["has_balls"] == TRUE ? "Yes" : "No"]
      " + if(features["has_balls"] == TRUE) + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Testicles Color:   (Skin tone overriding)
      " + else + . += "Testicles Color:    Change
      " + . += "Has Vagina:[features["has_vag"] == TRUE ? "Yes" : "No"]
      " + if(features["has_vag"]) + . += "Vagina Type: [features["vag_shape"]]
      " + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Vagina Color:   (Skin tone overriding)
      " + else + . += "Vagina Color:    Change
      " + . += "Has Womb:[features["has_womb"] == TRUE ? "Yes" : "No"]
      " + . += "Has Breasts:[features["has_breasts"] == TRUE ? "Yes" : "No"]
      " + if(features["has_breasts"]) + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Color:   (Skin tone overriding)
      " + else + . += "Color:    Change
      " + . += "Cup Size:[features["breasts_size"]]
      " + . += "Breast Shape:[features["breasts_shape"]]
      " + /* + . += "

      Ovipositor

      " + . += "Has Ovipositor:[features["has_ovi"] == TRUE ? "Yes" : "No"]" + if(features["has_ovi"]) + . += "Ovi Color:    Change" + . += "

      Eggsack

      " + . += "Has Eggsack:[features["has_eggsack"] == TRUE ? "Yes" : "No"]
      " + if(features["has_eggsack"] == TRUE) + . += "Color:    Change" + . += "Egg Color:    Change" + . += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" + . += "
      " + if(current_tab == 3) + if(!gear_tab) + gear_tab = GLOB.loadout_items[1] + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + for(var/j in GLOB.loadout_items[gear_tab]) + var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] + var/donoritem + if(gear.ckeywhitelist && gear.ckeywhitelist.len) + donoritem = TRUE + if(user && !(user.ckey in gear.ckeywhitelist)) + continue + var/class_link = "" + if(gear.type in chosen_gear) + class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=0'" + else if(gear_points <= 0) + class_link = "style='white-space:normal;' class='linkOff'" + else if(donoritem) + class_link = "style='white-space:normal;background:#ebc42e;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" + else + class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" + . += "" + . += "" + . += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " + var/firstcat = TRUE + for(var/i in GLOB.loadout_items) + if(firstcat) + firstcat = FALSE + else + . += " |" + if(i == gear_tab) + . += " [i] " + else + . += " [i] " + . += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" + if(islist(gear.restricted_roles)) + if(gear.restricted_roles.len) + . += "" + . += gear.restricted_roles.Join(";") + . += "" + . += "[gear.description]
      " + /datum/preferences/proc/is_loadout_slot_available(slot) var/list/L LAZYINITLIST(L) @@ -34,3 +763,11 @@ else if(L[slot_to_string(slot)] < DEFAULT_SLOT_AMT) return TRUE + +datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1) + ..() + character.give_genitals(TRUE) + character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially + character.canbearoused = arousable + if(icon_updates) + character.update_genitals() \ No newline at end of file diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 4d0f950f7f..599dfcf61f 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -1,4 +1,8 @@ /datum/preferences/proc/cit_character_pref_load(savefile/S) + //ipcs + S["feature_ipc_screen"] >> features["ipc_screen"] + + features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list) //Citadel features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"])) if(!features["mcolor2"] || features["mcolor"] == "#000") @@ -21,6 +25,8 @@ gear_points -= initial(path.cost) /datum/preferences/proc/cit_character_pref_save(savefile/S) + //ipcs + WRITE_FILE(S["feature_ipc_screen"], features["ipc_screen"]) //Citadel WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"]) WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"]) diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm index 776da896bd..8c88a7e193 100644 --- a/modular_citadel/code/modules/clothing/suits/suits.dm +++ b/modular_citadel/code/modules/clothing/suits/suits.dm @@ -8,6 +8,6 @@ /obj/item/clothing/suit/armor/hos/trenchcoat/cloak name = "armored trenchcloak" desc = "A trenchcoat enchanced with a special lightweight kevlar. This one appears to be designed to be draped over one's shoulders rather than worn normally.." - alternate_worn_icon = 'icons/mob/citadel/suit.dmi' + alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' icon_state = "hostrench" item_state = "hostrench" \ No newline at end of file diff --git a/modular_citadel/code/modules/clothing/under/turtlenecks.dm b/modular_citadel/code/modules/clothing/under/turtlenecks.dm index 2f40a08dc3..bcd0fd46e2 100644 --- a/modular_citadel/code/modules/clothing/under/turtlenecks.dm +++ b/modular_citadel/code/modules/clothing/under/turtlenecks.dm @@ -43,8 +43,8 @@ item_color = "bb_turtle" body_parts_covered = CHEST|ARMS can_adjust = 1 - icon = 'icons/obj/clothing/turtlenecks.dmi' - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/bb_sweater/black name = "black sweater" diff --git a/modular_citadel/code/modules/clothing/under/under.dm b/modular_citadel/code/modules/clothing/under/under.dm index 042273ac6a..2661c5a539 100644 --- a/modular_citadel/code/modules/clothing/under/under.dm +++ b/modular_citadel/code/modules/clothing/under/under.dm @@ -8,17 +8,17 @@ /obj/item/clothing/under/rank/security/skirt name = "security skirt" desc = "A tactical security skirt for officers complete with Nanotrasen belt buckle." - icon = 'icons/obj/clothing/cit_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi' icon_state = "secskirt" - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' item_state = "r_suit" item_color = "secskirt" /obj/item/clothing/under/rank/head_of_security/skirt name = "head of security's skirt" desc = "A security skirt decorated for those few with the dedication to achieve the position of Head of Security." - icon = 'icons/obj/clothing/cit_clothes.dmi' + icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi' icon_state = "hosskirt" - icon_override = 'icons/mob/citadel/uniforms.dmi' + icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi' item_state = "gy_suit" item_color = "hosskirt" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm similarity index 80% rename from code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm rename to modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index d70116cc82..a2d3ce7b85 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1,16 +1,16 @@ /datum/sprite_accessory var/extra = FALSE - var/extra_icon = 'icons/mob/mam_bodyparts.dmi' + var/extra_icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' var/extra_color_src = MUTCOLORS2 //The color source for the extra overlay. var/extra2 = FALSE - var/extra2_icon = 'icons/mob/mam_bodyparts.dmi' + var/extra2_icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' var/extra2_color_src = MUTCOLORS3 var/list/ckeys_allowed /* tbi eventually idk /datum/sprite_accessory/legs/digitigrade_mam name = "Anthro Digitigrade Legs" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' */ /datum/sprite_accessory/moth_wings/none @@ -37,128 +37,128 @@ name = "Red Panda" icon_state = "ailurus" color_src = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/bear name = "Bear" icon_state = "bear" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/bear name = "Bear" icon_state = "bear" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/bear name = "Bear" icon_state = "bear" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/catbig name = "Cat, Big" icon_state = "catbig" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/catbig name = "Cat, Big" icon_state = "catbig" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/cow name = "Cow" icon_state = "cow" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' gender_specific = 1 /datum/sprite_accessory/tails/human/cow name = "Cow" icon_state = "cow" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/cow name = "Cow" icon_state = "cow" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/eevee name = "Eevee" icon_state = "eevee" extra = TRUE - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/eevee name = "Eevee" icon_state = "eevee" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/eevee name = "Eevee" icon_state = "eevee" extra = TRUE - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' //datum/sprite_accessory/ears/elf // name = "Elf" // icon_state = "elf" -// icon = 'icons/mob/mam_bodyparts.dmi' +// icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' // ckeys_allowed = list("atiefling") /datum/sprite_accessory/ears/fennec name = "Fennec" icon_state = "fennec" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' hasinner = 1 /datum/sprite_accessory/tails/human/fennec name = "Fennec" icon_state = "fennec" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/fennec name = "Fennec" icon_state = "fennec" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/fox name = "Fox" icon_state = "fox" hasinner = 1 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/fox name = "Fox" icon_state = "fox" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/tails_animated/human/fox name = "Fox" icon_state = "fox" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/tails/human/horse name = "Horse" icon_state = "horse" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' color_src = HAIR /datum/sprite_accessory/tails_animated/human/horse name = "Horse" icon_state = "horse" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' color_src = HAIR /datum/sprite_accessory/tails/human/husky name = "Husky" icon_state = "husky" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/tails_animated/human/husky name = "Husky" icon_state = "husky" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/tails/human/kitsune @@ -166,92 +166,92 @@ icon_state = "kitsune" extra = TRUE extra_color_src = MUTCOLORS2 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/kitsune name = "Kitsune" icon_state = "kitsune" extra = TRUE extra_color_src = MUTCOLORS2 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/lab name = "Dog, Floppy" icon_state = "lab" hasinner = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/murid name = "Murid" icon_state = "murid" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/murid name = "Murid" icon_state = "murid" color_src = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/murid name = "Murid" icon_state = "murid" color_src = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/otie name = "Otusian" icon_state = "otie" hasinner= 1 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/otie name = "Otusian" icon_state = "otie" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/otie name = "Otusian" icon_state = "otie" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/rabbit name = "Rabbit" icon_state = "rabbit" hasinner= 1 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/rabbit name = "Rabbit" icon_state = "rabbit" color_src = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/rabbit name = "Rabbit" icon_state = "rabbit" color_src = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/sergal name = "Sergal" icon_state = "sergal" hasinner= 1 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/sergal name = "Sergal" icon_state = "sergal" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/sergal name = "Sergal" icon_state = "sergal" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/human/skunk name = "skunk" icon_state = "skunk" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/skunk name = "skunk" @@ -267,62 +267,62 @@ name = "Shark" icon_state = "shark" color_src = MUTCOLORS - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/shark/datashark name = "datashark" icon_state = "datashark" color_src = 0 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/squirrel name = "Squirrel" icon_state = "squirrel" hasinner= 1 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/squirrel name = "Squirrel" icon_state = "squirrel" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/squirrel name = "Squirrel" icon_state = "squirrel" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/ears/wolf name = "Wolf" icon_state = "wolf" hasinner = 1 - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails/human/wolf name = "Wolf" icon_state = "wolf" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/tails_animated/human/wolf name = "Wolf" icon_state = "wolf" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /****************************************** *************** Body Parts **************** *******************************************/ /datum/sprite_accessory/mam_ears - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/mam_ears/none name = "None" /datum/sprite_accessory/mam_tails - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/mam_tails/none name = "None" /datum/sprite_accessory/mam_tails_animated - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/mam_tails_animated/none name = "None" @@ -334,48 +334,48 @@ /datum/sprite_accessory/snouts/none name = "None" icon_state = "none" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' /datum/sprite_accessory/snouts/bird name = "Beak" icon_state = "bird" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' color_src = MUTCOLORS3 /datum/sprite_accessory/snouts/lcanid name = "Fox, Long" icon_state = "lcanid" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/snouts/scanid name = "Fox, Short" icon_state = "scanid" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/snouts/wolf name = "Wolf" icon_state = "wolf" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/snouts/husky name = "Husky" icon_state = "husky" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/snouts/otie name = "Otie" icon_state = "otie" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/snouts/sergal name = "Sergal" icon_state = "sergal" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' color_src = MUTCOLORS2 /****************************************** @@ -497,7 +497,7 @@ /datum/sprite_accessory/mam_ears/husky name = "Husky" icon_state = "wolf" - icon = 'icons/mob/mam_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mam_bodyparts.dmi' extra = TRUE /datum/sprite_accessory/mam_tails/husky @@ -564,19 +564,19 @@ icon_state = "cat" hasinner = 1 color_src = HAIR - icon = 'icons/mob/mutant_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' /datum/sprite_accessory/mam_tails/neko name = "Neko" icon_state = "cat" color_src = HAIR - icon = 'icons/mob/mutant_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' /datum/sprite_accessory/mam_tails_animated/neko name = "Neko" icon_state = "cat" color_src = HAIR - icon = 'icons/mob/mutant_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' /datum/sprite_accessory/mam_ears/otie name = "Otusian" @@ -688,7 +688,7 @@ /datum/sprite_accessory/mam_body_markings extra = TRUE extra2 = TRUE - icon = 'icons/mob/mam_body_markings.dmi' + icon = 'modular_citadel/icons/mob/mam_body_markings.dmi' /datum/sprite_accessory/mam_body_markings/none name = "None" @@ -802,10 +802,10 @@ ************ Taur Bodies ****************** *******************************************/ /datum/sprite_accessory/taur - icon = 'icons/mob/mam_taur.dmi' - extra_icon = 'icons/mob/mam_taur.dmi' + icon = 'modular_citadel/icons/mob/mam_taur.dmi' + extra_icon = 'modular_citadel/icons/mob/mam_taur.dmi' extra = TRUE - extra2_icon = 'icons/mob/mam_taur.dmi' + extra2_icon = 'modular_citadel/icons/mob/mam_taur.dmi' extra2 = TRUE center = TRUE dimension_x = 64 @@ -876,7 +876,7 @@ //Xeno Dorsal Tubes /datum/sprite_accessory/xeno_dorsal - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/none name = "None" @@ -884,21 +884,21 @@ /datum/sprite_accessory/xeno_dorsal/standard name = "Standard" icon_state = "standard" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/royal name = "Royal" icon_state = "royal" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/down name = "Dorsal Down" icon_state = "down" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' //Xeno Tail /datum/sprite_accessory/xeno_tail - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_tail/none name = "None" @@ -906,36 +906,45 @@ /datum/sprite_accessory/xeno_tail/standard name = "Xenomorph Tail" icon_state = "xeno" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' //Xeno Caste Heads /datum/sprite_accessory/xeno_head - icon = 'icons/mob/xeno_parts_greyscale.dmi' - -/datum/sprite_accessory/xeno_head/none - name = "None" + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/standard name = "Standard" icon_state = "standard" - icon = 'icons/mob/xeno_parts_greyscale.dmi' - + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/royal name = "royal" icon_state = "royal" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/hollywood name = "hollywood" icon_state = "hollywood" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/warrior name = "warrior" icon_state = "warrior" - icon = 'icons/mob/xeno_parts_greyscale.dmi' + icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' +// IPCs +/datum/sprite_accessory/screen + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + color_src = null + +/datum/sprite_accessory/screen/sunburst + name = "Sunburst" + icon_state = "sunburst" + +/datum/sprite_accessory/screen/static + name = "Static" + icon_state = "static" + // *** Snooooow flaaaaake *** /datum/sprite_accessory/mam_body_markings/guilmon diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species.dm b/modular_citadel/code/modules/mob/living/carbon/human/species.dm index 007194e9f1..74b5404c09 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species.dm @@ -55,3 +55,25 @@ playsound(target, 'sound/weapons/punchmiss.ogg', 25, 1, -1) target.visible_message("[user] attempted to push [target]!", \ "[user] attemped to push [target]!", null, COMBAT_MESSAGE_RANGE) + +//////////////////// +/////BODYPARTS///// +//////////////////// + + +/obj/item/bodypart/var/should_draw_citadel = FALSE + +/mob/living/carbon/proc/draw_citadel_parts(undo = FALSE) + if(!undo) + for(var/O in bodyparts) + var/obj/item/bodypart/B = O + B.should_draw_citadel = TRUE + else + for(var/O in bodyparts) + var/obj/item/bodypart/B = O + B.should_draw_citadel = FALSE + +/datum/species/proc/citadel_mutant_bodyparts(bodypart, mob/living/carbon/human/H) + switch(bodypart) + if("ipc_screen") + return GLOB.ipc_screens_list[H.dna.features["ipc_screen"]] \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm similarity index 88% rename from code/modules/mob/living/carbon/human/species_types/furrypeople.dm rename to modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index da56a69040..801d64f5cf 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -4,10 +4,11 @@ default_color = "4B4B4B" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "snout", "taur") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "None", "taur" = "None") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "husky", "mam_tail" = "husky", "mam_ears" = "husky", "mam_body_markings" = "husky", "taur" = "None") attack_verb = "claw" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/mammal liked_food = MEAT | FRIED disliked_food = TOXIC @@ -18,6 +19,13 @@ /datum/species/mammal/qualifies_for_rank(rank, list/features) return TRUE +/datum/species/mammal/on_species_gain(mob/living/carbon/human/C) + C.draw_citadel_parts() + . = ..() + +/datum/species/mammal/on_species_loss(mob/living/carbon/human/C) + C.draw_citadel_parts(TRUE) + . = ..() //AVIAN// /datum/species/avian name = "Avian" @@ -40,6 +48,14 @@ /datum/species/avian/qualifies_for_rank(rank, list/features) return TRUE +/datum/species/avian/on_species_gain(mob/living/carbon/human/C) + C.draw_citadel_parts() + . = ..() + +/datum/species/avian/on_species_loss(mob/living/carbon/human/C) + C.draw_citadel_parts(TRUE) + . = ..() + //AQUATIC// /datum/species/aquatic name = "Aquatic" @@ -62,6 +78,14 @@ /datum/species/aquatic/qualifies_for_rank(rank, list/features) return TRUE +/datum/species/aquatic/on_species_gain(mob/living/carbon/human/C) + C.draw_citadel_parts() + . = ..() + +/datum/species/aquatic/on_species_loss(mob/living/carbon/human/C) + C.draw_citadel_parts(TRUE) + . = ..() + //INSECT// /datum/species/insect name = "Insect" @@ -83,6 +107,14 @@ /datum/species/insect/qualifies_for_rank(rank, list/features) return TRUE +/datum/species/insect/on_species_gain(mob/living/carbon/human/C) + C.draw_citadel_parts() + . = ..() + +/datum/species/insect/on_species_loss(mob/living/carbon/human/C) + C.draw_citadel_parts(TRUE) + . = ..() + //Alien// /datum/species/xeno // A cloning mistake, crossing human and xenomorph DNA @@ -102,6 +134,14 @@ damage_overlay_type = "xeno" liked_food = MEAT +/datum/species/xeno/on_species_gain(mob/living/carbon/human/C) + C.draw_citadel_parts() + . = ..() + +/datum/species/xeno/on_species_loss(mob/living/carbon/human/C) + C.draw_citadel_parts(TRUE) + . = ..() + //Praise the Omnissiah, A challange worthy of my skills - HS //EXOTIC// diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm new file mode 100644 index 0000000000..93823c03c8 --- /dev/null +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -0,0 +1,23 @@ +/datum/species/ipc + name = "IPC" + id = "ipc" + say_mod = "beeps" + default_color = "00FF00" + blacklisted = 0 + sexes = 0 + species_traits = list(MUTCOLORS,NOEYES) + mutant_bodyparts = list("ipc_screen") + default_features = list("ipc_screen" = "Sunburst") + species_traits = list(MUTCOLORS) + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc + +/datum/species/ipc/on_species_gain(mob/living/carbon/human/C) + C.draw_citadel_parts() + . = ..() + +/datum/species/ipc/on_species_loss(mob/living/carbon/human/C) + C.draw_citadel_parts(TRUE) + . = ..() + +/datum/species/ipc/get_spans() + return SPAN_ROBOT \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm index dd7d492575..5766d3ffcb 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -48,7 +48,7 @@ can_be_pushed = FALSE hat_offset = INFINITY sleeper_overlay = "ksleeper" - cyborg_icon_override = 'icons/mob/widerobot.dmi' + cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' has_snowflake_deadsprite = TRUE dogborg = TRUE cyborg_pixel_offset = -16 @@ -79,7 +79,7 @@ can_be_pushed = FALSE hat_offset = INFINITY sleeper_overlay = "msleeper" - cyborg_icon_override = 'icons/mob/widerobot.dmi' + cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' has_snowflake_deadsprite = TRUE dogborg = TRUE cyborg_pixel_offset = -16 @@ -101,7 +101,7 @@ hat_offset = INFINITY clean_on_move = TRUE sleeper_overlay = "jsleeper" - cyborg_icon_override = 'icons/mob/widerobot.dmi' + cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' has_snowflake_deadsprite = TRUE cyborg_pixel_offset = -16 dogborg = TRUE @@ -161,7 +161,7 @@ cyborg_base_icon = "orepup" moduleselect_icon = "orepup" sleeper_overlay = "osleeper" - cyborg_icon_override = 'icons/mob/widerobot.dmi' + cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' has_snowflake_deadsprite = TRUE cyborg_pixel_offset = -16 diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm index 28dfeb89d6..9ab141e56e 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm @@ -42,7 +42,7 @@ /obj/item/ammo_box/magazine/flechette name = "flechette magazine (armor piercing)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "flechettemag" ammo_type = /obj/item/ammo_casing/caseless/flechetteap caliber = "flechette" @@ -58,7 +58,7 @@ /obj/item/gun/ballistic/automatic/flechette name = "\improper CX Flechette Launcher" desc = "A flechette launching machine pistol with an unconventional bullpup frame." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "flechettegun" item_state = "gun" w_class = WEIGHT_CLASS_NORMAL diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm index 487d5111fc..4a29dfa3f2 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm @@ -3,7 +3,7 @@ /obj/item/gun/ballistic/automatic/pistol/antitank name = "Anti Tank Pistol" desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate your wrist." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "atp" item_state = "pistol" recoil = 4 @@ -36,7 +36,7 @@ /obj/item/gun/ballistic/automatic/pistol/stealth name = "stealth pistol" desc = "A unique bullpup pistol with a compact frame. Has an integrated surpressor." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "stealthpistol" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/m10mm @@ -61,7 +61,7 @@ /obj/item/gun/ballistic/automatic/toy/pistol/stealth name = "foam force stealth pistol" desc = "A small, easily concealable toy bullpup handgun. Ages 8 and up." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "foamsp" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/toy/pistol @@ -108,7 +108,7 @@ obj/item/projectile/bullet/c10mm/soporific /obj/item/ammo_box/magazine/m10mm/soporific name = "pistol magazine (10mm soporific)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "9x19pS" desc = "A gun magazine. Loaded with rounds which inject the target with a variety of illegal substances to induce sleep in the target." ammo_type = /obj/item/ammo_casing/c10mm/soporific @@ -123,7 +123,7 @@ obj/item/projectile/bullet/c10mm/soporific /obj/item/gun/ballistic/automatic/pistol/modular name = "modular pistol" desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "cde" can_unsuppress = TRUE obj_flags = UNIQUE_RENAME @@ -154,7 +154,7 @@ obj/item/projectile/bullet/c10mm/soporific /////////RAYGUN MEMES///////// /obj/item/projectile/beam/lasertag/ray //the projectile, compatible with regular laser tag armor - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "ray" name = "ray bolt" eyeblur = 0 @@ -166,7 +166,7 @@ obj/item/projectile/bullet/c10mm/soporific /obj/item/gun/energy/laser/practice/raygun name = "toy ray gun" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "raygun" desc = "A toy laser with a classic, retro feel and look. Compatible with existing laser tag systems." ammo_type = list(/obj/item/ammo_casing/energy/laser/raytag) @@ -182,7 +182,7 @@ obj/item/projectile/bullet/c10mm/soporific This model is coated with a special polychromic material. \ Has a small warning on the receiver that boldly states 'WARNING: WILL DETONATE UPON UNAUTHORIZED USE'. \ Uses 9mm bullets loaded into proprietary magazines." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "p37" w_class = WEIGHT_CLASS_NORMAL spawnwithmagazine = FALSE @@ -203,15 +203,15 @@ obj/item/projectile/bullet/c10mm/soporific ///Defining all the colourable bits and displaying them/// /obj/item/gun/ballistic/automatic/pistol/p37/update_icon() - var/mutable_appearance/frame_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_frame") - var/mutable_appearance/receiver_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_receiver") - var/mutable_appearance/body_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_body") - var/mutable_appearance/barrel_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_barrel") - var/mutable_appearance/tip_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_tip") - var/mutable_appearance/grip_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_grip") - var/mutable_appearance/energy_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_light") - var/mutable_appearance/arm_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_arm") - var/mutable_appearance/arm_overlay_e = mutable_appearance('icons/obj/guns/cit_guns.dmi', "p37_arm-e") + var/mutable_appearance/frame_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_frame") + var/mutable_appearance/receiver_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_receiver") + var/mutable_appearance/body_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_body") + var/mutable_appearance/barrel_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_barrel") + var/mutable_appearance/tip_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_tip") + var/mutable_appearance/grip_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_grip") + var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_light") + var/mutable_appearance/arm_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_arm") + var/mutable_appearance/arm_overlay_e = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "p37_arm-e") if(frame_color) frame_overlay.color = frame_color @@ -346,7 +346,7 @@ obj/item/projectile/bullet/c10mm/soporific /obj/item/ammo_box/magazine/m9mm/p37 name = "\improper P37 magazine (9mm frangible)" desc = "A gun magazine. Loaded with plastic composite rounds which fragment upon impact to minimize collateral damage." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "11mm" //topkek ammo_type = /obj/item/ammo_casing/c9mm/frangible caliber = "9mm" diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index cd4ec113de..1fbd32e992 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -3,7 +3,7 @@ /obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them name = "\improper X9 Assault Rifle" desc = "A rather old design of a cheap, reliable assault rifle made for combat against unknown enemies. Uses 5.56mm ammo." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "x9" item_state = "arg" slot_flags = 0 @@ -19,7 +19,7 @@ /obj/item/ammo_box/magazine/toy/x9 name = "foam force X9 magazine" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "toy9magazine" max_ammo = 30 multiple_sprites = 2 @@ -28,7 +28,7 @@ /obj/item/gun/ballistic/automatic/x9/toy name = "\improper Foam Force X9" desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "toy9" can_suppress = 0 obj_flags = 0 @@ -43,7 +43,7 @@ //////projectiles////// /obj/item/projectile/bullet/mags - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile" damage = 15 armour_penetration = 10 @@ -53,7 +53,7 @@ light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/nlmags //non-lethal boolets - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-nl" damage = 0 knockdown = 0 @@ -70,14 +70,14 @@ /obj/item/ammo_casing/caseless/amags desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." caliber = "mags" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/mags /obj/item/ammo_casing/caseless/anlmags desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." caliber = "mags" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmags @@ -85,7 +85,7 @@ /obj/item/ammo_box/magazine/mmag/small name = "magpistol magazine (non-lethal disabler)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "nlmagmag" ammo_type = /obj/item/ammo_casing/caseless/anlmags caliber = "mags" @@ -94,7 +94,7 @@ /obj/item/ammo_box/magazine/mmag/small/lethal name = "magpistol magazine (lethal)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "smallmagmag" ammo_type = /obj/item/ammo_casing/caseless/amags @@ -103,7 +103,7 @@ /obj/item/gun/ballistic/automatic/pistol/mag name = "magpistol" desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magpistol" force = 10 fire_sound = 'sound/weapons/magpistol.ogg' @@ -160,7 +160,7 @@ /obj/item/projectile/bullet/reusable/foam_dart/mag name = "magfoam dart" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-toy" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag light_range = 2 @@ -178,7 +178,7 @@ /obj/item/gun/ballistic/shotgun/toy/mag name = "foam force magpistol" desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "toymag" item_state = "gun" mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag @@ -198,7 +198,7 @@ ///projectiles/// /obj/item/projectile/bullet/magrifle - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large" damage = 20 armour_penetration = 25 @@ -208,7 +208,7 @@ light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/nlmagrifle //non-lethal boolets - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large-nl" damage = 0 knockdown = 0 @@ -224,14 +224,14 @@ /obj/item/ammo_casing/caseless/amagm desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." caliber = "magm" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/magrifle /obj/item/ammo_casing/caseless/anlmagm desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." caliber = "magm" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmagrifle @@ -239,7 +239,7 @@ /obj/item/ammo_box/magazine/mmag/ name = "magrifle magazine (non-lethal disabler)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" ammo_type = /obj/item/ammo_casing/caseless/anlmagm caliber = "magm" @@ -248,7 +248,7 @@ /obj/item/ammo_box/magazine/mmag/lethal name = "magrifle magazine (lethal)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" ammo_type = /obj/item/ammo_casing/caseless/amagm max_ammo = 24 @@ -258,7 +258,7 @@ /obj/item/gun/ballistic/automatic/magrifle name = "\improper Magnetic Rifle" desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magrifle" item_state = "arg" slot_flags = 0 @@ -309,7 +309,7 @@ /obj/item/ammo_box/magazine/toy/foamag name = "foam force magrifle magazine" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "foamagmag" max_ammo = 24 multiple_sprites = 2 @@ -346,7 +346,7 @@ ///projectiles/// /obj/item/projectile/bullet/mags/hyper - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile" damage = 10 armour_penetration = 10 @@ -373,7 +373,7 @@ /obj/item/ammo_casing/caseless/ahyper desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle." caliber = "hypermag" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "hyper-casing-live" projectile_type = /obj/item/projectile/bullet/mags/hyper pellets = 12 @@ -388,7 +388,7 @@ /obj/item/ammo_box/magazine/mhyper name = "hyper-burst rifle magazine" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "hypermag-4" ammo_type = /obj/item/ammo_casing/caseless/ahyper caliber = "hypermag" @@ -409,7 +409,7 @@ /obj/item/gun/ballistic/automatic/hyperburst name = "\improper Hyper-Burst Rifle" desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "hyperburst" item_state = "arg" slot_flags = 0 @@ -429,7 +429,7 @@ ///toy memes/// /obj/item/projectile/beam/lasertag/mag //the projectile, compatible with regular laser tag armor - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-toy" name = "lasertag magbolt" forcedodge = TRUE //for penetration memes @@ -450,7 +450,7 @@ name = "toy hyper-burst launcher" desc = "A toy laser with a unique beam shaping lens that projects harmless bolts capable of going through objects. Compatible with existing laser tag systems." ammo_type = list(/obj/item/ammo_casing/energy/laser/magtag) - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "toyburst" clumsy_check = FALSE obj_flags = 0 diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm index a9824c7d33..01ab1c536f 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm @@ -4,7 +4,7 @@ /obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them name = "\improper X9 Assault Rifle" desc = "A rather old design of a cheap, reliable assault rifle made for combat against unknown enemies. Uses 5.56mm ammo." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "x9" item_state = "arg" slot_flags = 0 @@ -20,7 +20,7 @@ /obj/item/ammo_box/magazine/toy/x9 name = "foam force X9 magazine" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "toy9magazine" max_ammo = 30 multiple_sprites = 2 @@ -29,7 +29,7 @@ /obj/item/gun/ballistic/automatic/x9/toy name = "\improper Foam Force X9" desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "toy9" can_suppress = 0 obj_flags = 0 @@ -84,7 +84,7 @@ /obj/item/ammo_box/magazine/flechette name = "flechette magazine (armor piercing)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "flechettemag" ammo_type = /obj/item/ammo_casing/caseless/flechetteap caliber = "flechette" @@ -100,7 +100,7 @@ /obj/item/gun/ballistic/automatic/flechette name = "\improper CX Flechette Launcher" desc = "A flechette launching machine pistol with an unconventional bullpup frame." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "flechettegun" item_state = "gun" w_class = WEIGHT_CLASS_NORMAL @@ -163,7 +163,7 @@ *////////////////////////////////////////////////////////////// /obj/item/ammo_box/magazine/toy/AM4B name = "foam force AM4-B magazine" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "AM4MAG-60" max_ammo = 60 multiple_sprites = 0 @@ -172,7 +172,7 @@ /obj/item/gun/ballistic/automatic/AM4B name = "AM4-B" desc = "A Relic from a bygone age. Nobody quite knows why it's here. Has a polychromic coating." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "AM4" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/toy/AM4B @@ -187,7 +187,7 @@ /obj/item/gun/ballistic/automatic/AM4B/update_icon() ..() - var/mutable_appearance/body_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "AM4-Body") + var/mutable_appearance/body_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "AM4-Body") if(body_color) body_overlay.color = body_color cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other @@ -212,7 +212,7 @@ /obj/item/ammo_box/magazine/toy/AM4C name = "foam force AM4-C magazine" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "AM4MAG-32" max_ammo = 32 multiple_sprites = 0 @@ -221,7 +221,7 @@ /obj/item/gun/ballistic/automatic/AM4C name = "AM4-C" desc = "A Relic from a bygone age. This one seems newer, yet less effective." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "AM4C" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/toy/AM4C diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm index 5b42f9686a..d16df6b285 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm @@ -2,7 +2,7 @@ /obj/item/projectile/bullet/spinfusor name ="spinfusor disk" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state= "spinner" damage = 30 dismemberment = 25 @@ -17,7 +17,7 @@ desc = "A magnetic disk designed specifically for the Stormhammer magnetic cannon. Warning: extremely volatile!" projectile_type = /obj/item/projectile/bullet/spinfusor caliber = "spinfusor" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "disk" throwforce = 15 //still deadly when thrown throw_speed = 3 @@ -39,7 +39,7 @@ /obj/item/gun/ballistic/automatic/spinfusor name = "Stormhammer Magnetic Cannon" desc = "An innovative weapon utilizing mag-lev technology to spin up a magnetic fusor and launch it at extreme velocities." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "spinfusor" item_state = "spinfusor" mag_type = /obj/item/ammo_box/magazine/internal/spinfusor @@ -68,7 +68,7 @@ /obj/item/ammo_box/aspinfusor name = "ammo box (spinfusor disks)" - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "spinfusorbox" ammo_type = /obj/item/ammo_casing/caseless/spinfusor max_ammo = 8 diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index fb488fcca4..0f7db73d6e 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -16,10 +16,10 @@ obj/item/gun/energy/e_gun/cx name = "\improper CX Model D Energy Gun" desc = "An overpriced hybrid energy gun with two settings: disable, and kill. Manufactured by CX Armories. Has a polychromic coating." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "cxe" - lefthand_file = 'icons/mob/citadel/guns_lefthand.dmi' - righthand_file = 'icons/mob/citadel/guns_righthand.dmi' + lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) flight_x_offset = 15 flight_y_offset = 10 @@ -27,7 +27,7 @@ obj/item/gun/energy/e_gun/cx obj/item/gun/energy/e_gun/cx/update_icon() ..() - var/mutable_appearance/body_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "cxegun_body") + var/mutable_appearance/body_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "cxegun_body") if(body_color) body_overlay.color = body_color add_overlay(body_overlay) diff --git a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm index 25ae98e72a..61996a777a 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm @@ -21,7 +21,7 @@ /obj/item/gun/energy/laser/carbine name = "VGS blaster carbine" desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal blaster carbine." - icon = 'icons/obj/guns/cit_guns.dmi' + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "lasernew" item_state = "laser" force = 10 diff --git a/icons/mob/citadel/glasses.dmi b/modular_citadel/icons/mob/citadel/glasses.dmi similarity index 100% rename from icons/mob/citadel/glasses.dmi rename to modular_citadel/icons/mob/citadel/glasses.dmi diff --git a/icons/mob/citadel/guns_lefthand.dmi b/modular_citadel/icons/mob/citadel/guns_lefthand.dmi similarity index 100% rename from icons/mob/citadel/guns_lefthand.dmi rename to modular_citadel/icons/mob/citadel/guns_lefthand.dmi diff --git a/icons/mob/citadel/guns_righthand.dmi b/modular_citadel/icons/mob/citadel/guns_righthand.dmi similarity index 100% rename from icons/mob/citadel/guns_righthand.dmi rename to modular_citadel/icons/mob/citadel/guns_righthand.dmi diff --git a/icons/mob/citadel/head.dmi b/modular_citadel/icons/mob/citadel/head.dmi similarity index 100% rename from icons/mob/citadel/head.dmi rename to modular_citadel/icons/mob/citadel/head.dmi diff --git a/icons/mob/citadel/masks.dmi b/modular_citadel/icons/mob/citadel/masks.dmi similarity index 100% rename from icons/mob/citadel/masks.dmi rename to modular_citadel/icons/mob/citadel/masks.dmi diff --git a/icons/mob/citadel/neck.dmi b/modular_citadel/icons/mob/citadel/neck.dmi similarity index 100% rename from icons/mob/citadel/neck.dmi rename to modular_citadel/icons/mob/citadel/neck.dmi diff --git a/icons/mob/citadel/shoes.dmi b/modular_citadel/icons/mob/citadel/shoes.dmi similarity index 100% rename from icons/mob/citadel/shoes.dmi rename to modular_citadel/icons/mob/citadel/shoes.dmi diff --git a/icons/mob/citadel/suit.dmi b/modular_citadel/icons/mob/citadel/suit.dmi similarity index 100% rename from icons/mob/citadel/suit.dmi rename to modular_citadel/icons/mob/citadel/suit.dmi diff --git a/icons/mob/citadel/uniforms.dmi b/modular_citadel/icons/mob/citadel/uniforms.dmi similarity index 100% rename from icons/mob/citadel/uniforms.dmi rename to modular_citadel/icons/mob/citadel/uniforms.dmi diff --git a/icons/mob/citadel_refs/borg HUDs.dmi b/modular_citadel/icons/mob/citadel_refs/borg HUDs.dmi similarity index 100% rename from icons/mob/citadel_refs/borg HUDs.dmi rename to modular_citadel/icons/mob/citadel_refs/borg HUDs.dmi diff --git a/icons/mob/citadel_refs/cit_tail_reference.dmi b/modular_citadel/icons/mob/citadel_refs/cit_tail_reference.dmi similarity index 100% rename from icons/mob/citadel_refs/cit_tail_reference.dmi rename to modular_citadel/icons/mob/citadel_refs/cit_tail_reference.dmi diff --git a/icons/mob/citadel_refs/cit_wings.dmi b/modular_citadel/icons/mob/citadel_refs/cit_wings.dmi similarity index 100% rename from icons/mob/citadel_refs/cit_wings.dmi rename to modular_citadel/icons/mob/citadel_refs/cit_wings.dmi diff --git a/icons/mob/citadel_refs/dogborg animations.dmi b/modular_citadel/icons/mob/citadel_refs/dogborg animations.dmi similarity index 100% rename from icons/mob/citadel_refs/dogborg animations.dmi rename to modular_citadel/icons/mob/citadel_refs/dogborg animations.dmi diff --git a/icons/mob/citadel_refs/furry_parts_greyscale.dmi b/modular_citadel/icons/mob/citadel_refs/furry_parts_greyscale.dmi similarity index 100% rename from icons/mob/citadel_refs/furry_parts_greyscale.dmi rename to modular_citadel/icons/mob/citadel_refs/furry_parts_greyscale.dmi diff --git a/icons/mob/citadel_refs/furryrace_references.dmi b/modular_citadel/icons/mob/citadel_refs/furryrace_references.dmi similarity index 100% rename from icons/mob/citadel_refs/furryrace_references.dmi rename to modular_citadel/icons/mob/citadel_refs/furryrace_references.dmi diff --git a/icons/mob/citadel_refs/furrytail_references.dmi b/modular_citadel/icons/mob/citadel_refs/furrytail_references.dmi similarity index 100% rename from icons/mob/citadel_refs/furrytail_references.dmi rename to modular_citadel/icons/mob/citadel_refs/furrytail_references.dmi diff --git a/icons/mob/citadel_refs/snowflake_parts.dmi b/modular_citadel/icons/mob/citadel_refs/snowflake_parts.dmi similarity index 100% rename from icons/mob/citadel_refs/snowflake_parts.dmi rename to modular_citadel/icons/mob/citadel_refs/snowflake_parts.dmi diff --git a/icons/mob/citadel_refs/taur_referencesVOREbellies.dmi b/modular_citadel/icons/mob/citadel_refs/taur_referencesVOREbellies.dmi similarity index 100% rename from icons/mob/citadel_refs/taur_referencesVOREbellies.dmi rename to modular_citadel/icons/mob/citadel_refs/taur_referencesVOREbellies.dmi diff --git a/icons/mob/citadel_refs/widerobot_vr.dmi b/modular_citadel/icons/mob/citadel_refs/widerobot_vr.dmi similarity index 100% rename from icons/mob/citadel_refs/widerobot_vr.dmi rename to modular_citadel/icons/mob/citadel_refs/widerobot_vr.dmi diff --git a/icons/mob/mam_body_markings.dmi b/modular_citadel/icons/mob/mam_body_markings.dmi similarity index 100% rename from icons/mob/mam_body_markings.dmi rename to modular_citadel/icons/mob/mam_body_markings.dmi diff --git a/icons/mob/mam_bodyparts.dmi b/modular_citadel/icons/mob/mam_bodyparts.dmi similarity index 100% rename from icons/mob/mam_bodyparts.dmi rename to modular_citadel/icons/mob/mam_bodyparts.dmi diff --git a/icons/mob/mam_taur.dmi b/modular_citadel/icons/mob/mam_taur.dmi similarity index 100% rename from icons/mob/mam_taur.dmi rename to modular_citadel/icons/mob/mam_taur.dmi diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f89d815b16f134f7a59adf216cd0def1ca2b256f GIT binary patch literal 29990 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 delta 244 zcmaFGv6;!YGr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`su@r1%4TLR{zVYqZa7@u-*< z*uEla+U^j03y=!Nk|4ie28U-i(tw=YiO)RiEzS2Y*|I`KJ+!miSatIX35~Q9M`wmj znK7FyQCoY*ubmCOYz&7irC+i1dn*FI~z>Niab~(IcnV`3z z^#9B&!7JP6nI8Wyr0^>|Vv9%1n^hhQFFZV8mtdXup*Um{zopr0Ecc~NdN!< diff --git a/icons/obj/clothing/vg_clothes.dmi b/modular_citadel/icons/obj/clothing/vg_clothes.dmi similarity index 100% rename from icons/obj/clothing/vg_clothes.dmi rename to modular_citadel/icons/obj/clothing/vg_clothes.dmi diff --git a/modular_citadel/icons/obj/food/food.dmi b/modular_citadel/icons/obj/food/food.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ea66b3d48a3a077b4650b248bbad226947f71adc GIT binary patch literal 3363 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 literal 0 HcmV?d00001 diff --git a/modular_citadel/icons/obj/foods.dmi b/modular_citadel/icons/obj/foods.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3349da820319d45b0d6de301a847349c6d169430 GIT binary patch literal 898 zcmV-|1AY97P)(^axw*NI>iz(A zkN|(28X6iRA|lt<*S+%pz`(%w*p}|suZm6-kyaGHiEDd76n8)r+_a$1mwcgeJf(JA zmTXjBFBES)6wa({i(pIRi<_$e0004WQchCV=- z0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zi zl2jm5sW>||C$%I$FE=%@M2U+tC9|j)C~U~ZnO2mTn+jpW6@wHNr>15X6IAIL;7pu} z`6U@dDNM>NO2Ma4S;5uM1snnZ;+jl*U8L--0006VNklWG^hqvOE`L=hCO5QIbdC-e$ez?4ve37kZd*FXIOqEcgBGfkG`VUX&&G`!Nr-xP(+n1pRKuaxWEAc`hZ{`P@zv+x)v~Ax8{xsk++z8fvg##Gu z$JL%rZ8!gfuG$XG;Od*9(bv#Nf&l`k3;ju*uNsPn#x}!XNAlozz3E;3Z~9%s@q&oq zGJ3%1_g&wauAhGaH(k&03u!L;+50)a@1FWUL14%E`TO1dw_gLWV`BX4-_=J&Mg0rC Y18%4=gXPaHYXATM07*qoM6N<$f{%u$6#xJL literal 0 HcmV?d00001 diff --git a/icons/obj/guns/VGguns.dmi b/modular_citadel/icons/obj/guns/VGguns.dmi similarity index 100% rename from icons/obj/guns/VGguns.dmi rename to modular_citadel/icons/obj/guns/VGguns.dmi diff --git a/icons/obj/guns/cit_guns.dmi b/modular_citadel/icons/obj/guns/cit_guns.dmi similarity index 100% rename from icons/obj/guns/cit_guns.dmi rename to modular_citadel/icons/obj/guns/cit_guns.dmi diff --git a/modular_citadel/sound/voice/scream_cat.ogg b/modular_citadel/sound/voice/scream_cat.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cea4c2f3893c57cd5cd4dc219012cc158597bd29 GIT binary patch literal 11599 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 S{Z3K@aAGTVQ8@`pr7ZU&n|F~?q z{t~p)Z^dAOFn@2~D{g*!EZDiHe|y58|NUD7GunIdKd-$fVNlBhKF`WtvHS0rEaETD zNvPYx&Bs;B$k#>4)9s4cKDv;ukgT+fthB7OoRGK?-pkF$*U8Vxiy%P*iL*hsDMmx< zq9N8m^E^gPPL6$#qid>vUd_+J*U27litHHzAqDeJ?+%||qRfSqD-ZPUOA)2G$}+4rF%TBtrUtx z@|ze-(57JGFm8Mf@p}~VqV915hlmHkDZclQ=zbjhb}7qDm6U;cg+}f!>^mqrRq&MAQR4`aBauO&tZ&AV%V_ z9|q&DF%J!?StS(78qph%-J5448p&VA1dIVd#$@rvz$2rd!htLRG@0UYpTy&ip&mHs za_@^ktBwSq(T7tvfwTRY$i;V(7yHj$!iEkgVzFC9+|XVTl6Tx+SF}z+N*=#ZGm9fH z1FI!15Q0p8LA)7>_@{Zm6>-#U(Tdp+zqp&uDAyBjW(ht=2WEA>PR!1x`*owl()?PK z=hFRRe4S-nA-Qxvj+@RBe<||oSq%@$9I&*SN5Ud|Nm_-M2&HNhW;XoKWXpK&rO;ozo`#tF-#5YA2r4 zg-V5f=X-r4F6=-O&U(;kYzuGC<3F}doY*E#4@KEqlAQjR@>g|8lW?Ra!(T=6cpbWA z<}x1|YyMMBA!xwHO9F4MifH?av_Fv4eJFpiT=i|gs=>y&OPmJ%rsvHG=f^6}k0crl z5e!BMSj$SBWfgv85N}JuPi%+&TOl6aS5XImd7ZdiotRvmxM}4FBCsssA^`aId{jIp zM>%d<=YfbWDOZ;~W0~#jp6_yv@&vvwg8sXa03e?FNh1G~MD{0C_A$L|C#&pycdB?= z*-{<#e=1V@4jvCcZ-PL3f&k>;x)1@|w=NV5aNxtz8V@-= zMpU@cMwlky!MF?^*G;l)HjD4L<}~uAAY`-y;2gBqvzy4 z0BS;e2kAU^0N+m}juNnAB>d<$&YIi*5*9yZiW^nJ4sGE^wn8lji4NaXv77q+M74f` z(*O}~O~m20^-V|yLrG5kMEq!y6E47MWLu%1fa}LPjSz4n{!ZrAILocjeqz)_l9R2u zlO?Y|Zad0)C~1a(8#8w@S2BZot%stf28s45szz7{8P_9^GbiF~&2dA63jK+D$RnmW zOMeI%XFf>mk>5ieRm7Q-_K?j<#4!RS>}2^JYraLa97>uR#7`;VhPJVmTTxK&9&#-a z$E%Lr3^nnOnj$z&3`I>?df}8weZ)}vB>a?xlO-x_%7Qeuo#X^TS>Q)_%`Ca2ZNERB z*$SNwB;xqI#^$=}R#{qCb9XxW2k;Ilp<|ZLwgGWdyebWA(}k3hH0nu~0!ikE<)xPL zo%*tS)TJE?)I2fT{A{Uy{a1adWX_kL&F-Der5~zfKGu6lHuwm1dMtIwEY)ACB8J!o zGQC_BG;pM-}i!@zx!JK2tw+2WQY@tFMix@^}v zYOY&;p&QxFD%B-5-;GixkxG?xOLem%JEx`=q~yD%Qaw`hpT^`%bmqHvl)0sreW@$M zKc{+*X1nb-JyY`~pO+PlQok(L}OFtsR%?0${xN+F9=DDD(WF@+*& z4fUqZ7v_t_K%D&IRLY6Ye9DJ1H%gT!g@S)h`SP<2zf=d!1W(C7l}2&jLoSmXtve0P zY7aSeE+rqDhG#0}q&2x9bq{&=PCf)KnU+uKAkC#vAmqh6WRHDh_YV}e)IH==Y56BQ zsra4xrH(Q$3dIvbUfP?aXJ`Ft2W4en!To8Jof<7$?JRq`v#;RZG$>M?W%xtoo;!7} zssEVOiP5rCJ9W^kRy(NPMUrRf=c`wP1ZiSwMT+l=T zKMKVO595mpV{$LXO=U48loWCbt8QB1uR`F?^4@REb!nI8g2q8eYG@bBGq$ZtkWIRSsI4_X{+O8*| z*Q%W+pSZl^d4Lpy45B5GyZ6rBfARkBmCk?H@n1es_FQ53og8%JG?9bKhg| zDSjBMyO5CFTy8F>^;^^}4Cd~$*;J2}+zK-fs=}O=RguC_y5HN{3T_W7l!g0s%0LyA z_woKC`J)As^2#7waJW>ZS+~!^?w>9V=gZp@nMY#oq2{1Lk4Eh^8H7#ungpcg6JEc) zIEjqk?}ZX4KQ@*9WSjmllyO55vlmK{NIh|=f_fv7DtpyFwO3*E_M41ZiN*lf-9P|z zIBU_dbk0~>?!DlIQjl-~QYNN5QX@{|KC4E@B{^12eN-Qi#jF zZ*cUQ44TLY3js8YQCWE^T5NnR@=$uFiRt2Aq6YvAn1sSA6C6F7T2xxo*w#BdIll&_ zh|t9iz5}4F9)A1w>cf=@8gd5BnJBuJp+P*i5|WIp}qt{*KqZbFXTAd3oG_Z z*~?e_{2FQ}R_{)(*RfR$cG$xjjSc@)YVoD2!=PqX!hu7s5tmbbu+t&I>p|A-&w<&QGMT zCZD}~_#~~|)uiOtCz8xodD&0DX-#;t>mFUPSh_C!emLdO!{UuDJ6A%q8aTdv56hWa zbC`V1q-JDC-b(-|CD{hOsn}+r0qT@)x-?1qnf_%t`bV?7FP=U}Dqs7&PUK`fEzZgG zr*JU!o7#)eVE>lUM>4OZ(@#%q#67RCtrS`8!D#99b+W6X4moTLnOvnY=RC|L(@LOS zxw8Gxba^TE`7!^d+@-$$U8`xo>VA5xWHhTkIU6_N`JKl;SI>5lA3?>zASq_8;%F77t z41$j+V@3kF-KvSOg+)IBdxNbl7hT=?l6i4qDkCrQtypGjT(}#UWatMz@H)`w`VKH) z%$?RYWgT9smC|#S81n*)CR!-N|Jc9-oe+E-%cSRrZQo8?J8zqj-?aJ57fZj9fDIqr zX%ZfRe~(k3_w;CtrmLZaY$-UKvHgW?SnZ!+Z&cqU_SA8cw;Ys8n;mr%k3=sfrQ2Sq zjXkw(n4dGyTK+2Sk<9?jCvRQod&gJs=_Xq3{NbsjaP#ym+t#by?K*BZiz@Ucml% zprF+~yg&oyLnLalkZ?J*KQb%>_XAFs7%^<_K6XVI(+<>rNEcS^_KdJz%K4oSaA~cM z)F2txVD6I+sG7%YNycQ=(@FC-jLEO+Z3185Tkb37kXh5{M>?{-XWL(Kf?fso;vk?N zGmiFtM+_Bwa@{GRBSUCdsT3iPMqO;8VG=fG)ea2a_$@`t9*X#IYs>4#kEI`9?B68c zc<%meev-r);A*W`A@rlE-}91LY3{f2#q`UknWK|UeF>rb&Z<+8J`TK-$RvD~n zkW)VsX*@~38iAY`;~-rvHn#z2bKmsAo`@Z>#`kojZ;1y`9JJ1}+x&9A%G!qwFOOCB zSt!mJW*BAdu(ry!#PMvHs7c+A*R7e>Xjaw-O!bT1wFW=%W_|JvsLgR2b=dMvp|2+n zW(q1KMQNfn+LU9Cukbi3#02w7&`jRieLvw_rx2AZbN-Eq+1zI(`l!3Pe9|}5oPq?Z zzplR*8|erxX{)^d&fnM0KrN&1RritmhwIq29U|Zd`3ZYL$M!M*2X0G#{J`~>9amN7 zC;e`yX3(M&VRpUJB(!j*P*M(s?BAZalsbvO0M^)T&bCY^Pn{~7$jtpvIquNYyV|`? zdE8Tzu|PS2{@%{}?ST3wDkD1FXEib-gNH*$-qrUsT)Y>ks)DdOLC&;qqg3aX=mOG? zy+EuH$KV-v^ayx)BIyI6_#NKJ+kiW6x%-wnkZO~S#uj~iq76{wk7BzU0EBOc|cgI zV0_vqL@)PZQE&WsWZTCftx|W=(HjDArpxVD(!Q>*zf3bmjj`PK7!c6Dt8hr;q8xvV zw^p$x{`#3~U+V|>O#FL|?=u>ycP4yPf1fL!z|!Wb|9aaW_B(b1EJ>_Lh^plE=`$+#Enqj;Vm z-=IO9Q$0#nt9-!In>ES%fF%JX)3CDC{`tehNaQJ$aCg_09G#{?yPNF`RAP1v#XCPj z^pazfT9piv^x{Qo-?H=gTI;X2IpXyxRwH%6uaDO?%{)F(<0ESH^g&Mh?7HV5*I2H=Wzjgl=ME}|Bo)aDZcllo z+S&i~)umpGw<3MYc(sD}J^9VKSzKEwIL!a!wW?>jorET^fUpZP2IN#h`I0%SVy#!^ z_HGerLj8&%0t)ugkgMKa{D{Vdx zb<2}ebY1~@re*$qtzC?o-2K{7>-NCjU^(@Gg8L2pUu~B?gl_!^;o=Bbw$A)BFR*h$ zeq7m=Z3!lw1#DsjBhq|riWQQs1-rH>-KcMB(Oi(cp~(;U$jK?ca~<`KDl7hyZ=k{x9;ethrVi#rxf2fT)jDVB&T`B zLScR@d8JHZHepJHM|JUO@f4L#$4gC2d9Z|`Q-zu=Wc6ZF4L%kv%=;=r+?5;rnScAr zcGK6e>*(gBs49Ja4_!ra78g_28Nu$GOnxg(<7QLSm5-)X41%roa!;KOoFJtewLTj9 zowy+O^^3LdVod|{G5S^2J~Y2r$gLua+H715qu`@_vu6rl>4$S2iQibwDAlg%++NbX zp2ss0`e^z+bQ&R&%uZ&LE)I)a`j^?S*jD|vP;ocG zj;|zYs_4NO*yp9~p`i}9DE9A^iRw--KlzlF-88ty`W7P{bs|!(Wc+*#>*krxY%b=I zcHs?^#DcZ!-<5lDf}$VI+A`F1LoXi}t*xJny?29GFznq5T5lbHS@9#!08^n-WNvPN zJ4;u`QJdp2Vy5>K=3BzxlPQAX?eJdMpSHujXL~lsW6X@$Sr-hrRX9Xvb!#+*GmRyN z@+Wo{*B>Po*Nn9m)k{C{^Mnq1BHp1q54oIlIrjToYjwbI$>=rQTXl<0)KJgpnRd?L zfqQAT-r?L2HlnL!xv6&!=U_jCYH8O7C3|*{Bx4W68ybK!ERsUtPutt}i42cW*zU3D zYgyK(7Olu_s-hIW*yVHyJsw5xD)&>#Vsd+&sNB>AoVCdkpTh|>I8FPpO} zd)6W1j+;l_oeeLE7f!XCB3W)uujqdA^^_aX%PD`!9>1$klhShg*@9!a|4LA{%kd!Y z><=sNXC+wCVQ`W_n#p|6Fz-@MqKT>SS2RLY2Z*l$n>Ot4>l`+#D~(|Yo-h6z8c?R2 zfMs~%o>sLrmYrg}Il1m&T&T0bc+{_T`?7qPY(TRh4OT6v0MUSu8e*o@+BMGY8~+9v~j5o54_u0Z45^RIIS z1Vr{XC>}ZB=j9&Yb=Ak!#nsWp#@5ct(57vstKk8)HtWfDY}cE2bxoU0tOlG6G+ytl zbCL|Zp9U1|)VgPC-3`KbJ74gOjP*W;YaBHFRXoD%_qHx0J)ipfmpW(TLSdIOu@ftv zCQudR`ztoJTk6ui)n*>X92hPjEK~60ad&qBM~gwfm@>lmO!D#UaT|jH`7PGV!;!M2 zZiXc6)r9`xf!JpWq>BZ^YH@;LZ>ZDyn3I=9#RN{|XI$OPJ*srPkdG?evJm>5rM>Bl z`RdoA^Nxl2W%Nl7UD_`@0)M#|mc7p5OoU%xO9HS=7@VUQ*l8f-q0wgEHE@(9!Fvt` zqF>YbBbdW|=qMnc+K7Pk>e&5bD^Em@ zw^GQ=eOcop7u0ze8BdxbtMTp=)uPwS9Nt{RvJE|BihZ0|`AD=`XI82$?8vW%d)>jO zaHoHCeMenedC7V4NeAzbV?#nt6{)@J>#Z?cu6?cy9C9$XmzjyTxUu~bRQMP*59chd>9(4h}G9welan_ZQFqA7}hTvihG#<@ZFszjByUE z2xcJ<*i{0dV=tRF+U1GeP2;=+4XswKT3U~)0uF;r(Tk=4_We0=NWuBV^8$RyA*)!N zG3C~U&1HTHVJG?5>5{`rgCmlgdgoeK=M=cA67Y&E9fr~e9tm){p0B_6dn*08-yK>v zDFdtXV6cV$ya;I^JPN1^!R+8+ZBd=qCzd&tRF&3*h@F?$+dW;w^YXD=J~FGnPaFMI zFPwH?-??_M!&>WQTzPx3m2t;qm)$p|GO^qn%Fi95bUdA@rL8QgtKK@=(nLj_m*kkS zMggo=|2t`kO7g`nncK9<@*;q?7swj}kwC~_@|IUuvkMQA=>w6&f}RP0(NW|CCmI|+ z>20{MZdIVCd;jEk$&?|F==#i&fY1J#ZEB+%my*WZK5VT0LgPGJQ`v6e42K^MK3PdT z`#9*Z5_y(XnIa3sJEinIA zef!5>W1kG5yffX4`OO^$I(1i;9TGX_MV&?RXP(+C7-{W1r_u`5%CSMp^H!BNwF6Hb z=Q)wtD)&s?Sj2MkjpO;_lfwZgIP5wJQ*X=b%;>?I%T3Jz9^N)2ij?}qn1LZ2N&Qlv z*P6N&Jn*>I_HYbt^<03nXZ!FN{qikd_eJ|hsUd33hof9ys?6Ry!nBA<3fe%KT|1xN zmNGo&^k*`B$natx%|iqMkO08IGXWv2Eva*Lb+fR$u?HsQ(>YeD_CS(?2A`{pK7AEX zI07ATCC6A3)$NeqwnZGj-%NkBwUUjzzJ^e;^_)7VE%vA~o+RtKw)sVr`#1&@+(J{( z<{87krqNHF2QUuNgW+&!L$zsB*y-8%fT8~y%JK^FR`O099hhY-GG@4u-G5!~t;5R1 zxNKU2{}Du_4Y%~%<^?V;$Q=r8IR!qGt<6^H?Z5tG#%#c0~qj`aL@q|fPXy}ME`Va`VwJYr45Rd3xLV*tz?%Ac5#O;7=DSBd4mNr!K1imEhyYeSoOwswqhL z*m&DnxmmdJGJ+sE56?hvCkIDg2|jOI8hJYhZ#z30EpHE7KO0{s4|gASkO?=>UrbGP zbp;Jw9SIvpI~x}o4?ka;fPer_D;pwu}@;_^)mX*^7#ex8&Ho7c| z>CmaC(PTbJJc{Yo2~VSoB8X*`Kll*pl!?q`xm2_?&_v*o>u9kcr$ghQPGmOm4?R3p z6$W2?QKkee07$vaaqG-+bRr2hD#U+LK&#^cK$j<>%6r1W z8hX_!cGYQlZM~2gK|Q?-KeM@qmxkZ=uU(~;OVW$TX}Ym&Nzt&4kO3M{<%-PRc!>X| z9>AJez>VDHK1mWmta4A>hJ0a5-o zaFP-qPmKr4`4?Np?y@9cPm-)8*hlsO_8)lvs0Wl+hEy=htAs{5r{D#t!fU62Le!;# zFZ7OB-WX*{1qJV+yEI9-Mv+<%u#{xI#9%Ee%#Yz6 zVy_$F9e!x`s_Vu?_qluUvJ`<7-$|e zGTV3=#Rtl-X^XSGhgeE;5&o(ZoO}pK@j)MXCEx#e`+dZflH^suw_a`dtC}W}-b}KY z$*kSdg_{+L|I(%3%BA1NT%?szirxS8{v$dl2@Fpb?H@skNNq-VwsRA;WdBV}8jxX^ zHbt)&y^=TmU;?{JBEM>#_~^8_`kA~oq58D0f`PBXQoX`_lKPyl`n<26QG=OLquczf zn?;J-%4NuZdi^N>il__#JIZl|$}xq?aT~%3^pHH-asVKE@KNTN0^zs~>u>tg{rav*fRfQ!cCKR1tlev^`aiv#e;qs? z04Cm348ErT9b5(MK>lhMj0FV16RSTSbb8R^|0Sd58K_XRN#y@*007{o{{m%K^5IuW z(p7EHRd3K$CDPN>`#(Jb>eKw{pkf)or~|sJ-+tbtp=Ds$T*m9hOU&kBq-`*#MS7pG z%!5J{p3R$&<-IJsffr5%D(w*<59XRantnW=0THFLM0}C$Qr{%KJjyJEgx0YlC0TN@EZb>5 zQ9N4|K5-)3xxP@=?JQr7r#+(vYmy2oe`>N_JZ_v@;S3T{BEsx=gkMNg2A$lj<80M_K&- zuz3-(@yySR%zbHlr1cQ1|FH08XnMxYCOu@y$lf9#ZjDs5^Jt?C{xP$P4XcD5v-4oD zukNO!HnwW-1`ZBc7rSfrI!^y|RI?ZCUw1nXcULbo@_g@bXYcf+7L zV{28RQ*oJ7wv%y&Lq@R^yp|=Sirp#0$vE3SBcmj}*fFEZC8M|^rkG{8*mBZnOTr=QoCfOw!50tl}i$UV-nZ@v-lHOBB(yoXa~9=m{P6y)#t$|npK~vcQZ~CU{;8= ziseCj3mp?d&C?zd*`~1_lR=|R9uYyKO-cY^NlCohG)W0iG_YrkNt=`ebwLIILSZm( zeamI35q|I%2uv3M!Z!>-edaqa)Y_A;o3zs=d98e;|9i zpnm>BT3b0Y^2^}xz1G?)&?xXKwokSDdte8?H&n%b(+zK}VgpsW*If;M4w_)G(c?Rq z-8&9%y5CpswQ~OH=D|{e0ITRYfHbmTMVu#;pV-iG;3+_Z2*9{eXv6VjQD`ILp-*Xx zlJLQFy$Wutma=5b{I&`J9uue#IhMkQJ@@a%`@c5I|J}rY`9<0Pj?{no#s3xg{|}Ip z|9e&azsQFH#K(97@j?IQnaZG(#cDrg>B|bocr7B z1o~*gKM2iEpbrM_`EvKE%Lp01%dhy?(vL%FfBn%P%M_D*o>WL>LVA7fTv!VX%LWfYMQa zLBPWi@BwkW@cS7LDK-%)DG4bB6(t!NCB@^%l&?HoeZ72~pS|$$3i1GZVF5lKPC>RF z?$13OLtj4ku9)?1=;R|N?X!yGWaTp7zvNLk#|*+BTU`bMvg2O&WmJWD zgF*s3Pt%vqfS#|IRcDvT5ottmqf7O#-OGu3!WPO9M`mBq9fnUJ9W{AHedy!4Igk~= z==~v$Ju>@I!u8$-f&D;fp=jFZvDPaCQI5RywZ=RafPU`N_F_&OzI=O&Ec3aPM6~g+ zD|^WF=(V7};5I({{JY)8Qx$aYlT6cGj;4?hWjc2&T4Qo}i0wuwmbsqE)YSeLS?1&nUHbW3}U-5~6a6K~-DHWC|NI zO`$Kxt+3~SDVu=dB1!9drRq0%{dVB4x1KqK0p2RkAD%s{j0@{Q;A9wARkaq=23Zd*f znV$h;&k&*@q42H6;`c`xELHH(`=4rx`qZm|C~2%fZWN~b04<>Pv@F;THEZFD4yJTy z*6?j*!uzr+;7O&HcrC2m{o}CIoVIU$#XG$U94!)`Cy2hS_EpYyD4Xs<{Mz%WXJI8V zKicEBP!Y8}*O-(+(Z=F3w?fo2&-HZF?Iu0eXysn3y$!(uO6gT2WTju!J~|xb)(JE5 za923nk39}{sIk&S$=S z(3q=_Lk{n&qL;9yx073!A>7RBodPCnZ4xzq%}PFp%|s}Y?RJdFWoL=e zi@H`JX%VDI)89ZS&nc^5Xg4fr9>get?LGwzL7H^baosGA_O74zTP*<(s*S z)5BRQNDq)W#9RbCj8 zz0^0>Gt3gF2dJowsaQS4xOpC#Jga-E#~QNQVAe$OqCy22PT-D|MPqjhyAeIC?C7|Q zuY(y9FBVR$7mNz(U_C6vQ#gR!}Wgwn_n8%EzsQV#~O%VzROcr%d zPpR@Fv7=j-@fBi$f}4<#u`LR(59AqCzyE~P(~c+_T={bVjk2uf*sF>_@#2TJxi4el z+}ocPv$t=h7o0=GsR?|~X^JuEUgym24N5r(7g`lBT%@p6_ht>{CPy8u5DF=M^z z#|UuMm;>gof_lk0j6$aj4&1np0cS&7W+Xz}5O*B=8wpSG9qmPv?1rQr)=eCJr}&P; z{)m>v>do)F7q_=X=kONLRV6#C`@~om{(FkRoezXX=3>^DohmYqn zOtNhejT1YEO&1^UKOsSC6kUBSk+`4OI~Te}xor~Fi~ohXLqFezts`Q|`QRFAdm+B9 z5rpz*bvwsLD?j|$R{kt1#Zd}^+l6#z1ae-2^hOAh1-($hY|!3Dpal%$H>GKjTGulU z)jcdMuv!+DsMl+en@jmm1Y#{ic4OuUhjpVmy{`veVEFDZ=32hM$u?R>Tl{elL=iI7;1Z0COl5pp>n2?W zA#GqL#GtKC_I)#+I=*!%ru+FP1a0@Nd(U@sOzY&#LtpK~;MKe1eyY3Q8*O7!lxJS2 z^~6676{rS&yS*L`6kF6FCxq#77B>x9ljU`4A>O`XE}%r_=E-Ab210|Vl<G@@ohc z(vaR!yr1_Q!)!zc-p1yEX-LZ-U0|PImDoa0_se~%mOP7lVp8n61byJtN3o%+7l-Z* z{?O@u^1`nc{j*FNUyu9=aTN#gr`eB_C)kMQp;s?Cgr;aaR_+^ev3ait_e}o zv>2i#iYKP<)3%X~+G?3cezB@S5BBo4S{Owg4wu*bHkbl=;w2UAU7a5tMa@_B8hsY) zH71HhN1&%UmUN~%MrWz zw``mFkqdosjuXdqRabLv0hNhly=PrJte-M(9N-SPR#$b-&nrjjK5&VClBjFNjIAW( zvIw%wBtfzIH8#FI9s`8Mo#;KyAQh0}>*l5xg|PzJF=NT<=cw`~7T3hi@Pt(!)g)ip z1mJ73a)ObXr{uPg7ic*V>9du^)g)X4;O|Vl?#WMzLZ(xWptv$8dAz`;Ue3 zZjz2df8I>PX$sPu10A*=vt?DZ&e5CE;_!}omxiU)p4velG-t9_0DnRZ$j%r`RlhYa z@$$oo!k`NFWu`yE0-T|`7$DP1p^@=XiB2;ys!N|jcdVycsOCj7Lz~~^Ov<>%Zq6aE+pamGgww-;n&_I3h*kB^S4G?z=7$$(fQ#Byg1zCB;#>yddPRA-8cLM zzMDWUfI$c+ks@_`0Wy*U2JSNw1FG@=4YIsg4d;{CLn+7j@Rc`>TrTrJW%03<}JIvbkBoI0qpaF3UFZfsx%QovKrBqmQHqbfdjuB>^B!p&CqV8rus zo|ku1=h^}SURrus$l97xrr7zn)j zc&lS)-19>Oqdg}+28VFzV=f|?&{LbFXgZojOUp>bleV7EXoNcfT5krBKrQ|bQX?Ut zZxCzvVRRdV@i{ej;3inCV3MRS-iLE#8#xHP0>VSTv@HlZts6-f5sqQBlubQ~x#1=Ek~{6G9P2Q?d&iZ5E25$~=hjB^lr{-J zuHB3HWjxN}8EQY)FFEQDCkgD3h$u_TGR*T0kqzVnIp z=ctwJc{P4{AE(e^`%Hi4O_09F(9eAGjFJGwUo(BG6jqO7-}p<#dps&9xkZ|w0YvZ0 zsEUQoTe#Ij((hDr(Iph4-LSKeV1A@>xp-Q@ZDNT4boiEtMez8$@p&~F(oRBD1M8Mk z-gl0}cXneGiJc_=&V^cjZ&R+y&F{=Z#EN;0^(s`~#1_PR4Bxc;#Kp=B{xL%>cZx4d zL=18RI^Z}Pj5m;k%CUl<7e@pG;=AS)nEZev`4FgCSVF*JlTE|7v!)LXwsqD33E}1e zl9dKq=8>@$DyAxn5?wS zq2@g<_4e}qQVAvXV@m322OhV8UqRH%&unp|xdWap1*Y2lP^jzhk>YY4-Z4II5ol_x zSyGspu{4zZvz{S2{GB>Z*=)C&bovtEmX$s8%huPsJG6dHcK`XTqqnvGA&u&Xik*Imx>qkN zMtfYBXr=lm@vSkcYdXP=tX~E~71Q|BWd&!^G_O(mD4HZ?rZEYyoFIGyZq~|3?_^D! zG7k_9l#ZhHU{B$)e7D>DdDhS5QxT$Y)RM`~PDlK*lk(!@*eIYb$7693N$X#`JATC? z4-37PsLVm3Bvj);sh!JNQx$&lg7qws4OlJcLj2do13vig67YGrct8aIwvH>;(s}zv zg?K*?@e1?~c^MEA=;j^tJnZEQKktCB5FZzJ7gtv|C-a!GR`qsV`|?-rSSCbNFT)xA zyJdh!8!t}cjg|u4W%EuMo&NJZn*QL+nMi-AcsTxu+He?nam&v6EL8|2=osZo7BBa z_bP;(SfT+9wNxh#nC)jpFx(@SJAIYO?{zeHKHeTN1RIbbl?6M%{3vf;KW0ZZNM0^3 zQbsMvY_?7d`NhpBe-aq5bs>u-yGvW}SB3<1f!0>N>W zTsd2X%9eUtQ0(`N1Ou|9*IS}<_p!On=dwVl0&y{Dnxl*>_n+#FE4N8svnyNGCW(_* zYn`5C7_YP>*h5lcZ_(;qa*<4$4UwAzBu#6%UmO@lJI8{(RfmAhPKr+ zHctRcmV}{)Gv$!~&|corpEIUTkpMhS*fX8?fR|v?v83CpeWI!Jy3W9#EJHJi1h_T~ z18>TEH0#PnKHZ;+v66KrI3>msWKxypv|gVEj8l5jeN$%(6!W~9j)iP3^<(V7*b5Z?Ru##|*U0r4++z;npUiEUq(jZoJ{SMy!A42nqhw=aEoR!#3O z{M`nEXm2tsnnONcKW^!(tFliCe)M%oqYVSgQX}RD{cDG&mSd_zSh??u`|P-!!EHKG zCOmWlBS?H#IC{1SRTuT1EY%kWFQVV_{7#Ain;8%q1$>N1yk;pcA%|z%7nwZu5}AfX z^4i}8uGeTt5U>q|Z0=o!oOM^!Fqi@m8|tKVl4)-Xyk9owz5ShzM>g`O@r=H)d1)l) z%iz1|4+0A%<`l}8=jnRHU7wv`KF#6C@!aYJBd7pq@Hinqvlts=@*}S~_@UJ6my<3f*boF}~~i@v}3Yc|{(^)I-RC!RdhEOju4VS`bmdIA3dcTkCUc+NRmr<1z zgBEX{amj*gs_1r!ypb|q>GONt+BMxJ&ttzzPnJI)M{Q{Ewr=Yl5ml;dJjbrC%`B#p zBaPU{q)m-9Uz{zy8S8!h`MW(dcl#c7ohpQg`S&l5oowKNV}7P+)zxRHDI{N0bSLwX z79+ZJ4Lv$2=#fP5UC)=xJ;`_DhDp0o2x#T!t?mY7_Shd^W3ZKfoZc}VcFSnU$kQ+0 zcIKOIFfO?ZnN@o(Upq%XV}5q>E2y?+bXk>Fv2vE0p{S#VaKWVLNGzaZs8&DF}{hIEL4JF5MsBb(rQ z&s72+H%;u+(GdtNBJsheiG)Htj?Wn~WLuX$X&Ap=K$fv=33Hlb6#Q*<^HPE^^6Y$^ z%ZrP1EO9X~G-iGKsYixX{P4ay{}b7~lYZ65?uIT3i^kl&$;haewz{?SNz(G$$TLRC}B z)pg!cOlM77uKm=&<9ESyUz)^p?mh&mRwl3!>fvUJw@PMGiB)x^oR0geEnuz;IDUOP z{)cCP&NUJ*;V4H(9ZS|sxQj7~FINsx5wdJVWqWu4rT9D}Nckw|8D^oKu`Q}}IK4Kw zQKiL%WWqD#r-;86AMj{HHrIV)acke`dQ|Yq&Gcfg)*_yt{DQlS-kxk6?g#4s`h@qE zhc9(mQ)%?fFfA7uFOxk6%-_iof2&MIN*wf^!@ zG{4`~fXw@PXk>bV^wRQ^>&kQ|iK*)_iOzGb%rrJhM?#-*;kv~{_1iw7s&mD(P9b`? z4SEi#!QKnC!Oh=4+7jQQaRXWq7>+U^iB6^Ae(nEgx|r~2FzPMQZX35PJ&;oU5W`vg zAGfrn*uoZPqtjJnKA2Z^F^v5j@m6$~{Z8)nX<-3#R_w%drQ*uA1&hT2T%0!x3F!ou zdRo=pLJv(zYVz#VSghjo`v$Yy!jXyTS-y*Hb^Mu8-;iORlAuhrvQ^Vuz#M(-c;)aQ zD{A45Y~oX?nkQex^RX8JOO=;ad0qAH8Xx0V&Mq(8u0m*XKO@M~iy<0tln9M_)kvZE zrJ*X$uwGhm&Od$bS{bAT=PXCI!8aKG7KyKOdBxp$D##T)e?d#Raw*Q`b0hmhV31Sv zkMqZyQ;!O%ra{wcDmMtgh=feF{B3l;lU}Xv{hlgIDXve%O%`IoyCfinL4_0ngZ(=r z@#*sDx4nW$zpS!y>`@}w*i*|sXPE4bg{<7ApAnY7;A8zS@9K<(ZVWuUKH43J*1Sb$ zL|B`8ieG2UO>g$bUBc88t;nJKWc^xw^kTWYWwyB8nxP8ml$z6JQ6Iph0qzDAzHhxF zj6)tr`&@9I9VxL5L(*~))<#PXsvf0~k?`Oc@rCVrq2c9o|G0I zKn=fC=0wgN$Gt1wI!GH7MvsBcqAfyO%#`~-q_)(f`1fs|opT(tA;6+N0-f!d4AFsg z$OItH3^HX{mkLXDMu-t>v}fBy7<{3HsbTmcMp9<{X$jAa>`mzM&!DE@&9UO|!8^K| znkq$Di9A8B3APNe{!7>Wj8(k#t$jF4Yre@vXmc5HNjQ^9IgE4f2m4yA|1ge{k(*E_ zSPF5|YD}iVka8hNM*uk}=E2HJa=8gpU{vetK<>*y7zr&3ps1cNTe{kRT=l!P(e3>6 zT^NsyR%~}*^EnkyXMMNe943c3ezNUx^HG#QOdi~;gw>}0fBSH2@Q`e z<6KChG)nk(OVcL@KRM?U*r;7unB5Y{ucPc^;3(L$xS3n>rZISiLz})gt8{&lMG%J} znGZ0WcjEhuRHXjkEP1kNg>;S;pbP=be7WJ$R6Jp{X)lZI%kl2bYgRFy>FcV9CNy1L zb2;$;H2vLu62h4iF(R&Tg)Fwc;xH+7l!o4nuRXLklh-Gh zIVYb>x^@vRlJK4XTUmfIsBdBb!+c=#EDRsjU=b0undS#9w2>a2EkgP`74AoVm6heY z4=0D4r0W?!pE=UO`Pas2_IH;@qoGmSUXn{!xR(?v6kC{Ir<#~*-zws0j(qEXhfBs` za-I5T>bs&P3=@wto8%g$FuAY{cX9{94iNK8cOwD>Aj_Uk{8Q+c{N@*!s_eEbn>1{M zXcbD!I+KPQZcU+50b*~R(tB0rqPeS^?CF!QIO&YcN$Ct5sF>v9QKlRF78yuPQ<*3o z4RpNnCqLc|;AE+)a&J5H*OUsowQw^37Dk|-fFJLRM8(v14cNirFSflav6ZqDrZ-WcHET}!%O_KB*_S|6@ zi^^n_gG4CIW@rY3w1ge9{&{iCv@)0hwL4up+$)%b{n7}I0E8QoJ%GF^6&+q~^PZwd z9I0JqE|PQ-i1*INK&lRWLltp-Ij&#SRKPqbGykQc%gi`FS~OtHqg2A76nzwlF2bH5 z^_k8F-PmJ+aMC8GPe_-3Ppm65dqYGtwQjw$P*RaY?O-S{bnG1%4uEYwps=}eujL$& zdcgceuKIeMxR2SWu!(^4`e(61zAP<$!g!TN3yD&^??7FG~>S_ddV-LyeP2 zK|};yalqxdvXfpP#W z4(IQE1Coj4f7~}9f%gsFhEXI~R@P3I_Exr5rd9@^|0GXu;hX!_JaVObrfkGS=U*s* zDDAA9Ck^}Ic0Dt`;DBV^71OV18h35dRCZ4*Z^@=;+AF5NFa9_?$GNck@VNnlntesg zw8e(Vg;R>ToSrhCGC6`RqG1;jffj%agbth^%z0p4j9>~L0je=D0A{OAgoZ~ymvMi! z*Hm1u-nfdtBu02ne)%(sv{?98Jg@0Hk%C#hKN(eNDt(xRN<_M^C)WCGjR)p?UQHZ` zqui}=xHo9L$OUpAftPg{xgdv`gE=l8Kbuh8CscT)=dE85x}XGlXb_V3d~feXs5=9< z{>+oXsyTi@+3@{5s5}d~bMATVKgdn6;z)^bL^9AcOtPres=hg#(m3O89W-efUnGs| z<#s{GBS4w}&}g_{Ai-cLG?35%f#Hvb3ekw;h~o5%S>L9NfocsyBD7|&#>{Wy(`n;P z%=Su+)&T(`@6cFY1=e8S+7Ky6S164;^%J@da&kqdezLIp>YXpl>TMKrfG#XW0AS_{ z0lqsh1ZmV<2uPn}W7`AGEBHv9h!xjT>D$XjKZg}si(lWKNp>O1I-AR50m|KQJcQ;q=QjSIpv~Q1v2(x4HmuMwUO$$> z$SYUh3J7U7)ynSBD5~Ve4RA#hC8K*jEb;@sXE#ZQr0_}{4x_J$#?5eDw+bX_fJRwXKc6@vT0GDgGG}I=HT`E2l-b`V)|PwBs%v+PV=Aa zON@0g=I@re$h>TN_0*yJlHMcH1*wTpdQF}Lb!;s{7`h<<>3U*?kPA7g25nw>v+XcF zBNIyH@`wa*RpZ38Bf=np>G2A*DV=B^PmQe4mw80gEZTl7M{Ejbol5$U6FxGCo#G?m z!Hp*tMd=*nK8Za)8ZAQC+O|vfV>klfhbbU38^XY}nk$FEo;~n^>*Gp;7W?j{@OLN` zz}y!@3{(*4BO~x@%aSzjQ8HO%aWrFmLiFR*dV=m>=h1vF5n9gWDguPy*u25vMwtD%>bH2ZE-DFQUkBGJ@$Wo zb1&y=mwNS?U#Vkz>?|}mATwO8knJXaU+-2AJBsE#-SG|I!mwqq6^y3GtcIdg?b|D= z4*&*@45BX$&~*lM{dj=@T42fJ^3a}DKO6NKAUO5K)dnn`<(VS@X#l8Cxu!j=$y@PK zS_}?;*i=Y~SAK047Tef|IL%pnO^Sy#jL+fBBCh{t^ayVaN3$9(!QH4VkeF>}lh5Kz;~Icg-QlPnd_vxL#YJ=Kku(Hx|Pr#nt6 zpPor)q5`wTEu=F=KStSR&B;LIcFOfTd3%o8*K2W>3F$7l_8fXT34!wD;W~2YRFaH- zjH1nymS-jvYk#GXb?)-<dOf3{0<$ribbdIwtogl zlIqc%Whp~h-r{w(5|J9Ua*#U&A=69L)8U*W)o{ohf+UNvnG@JdU4kHxqPBlDa2JLj}bh5ewmnkZf zxqteGUZ_H}+}X{iPxI+B=p3(33hv|*=LiVW;i%A^bPoS`adnQU2Z(TI3RC0^&z6;@ zoA(%B>ND>Zzh2Z_8nAh3+K$|$aK292nRfZMZ{YdH>B2pV!`qnWFW;f!%E2z<7UjnV z+k-#_W!XE5XXffu6h`;pDvRNZ;sk?YBeU&hkvGTuRl8WWn{&t%Q0rWJZ@IXsdf(3V z+kPkb{%rWJmHY0`#Xg*ieKLA@*Vf~~|5TS)2b{2xB*YRUw#7Uq>IbKF7 zn%r8-*j*74UsVZTL?Mb%#04vyz*S7(N+$@Vy42F(ZKV~vFJKF5Uo>6#S9R^8f@eX{ z5MQgCuLTsG0vfPI=>l7TLy-zySwQK5#{b~a?E?^~-%Y8%ZvX_D>fN9lZ)V{sIbP0} zy=a%coK?Nuy#H0Pq>bQdK(P7{QVN1>oPWA=&xoCqvL!VX8H8lL$?|j!K$Zsd+4tGU zB1z1vU43TK=cjzlIC<^97DrW5hk+Q3B-uj>P^unGP$901;(*vsnQVh}P?x$8nyFEo zh5_|Q|KIunREltLA@+xR7ZVDtVpj@(ObV!=t1xJx;lD-X$H#ycAXM~sT9raJw(1|W z3;-c?mBD|4*8k1%e-ilrOMneLBP0VJ`I4b5RT!}lVqcFk2FZjLW!M;kBK4d{fNvbe zdw?7RL`ZSE@NX3&n2jv~5!tfA#Y0)S5K#qU+nd=g^WO^f!b3HPBT$jdTU$1;4q*3E ziohFMg;I?b-9trG2rUP-7Gr^fFOmUH#)DJA6k%>3vv?DFm2RFWUaZydA5PUK%PCW4>r2f=Gb}?$K{0 zpe?MZYPw)7;eiLy!+SJ0*k4!$%8RC21$P?20T6ao6X*jRFK>`+RFXQkg1dh@yw2jw`~ZmjcO) z2Nq>~!3gYxSWrP*RUB>tS;p>Kl(G>}t*cg>wF~`a#20 zrv-Fpv)KpEIQ{aw0WYtf$s%R`)Oq*dpjo-v_H!5Kb_7x{-c}EMb9GKV@Z7~a4-URD ztKYIGQws98S_cvJ?$+3}QEvMBgFFPr23b^_x;SAJ8-OddTb(svkI>;DsW=pXiCZL` zKCl}Z9gaH*TOQO$0A~_$3)qOvDljTro+B`u7N1in!j=Pz#GOn<0`uk2sT3R- zMU-&d={VeBah3`upz4<|wvbe(@-m>dVnT@WoE*BGeh&Doq)Y(x6f6T#QszZBJe#9T zLg;e@R4Ojliz=QJc-dsJmsN@pcmyk12_qlFfUYm)WGIV7E;ntg7gfq!)w7W+#P5kZv_G5`xjP~}j1?Om#lqj7xfW+Fe)Yc5fh|KrYib15cjwNwr0r6l z4Ti{1vWr%rGTh=_%bGXJN`vXS97?)IhYw~1+HS2HUo|!SFr?s9xJh6F=a2a}mRiXN z|2ybKdIr?MlwhbYE)wDtE88FQ3s7^5)^p(`t1eG*QeUo{EZHeX=_InG&HY=F8RXZt zYus8yuNf}EMMuW)QZ0$Sv1@-*hz|t#6XV(Q_iTI+*q`$H_Ob z_vL;uZg`kF-;{=OFYYY$_)cbtt z2^sI0W)NqF)9qJ3VaLzbDR`=&F2UU7eyU(c-AK@a?WL|h_C9Jza-?_Ny)mb^GCVue zv}l-lk19<2T>bA;PvUESTTc2sSu&ZEaB+8U_{Iw|zkNmL?9|@o+C5#TeMEMVB6_V8 zTH|J4GM<8|9V2hj4S&DpvkcGCu|9V^Y>Pscl2g)fTGZ7H9XEVHrNXL;Oq+Uov84$Q z5m#C4hSGvvMb?7aG zjH>|e8HC@DMpH`p*##&j!*xrkb@TSa8q6E`IaT95&qLbn{@7sl>|3vv+HvJqjL&Lq?pubhkicu+aY*-s|YVjLFXaO+^>mknuG;-t62 z`~xGGSmdmO?NWim2-`d`y5{CG!(oniJfHD&aF4)%Fy{FEp?~VA(wE0|*&`1`L>o(% zg@Dl*``eT?yI8T^oD`fu-&JoM=Ul%^lx96TO*X==taWn)4- zyIuKWqe!yBj4c}iQbACV7yXgwEzJ?Q=yC`4&OwsMD>^1^Jp&C+ThyWXdsAbl62r}P;tvl#-q_JT`;R_nu|E}~DWe9v zf?gy=Br~Mh$`Dq085+raO&l)EaCG%&hqb_l!sxZQ=P$CQ`j4fwnPh#ejL}F56=Vd; zsi;V0+c>}vzzxu79b>4aY2apm)7sSrk)JJXmD3;2*lf0b(Ug$aIyw5*37hEJpoADw z4fvBU1)^0H@n#tW=bQP@yVwi)2CAQB1f#q#ZrR6I8oqrPq0enS2`HiDA@y*fTvH5> zJGA-2=;xH_PEQK=XVo1|1F8K@d-qD8cvvVi{3-Xsd;d$X#|y4cT2CjhOI#~?CF6Pk zZz+)`lC8KJ+$>Z0=5Pd85>AGvgfd>UKVK@XmDrZ>yJ&zXt0d(U)ueDk-zRLWiwKRq zxd;zBdm7zp4n4Rxz_lB{ZKS^Cnypht_vLzviNSpz<&NAoSxyg(-l1@%L$b97xpa6Y zg&`3{SzHYaBJecPPQ>g`s{+L!_7+OSv~V?w&y(`Zg>RBqbFTBhIqPp*AaMn|ahCcB z?Lve{Xh9Ep6x&Ztf9XYR`Sp=Z4|00TKJ>ip=uXF)FNnnAu!&cPWBpTg@|HFV-JT*T zS*uJ*BeOBlg6v;wnWCv)TGmage$gq00ZD)wt@OLE6eGm+Bb#Yo;vn)MLCMJn-FHD%+*Zge^&s4*X|w2EO1C*mpnT4V6S%Z`PN$jV`J}r`2=n1w7dGy zmbl$zfSI~=$=aMmTp~K86^7Tf-W*gR2ov;Yt)TruDMzIg8uW{t9fYX1XIGmp2MsYI zV9)m#U7UOOOVA<4ebp9?SBFQErb18WOz z2RsUyNjl-S{5Os4aKDff{kzTHT710Ld*-NLMz>A4Y2XiQNK;Bi5>ONw(UeHgTaF{GlgGYNQZ@d+3vG(L(HCuS9NB2;C4)0NI@x*7!1WC zT96=NFy``Ew*g~l&Jt9_*=vmHne3cACis*%XkXps)$(~3TP+}<%9pi$=;r$QxuCkh zHF&a_4a9wzFc_eh^V5TwsZQDx*>AGi-N7G4Z|zAHNB6|Co>aV(oR|D1=yH6}C-kn7 z8-#G)pONA&nj0!G87?g3888`Em^DV@?d+S)NQ}uJlT%O07THJMPVBKBbzh%u9oTFW zwPK+eQ>3jM-%z;kTXD+ub5aVXE3xXT+F#Ya?lp<*{(0vwv%YpuPZ^QzW`CM}xZ{za zu|@mU#YB;v54UBd?3U$a+bC@NBc@AibDUC=YXY%Kv~&*N6lskmq8*x5RYn7?Or=+Xfh%x8%cmVOS` z1~zUc+#9WbUeK`~*}eKo^>f27v9pApn>OLfe@0?86*5x5U|GnB`YQTGq8@G;A1~nb z4HY&wHy0M-S!iz^)y=PSx#KZB<$b7a&)X3GMNe^hue^raWx{ql`d^KPHIDeGL)!8_ zcNuEfnuHriT`lC5{;BsEzU^wh>XI@+QIegV@D=j8WkezW1b=GK;InRjXvU`Oj$P{O zgJKr0*;SkDPq4c5B!Aq`jjKuJ+D=J%-PyCdoOm{);QsadDoU{VCdW_<=kCOJ@A=h( zPm`5pSM3}{gfnnsCW#vbAM9*Y))#*_~*xIrXl0G%GRc5znL0CY%S(k)W`-!C9d#M-oz%y8U?> z$L#H8T+9pjb`6AlrmG-72C~;k`&9e%U{}|f&Tq5|-`V{tPjHoTd5q@~LqqG3I*QFz z-zDGM-UuT@5wI4N;xoJY3-{XuJEo2v6?&1|-ZhCqR)2va+uqGM$X8peTXOYeV|B^9 zd?)%z2t(p~;ZNpWTZQ&992fB`2yy-C_{sh7?*{L4IyB_p39c8?d#+ymeZJE~yU&cM z*|gf0?)n>y8c4Yj{y`TolXL`2d%MSa$zhrHj0j{Y{YAqZWv?xQ)(s#9*s z8InP4arY{L6z+Ya=|)QnPl%4x@w1F}lFzm5c0Kg{YTk$WGrz$XVn3XFJyz{2V>6m0 zh49J~$@>PZIr? zN;8lL?m~cgmDV63I$eR7LS}5_7p%|fqdJr^9W@D!TL}b;7iG@>-qp$@o=>H%pSm7= z?K6`#RKL(+BqxpZ*vlR_IXQPJ!@pUw#iruX>W|-6G}fE=O&-~ewh_;!4|ox@}ej9*?SZ_`RO!$7*>s{{sj z+ns2y-_KAvyLJ!rY&RFodxQ{Ew(CcJr+W>F>AhWzBTB!pTWhEEaVD=VsSH9@FI@RX zzExx|rFYj?XGxaOJ0cPxsDXqPm~O35D-*sFiXs$o86yc4p^j!iTz|bMuJeU8(sW8pQl-R(Fhu@Oi`8=c|p@?!Tkm|K*x~*D1rN-~JoqWw}hf z{1SWYJUB8FtH9M&G0?jQiPVDD!y|PlsEs)*Sg`DE#Dvhg&|FZ24)h6LwL7xMOnbsj2(YE-ak z>o-i~>RyVHhZ4ITrjq9RjkekC^xgE_?y}{(_`e`qZ+tj)@A$gdd+O6a!m^oEzG^qI z7L#kWNjXg`I-8-8hqvf9h>ni7WNPI0bJtPhKj#k%9NuZAI=~7`@t?`3p5$rnY#oQB z)fyE1M_x$ldz=G&O1)0{CCd8vq3O8ScB&b||I(kSyXdlH0q6jXJ8c+d?jTI%Y7zK4 znsNR8y{8Ij8kBTV->H75P0C5Jt9X}J+Kmzrw=Xq}?|9Jp+Pm;$4pT1(!SUvCda3lGr3rUm+m4*?UK$jm;;tCpu(Uj=Uxf$wMM!Q5H zwjtT=+pvd7Pyb7##Its{E zK6uN+yN(+4a+_oF@ZF+5b(#yNzk83s>rLbRpE|!?_0Bx~dUrrdExrz+Ou+s&`=<6bR3rTB8f3J>+#Iz;w=YzA{(Kc IVo!wsKQRO)o&W#< literal 0 HcmV?d00001 diff --git a/modular_citadel/sound/voice/scream_moth.ogg b/modular_citadel/sound/voice/scream_moth.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c94644fc17b9c1b980b18bf945610560b7a44eba GIT binary patch literal 82001 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
      " - dat += "Character Settings " + dat += "Character Settings" + dat += "Character Appearance" + dat += "Loadout" dat += "Game Preferences" if(!path) @@ -236,7 +241,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Backpack:
      [backbag]
      " dat += "Uplink Spawn Location:
      [uplink_spawn_loc]
      " - if(pref_species.use_skintones) +// CITADEL EDIT - ALL OF THESE ARE HANDLED IN THE MODULAR VERSION, TAB 2 + /* if(pref_species.use_skintones) dat += "" @@ -246,6 +252,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" + dat = add_citadel_choices(dat) + if(HAIR in pref_species.species_traits) dat += "" @@ -359,7 +367,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" - dat = add_citadel_choices(dat) + if(CONFIG_GET(flag/join_with_mutant_humans)) @@ -388,7 +396,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["wings"]]
      " - dat += "" + dat += ""*/ + dat += citadel_dat_replace(current_tab) dat += "" @@ -508,8 +517,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) else dat += "Be [capitalize(i)]: [(i in be_special) ? "Yes" : "No"]
      " + dat += citadel_dat_replace(current_tab) + dat += "" + else dat = citadel_dat_replace(current_tab) diff --git a/config/game_options.txt b/config/game_options.txt index ee080b6014..5599030e39 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -512,6 +512,7 @@ ROUNDSTART_RACES insect ROUNDSTART_RACES xeno ROUNDSTART_RACES datashark ROUNDSTART_RACES guilmon +ROUNDSTART_RACES ipc ## CREW OBJECTIVES ## ## Comment to disable objectives for innocent crew members. diff --git a/modular_citadel/code/game/objects/items.dm b/modular_citadel/code/game/objects/items.dm index 3cd0d12b8b..31ab57ee47 100644 --- a/modular_citadel/code/game/objects/items.dm +++ b/modular_citadel/code/game/objects/items.dm @@ -1,2 +1,14 @@ /obj/item var/total_mass //Total mass in arbitrary pound-like values. If there's no balance reasons for an item to have otherwise, this var should be the item's weight in pounds. + + var/list/alternate_screams = list() //REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE + +// lazy for screaming. +/obj/item/clothing/head/xenos + alternate_screams = list('sound/voice/hiss6.ogg') + +/obj/item/clothing/head/cardborg + alternate_screams = list('modular_citadel/sound/voice/scream_silicon.ogg') + +/obj/item/clothing/head/ushanka + alternate_screams = list('modular_citadel/sound/misc/cyka1.ogg', 'modular_citadel/sound/misc/cheekibreeki.ogg') \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform_trek.dm b/modular_citadel/code/modules/client/loadout/uniform_trek.dm index dd03d3c446..3189021be1 100644 --- a/modular_citadel/code/modules/client/loadout/uniform_trek.dm +++ b/modular_citadel/code/modules/client/loadout/uniform_trek.dm @@ -131,25 +131,25 @@ restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //Hats! -/datum/gear/hat/job_trek/cap +/datum/gear/hat/job_trek name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover restricted_roles = list("Captain","Head of Personnel") -/datum/gear/hat/job_trek/cap/medisci +/datum/gear/hat/job_trek/medisci name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/hat/job_trek/cap/eng +/datum/gear/hat/job_trek/eng name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/eng restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") -/datum/gear/hat/job_trek/cap/sec +/datum/gear/hat/job_trek/sec name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/sec diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index 398a0c0b91..c3dd517afb 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -12,7 +12,11 @@ var/arousable = TRUE var/widescreenpref = TRUE var/autostand = TRUE + var/toggleeatingnoise = TRUE + var/toggledigestionnoise = TRUE + var/hound_sleeper = TRUE max_save_slots = 10 + var/cit_toggles = TOGGLES_CITADEL features = list("mcolor" = "FFF", "tail_lizard" = "Smooth", "tail_human" = "None", @@ -86,13 +90,10 @@ ..() LAZYINITLIST(chosen_gear) -/datum/preferences/proc/add_citadel_choices(dat) - if(current_tab == 2) - update_preview_icon(nude=TRUE) - else - update_preview_icon(nude=FALSE) +/datum/preferences/proc/add_citadel_choices(.) + - return dat + return . /datum/preferences/proc/process_citadel_link(mob/user, list/href_list) if(href_list["task"] == "input") @@ -357,10 +358,9 @@ features["vag_color"] = sanitize_hexcolor(new_vagcolor) else user << "Invalid color. Your color is not bright enough." - - if("input") + + else switch(href_list["preference"]) - //genital code if("genital_colour") switch(features["genitals_use_skintone"]) @@ -473,8 +473,7 @@ features["exhibitionist"] = TRUE else features["exhibitionist"] = FALSE - else - switch(href_list["preference"]) + if("widescreenpref") widescreenpref = !widescreenpref user.client.change_view(CONFIG_GET(string/default_view)) @@ -514,7 +513,7 @@ if(i == href_list["select_category"]) gear_tab = i if(href_list["toggle_gear_path"]) - var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])] + var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]] if(!G) return var/toggle = text2num(href_list["toggle_gear"]) @@ -525,9 +524,6 @@ if(!is_loadout_slot_available(G.category)) to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") return - if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) - to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") - return if(gear_points >= initial(G.cost)) LAZYADD(chosen_gear, G.type) gear_points -= initial(G.cost) @@ -535,6 +531,7 @@ /datum/preferences/proc/citadel_dat_replace(current_tab) var/mob/user + //This proc is for menus other than game pref and char pref . = "
      " @@ -550,25 +547,26 @@ . += "
      " . += "
      " - if(current_tab == 0) + if(current_tab == 1) + . += "
      " + . += "

      Citadel Preferences

      " . += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
      " . += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
      " - // game prefs - if(current_tab == 1) - //VORE SOUNDS - . += "Hear Vore Sounds: [(toggles & EATING_NOISES) ? "Yes" : "No"]
      " - . += "Hear Vore Digestion Sounds: [(toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " + . += "Allow MediHound sleeper: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
      " + . += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
      " + . += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " . += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
      " . += "Auto stand: [autostand ? "Enabled" : "Disabled"]
      " . += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
      " if (user && user.client && !user.client.prefs.screenshake==0) . += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
      " + . += "
      " //Character Appearance if(current_tab == 2) . += "" */ . += "
      " - . += "

      " + . += "

      " . += "Set Flavor Text
      " if(lentext(features["flavor_text"]) <= 40) if(!lentext(features["flavor_text"])) @@ -695,6 +693,7 @@ . += "
      " + if(current_tab == 3) if(!gear_tab) gear_tab = GLOB.loadout_items[1] @@ -767,7 +766,7 @@ datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1) ..() character.give_genitals(TRUE) - character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially + character.flavor_text = features["flavor_text"] //Let's up.e their flavor_text at least initially character.canbearoused = arousable if(icon_updates) character.update_genitals() \ No newline at end of file diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 599dfcf61f..8f8c7a94e9 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -1,6 +1,9 @@ /datum/preferences/proc/cit_character_pref_load(savefile/S) //ipcs S["feature_ipc_screen"] >> features["ipc_screen"] + + //Citadel toggles + S["cit_toggles"] >> cit_toggles features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list) //Citadel @@ -11,6 +14,7 @@ features["mcolor3"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0) features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0) + cit_toggles = sanitize_integer(toggles, 0, 65535, initial(toggles)) //gear loadout var/text_to_load @@ -69,6 +73,8 @@ //flavor text WRITE_FILE(S["feature_flavor_text"], features["flavor_text"]) + WRITE_FILE(S["cit_toggles"], cit_toggles) + //gear loadout if(islist(chosen_gear)) if(chosen_gear.len) diff --git a/modular_citadel/code/modules/client/preferences_toggles.dm b/modular_citadel/code/modules/client/preferences_toggles.dm index a475d65106..7e3a78144e 100644 --- a/modular_citadel/code/modules/client/preferences_toggles.dm +++ b/modular_citadel/code/modules/client/preferences_toggles.dm @@ -2,35 +2,35 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleeatingnoise)() set name = "Toggle Eating Noises" set category = "Preferences" set desc = "Hear Eating noises" - usr.client.prefs.toggles ^= EATING_NOISES + usr.client.prefs.cit_toggles ^= EATING_NOISES usr.client.prefs.save_preferences() usr.stop_sound_channel(CHANNEL_PRED) - to_chat(usr, "You will [(usr.client.prefs.toggles & EATING_NOISES) ? "now" : "no longer"] hear eating noises.") + to_chat(usr, "You will [(usr.client.prefs.cit_toggles & EATING_NOISES) ? "now" : "no longer"] hear eating noises.") /datum/verbs/menu/Settings/Sound/toggleeatingnoise/Get_checked(client/C) - return !(C.prefs.toggles & EATING_NOISES) + return C.prefs.cit_toggles & EATING_NOISES TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggledigestionnoise)() set name = "Toggle Digestion Noises" set category = "Preferences" set desc = "Hear digestive noises" - usr.client.prefs.toggles ^= DIGESTION_NOISES + usr.client.prefs.cit_toggles ^= DIGESTION_NOISES usr.client.prefs.save_preferences() usr.stop_sound_channel(CHANNEL_DIGEST) - to_chat(usr, "You will [(usr.client.prefs.toggles & DIGESTION_NOISES) ? "now" : "no longer"] hear digestion noises.") + to_chat(usr, "You will [(usr.client.prefs.cit_toggles & DIGESTION_NOISES) ? "now" : "no longer"] hear digestion noises.") /datum/verbs/menu/Settings/Sound/toggledigestionnoise/Get_checked(client/C) - return !(C.prefs.toggles & DIGESTION_NOISES) + return C.prefs.cit_toggles & DIGESTION_NOISES TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglehoundsleeper)() set name = "Allow/Deny Hound Sleeper" set category = "Preferences" set desc = "Allow MediHound Sleepers" - usr.client.prefs.toggles ^= MEDIHOUND_SLEEPER + usr.client.prefs.cit_toggles ^= MEDIHOUND_SLEEPER usr.client.prefs.save_preferences() - if(usr.client.prefs.toggles & MEDIHOUND_SLEEPER) + if(usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) to_chat(usr, "You will now allow MediHounds to place you in their sleeper.") else to_chat(usr, "You will no longer allow MediHounds to place you in their sleeper.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle MediHound Sleeper", "[usr.client.prefs.toggles & MEDIHOUND_SLEEPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle MediHound Sleeper", "[usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/togglehoundsleeper/Get_checked(client/C) - return C.prefs.toggles & MEDIHOUND_SLEEPER \ No newline at end of file + return C.prefs.cit_toggles & MEDIHOUND_SLEEPER \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 86cb2a4d89..65b6d43a77 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -1,3 +1,103 @@ +/mob + var/nextsoundemote = 1 + //Disables the custom emote blacklist from TG that normally applies to slimes. /datum/emote/living/custom - mob_type_blacklist_typecache = list(/mob/living/brain) \ No newline at end of file + mob_type_blacklist_typecache = list(/mob/living/brain) + +/datum/emote/living/scream/run_emote(mob/living/user, params) //I can't not port this shit, come on. + if(user.nextsoundemote >= world.time || user.stat != CONSCIOUS) + return + var/sound + var/miming = user.mind ? user.mind.miming : 0 + if(!user.is_muzzled() && !miming) + user.nextsoundemote = world.time + 7 + if(issilicon(user)) + sound = 'modular_citadel/sound/voice/scream_silicon.ogg' + if(iscyborg(user)) + var/mob/living/silicon/robot/S = user + if(S.cell.charge < 20) + to_chat(S, "Scream module deactivated. Please recharge.") + return + S.cell.use(200) + if(ismonkey(user)) + sound = 'modular_citadel/sound/voice/scream_monkey.ogg' + if(istype(user, /mob/living/simple_animal/hostile/gorilla)) + sound = 'sound/creatures/gorilla.ogg' + if(ishuman(user)) + user.adjustOxyLoss(5) + sound = pick('modular_citadel/sound/voice/scream_m1.ogg', 'modular_citadel/sound/voice/scream_m2.ogg') + if(user.gender == FEMALE) + sound = pick('modular_citadel/sound/voice/scream_f1.ogg', 'modular_citadel/sound/voice/scream_f2.ogg') + if(is_species(user, /datum/species/android) || is_species(user, /datum/species/synth) || is_species(user, /datum/species/ipc)) + sound = 'modular_citadel/sound/voice/scream_silicon.ogg' + if(is_species(user, /datum/species/lizard)) + sound = 'modular_citadel/sound/voice/scream_lizard.ogg' + if(is_species(user, /datum/species/skeleton)) + sound = 'modular_citadel/sound/voice/scream_skeleton.ogg' + if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/moth)) + sound = 'modular_citadel/sound/voice/scream_moth.ogg' + if(isalien(user)) + sound = 'sound/voice/hiss6.ogg' + LAZYINITLIST(user.alternate_screams) + if(LAZYLEN(user.alternate_screams)) + sound = pick(user.alternate_screams) + playsound(user.loc, sound, 50, 1, 4, 1.2) + message = "screams!" + else if(miming) + message = "acts out a scream." + else + message = "makes a very loud noise." + . = ..() + +/datum/emote/sound/carbon/snap + key = "snap" + key_third_person = "snaps" + muzzle_ignore = TRUE + restraint_check = TRUE + emote_type = EMOTE_AUDIBLE + sound = 'sound/effects/snap01.ogg' + mob_type_allowed_typecache = list(/mob/living/carbon/) + + +/datum/emote/living/snap + key = "snap" + key_third_person = "snaps" + message = "snaps their fingers." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/snap/run_emote(mob/living/user, params) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/snap.ogg', 50, 1, -1) + . = ..() + +/datum/emote/living/snap2 + key = "snap2" + key_third_person = "snaps twice" + message = "snaps twice." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/snap2/run_emote(mob/living/user, params) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/snap2.ogg', 50, 1, -1) + . = ..() + +/datum/emote/living/snap3 + key = "snap3" + key_third_person = "snaps thrice" + message = "snaps thrice." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/snap3/run_emote(mob/living/user, params) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/snap3.ogg', 50, 1, -1) + . = ..() \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/living/carbon/reindex_screams.dm b/modular_citadel/code/modules/mob/living/carbon/reindex_screams.dm new file mode 100644 index 0000000000..7f5d625f62 --- /dev/null +++ b/modular_citadel/code/modules/mob/living/carbon/reindex_screams.dm @@ -0,0 +1,45 @@ +/mob/living + var/list/alternate_screams + +/mob/living/carbon/proc/reindex_screams() + clear_screams() + if(head) + add_screams(head.alternate_screams) + if(wear_mask) + add_screams(wear_mask.alternate_screams) + if(back) + add_screams(back.alternate_screams) + +/mob/living/carbon/human/reindex_screams() + ..() + //More slots in humans. + if(ears) + add_screams(ears.alternate_screams) + if(wear_suit) + add_screams(wear_suit.alternate_screams) + if(w_uniform) + add_screams(w_uniform.alternate_screams) + if(glasses) + add_screams(glasses.alternate_screams) + if(gloves) + add_screams(gloves.alternate_screams) + if(shoes) + add_screams(shoes.alternate_screams) + if(belt) + add_screams(belt.alternate_screams) + if(s_store) + add_screams(s_store.alternate_screams) + if(wear_id) + add_screams(wear_id.alternate_screams) + +//Note that the following two are for /mob/living, while the above two are for /carbon and /human +/mob/living/proc/add_screams(var/list/screams) + LAZYINITLIST(alternate_screams) + if(!screams || screams.len == 0) + return + for(var/S in screams) + LAZYADD(alternate_screams, S) + +/mob/living/proc/clear_screams() + LAZYINITLIST(alternate_screams) + LAZYCLEARLIST(alternate_screams) \ No newline at end of file diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index 14ded0b7cc..3a59c37618 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -163,7 +163,7 @@ //Sound w/ antispam flag setting if(!silent && !recent_sound) for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) recent_sound = TRUE @@ -194,7 +194,7 @@ AM.forceMove(destination) // Move the belly contents into the same location as belly's owner. count++ for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) items_preserved.Cut() owner.visible_message("[owner] expels everything from their [lowertext(name)]!") @@ -215,7 +215,7 @@ P.stop_sound_channel(CHANNEL_PREYLOOP) if(release_sound) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & EATING_NOISES) + if(H.client && H.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) if(istype(M,/mob/living)) @@ -507,7 +507,7 @@ if(!silent) for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(owner),"struggle_sound",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) R.stop_sound_channel(CHANNEL_PRED) var/sound/prey_struggle = sound(get_sfx("prey_struggle")) @@ -584,7 +584,7 @@ target.nom_mob(content, target.owner) if(!silent) for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) owner.updateVRPanel() for(var/mob/living/M in contents) diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm index 3260e2ae99..e2919ad3ec 100644 --- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm +++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm @@ -41,7 +41,7 @@ if(prob(25)) M.stop_sound_channel(CHANNEL_DIGEST) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & DIGESTION_NOISES) + if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES) playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST) M.stop_sound_channel(CHANNEL_DIGEST) M.playsound_local(get_turf(M), prey_digest, 45) @@ -72,7 +72,7 @@ owner.nutrition += 400 // so eating dead mobs gives you *something*. M.stop_sound_channel(DIGESTION_NOISES) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & DIGESTION_NOISES) + if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES) playsound(get_turf(owner),"death_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST) M.stop_sound_channel(DIGESTION_NOISES) M.stop_sound_channel(CHANNEL_PREYLOOP) @@ -101,7 +101,7 @@ if(prob(25)) M.stop_sound_channel(CHANNEL_DIGEST) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & DIGESTION_NOISES) + if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES) playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST) M.stop_sound_channel(CHANNEL_DIGEST) M.playsound_local(get_turf(M), prey_digest, 65) @@ -120,7 +120,7 @@ if(prob(35)) M.stop_sound_channel(CHANNEL_DIGEST) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & DIGESTION_NOISES) + if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES) playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST) M.stop_sound_channel(CHANNEL_PRED) M.playsound_local(get_turf(M), prey_digest, 65) @@ -133,7 +133,7 @@ if(prob(25)) M.stop_sound_channel(CHANNEL_DIGEST) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & DIGESTION_NOISES) + if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES) playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST) M.stop_sound_channel(CHANNEL_DIGEST) M.playsound_local(get_turf(M), prey_digest, 65) @@ -161,7 +161,7 @@ M.stop_sound_channel(CHANNEL_DIGEST) for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && H.client.prefs.toggles & DIGESTION_NOISES) + if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES) playsound(get_turf(owner),"death_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST) M.stop_sound_channel(CHANNEL_DIGEST) M.playsound_local(get_turf(M), prey_death, 65) diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index 5b2ad312ab..1eca5f585d 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -195,7 +195,7 @@ // If we got this far, nom successful! Announce it! user.visible_message(success_msg) for(var/mob/M in get_hearers_in_view(5, get_turf(user))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(user),"[belly.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) // Actually shove prey into the belly. diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 7d7a48ed28..a3593278b2 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -355,7 +355,7 @@ selected.release_all_contents() for(var/mob/M in get_hearers_in_view(5, get_turf(user))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(user),'sound/vore/pred/escape.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) to_chat(user.loc,"Everything is released from [user]!") @@ -371,7 +371,7 @@ for(var/atom/movable/tgt in selected) selected.transfer_contents(tgt, choice, 1) for(var/mob/M in get_hearers_in_view(5, get_turf(user))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(user),'sound/vore/pred/stomachmove.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) to_chat(tgt,"You're squished from [user]'s [lowertext(selected)] to their [lowertext(choice.name)]!") @@ -391,7 +391,7 @@ selected.release_specific_contents(tgt) for(var/mob/M in get_hearers_in_view(5, get_turf(user))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(user),'sound/vore/pred/escape.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) user.loc << "[tgt] is released from [user]!" @@ -407,7 +407,7 @@ to_chat(tgt,"You're squished from [user]'s [lowertext(selected.name)] to their [lowertext(choice.name)]!") selected.transfer_contents(tgt, choice) for(var/mob/M in get_hearers_in_view(5, get_turf(user))) - if(M.client && M.client.prefs.toggles & EATING_NOISES) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) playsound(get_turf(user),'sound/vore/pred/stomachmove.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) if(href_list["newbelly"]) diff --git a/modular_citadel/sound/misc/cheekibreeki.ogg b/modular_citadel/sound/misc/cheekibreeki.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7c41bdd7c2dd51ec45ec5a71dfe94ef0c1f72fc5 GIT binary patch literal 46056 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 literal 0 HcmV?d00001 diff --git a/modular_citadel/sound/misc/cyka1.ogg b/modular_citadel/sound/misc/cyka1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5479cd181847fb4b0b1b4d1715cb652d60c82c4c GIT binary patch literal 27520 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 51b6040dea..15e6d899c5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2732,6 +2732,7 @@ #include "modular_citadel\code\modules\mob\living\living.dm" #include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" #include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm" +#include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" From 8304a4096964e668151ceca861eb6b75bdc61c6d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Mar 2018 11:34:57 -0500 Subject: [PATCH 03/12] probably fixes bad loadout tab things --- .../code/modules/client/loadout/head.dm | 25 +++++++++++++++++++ .../modules/client/loadout/uniform_trek.dm | 24 ------------------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 5068b9e298..59360e0ff5 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -47,3 +47,28 @@ name = "Top Hat" category = slot_head path = /obj/item/clothing/head/that + +//Hats! +/datum/gear/job_trek + name = "Federation Officer's Cap" + category = slot_head + path = /obj/item/clothing/head/caphat/formal/fedcover + restricted_roles = list("Captain","Head of Personnel") + +/datum/gear/job_trek/medisci + name = "Federation Officer's Cap" + category = slot_head + path = /obj/item/clothing/head/caphat/formal/fedcover/medsci + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/job_trek/eng + name = "Federation Officer's Cap" + category = slot_head + path = /obj/item/clothing/head/caphat/formal/fedcover/eng + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + +/datum/gear/job_trek/sec + name = "Federation Officer's Cap" + category = slot_head + path = /obj/item/clothing/head/caphat/formal/fedcover/sec + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform_trek.dm b/modular_citadel/code/modules/client/loadout/uniform_trek.dm index 3189021be1..5667a355fe 100644 --- a/modular_citadel/code/modules/client/loadout/uniform_trek.dm +++ b/modular_citadel/code/modules/client/loadout/uniform_trek.dm @@ -130,27 +130,3 @@ path = /obj/item/clothing/under/rank/trek/engsec/ent restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") -//Hats! -/datum/gear/hat/job_trek - name = "Federation Officer's Cap" - category = slot_head - path = /obj/item/clothing/head/caphat/formal/fedcover - restricted_roles = list("Captain","Head of Personnel") - -/datum/gear/hat/job_trek/medisci - name = "Federation Officer's Cap" - category = slot_head - path = /obj/item/clothing/head/caphat/formal/fedcover/medsci - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/hat/job_trek/eng - name = "Federation Officer's Cap" - category = slot_head - path = /obj/item/clothing/head/caphat/formal/fedcover/eng - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") - -/datum/gear/hat/job_trek/sec - name = "Federation Officer's Cap" - category = slot_head - path = /obj/item/clothing/head/caphat/formal/fedcover/sec - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file From 4db062c9c0739174b0896bb3bbd5d0450b8b442c Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Mar 2018 20:20:20 -0500 Subject: [PATCH 04/12] didn't fix anything, reee. but I have an idea --- modular_citadel/code/modules/client/preferences.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index c3dd517afb..56011f0333 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -513,7 +513,7 @@ if(i == href_list["select_category"]) gear_tab = i if(href_list["toggle_gear_path"]) - var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]] + var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])] if(!G) return var/toggle = text2num(href_list["toggle_gear"]) @@ -524,11 +524,13 @@ if(!is_loadout_slot_available(G.category)) to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") return + if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) + to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") + return if(gear_points >= initial(G.cost)) LAZYADD(chosen_gear, G.type) gear_points -= initial(G.cost) - /datum/preferences/proc/citadel_dat_replace(current_tab) var/mob/user @@ -724,7 +726,7 @@ var/donoritem if(gear.ckeywhitelist && gear.ckeywhitelist.len) donoritem = TRUE - if(user && !(user.ckey in gear.ckeywhitelist)) + if(user && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) continue var/class_link = "" if(gear.type in chosen_gear) From b6c780df30429c84fc79b6abb9fd4fbf38c6fd87 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Mar 2018 01:02:04 -0500 Subject: [PATCH 05/12] reee removes the empty catagory entry on gear loadout --- .../code/modules/client/loadout/head.dm | 10 +- .../code/modules/client/loadout/suit.dm | 33 +++++ .../code/modules/client/loadout/uniform.dm | 96 +++++++++++++ .../modules/client/loadout/uniform_trek.dm | 132 ------------------ tgstation.dme | 1 - 5 files changed, 134 insertions(+), 138 deletions(-) delete mode 100644 modular_citadel/code/modules/client/loadout/uniform_trek.dm diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 59360e0ff5..168debf2cc 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -48,26 +48,26 @@ category = slot_head path = /obj/item/clothing/head/that -//Hats! -/datum/gear/job_trek +//trek fancy Hats! +/datum/gear/trekcap name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover restricted_roles = list("Captain","Head of Personnel") -/datum/gear/job_trek/medisci +/datum/gear/trekcapmedisci name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/job_trek/eng +/datum/gear/trekcapeng name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/eng restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") -/datum/gear/job_trek/sec +/datum/gear/trekcapsec name = "Federation Officer's Cap" category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/sec diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm index 3c18bef566..941da5c29f 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -67,3 +67,36 @@ name = "Ian Shirt" category = slot_wear_suit path = /obj/item/clothing/suit/ianshirt + +/datum/gear/trekds9_coat + name = "DS9 Overcoat (use uniform)" + category = slot_wear_suit + path = /obj/item/clothing/suit/storage/trek/ds9 + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster", + "Medical Doctor","Chemist","Virologist","Geneticist","Scientist", "Roboticist", + "Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer", + "Cargo Technician", "Shaft Miner") //everyone who actually deserves a job. +//Federation jackets from movies +/datum/gear/trekcmdcap + name = "fed (movie) uniform, Captain" + category = slot_wear_suit + path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt + restricted_roles = list("Captain","Head of Personnel") + +/datum/gear/trekcmdmov + name = "fed (movie) uniform, sec" + category = slot_wear_suit + path = /obj/item/clothing/suit/storage/fluff/fedcoat + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer") + +/datum/gear/trekmedscimov + name = "fed (movie) uniform, med/sci" + category = slot_wear_suit + path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/trekengmov + name = "fed (movie) uniform, ops/eng" + category = slot_wear_suit + path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index 1487166e13..acb2b4e13c 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -122,3 +122,99 @@ name = "Tactitool Turtleneck" category = slot_w_uniform path = /obj/item/clothing/under/syndicate/cosmetic + +// Trekie things +//TOS +/datum/gear/trekcmdtos + name = "TOS uniform, cmd" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/command + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") + +/datum/gear/trekmedscitos + name = "TOS uniform, med/sci" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/medsci + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/trekengtos + name = "TOS uniform, ops/sec" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/engsec + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + +//TNG +/datum/gear/trekcmdtng + name = "TNG uniform, cmd" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/command/next + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") + +/datum/gear/trekmedscitng + name = "TNG uniform, med/sci" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/medsci/next + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/trekengtng + name = "TNG uniform, ops/sec" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/engsec/next + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + +//VOY +/datum/gear/trekcmdvoy + name = "VOY uniform, cmd" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/command/voy + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") + +/datum/gear/trekmedscivoy + name = "VOY uniform, med/sci" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/medsci/voy + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/trekengvoy + name = "VOY uniform, ops/sec" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/engsec/voy + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + +//DS9 +/datum/gear/trekcmdds9 + name = "DS9 uniform, cmd" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/command/ds9 + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") + +/datum/gear/trekmedscids9 + name = "DS9 uniform, med/sci" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/medsci/ds9 + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/trekengds9 + name = "DS9 uniform, ops/sec" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/engsec/ds9 + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + +//ENT +/datum/gear/trekcmdent + name = "ENT uniform, cmd" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/command/ent + restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") + +/datum/gear/trekmedscient + name = "ENT uniform, med/sci" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/medsci/ent + restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") + +/datum/gear/trekengent + name = "ENT uniform, ops/sec" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/trek/engsec/ent + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") diff --git a/modular_citadel/code/modules/client/loadout/uniform_trek.dm b/modular_citadel/code/modules/client/loadout/uniform_trek.dm deleted file mode 100644 index 5667a355fe..0000000000 --- a/modular_citadel/code/modules/client/loadout/uniform_trek.dm +++ /dev/null @@ -1,132 +0,0 @@ -// Trekie things -//TOS -/datum/gear/uniform/job_trek/cmd/tos - name = "TOS uniform, cmd" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/command - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") - -/datum/gear/uniform/job_trek/medsci/tos - name = "TOS uniform, med/sci" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/medsci - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/uniform/job_trek/eng/tos - name = "TOS uniform, ops/sec" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/engsec - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") - -//Federation jackets from movies -/datum/gear/uniform/job_trek/cmd/cap - name = "fed (movie) uniform, Captain" - category = slot_wear_suit - path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt - restricted_roles = list("Captain","Head of Personnel") - -/datum/gear/uniform/job_trek/cmd/mov - name = "fed (movie) uniform, sec" - category = slot_wear_suit - path = /obj/item/clothing/suit/storage/fluff/fedcoat - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer") - -/datum/gear/suit/job_trek/medsci/mov - name = "fed (movie) uniform, med/sci" - category = slot_wear_suit - path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/suit/job_trek/eng/mov - name = "fed (movie) uniform, ops/eng" - category = slot_wear_suit - path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster") - -//TNG -/datum/gear/uniform/job_trek/cmd/tng - name = "TNG uniform, cmd" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/command/next - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") - -/datum/gear/uniform/job_trek/medsci/tng - name = "TNG uniform, med/sci" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/medsci/next - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/uniform/job_trek/eng/tng - name = "TNG uniform, ops/sec" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/engsec/next - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") - -//VOY -/datum/gear/uniform/job_trek/cmd/voy - name = "VOY uniform, cmd" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/command/voy - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") - -/datum/gear/uniform/job_trek/medsci/voy - name = "VOY uniform, med/sci" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/medsci/voy - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/uniform/job_trek/eng/voy - name = "VOY uniform, ops/sec" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/engsec/voy - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") - -//DS9 - -/datum/gear/suit/job_trek/ds9_coat - name = "DS9 Overcoat (use uniform)" - category = slot_wear_suit - path = /obj/item/clothing/suit/storage/trek/ds9 - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster", - "Medical Doctor","Chemist","Virologist","Geneticist","Scientist", "Roboticist", - "Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer", - "Cargo Technician", "Shaft Miner") //everyone who actually deserves a job. - -/datum/gear/uniform/job_trek/cmd/ds9 - name = "DS9 uniform, cmd" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/command/ds9 - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") - -/datum/gear/uniform/job_trek/medsci/ds9 - name = "DS9 uniform, med/sci" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/medsci/ds9 - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/uniform/job_trek/eng/ds9 - name = "DS9 uniform, ops/sec" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/engsec/ds9 - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") - - -//ENT -/datum/gear/uniform/job_trek/cmd/ent - name = "ENT uniform, cmd" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/command/ent - restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") - -/datum/gear/uniform/job_trek/medsci/ent - name = "ENT uniform, med/sci" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/medsci/ent - restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") - -/datum/gear/uniform/job_trek/eng/ent - name = "ENT uniform, ops/sec" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/trek/engsec/ent - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") - diff --git a/tgstation.dme b/tgstation.dme index 15e6d899c5..f79ca52b3c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2696,7 +2696,6 @@ #include "modular_citadel\code\modules\client\loadout\shoes.dm" #include "modular_citadel\code\modules\client\loadout\suit.dm" #include "modular_citadel\code\modules\client\loadout\uniform.dm" -#include "modular_citadel\code\modules\client\loadout\uniform_trek.dm" #include "modular_citadel\code\modules\client\verbs\who.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" From d387481aa5d5f9af36c02c08e7aae228b1148cb2 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Mar 2018 02:13:47 -0500 Subject: [PATCH 06/12] UI's functional again at least --- code/modules/client/preferences.dm | 18 +- .../code/controllers/subsystem/job.dm | 13 +- .../code/modules/client/preferences.dm | 742 +++++++++--------- .../modules/client/preferences_savefile.dm | 2 +- 4 files changed, 388 insertions(+), 387 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 86413bbb6b..0b21646a4b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -227,7 +227,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" - dat += "

      Body

      " +// CITADEL EDIT - ALL OF THESE ARE HANDLED IN THE MODULAR VERSION, TAB 2 + /* dat += "

      Body

      " dat += "Random Body " dat += "Always Random Body: [be_random_body ? "Yes" : "No"]
      " @@ -241,8 +242,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Backpack:
      [backbag]
      " dat += "Uplink Spawn Location:
      [uplink_spawn_loc]
      " -// CITADEL EDIT - ALL OF THESE ARE HANDLED IN THE MODULAR VERSION, TAB 2 - /* if(pref_species.use_skintones) + if(pref_species.use_skintones) dat += "" @@ -252,8 +252,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" - dat = add_citadel_choices(dat) - if(HAIR in pref_species.species_traits) dat += "" @@ -396,10 +394,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["wings"]]
      " - dat += ""*/ - dat += citadel_dat_replace(current_tab) + dat += "" - dat += "" + dat += ""*/ if (1) // Game Preferences @@ -516,9 +513,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Be [capitalize(i)]: \[IN [days_remaining] DAYS]
      " else dat += "Be [capitalize(i)]: [(i in be_special) ? "Yes" : "No"]
      " - - dat += citadel_dat_replace(current_tab) - + dat += citadel_pref_replace(current_tab) dat += "" @@ -1428,6 +1423,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("tab") if (href_list["tab"]) current_tab = text2num(href_list["tab"]) + process_citadel_prefs(user, href_list) process_citadel_link(user, href_list) ShowChoices(user) return 1 diff --git a/modular_citadel/code/controllers/subsystem/job.dm b/modular_citadel/code/controllers/subsystem/job.dm index 846c17344c..e9d7c65a34 100644 --- a/modular_citadel/code/controllers/subsystem/job.dm +++ b/modular_citadel/code/controllers/subsystem/job.dm @@ -1,4 +1,4 @@ -/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff) +/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M) var/mob/the_mob = N if(!the_mob) the_mob = M // cause this doesn't get assigned if player is a latejoiner @@ -11,21 +11,18 @@ if(!G) continue var/permitted = TRUE - if(G.restricted_roles && G.restricted_roles.len && !(M.mind.assigned_role in G.restricted_roles)) - permitted = FALSE if(G.ckeywhitelist && G.ckeywhitelist.len && !(the_mob.client.ckey in G.ckeywhitelist)) permitted = FALSE - if(!equipbackpackstuff && G.category == slot_in_backpack)//snowflake check since plopping stuff in the backpack doesnt work for pre-job equip loadout stuffs - permitted = FALSE - if(equipbackpackstuff && G.category != slot_in_backpack)//ditto + if(G.restricted_roles && G.restricted_roles.len && !(M.job in G.restricted_roles)) permitted = FALSE if(!permitted) continue var/obj/item/I = new G.path - if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first - if(!M.equip_to_slot_if_possible(I, slot_in_backpack, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack + if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Try to put it in its slot, first + if(!M.equip_to_slot_if_possible(I, slot_in_backpack, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If it fails, try to put it in the backpack I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. + /datum/controller/subsystem/job/proc/FreeRole(rank) if(!rank) return diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index 56011f0333..b515264320 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -3,18 +3,25 @@ #define BACKPACK_SLOT_AMT 4 /datum/preferences + //gear var/gear_points = 10 var/list/gear_categories var/list/chosen_gear var/gear_tab + + //pref vars var/screenshake = 100 var/damagescreenshake = 2 var/arousable = TRUE var/widescreenpref = TRUE var/autostand = TRUE + + //vore prefs var/toggleeatingnoise = TRUE var/toggledigestionnoise = TRUE var/hound_sleeper = TRUE + + // stuff that was in base max_save_slots = 10 var/cit_toggles = TOGGLES_CITADEL features = list("mcolor" = "FFF", @@ -90,10 +97,370 @@ ..() LAZYINITLIST(chosen_gear) -/datum/preferences/proc/add_citadel_choices(.) - - return . +/datum/preferences/proc/citadel_pref_replace(current_tab) + var/mob/user + + . += "
      " + . += "

      Citadel Preferences

      " + . += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
      " + . += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
      " + . += "Allow MediHound sleeper: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
      " + . += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
      " + . += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " + . += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
      " + . += "Auto stand: [autostand ? "Enabled" : "Disabled"]
      " + . += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
      " + if (user && user.client && !user.client.prefs.screenshake==0) + . += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
      " + . += "
      " + +/datum/preferences/proc/citadel_dat_replace(current_tab) + var/mob/user + //This proc is for menus other than game pref and char pref + . = "
      " + . += "Character Settings" + . += "Character Appearance" + . += "Loadout" + . += "Game Preferences" + + if(!path) + . += "
      Please create an account to save your preferences
      " + + . += "
      " + + . += "
      " + + //Character Appearance + if(current_tab == 2) + update_preview_icon(nude=TRUE) + user << browse_rsc(preview_icon, "previewicon.png") + . += "" + */ + . += "
      " + . += "
      " + . += "Set Flavor Text
      " + if(lentext(features["flavor_text"]) <= 40) + if(!lentext(features["flavor_text"])) + . += "\[...\]" + else + . += "[features["flavor_text"]]" + else + . += "[TextPreview(features["flavor_text"])]...
      " + . += "

      Body

      " + . += "Gender: [gender == MALE ? "Male" : "Female"]
      " + . += "Species:[pref_species.id]
      " + . += "Random Body
      " + . += "Always Random Body: [be_random_body ? "Yes" : "No"]
      " + if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits)) + . += "Primary Color:     Change
      " + . += "Secondary Color:     Change
      " + . += "Tertiary Color:     Change
      " + if(pref_species.use_skintones) + . += "Skin Tone: [skin_tone]
      " + . += "Genitals Use Skintone:[features["genitals_use_skintone"] == TRUE ? "Enabled" : "Disabled"]
      " + + if(HAIR in pref_species.species_traits) + . += "Hair Style: [hair_style]
      " + . += "Hair Color:     Change
      " + . += "Facial Hair Style: [facial_hair_style]
      " + . += "Facial Hair Color:     Change
      " + if(EYECOLOR in pref_species.species_traits) + . += "Eye Color:     Change
      " + if("tail_lizard" in pref_species.mutant_bodyparts) + . += "Tail: [features["tail_lizard"]]
      " + else if("mam_tail" in pref_species.mutant_bodyparts) + . += "Tail: [features["mam_tail"]]
      " + else if("tail_human" in pref_species.mutant_bodyparts) + . += "Tail: [features["tail_human"]]
      " + if("snout" in pref_species.mutant_bodyparts) + . += "Snout: [features["snout"]]
      " + if("horns" in pref_species.mutant_bodyparts) + . += "Horns: [features["horns"]]
      " + if("frills" in pref_species.mutant_bodyparts) + . += "Frills: [features["frills"]]
      " + if("spines" in pref_species.mutant_bodyparts) + . += "Spines: [features["spines"]]
      " + if("body_markings" in pref_species.mutant_bodyparts) + . += "Body Markings: [features["body_markings"]]
      " + else if("mam_body_markings" in pref_species.mutant_bodyparts) + . += "Body Markings: [features["mam_body_markings"]]
      " + if("mam_ears" in pref_species.mutant_bodyparts) + . += "Ears: [features["mam_ears"]]
      " + else if("ears" in pref_species.mutant_bodyparts) + . += "Ears: [features["ears"]]
      " + if("legs" in pref_species.mutant_bodyparts) + . += "Legs: [features["legs"]]
      " + if("moth_wings" in pref_species.mutant_bodyparts) + . += "Moth wings[features["moth_wings"]]
      " + if("taur" in pref_species.mutant_bodyparts) + . += "Taur: [features["taur"]]
      " + if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) + . += "Wings: [features["wings"]]
      " + if("xenohead" in pref_species.mutant_bodyparts) + . += "Caste: [features["xenohead"]]
      " + if("xenotail" in pref_species.mutant_bodyparts) + . += "Tail: [features["xenotail"]]
      " + if("xenodorsal" in pref_species.mutant_bodyparts) + . += "Dorsal Tubes: [features["xenodorsal"]]
      " + if("ipc_screen" in pref_species.mutant_bodyparts) + . += "Screen:[features["ipc_screen"]]
      " + + . += "
      " + + . += "

      Clothing & Equipment

      " + + . += "Underwear:[underwear]
      " + . += "Undershirt:[undershirt]
      " + . += "Socks:[socks]
      " + . += "Backpack:[backbag]
      " + . += "Uplink Location:[uplink_spawn_loc]
      " + + . += "

      Genitals

      " + if(NOGENITALS in pref_species.species_traits) + . += "Your species ([pref_species.name]) does not support genitals!
      " + else + . += "Has Penis:[features["has_cock"] == TRUE ? "Yes" : "No"]
      " + if(features["has_cock"] == TRUE) + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Penis Color:   (Skin tone overriding)
      " + else + . += "Penis Color:    Change
      " + . += "Penis Shape: [features["cock_shape"]]
      " + . += "Penis Length: [features["cock_length"]] inch(es)
      " + . += "Has Testicles:[features["has_balls"] == TRUE ? "Yes" : "No"]
      " + if(features["has_balls"] == TRUE) + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Testicles Color:   (Skin tone overriding)
      " + else + . += "Testicles Color:    Change
      " + . += "Has Vagina:[features["has_vag"] == TRUE ? "Yes" : "No"]
      " + if(features["has_vag"]) + . += "Vagina Type: [features["vag_shape"]]
      " + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Vagina Color:   (Skin tone overriding)
      " + else + . += "Vagina Color:    Change
      " + . += "Has Womb:[features["has_womb"] == TRUE ? "Yes" : "No"]
      " + . += "Has Breasts:[features["has_breasts"] == TRUE ? "Yes" : "No"]
      " + if(features["has_breasts"]) + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + . += "Color:   (Skin tone overriding)
      " + else + . += "Color:    Change
      " + . += "Cup Size:[features["breasts_size"]]
      " + . += "Breast Shape:[features["breasts_shape"]]
      " + /* + . += "

      Ovipositor

      " + . += "Has Ovipositor:[features["has_ovi"] == TRUE ? "Yes" : "No"]" + if(features["has_ovi"]) + . += "Ovi Color:    Change" + . += "

      Eggsack

      " + . += "Has Eggsack:[features["has_eggsack"] == TRUE ? "Yes" : "No"]
      " + if(features["has_eggsack"] == TRUE) + . += "Color:    Change" + . += "Egg Color:    Change" + . += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" + . += "
      " + + if(current_tab == 3) + if(!gear_tab) + gear_tab = GLOB.loadout_items[1] + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + for(var/j in GLOB.loadout_items[gear_tab]) + var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] + var/donoritem + if(gear.ckeywhitelist && gear.ckeywhitelist.len) + donoritem = TRUE + if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) + continue + var/class_link = "" + if(gear.type in chosen_gear) + class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=0'" + else if(donoritem) + class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" + else if(gear_points <= 0) + class_link = "class='linkOff'" + else + class_link = "href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" + . += "" + . += "" + . += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " + var/firstcat = TRUE + for(var/i in GLOB.loadout_items) + if(firstcat) + firstcat = FALSE + else + . += " |" + if(i == gear_tab) + . += " [i] " + else + . += " [i] " + . += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" + if(islist(gear.restricted_roles)) + if(gear.restricted_roles.len) + . += "" + . += gear.restricted_roles.Join(";") + . += "" + . += "[gear.description]
      " + +/datum/preferences/proc/process_citadel_prefs(mob/user, list/href_list) + if(href_list["task"] == "input") + switch(href_list["preference"]) + //genital code + if("genital_colour") + switch(features["genitals_use_skintone"]) + if(TRUE) + features["genitals_use_skintone"] = FALSE + if(FALSE) + features["genitals_use_skintone"] = TRUE + else + features["genitals_use_skintone"] = FALSE + if("arousable") + switch(arousable) + if(TRUE) + arousable = FALSE + if(FALSE) + arousable = TRUE + else//failsafe + arousable = FALSE + if("has_cock") + switch(features["has_cock"]) + if(TRUE) + features["has_cock"] = FALSE + if(FALSE) + features["has_cock"] = TRUE + features["has_ovi"] = FALSE + features["has_eggsack"] = FALSE + else + features["has_cock"] = FALSE + features["has_ovi"] = FALSE + if("has_balls") + switch(features["has_balls"]) + if(TRUE) + features["has_balls"] = FALSE + if(FALSE) + features["has_balls"] = TRUE + features["has_eggsack"] = FALSE + else + features["has_balls"] = FALSE + features["has_eggsack"] = FALSE + if("has_ovi") + switch(features["has_ovi"]) + if(TRUE) + features["has_ovi"] = FALSE + if(FALSE) + features["has_ovi"] = TRUE + features["has_cock"] = FALSE + features["has_balls"] = FALSE + else + features["has_ovi"] = FALSE + features["has_cock"] = FALSE + if("has_eggsack") + switch(features["has_eggsack"]) + if(TRUE) + features["has_eggsack"] = FALSE + if(FALSE) + features["has_eggsack"] = TRUE + features["has_balls"] = FALSE + else + features["has_eggsack"] = FALSE + features["has_balls"] = FALSE + if("balls_internal") + switch(features["balls_internal"]) + if(TRUE) + features["balls_internal"] = FALSE + if(FALSE) + features["balls_internal"] = TRUE + features["eggsack_internal"] = FALSE + else + features["balls_internal"] = FALSE + features["eggsack_internal"] = FALSE + if("eggsack_internal") + switch(features["eggsack_internal"]) + if(TRUE) + features["eggsack_internal"] = FALSE + if(FALSE) + features["eggsack_internal"] = TRUE + features["balls_internal"] = FALSE + else + features["eggsack_internal"] = FALSE + features["balls_internal"] = FALSE + if("has_breasts") + switch(features["has_breasts"]) + if(TRUE) + features["has_breasts"] = FALSE + if(FALSE) + features["has_breasts"] = TRUE + else + features["has_breasts"] = FALSE + if("has_vag") + switch(features["has_vag"]) + if(TRUE) + features["has_vag"] = FALSE + if(FALSE) + features["has_vag"] = TRUE + else + features["has_vag"] = FALSE + if("has_womb") + switch(features["has_womb"]) + if(TRUE) + features["has_womb"] = FALSE + if(FALSE) + features["has_womb"] = TRUE + else + features["has_womb"] = FALSE + if("exhibitionist") + switch(features["exhibitionist"]) + if(TRUE) + features["exhibitionist"] = FALSE + if(FALSE) + features["exhibitionist"] = TRUE + else + features["exhibitionist"] = FALSE + else + switch(href_list["preference"]) + if("widescreenpref") + widescreenpref = !widescreenpref + user.client.change_view(CONFIG_GET(string/default_view)) + + if("autostand") + autostand = !autostand + + if("screenshake") + var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num + if (!isnull(desiredshake)) + screenshake = desiredshake + + if("damagescreenshake") + switch(damagescreenshake) + if(0) + damagescreenshake = 1 + if(1) + damagescreenshake = 2 + if(2) + damagescreenshake = 0 + else + damagescreenshake = 1 + + if("hound_sleeper") + toggles ^= MEDIHOUND_SLEEPER + + if("toggleeatingnoise") + toggles ^= EATING_NOISES + + if("toggledigestionnoise") + toggles ^= DIGESTION_NOISES /datum/preferences/proc/process_citadel_link(mob/user, list/href_list) if(href_list["task"] == "input") @@ -358,150 +725,6 @@ features["vag_color"] = sanitize_hexcolor(new_vagcolor) else user << "Invalid color. Your color is not bright enough." - - else - switch(href_list["preference"]) - //genital code - if("genital_colour") - switch(features["genitals_use_skintone"]) - if(TRUE) - features["genitals_use_skintone"] = FALSE - if(FALSE) - features["genitals_use_skintone"] = TRUE - else - features["genitals_use_skintone"] = FALSE - if("arousable") - switch(arousable) - if(TRUE) - arousable = FALSE - if(FALSE) - arousable = TRUE - else//failsafe - arousable = FALSE - if("has_cock") - switch(features["has_cock"]) - if(TRUE) - features["has_cock"] = FALSE - if(FALSE) - features["has_cock"] = TRUE - features["has_ovi"] = FALSE - features["has_eggsack"] = FALSE - else - features["has_cock"] = FALSE - features["has_ovi"] = FALSE - if("has_balls") - switch(features["has_balls"]) - if(TRUE) - features["has_balls"] = FALSE - if(FALSE) - features["has_balls"] = TRUE - features["has_eggsack"] = FALSE - else - features["has_balls"] = FALSE - features["has_eggsack"] = FALSE - if("has_ovi") - switch(features["has_ovi"]) - if(TRUE) - features["has_ovi"] = FALSE - if(FALSE) - features["has_ovi"] = TRUE - features["has_cock"] = FALSE - features["has_balls"] = FALSE - else - features["has_ovi"] = FALSE - features["has_cock"] = FALSE - if("has_eggsack") - switch(features["has_eggsack"]) - if(TRUE) - features["has_eggsack"] = FALSE - if(FALSE) - features["has_eggsack"] = TRUE - features["has_balls"] = FALSE - else - features["has_eggsack"] = FALSE - features["has_balls"] = FALSE - if("balls_internal") - switch(features["balls_internal"]) - if(TRUE) - features["balls_internal"] = FALSE - if(FALSE) - features["balls_internal"] = TRUE - features["eggsack_internal"] = FALSE - else - features["balls_internal"] = FALSE - features["eggsack_internal"] = FALSE - - if("eggsack_internal") - switch(features["eggsack_internal"]) - if(TRUE) - features["eggsack_internal"] = FALSE - if(FALSE) - features["eggsack_internal"] = TRUE - features["balls_internal"] = FALSE - else - features["eggsack_internal"] = FALSE - features["balls_internal"] = FALSE - if("has_breasts") - switch(features["has_breasts"]) - if(TRUE) - features["has_breasts"] = FALSE - if(FALSE) - features["has_breasts"] = TRUE - else - features["has_breasts"] = FALSE - if("has_vag") - switch(features["has_vag"]) - if(TRUE) - features["has_vag"] = FALSE - if(FALSE) - features["has_vag"] = TRUE - else - features["has_vag"] = FALSE - if("has_womb") - switch(features["has_womb"]) - if(TRUE) - features["has_womb"] = FALSE - if(FALSE) - features["has_womb"] = TRUE - else - features["has_womb"] = FALSE - if("exhibitionist") - switch(features["exhibitionist"]) - if(TRUE) - features["exhibitionist"] = FALSE - if(FALSE) - features["exhibitionist"] = TRUE - else - features["exhibitionist"] = FALSE - - if("widescreenpref") - widescreenpref = !widescreenpref - user.client.change_view(CONFIG_GET(string/default_view)) - if("autostand") - autostand = !autostand - if("screenshake") - var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num - if (!isnull(desiredshake)) - screenshake = desiredshake - if("damagescreenshake") - switch(damagescreenshake) - if(0) - damagescreenshake = 1 - if(1) - damagescreenshake = 2 - if(2) - damagescreenshake = 0 - else - damagescreenshake = 1 - - if("hound_sleeper") - toggles ^= MEDIHOUND_SLEEPER - // VORE SOUND TOGGLES - if("toggleeatingnoise") - toggles ^= EATING_NOISES - - if("toggledigestionnoise") - toggles ^= DIGESTION_NOISES if(href_list["preference"] == "gear") if(href_list["clear_loadout"]) @@ -513,7 +736,7 @@ if(i == href_list["select_category"]) gear_tab = i if(href_list["toggle_gear_path"]) - var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])] + var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]] if(!G) return var/toggle = text2num(href_list["toggle_gear"]) @@ -521,231 +744,16 @@ LAZYREMOVE(chosen_gear, G.type) gear_points += initial(G.cost) else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) - if(!is_loadout_slot_available(G.category)) - to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") - return if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") return + if(!is_loadout_slot_available(G.category)) + to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") + return if(gear_points >= initial(G.cost)) LAZYADD(chosen_gear, G.type) gear_points -= initial(G.cost) -/datum/preferences/proc/citadel_dat_replace(current_tab) - var/mob/user - - - //This proc is for menus other than game pref and char pref - . = "
      " - - . += "Character Settings" - . += "Character Appearance" - . += "Loadout" - . += "Game Preferences" - - if(!path) - . += "
      Please create an account to save your preferences
      " - - . += "
      " - - . += "
      " - if(current_tab == 1) - . += "
      " - . += "

      Citadel Preferences

      " - . += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
      " - . += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
      " - . += "Allow MediHound sleeper: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
      " - . += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
      " - . += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " - . += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
      " - . += "Auto stand: [autostand ? "Enabled" : "Disabled"]
      " - . += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
      " - if (user && user.client && !user.client.prefs.screenshake==0) - . += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
      " - . += "
      " - - - //Character Appearance - if(current_tab == 2) - . += "" - */ - . += "
      " - . += "

      " - . += "Set Flavor Text
      " - if(lentext(features["flavor_text"]) <= 40) - if(!lentext(features["flavor_text"])) - . += "\[...\]" - else - . += "[features["flavor_text"]]" - else - . += "[TextPreview(features["flavor_text"])]...
      " - . += "

      Body

      " - . += "Gender: [gender == MALE ? "Male" : "Female"]
      " - . += "Species:[pref_species.id]
      " - . += "Random Body
      " - . += "Always Random Body: [be_random_body ? "Yes" : "No"]
      " - if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits)) - . += "Primary Color:     Change
      " - . += "Secondary Color:     Change
      " - . += "Tertiary Color:     Change
      " - if(pref_species.use_skintones) - . += "Skin Tone: [skin_tone]
      " - . += "Genitals Use Skintone:[features["genitals_use_skintone"] == TRUE ? "Enabled" : "Disabled"]
      " - - if(HAIR in pref_species.species_traits) - . += "Hair Style: [hair_style]
      " - . += "Hair Color:     Change
      " - . += "Facial Hair Style: [facial_hair_style]
      " - . += "Facial Hair Color:     Change
      " - if(EYECOLOR in pref_species.species_traits) - . += "Eye Color:     Change
      " - if("tail_lizard" in pref_species.mutant_bodyparts) - . += "Tail: [features["tail_lizard"]]
      " - else if("mam_tail" in pref_species.mutant_bodyparts) - . += "Tail: [features["mam_tail"]]
      " - else if("tail_human" in pref_species.mutant_bodyparts) - . += "Tail: [features["tail_human"]]
      " - if("snout" in pref_species.mutant_bodyparts) - . += "Snout: [features["snout"]]
      " - if("horns" in pref_species.mutant_bodyparts) - . += "Horns: [features["horns"]]
      " - if("frills" in pref_species.mutant_bodyparts) - . += "Frills: [features["frills"]]
      " - if("spines" in pref_species.mutant_bodyparts) - . += "Spines: [features["spines"]]
      " - if("body_markings" in pref_species.mutant_bodyparts) - . += "Body Markings: [features["body_markings"]]
      " - else if("mam_body_markings" in pref_species.mutant_bodyparts) - . += "Body Markings: [features["mam_body_markings"]]
      " - if("mam_ears" in pref_species.mutant_bodyparts) - . += "Ears: [features["mam_ears"]]
      " - else if("ears" in pref_species.mutant_bodyparts) - . += "Ears: [features["ears"]]
      " - if("legs" in pref_species.mutant_bodyparts) - . += "Legs: [features["legs"]]
      " - if("moth_wings" in pref_species.mutant_bodyparts) - . += "Moth wings[features["moth_wings"]]
      " - if("taur" in pref_species.mutant_bodyparts) - . += "Taur: [features["taur"]]
      " - if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) - . += "Wings: [features["wings"]]
      " - if("xenohead" in pref_species.mutant_bodyparts) - . += "Caste: [features["xenohead"]]
      " - if("xenotail" in pref_species.mutant_bodyparts) - . += "Tail: [features["xenotail"]]
      " - if("xenodorsal" in pref_species.mutant_bodyparts) - . += "Dorsal Tubes: [features["xenodorsal"]]
      " - if("ipc_screen" in pref_species.mutant_bodyparts) - . += "Screen:[features["ipc_screen"]]
      " - - . += "
      " - - . += "

      Clothing & Equipment

      " - - . += "Underwear:[underwear]
      " - . += "Undershirt:[undershirt]
      " - . += "Socks:[socks]
      " - . += "Backpack:[backbag]
      " - . += "Uplink Location:[uplink_spawn_loc]
      " - - . += "

      Genitals

      " - if(NOGENITALS in pref_species.species_traits) - . += "Your species ([pref_species.name]) does not support genitals!
      " - else - . += "Has Penis:[features["has_cock"] == TRUE ? "Yes" : "No"]
      " - if(features["has_cock"] == TRUE) - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - . += "Penis Color:   (Skin tone overriding)
      " - else - . += "Penis Color:    Change
      " - // . += "
      " - . += "Penis Shape: [features["cock_shape"]]
      " - . += "Penis Length: [features["cock_length"]] inch(es)
      " - . += "Has Testicles:[features["has_balls"] == TRUE ? "Yes" : "No"]
      " - if(features["has_balls"] == TRUE) - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - . += "Testicles Color:   (Skin tone overriding)
      " - else - . += "Testicles Color:    Change
      " - . += "Has Vagina:[features["has_vag"] == TRUE ? "Yes" : "No"]
      " - if(features["has_vag"]) - . += "Vagina Type: [features["vag_shape"]]
      " - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - . += "Vagina Color:   (Skin tone overriding)
      " - else - . += "Vagina Color:    Change
      " - . += "Has Womb:[features["has_womb"] == TRUE ? "Yes" : "No"]
      " - . += "Has Breasts:[features["has_breasts"] == TRUE ? "Yes" : "No"]
      " - if(features["has_breasts"]) - if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) - . += "Color:   (Skin tone overriding)
      " - else - . += "Color:    Change
      " - . += "Cup Size:[features["breasts_size"]]
      " - . += "Breast Shape:[features["breasts_shape"]]
      " - /* - . += "

      Ovipositor

      " - . += "Has Ovipositor:[features["has_ovi"] == TRUE ? "Yes" : "No"]" - if(features["has_ovi"]) - . += "Ovi Color:    Change" - . += "

      Eggsack

      " - . += "Has Eggsack:[features["has_eggsack"] == TRUE ? "Yes" : "No"]
      " - if(features["has_eggsack"] == TRUE) - . += "Color:    Change" - . += "Egg Color:    Change" - . += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" - . += "
      " - - if(current_tab == 3) - if(!gear_tab) - gear_tab = GLOB.loadout_items[1] - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - for(var/j in GLOB.loadout_items[gear_tab]) - var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] - var/donoritem - if(gear.ckeywhitelist && gear.ckeywhitelist.len) - donoritem = TRUE - if(user && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) - continue - var/class_link = "" - if(gear.type in chosen_gear) - class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=0'" - else if(gear_points <= 0) - class_link = "style='white-space:normal;' class='linkOff'" - else if(donoritem) - class_link = "style='white-space:normal;background:#ebc42e;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" - else - class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" - . += "" - . += "" - . += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " - var/firstcat = TRUE - for(var/i in GLOB.loadout_items) - if(firstcat) - firstcat = FALSE - else - . += " |" - if(i == gear_tab) - . += " [i] " - else - . += " [i] " - . += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" - if(islist(gear.restricted_roles)) - if(gear.restricted_roles.len) - . += "" - . += gear.restricted_roles.Join(";") - . += "" - . += "[gear.description]
      " /datum/preferences/proc/is_loadout_slot_available(slot) var/list/L @@ -768,7 +776,7 @@ datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1) ..() character.give_genitals(TRUE) - character.flavor_text = features["flavor_text"] //Let's up.e their flavor_text at least initially + character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially character.canbearoused = arousable if(icon_updates) character.update_genitals() \ No newline at end of file diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 8f8c7a94e9..f37736b438 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -27,7 +27,7 @@ if(path) LAZYADD(chosen_gear, path) gear_points -= initial(path.cost) - + /datum/preferences/proc/cit_character_pref_save(savefile/S) //ipcs WRITE_FILE(S["feature_ipc_screen"], features["ipc_screen"]) From a2fbab5ccb24ad69bb8c7f4faf50447ba3074adf Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Mar 2018 04:57:57 -0500 Subject: [PATCH 07/12] SCREEE. fuck this. I'mma just revert at this point, but don't want to lose progress. --- code/__DEFINES/colors.dm | 26 +- code/__HELPERS/text_vr.dm | 24 +- code/modules/client/preferences.dm | 121 +++++++ .../code/modules/client/loadout/_medical.dm | 5 - .../code/modules/client/loadout/_security.dm | 71 ---- .../code/modules/client/loadout/_service.dm | 13 - .../code/modules/client/loadout/backpack.dm | 24 -- .../modules/client/loadout/gear_tweaks.dm | 113 ++++++ .../code/modules/client/loadout/glasses.dm | 44 --- .../code/modules/client/loadout/gloves.dm | 4 - .../code/modules/client/loadout/hands.dm | 61 ---- .../code/modules/client/loadout/loadout.dm | 74 +++- .../client/loadout/loadout_accessories.dm | 170 +++++++++ .../client/loadout/loadout_cosmetics.dm | 47 +++ .../{__donator.dm => loadout_donator.dm} | 157 +++++---- .../modules/client/loadout/loadout_gloves.dm | 8 + .../loadout/{head.dm => loadout_hat.dm} | 75 ++-- .../loadout/{shoes.dm => loadout_shoes.dm} | 30 +- .../loadout/{suit.dm => loadout_suit.dm} | 93 ++--- .../{uniform.dm => loadout_uniform.dm} | 322 ++++++++++-------- .../code/modules/client/loadout/mask.dm | 4 - .../code/modules/client/loadout/neck.dm | 84 ----- .../code/modules/client/preferences.dm | 88 +---- tgstation.dme | 23 +- 24 files changed, 939 insertions(+), 742 deletions(-) delete mode 100644 modular_citadel/code/modules/client/loadout/_medical.dm delete mode 100644 modular_citadel/code/modules/client/loadout/_security.dm delete mode 100644 modular_citadel/code/modules/client/loadout/_service.dm delete mode 100644 modular_citadel/code/modules/client/loadout/backpack.dm create mode 100644 modular_citadel/code/modules/client/loadout/gear_tweaks.dm delete mode 100644 modular_citadel/code/modules/client/loadout/glasses.dm delete mode 100644 modular_citadel/code/modules/client/loadout/gloves.dm delete mode 100644 modular_citadel/code/modules/client/loadout/hands.dm create mode 100644 modular_citadel/code/modules/client/loadout/loadout_accessories.dm create mode 100644 modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm rename modular_citadel/code/modules/client/loadout/{__donator.dm => loadout_donator.dm} (66%) create mode 100644 modular_citadel/code/modules/client/loadout/loadout_gloves.dm rename modular_citadel/code/modules/client/loadout/{head.dm => loadout_hat.dm} (56%) rename modular_citadel/code/modules/client/loadout/{shoes.dm => loadout_shoes.dm} (59%) rename modular_citadel/code/modules/client/loadout/{suit.dm => loadout_suit.dm} (61%) rename modular_citadel/code/modules/client/loadout/{uniform.dm => loadout_uniform.dm} (63%) delete mode 100644 modular_citadel/code/modules/client/loadout/mask.dm delete mode 100644 modular_citadel/code/modules/client/loadout/neck.dm diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 824f5b3e61..211f47d59b 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -2,27 +2,27 @@ #define COLOR_INPUT_DISABLED "#F0F0F0" #define COLOR_INPUT_ENABLED "#D3B5B5" - -//#define COLOR_WHITE "#EEEEEE" -//#define COLOR_SILVER "#C0C0C0" -//#define COLOR_GRAY "#808080" +//CITADEL EDIT - why the fuck are colors commented out??? +#define COLOR_WHITE "#EEEEEE" +#define COLOR_SILVER "#C0C0C0" +#define COLOR_GRAY "#808080" #define COLOR_FLOORTILE_GRAY "#8D8B8B" #define COLOR_ALMOST_BLACK "#333333" -//#define COLOR_BLACK "#000000" +#define COLOR_BLACK "#000000" #define COLOR_RED "#FF0000" -//#define COLOR_RED_LIGHT "#FF3333" -//#define COLOR_MAROON "#800000" +#define COLOR_RED_LIGHT "#FF3333" +#define COLOR_MAROON "#800000" #define COLOR_YELLOW "#FFFF00" -//#define COLOR_OLIVE "#808000" -//#define COLOR_LIME "#32CD32" +#define COLOR_OLIVE "#808000" +#define COLOR_LIME "#32CD32" #define COLOR_GREEN "#008000" #define COLOR_CYAN "#00FFFF" -//#define COLOR_TEAL "#008080" +#define COLOR_TEAL "#008080" #define COLOR_BLUE "#0000FF" -//#define COLOR_BLUE_LIGHT "#33CCFF" -//#define COLOR_NAVY "#000080" +#define COLOR_BLUE_LIGHT "#33CCFF" +#define COLOR_NAVY "#000080" #define COLOR_PINK "#FFC0CB" -//#define COLOR_MAGENTA "#FF00FF" +#define COLOR_MAGENTA "#FF00FF" #define COLOR_PURPLE "#800080" #define COLOR_ORANGE "#FF9900" #define COLOR_BEIGE "#CEB689" diff --git a/code/__HELPERS/text_vr.dm b/code/__HELPERS/text_vr.dm index 846cb1b26a..52d43a6501 100644 --- a/code/__HELPERS/text_vr.dm +++ b/code/__HELPERS/text_vr.dm @@ -24,4 +24,26 @@ GLOBAL_LIST_EMPTY(whitelisted_species_list) /proc/log_mentor(text) GLOB.mentorlog.Add(text) - GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]" \ No newline at end of file + GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]" + + +//Mergesort: any value in a list, preserves key=value structure +/proc/sortAssoc(var/list/L) + if(L.len < 2) + return L + var/middle = L.len / 2 + 1 // Copy is first,second-1 + return mergeAssoc(sortAssoc(L.Copy(0,middle)), sortAssoc(L.Copy(middle))) //second parameter null = to end of list + +/proc/mergeAssoc(var/list/L, var/list/R) + var/Li=1 + var/Ri=1 + var/list/result = new() + while(Li <= L.len && Ri <= R.len) + if(sorttext(L[Li], R[Ri]) < 1) + result += R&R[Ri++] + else + result += L&L[Li++] + + if(Li <= L.len) + return (result + L.Copy(Li, 0)) + return (result + R.Copy(Ri, 0)) \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0b21646a4b..5fe17f566f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -127,6 +127,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/action_buttons_screen_locs = list() + //CITADEL GEAR SLOT DATA + //Gear stuff + var/list/gear = list() + var/gear_tab = "General" + var/max_gear_slots = 10 + var/list/gear_categories + var/list/chosen_gear + /datum/preferences/New(client/C) parent = C custom_names["human"] = random_unique_name() @@ -515,7 +523,66 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Be [capitalize(i)]: [(i in be_special) ? "Yes" : "No"]
      " dat += citadel_pref_replace(current_tab) dat += "" + //CITDEL EDIT - GEAR THINGS, fuck trying to get this working modularlly ****************************** + if(current_tab == 3) + var/total_cost = 0 + var/list/type_blacklist = list() + if(gear && gear.len) + for(var/i = 1, i <= gear.len, i++) + var/datum/gear/G = GLOB.loadout_items[gear[i]] + if(G) + if(!G.subtype_cost_overlap) + if(G.subtype_path in type_blacklist) + continue + type_blacklist += G.subtype_path + total_cost += G.cost + var/fcolor = "#3366CC" + if(total_cost < max_gear_slots) + fcolor = "#E67300" + dat += "" + dat += "" + dat += "" + + var/datum/loadout_catagories/LC = GLOB.loadout_catagories[gear_tab] + dat += "" + dat += "" + dat += "" + for(var/gear_name in LC.gear) + var/datum/gear/G = LC.gear[gear_name] + var/ticked = (G.name in gear) + dat += "" + dat += "" + if(ticked) + . += "" + dat += "
      [total_cost]/[max_gear_slots] loadout points spent. \[Clear Loadout\]
      " + + var/firstcat = 1 + for(var/category in GLOB.loadout_items) + var/datum/loadout_catagories/LC = GLOB.loadout_items[category] + var/datum/gear/gear = GLOB.loadout_items + if(LC.donor_only) + if(gear.ckeywhitelist && gear.ckeywhitelist.len) + if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) + continue + if(firstcat) + firstcat = 0 + else + dat += " |" + if(category == gear_tab) + dat += " [category] " + else + dat += " [category] " + dat += "

      [LC.catagory]

      [G.name][G.cost]" + if(G.restricted_roles) + dat += "Restrictions: " + for(var/role in G.restricted_roles) + dat += role + " " + dat += "" + dat += "[G.description]
      " + for(var/datum/gear_tweak/tweak in G.gear_tweaks) + . += " [tweak.get_contents(get_tweak_metadata(G, tweak))]" + . += "
      " else dat = citadel_dat_replace(current_tab) @@ -533,6 +600,25 @@ GLOBAL_LIST_EMPTY(preferences_datums) popup.set_content(dat) popup.open(0) +//CITADEL GEAR STUFF +/datum/preferences/proc/get_gear_metadata(var/datum/gear/G) + . = gear[G.name] + if(!.) + . = list() + gear[G.name] = . + +/datum/preferences/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak) + var/list/metadata = get_gear_metadata(G) + . = metadata["[tweak]"] + if(!.) + . = tweak.get_default() + metadata["[tweak]"] = . + +/datum/preferences/proc/set_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak, var/new_metadata) + var/list/metadata = get_gear_metadata(G) + metadata["[tweak]"] = new_metadata +//END CITADEL GEAR STUFF + /datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620) if(!SSjob) return @@ -1423,6 +1509,41 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("tab") if (href_list["tab"]) current_tab = text2num(href_list["tab"]) + + if(href_list["toggle_gear"]) + var/datum/gear/TG = GLOB.loadout_items[href_list["toggle_gear"]] + if(TG.name in TG) + TG -= TG.name + else + if(TG.donor_only) + if(TG.ckeywhitelist && TG.ckeywhitelist.len) + if(user && user.client && user.client.ckey && !(TG.ckeywhitelist.Find(user.client.ckey))) + return + var/total_cost = 0 + var/list/type_blacklist = list() + for(var/gear_name in TG) + var/datum/gear/G = GLOB.loadout_items[gear_name] + if(istype(G)) + if(!G.subtype_cost_overlap) + if(G.subtype_path in type_blacklist) + continue + type_blacklist += G.subtype_path + total_cost += G.cost + if((total_cost + TG.cost) <= max_gear_slots) + gear += TG.name + else if(href_list["gear"] && href_list["tweak"]) + var/datum/gear/gear = GLOB.loadout_items[href_list["gear"]] + var/datum/gear_tweak/tweak = locate(href_list["tweak"]) + if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks)) + return + var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak)) + if(!metadata) + return + set_tweak_metadata(gear, tweak, metadata) + else if(href_list["select_category"]) + gear_tab = href_list["select_category"] + else if(href_list["clear_loadout"]) + gear.Cut() process_citadel_prefs(user, href_list) process_citadel_link(user, href_list) ShowChoices(user) diff --git a/modular_citadel/code/modules/client/loadout/_medical.dm b/modular_citadel/code/modules/client/loadout/_medical.dm deleted file mode 100644 index e8c8ea453d..0000000000 --- a/modular_citadel/code/modules/client/loadout/_medical.dm +++ /dev/null @@ -1,5 +0,0 @@ -/datum/gear/stethoscope - name = "Stethoscope" - category = slot_neck - path = /obj/item/clothing/neck/stethoscope - restricted_roles = list("Medical Doctor", "Chief Medical Officer") diff --git a/modular_citadel/code/modules/client/loadout/_security.dm b/modular_citadel/code/modules/client/loadout/_security.dm deleted file mode 100644 index 304e99f311..0000000000 --- a/modular_citadel/code/modules/client/loadout/_security.dm +++ /dev/null @@ -1,71 +0,0 @@ -/datum/gear/navyblueuniformhos - name = "Head of Security navyblue uniform" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/head_of_security/navyblue - restricted_roles = list("Head of Security") - -/datum/gear/navybluehosberet - name = "Head of security's Naviblue beret" - category = slot_head - path = /obj/item/clothing/head/beret/sec/navyhos - restricted_roles = list("Head of Security") - -/datum/gear/navybluejackethos - name = "head of security's navyblue jacket" - category = slot_wear_suit - path = /obj/item/clothing/suit/security/hos - restricted_roles = list("Head of Security") - -/datum/gear/navybluejacketofficer - name = "security officer's navyblue jacket" - category = slot_wear_suit - path = /obj/item/clothing/suit/security/officer - restricted_roles = list("Security Officer") - -/datum/gear/navyblueofficerberet - name = "Security officer's Navyblue beret" - category = slot_head - path = /obj/item/clothing/head/beret/sec/navyofficer - restricted_roles = list("Security Officer") - -/datum/gear/navyblueuniformofficer - name = "security officer navyblue uniform" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/security/navyblue - restricted_roles = list("Security officer") - -/datum/gear/navybluejacketwarden - name = "warden navyblue jacket" - category = slot_wear_suit - path = /obj/item/clothing/suit/security/warden - restricted_roles = list("Warden") - -/datum/gear/navybluewardenberet - name = "Warden's navyblue beret" - category = slot_head - path = /obj/item/clothing/head/beret/sec/navywarden - restricted_roles = list("Warden") - -/datum/gear/navyblueuniformwarden - name = "Warden navyblue uniform" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/warden/navyblue - restricted_roles = list("Warden") - -/datum/gear/secskirt - name = "Security skirt" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/security/skirt - restricted_roles = list("Security Officer", "Warden", "Head of Security") - -/datum/gear/hosskirt - name = "Head of security's skirt" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/head_of_security/skirt - restricted_roles = list("Head of Security") - -/datum/gear/sechud - name = "Security Hud" - category = slot_glasses - path = /obj/item/clothing/glasses/hud/security - restricted_roles = list("Security Officer", "Warden", "Head of Security") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/_service.dm b/modular_citadel/code/modules/client/loadout/_service.dm deleted file mode 100644 index 56345e9185..0000000000 --- a/modular_citadel/code/modules/client/loadout/_service.dm +++ /dev/null @@ -1,13 +0,0 @@ -/datum/gear/plushvar - name = "Ratvar Plushie" - category = slot_in_backpack - path = /obj/item/toy/plush/plushvar - cost = 5 - restricted_roles = list("Chaplain") - -/datum/gear/narplush - name = "Narsie Plushie" - category = slot_in_backpack - path = /obj/item/toy/plush/narplush - cost = 5 - restricted_roles = list("Chaplain") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm deleted file mode 100644 index 2779d6f124..0000000000 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ /dev/null @@ -1,24 +0,0 @@ -/datum/gear/plushcarp - name = "Space carp plushie" - category = slot_in_backpack - path = /obj/item/toy/plush/carpplushie - -/datum/gear/plushliz - name = "Lizard plushie" - category = slot_in_backpack - path = /obj/item/toy/plush/lizardplushie - -/datum/gear/plushsnek - name = "Snake plushie" - category = slot_in_backpack - path = /obj/item/toy/plush/snakeplushie - -/datum/gear/plushslime - name = "Slime plushie" - category = slot_in_backpack - path = /obj/item/toy/plush/slimeplushie - -/datum/gear/dildo - name = "Customizable dildo" - category = slot_in_backpack - path = /obj/item/dildo/custom diff --git a/modular_citadel/code/modules/client/loadout/gear_tweaks.dm b/modular_citadel/code/modules/client/loadout/gear_tweaks.dm new file mode 100644 index 0000000000..31ffcbf29c --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/gear_tweaks.dm @@ -0,0 +1,113 @@ +/datum/gear_tweak/proc/get_contents(var/metadata) + return + +/datum/gear_tweak/proc/get_metadata(var/user, var/metadata) + return + +/datum/gear_tweak/proc/get_default() + return + +/datum/gear_tweak/proc/tweak_gear_data(var/metadata, var/datum/gear_data) + return + +/datum/gear_tweak/proc/tweak_item(var/obj/item/I, var/metadata) + return + +/* +* Color adjustment +*/ + +var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() + +/datum/gear_tweak/color + var/list/valid_colors + +/datum/gear_tweak/color/New(var/list/colors) + valid_colors = colors + ..() + +/datum/gear_tweak/color/get_contents(var/metadata) + return "Color: " + +/datum/gear_tweak/color/get_default() + return valid_colors ? valid_colors[1] : COLOR_GRAY + +/datum/gear_tweak/color/get_metadata(var/user, var/metadata) + if(valid_colors) + return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors + return input(user, "Choose an item color.", "Global Preference", metadata) as color|null + +/datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata) + if(valid_colors && !(metadata in valid_colors)) + return + I.color = metadata + +/* +* Path adjustment +*/ + +/datum/gear_tweak/path + var/list/valid_paths + +/datum/gear_tweak/path/New(var/list/paths) + valid_paths = paths + ..() + +/datum/gear_tweak/path/get_contents(var/metadata) + return "Type: [metadata]" + +/datum/gear_tweak/path/get_default() + return valid_paths[1] + +/datum/gear_tweak/path/get_metadata(var/user, var/metadata) + return input(user, "Choose a type.", "Character Preference", metadata) as null|anything in valid_paths + +/datum/gear_tweak/path/tweak_gear_data(var/metadata, var/datum/gear_data/gear_data) + if(!(metadata in valid_paths)) + return + gear_data.path = valid_paths[metadata] + +/* +* Content adjustment +*/ + +/datum/gear_tweak/contents + var/list/valid_contents + +/datum/gear_tweak/contents/New() + valid_contents = args.Copy() + ..() + +/datum/gear_tweak/contents/get_contents(var/metadata) + return "Contents: [english_list(metadata, and_text = ", ")]" + +/datum/gear_tweak/contents/get_default() + . = list() + for(var/i = 1 to valid_contents.len) + . += "Random" + +/datum/gear_tweak/contents/get_metadata(var/user, var/list/metadata) + . = list() + for(var/i = metadata.len to valid_contents.len) + metadata += "Random" + for(var/i = 1 to valid_contents.len) + var/entry = input(user, "Choose an entry.", "Character Preference", metadata[i]) as null|anything in (valid_contents[i] + list("Random", "None")) + if(entry) + . += entry + else + return metadata + +/datum/gear_tweak/contents/tweak_item(var/obj/item/I, var/list/metadata) + if(metadata.len != valid_contents.len) + return + for(var/i = 1 to valid_contents.len) + var/path + var/list/contents = valid_contents[i] + if(metadata[i] == "Random") + path = pick(contents) + path = contents[path] + else if(metadata[i] == "None") + continue + else + path = contents[metadata[i]] + new path(I) \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/glasses.dm b/modular_citadel/code/modules/client/loadout/glasses.dm deleted file mode 100644 index b1e6068a9e..0000000000 --- a/modular_citadel/code/modules/client/loadout/glasses.dm +++ /dev/null @@ -1,44 +0,0 @@ -/datum/gear/cold - name = "Cold goggles" - category = slot_glasses - path = /obj/item/clothing/glasses/cold - -/datum/gear/eyepatch - name = "Eyepatch" - category = slot_glasses - path = /obj/item/clothing/glasses/eyepatch - -/datum/gear/heat - name = "Heat goggles" - category = slot_glasses - path = /obj/item/clothing/glasses/heat - -/datum/gear/hipster - name = "Hipster glasses" - category = slot_glasses - path = /obj/item/clothing/glasses/regular/hipster - -/datum/gear/jamjar - name = "Jamjar glasses" - category = slot_glasses - path = /obj/item/clothing/glasses/regular/jamjar - -/datum/gear/monocle - name = "Monocle" - category = slot_glasses - path = /obj/item/clothing/glasses/monocle - -/datum/gear/orange - name = "Orange glasses" - category = slot_glasses - path = /obj/item/clothing/glasses/orange - -/datum/gear/red - name = "Red Glasses" - category = slot_glasses - path = /obj/item/clothing/glasses/red - -/datum/gear/prescription - name = "Prescription glasses" - category = slot_glasses - path = /obj/item/clothing/glasses/regular diff --git a/modular_citadel/code/modules/client/loadout/gloves.dm b/modular_citadel/code/modules/client/loadout/gloves.dm deleted file mode 100644 index ec67fbc0ec..0000000000 --- a/modular_citadel/code/modules/client/loadout/gloves.dm +++ /dev/null @@ -1,4 +0,0 @@ -/datum/gear/fingerless - name = "Fingerless Gloves" - category = slot_gloves - path = /obj/item/clothing/gloves/fingerless \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm deleted file mode 100644 index 94815a7243..0000000000 --- a/modular_citadel/code/modules/client/loadout/hands.dm +++ /dev/null @@ -1,61 +0,0 @@ -/datum/gear/cane - name = "Cane" - category = slot_hands - path = /obj/item/cane - -/datum/gear/cigarettes - name = "Cigarette pack" - category = slot_hands - path = /obj/item/storage/fancy/cigarettes - -/datum/gear/dice - name = "Dice bag" - category = slot_hands - path = /obj/item/storage/pill_bottle/dice - -/datum/gear/eightball - name = "Magic eightball" - category = slot_hands - path = /obj/item/toy/eightball - -/datum/gear/matches - name = "Matchbox" - category = slot_hands - path = /obj/item/storage/box/matches - -/datum/gear/cheaplighter - name = "Cheap lighter" - category = slot_hands - path = /obj/item/lighter/greyscale - -/datum/gear/cards - name = "Playing cards" - category = slot_hands - path = /obj/item/toy/cards/deck - -/datum/gear/skub - name = "Skub" - category = slot_hands - path = /obj/item/skub - -/datum/gear/carpplushie - name = "Space carp plushie" - category = slot_hands - path = /obj/item/toy/plush/carpplushie - -/datum/gear/wallet - name = "Wallet" - category = slot_hands - path = /obj/item/storage/wallet - -/datum/gear/flask - name = "Flask" - category = slot_hands - path = /obj/item/reagent_containers/food/drinks/flask - cost = 2 - -/datum/gear/zippolighter - name = "Zippo Lighter" - category = slot_hands - path = /obj/item/lighter - cost = 2 diff --git a/modular_citadel/code/modules/client/loadout/loadout.dm b/modular_citadel/code/modules/client/loadout/loadout.dm index 86efc6dc5b..7db13f5a3e 100644 --- a/modular_citadel/code/modules/client/loadout/loadout.dm +++ b/modular_citadel/code/modules/client/loadout/loadout.dm @@ -3,9 +3,55 @@ // slot_to_string(slot) proc in hippiestation/code/_HELPERS/mobs.dm to show the category name in preferences menu) and path (the actual item path). // description defaults to the path initial desc, cost defaults to 1 point but if you think your item requires more points, the framework allows that // and lastly, restricted_roles list allows you to let someone spawn with certain items only if the job they spawned with is on the list. - +GLOBAL_LIST_EMPTY(loadout_catagories) GLOBAL_LIST_EMPTY(loadout_items) +/datum/loadout_category + var/category = "" + var/list/gear = list() + var/donor_only = FALSE + +/datum/loadout_category/New(cat) + category = cat + ..() + +/proc/initialize_global_loadout_items() + LAZYINITLIST(GLOB.loadout_items) + //create a list of gear datums to sort + for(var/geartype in subtypesof(/datum/gear)) + var/datum/gear/G = geartype + + var/use_name = initial(G.name) + var/use_category = initial(G.sort_category) + + if(G == initial(G.subtype_path)) + continue + + if(!use_name) + error("Loadout - Missing display name: [G]") + continue + if(!initial(G.cost)) + error("Loadout - Missing cost: [G]") + continue + if(!initial(G.path)) + error("Loadout - Missing path definition: [G]") + continue + + if(!GLOB.loadout_catagories[use_category]) + GLOB.loadout_catagories[use_category] = new /datum/loadout_category(use_category) + var/datum/loadout_category/LC = GLOB.loadout_catagories[use_category] + if(initial(G.donor_only)) + LC.donor_only = TRUE + GLOB.loadout_items[use_name] = new geartype + LC.gear[use_name] = GLOB.loadout_items[use_name] + + GLOB.loadout_catagories = sortAssoc(loadout_catagories) + for(var/loadout_category in GLOB.loadout_catagories) + var/datum/loadout_category/LC = GLOB.loadout_catagories[loadout_category] + LC.gear = sortAssoc(LC.gear) + return 1 + +/* /proc/initialize_global_loadout_items() LAZYINITLIST(GLOB.loadout_items) for(var/item in subtypesof(/datum/gear)) @@ -13,19 +59,41 @@ GLOBAL_LIST_EMPTY(loadout_items) if(!GLOB.loadout_items[slot_to_string(I.category)]) LAZYINITLIST(GLOB.loadout_items[slot_to_string(I.category)]) LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I) - +*/ /datum/gear var/name - var/category + var/slot var/description var/path //item-to-spawn path var/cost = 1 //normally, each loadout costs a single point. var/list/restricted_roles var/list/ckeywhitelist + var/sort_category = "General" + var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned. + var/subtype_path = /datum/gear //for skipping organizational subtypes (optional) + var/subtype_cost_overlap = TRUE //if subtypes can take points at the same time + var/donor_only = FALSE // if it's only available to donors /datum/gear/New() ..() if(!description && path) var/obj/O = path description = initial(O.desc) + +/datum/gear_data + var/path + var/location + +/datum/gear_data/New(npath, nlocation) + path = npath + location = nlocation + +/datum/gear/proc/spawn_item(location, metadata) + var/datum/gear_data/gd = new(path, location) + for(var/datum/gear_tweak/gt in gear_tweaks) + gt.tweak_gear_data(metadata["[gt]"], gd) + var/item = new gd.path(gd.location) + for(var/datum/gear_tweak/gt in gear_tweaks) + gt.tweak_item(item, metadata["[gt]"]) + return item \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/loadout_accessories.dm b/modular_citadel/code/modules/client/loadout/loadout_accessories.dm new file mode 100644 index 0000000000..458cc8ec85 --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/loadout_accessories.dm @@ -0,0 +1,170 @@ + +/datum/gear/accessory + subtype_path = /datum/gear/accessory + slot = slot_in_backpack + sort_category = "Accessories" + +/datum/gear/accessory/cane + name = "Cane" + path = /obj/item/cane + +/datum/gear/accessory/cigarettes + name = "Cigarette pack" + path = /obj/item/storage/fancy/cigarettes + +/datum/gear/accessory/dice + name = "Dice bag" + path = /obj/item/storage/pill_bottle/dice +/datum/gear/accessory/eightball + name = "Magic eightball" + path = /obj/item/toy/eightball + +/datum/gear/accessory/matches + name = "Matchbox" + path = /obj/item/storage/box/matches + +/datum/gear/accessory/cheaplighter + name = "Cheap lighter" + path = /obj/item/lighter/greyscale + +/datum/gear/accessory/cards + name = "Playing cards" + path = /obj/item/toy/cards/deck + +/datum/gear/accessory/skub + name = "Skub" + path = /obj/item/skub + +/datum/gear/accessory/carpplushie + name = "Space carp plushie" + path = /obj/item/toy/plush/carpplushie + +/datum/gear/accessory/wallet + name = "Wallet" + path = /obj/item/storage/wallet + +/datum/gear/accessory/flask + name = "Flask" + path = /obj/item/reagent_containers/food/drinks/flask + cost = 2 + +/datum/gear/accessory/zippolighter + name = "Zippo Lighter" + path = /obj/item/lighter + cost = 2 + +/datum/gear/accessory/stethoscope + name = "Stethoscope" + slot = slot_neck + path = /obj/item/clothing/neck/stethoscope + restricted_roles = list("Medical Doctor", "Chief Medical Officer") + +/datum/gear/accessory/plush + subtype_path = /datum/gear/accessory/plush + sort_category = "Toys" + +/datum/gear/accessory/plush/plushvar + name = "Ratvar Plushie" + path = /obj/item/toy/plush/plushvar + cost = 5 + restricted_roles = list("Chaplain") + +/datum/gear/accessory/plush/narplush + name = "Narsie Plushie" + path = /obj/item/toy/plush/narplush + cost = 5 + restricted_roles = list("Chaplain") + +/datum/gear/accessory/plush/plushcarp + name = "Space carp plushie" + path = /obj/item/toy/plush/carpplushie + +/datum/gear/accessory/plush/plushliz + name = "Lizard plushie" + path = /obj/item/toy/plush/lizardplushie + +/datum/gear/accessory/plush/plushsnek + name = "Snake plushie" + path = /obj/item/toy/plush/snakeplushie + +/datum/gear/accessory/plush/plushslime + name = "Slime plushie" + path = /obj/item/toy/plush/slimeplushie + +/datum/gear/accessory/plush/dildo + name = "Customizable dildo" + path = /obj/item/dildo/custom + +/datum/gear/accessory/tie + subtype_path = /datum/gear/accessory/tie + slot = slot_neck + subtype_cost_overlap = FALSE + sort_category = "Neckwear" + +/datum/gear/accessory/tie/bluetie + name = "Blue tie" + path = /obj/item/clothing/neck/tie/blue + +/datum/gear/accessory/tie/redtie + name = "Red tie" + path = /obj/item/clothing/neck/tie/red + +/datum/gear/accessory/tie/blacktie + name = "Black tie" + path = /obj/item/clothing/neck/tie/black + +/datum/gear/accessory/tie/collar + name = "Collar" + path = /obj/item/clothing/neck/petcollar + +/datum/gear/accessory/tie/scarf + name = "White scarf" + path = /obj/item/clothing/neck/scarf + +/datum/gear/accessory/tie/blackscarf + name = "Black scarf" + path = /obj/item/clothing/neck/scarf/black + +/datum/gear/accessory/tie/redscarf + name = "Red scarf" + path = /obj/item/clothing/neck/scarf/red + +/datum/gear/accessory/tie/greenscarf + name = "Green scarf" + path = /obj/item/clothing/neck/scarf/green + +/datum/gear/accessory/tie/darkbluescarf + name = "Dark blue scarf" + path = /obj/item/clothing/neck/scarf/darkblue + +/datum/gear/accessory/tie/purplescarf + name = "Purple scarf" + path = /obj/item/clothing/neck/scarf/purple + +/datum/gear/accessory/tie/yellowscarf + name = "Yellow scarf" + path = /obj/item/clothing/neck/scarf/yellow + +/datum/gear/accessory/tie/orangescarf + name = "Orange scarf" + path = /obj/item/clothing/neck/scarf/orange + +/datum/gear/accessory/tie/cyanscarf + name = "Cyan scarf" + path = /obj/item/clothing/neck/scarf/cyan + +/datum/gear/accessory/tie/stripedredscarf + name = "Striped red scarf" + path = /obj/item/clothing/neck/stripedredscarf + +/datum/gear/accessory/tie/stripedbluescarf + name = "Striped blue scarf" + path = /obj/item/clothing/neck/stripedbluescarf + +/datum/gear/accessory/tie/stripedgreenscarf + name = "Striped green scarf" + path = /obj/item/clothing/neck/stripedgreenscarf + +/datum/gear/accessory/tie/headphones + name = "Headphones" + path = /obj/item/clothing/ears/headphones diff --git a/modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm b/modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm new file mode 100644 index 0000000000..889818e53e --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm @@ -0,0 +1,47 @@ +/datum/gear/cosmetics + sort_category = "Cosmetics" + subtype_path = /datum/gear/accessory + +/datum/gear/cosmetics/glasses + slot = slot_glasses + +/datum/gear/cosmetics/glasses/cold + name = "Cold goggles" + path = /obj/item/clothing/glasses/cold + +/datum/gear/cosmetics/glasses/eyepatch + name = "Eyepatch" + path = /obj/item/clothing/glasses/eyepatch + +/datum/gear/cosmetics/glasses/heat + name = "Heat goggles" + path = /obj/item/clothing/glasses/heat + +datum/gear/cosmetics/glasses/hipster + name = "Hipster glasses" + path = /obj/item/clothing/glasses/regular/hipster + +datum/gear/cosmetics/glasses/jamjar + name = "Jamjar glasses" + path = /obj/item/clothing/glasses/regular/jamjar + +datum/gear/cosmetics/glasses/monocle + name = "Monocle" + path = /obj/item/clothing/glasses/monocle + +datum/gear/cosmetics/glasses/orange + name = "Orange glasses" + path = /obj/item/clothing/glasses/orange + +datum/gear/cosmetics/glasses/red + name = "Red Glasses" + path = /obj/item/clothing/glasses/red + +datum/gear/cosmetics/glasses/prescription + name = "Prescription glasses" + path = /obj/item/clothing/glasses/regular + +datum/gear/cosmetics/glasses/sechud + name = "Security Hud" + path = /obj/item/clothing/glasses/hud/security + restricted_roles = list("Security Officer", "Warden", "Head of Security") diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/loadout_donator.dm similarity index 66% rename from modular_citadel/code/modules/client/loadout/__donator.dm rename to modular_citadel/code/modules/client/loadout/loadout_donator.dm index 69015b064d..21dc9ccbb6 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/loadout_donator.dm @@ -1,224 +1,223 @@ //This is the file that handles donator loadout items. -/datum/gear/pingcoderfailsafe +/datum/gear/donor + donor_only = TRUE + sort_category = "Donor" + subtype_path = /datum/gear/donor + +/datum/gear/donor/pingcoderfailsafe name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/bikehorn/golden ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard -/datum/gear/donortestingbikehorn +/datum/gear/donor/donortestingbikehorn name = "Donor item testing bikehorn" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/bikehorn - ckeywhitelist = list("jayehh","deathride58") + ckeywhitelist = list("jayehh","deathride58","poojawa") -/datum/gear/kevhorn +/datum/gear/donor/kevhorn name = "Airhorn" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/bikehorn/airhorn ckeywhitelist = list("kevinz000") -/datum/gear/cebusoap +/datum/gear/donor/cebusoap name = "Cebutris' soap" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/custom/ceb_soap ckeywhitelist = list("cebutris") -/datum/gear/kiaracloak +/datum/gear/donor/kiaracloak name = "Kiara's cloak" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/cloak/inferno ckeywhitelist = list("inferno707") -/datum/gear/kiaracollar +/datum/gear/donor/kiaracollar name = "Kiara's collar" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/petcollar/inferno ckeywhitelist = list("inferno707") -/datum/gear/kiaramedal +/datum/gear/donor/kiaramedal name = "Insignia of Steele" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/clothing/accessory/medal/steele ckeywhitelist = list("inferno707") -/datum/gear/sexymimemask +/datum/gear/donor/sexymimemask name = "The hollow heart" - category = slot_wear_mask + slot = slot_wear_mask path = /obj/item/clothing/mask/sexymime ckeywhitelist = list("inferno707") -/datum/gear/engravedzippo +/datum/gear/donor/engravedzippo name = "Engraved zippo" - category = slot_hands + slot = slot_hands path = /obj/item/lighter/gold ckeywhitelist = list("dirtyoldharry") -/datum/gear/geisha +/datum/gear/donor/geisha name = "Geisha suit" - category = slot_w_uniform + slot = slot_w_uniform path = /obj/item/clothing/under/geisha ckeywhitelist = list("atiefling") -/datum/gear/specialscarf +/datum/gear/donor/specialscarf name = "Special scarf" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/scarf/zomb ckeywhitelist = list("zombierobin") -/datum/gear/redmadcoat +/datum/gear/donor/redmadcoat name = "The Mad's labcoat" - category = slot_wear_suit + slot = slot_wear_suit path = /obj/item/clothing/suit/toggle/labcoat/mad/red ckeywhitelist = list("zombierobin") -/datum/gear/santahat +/datum/gear/donor/santahat name = "Santa hat" - category = slot_head + slot = slot_head path = /obj/item/clothing/head/santa/fluff ckeywhitelist = list("illotafv") -/datum/gear/reindeerhat +/datum/gear/donor/reindeerhat name = "Reindeer hat" - category = slot_head + slot = slot_head path = /obj/item/clothing/head/hardhat/reindeer/fluff ckeywhitelist = list("illotafv") -/datum/gear/treeplushie +/datum/gear/donor/treeplushie name = "Christmas tree plushie" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/toy/plush/tree ckeywhitelist = list("illotafv") -/datum/gear/santaoutfit +/datum/gear/donor/santaoutfit name = "Santa costume" - category = slot_wear_suit + slot = slot_wear_suit path = /obj/item/clothing/suit/space/santa/fluff ckeywhitelist = list("illotafv") -/datum/gear/treecloak +/datum/gear/donor/treecloak name = "Christmas tree cloak" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/cloak/festive ckeywhitelist = list("illotafv") -/datum/gear/carrotplush +/datum/gear/donor/carrotplush name = "Carrot plushie" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/toy/plush/carrot ckeywhitelist = list("improvedname") -/datum/gear/carrotcloak +/datum/gear/donor/carrotcloak name = "Carrot cloak" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/cloak/carrot ckeywhitelist = list("improvedname") -/datum/gear/albortorosamask +/datum/gear/donor/albortorosamask name = "Alborto Rosa mask" - category = slot_wear_mask + slot = slot_wear_mask path = /obj/item/clothing/mask/luchador/zigfie ckeywhitelist = list("zigfie") -/datum/gear/mankini +/datum/gear/donor/mankini name = "Mankini" - category = slot_w_uniform + slot = slot_w_uniform path = /obj/item/clothing/under/mankini ckeywhitelist = list("zigfie") -/datum/gear/pinkshoes +/datum/gear/donor/pinkshoes name = "Pink shoes" - category = slot_shoes + slot = slot_shoes path = /obj/item/clothing/shoes/sneakers/pink ckeywhitelist = list("zigfie") -/datum/gear/reecesgreatcoat +/datum/gear/donor/reecesgreatcoat name = "Reece's Great Coat" - category = slot_wear_suit + slot = slot_wear_suit path = /obj/item/clothing/suit/trenchcoat/green ckeywhitelist = list("geemiesif") -/datum/gear/russianflask +/datum/gear/donor/russianflask name = "Russian flask" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/reagent_containers/food/drinks/flask/russian cost = 2 ckeywhitelist = list("slomka") -/datum/gear/stalkermask +/datum/gear/donor/stalkermask name = "S.T.A.L.K.E.R. mask" - category = slot_wear_mask + slot = slot_wear_mask path = /obj/item/clothing/mask/gas/stalker ckeywhitelist = list("slomka") -/datum/gear/stripedcollar +/datum/gear/donor/stripedcollar name = "Striped collar" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/petcollar/stripe ckeywhitelist = list("jademanique") -/datum/gear/performersoutfit +/datum/gear/donor/performersoutfit name = "Bluish performer's outfit" - category = slot_w_uniform + slot = slot_w_uniform path = /obj/item/clothing/under/singery/custom ckeywhitelist = list("killer402402") -/datum/gear/vermillion +/datum/gear/donor/vermillion name = "Vermillion clothing" - category = slot_w_uniform + slot = slot_w_uniform path = /obj/item/clothing/suit/vermillion ckeywhitelist = list("fractious") -/datum/gear/AM4B +/datum/gear/donor/AM4B name = "Foam Force AM4-B" - category = slot_in_backpack + slot = slot_in_backpack path = /obj/item/gun/ballistic/automatic/AM4B ckeywhitelist = list("zeronetalpha") -/datum/gear/carrotsatchel +/datum/gear/donor/carrotsatchel name = "Carrot Satchel" - category = slot_hands + slot = slot_hands path = /obj/item/storage/backpack/satchel/carrot ckeywhitelist = list("improvedname") -/datum/gear/naomisweater +/datum/gear/donor/naomisweater name = "worn black sweater" - category = slot_w_uniform + slot = slot_w_uniform path = /obj/item/clothing/under/bb_sweater/black/naomi ckeywhitelist = list("technicalmagi") -/datum/gear/naomicollar +/datum/gear/donor/naomicollar name = "worn pet collar" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/petcollar/naomi ckeywhitelist = list("technicalmagi") -/datum/gear/gladiator +/datum/gear/donor/gladiator name = "Gladiator Armor" - category = slot_wear_suit + slot = slot_wear_suit path = /obj/item/clothing/under/gladiator ckeywhitelist = list("aroche") -/datum/gear/bloodredtie +/datum/gear/donor/bloodredtie name = "Blood Red Tie" - category = slot_neck + slot = slot_neck path = /obj/item/clothing/neck/tie/bloodred ckeywhitelist = list("kyutness") -/datum/gear/puffydress +/datum/gear/donor/puffydress name = "Puffy Dress" - category = slot_wear_suit + slot = slot_wear_suit path = /obj/item/clothing/suit/puffydress //ckeywhitelist = //Don't know their ckey yet -/datum/gear/labredblack +/datum/gear/donor/labredblack name = "Black and Red Coat" - category = slot_wear_suit + slot = slot_wear_suit path = /obj/item/clothing/suit/toggle/labcoat/labredblack ckeywhitelist = list("blakeryan") - - - - - - diff --git a/modular_citadel/code/modules/client/loadout/loadout_gloves.dm b/modular_citadel/code/modules/client/loadout/loadout_gloves.dm new file mode 100644 index 0000000000..083e40ec90 --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/loadout_gloves.dm @@ -0,0 +1,8 @@ +/datum/gear/gloves + subtype_path = /datum/gear/gloves + slot = slot_gloves + sort_category = "Gloves" + +/datum/gear/gloves/fingerless + name = "Fingerless Gloves" + path = /obj/item/clothing/gloves/fingerless \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/loadout_hat.dm similarity index 56% rename from modular_citadel/code/modules/client/loadout/head.dm rename to modular_citadel/code/modules/client/loadout/loadout_hat.dm index 168debf2cc..11ba3c6de4 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/loadout_hat.dm @@ -1,74 +1,91 @@ -/datum/gear/baseball +/datum/gear/hat + subtype_path = /datum/gear/hat + slot = slot_head + sort_category = "Headwear" + +/datum/gear/hat/balaclava + name = "Balaclava" + slot = slot_in_backpack + cost = 3 + path = /obj/item/clothing/mask/balaclava + +/datum/gear/hat/baseball name = "Ballcap" - category = slot_head path = /obj/item/clothing/head/soft/mime -/datum/gear/beanie +/datum/gear/hat/beanie name = "Beanie" - category = slot_head path = /obj/item/clothing/head/beanie -/datum/gear/beret +/datum/gear/hat/beret name = "Black beret" - category = slot_head path = /obj/item/clothing/head/beret/black -/datum/gear/flatcap +/datum/gear/hat/flatcap name = "Flat cap" - category = slot_head path = /obj/item/clothing/head/flatcap -/datum/gear/pirate +/datum/gear/hat/pirate name = "Pirate hat" - category = slot_head path = /obj/item/clothing/head/pirate -/datum/gear/rice_hat +/datum/gear/hat/rice_hat name = "Rice hat" - category = slot_head path = /obj/item/clothing/head/rice_hat -/datum/gear/ushanka +/datum/gear/hat/ushanka name = "Ushanka" - category = slot_head path = /obj/item/clothing/head/ushanka -/datum/gear/slime +/datum/gear/hat/slime name = "Slime hat" - category = slot_head path = /obj/item/clothing/head/collectable/slime -/datum/gear/fedora +/datum/gear/hat/fedora name = "Fedora" - category = slot_head path = /obj/item/clothing/head/fedora -/datum/gear/that +/datum/gear/hat/that name = "Top Hat" - category = slot_head path = /obj/item/clothing/head/that +/datum/gear/hat/navy + subtype_path = datum/gear/hat/navy + subtype_cost_overlap = FALSE + sort_category = "Job Specific Headwear" + +/datum/gear/hat/navy/bluehosberet + name = "Head of security's Navy beret" + path = /obj/item/clothing/head/beret/sec/navyhos + restricted_roles = list("Head of Security") + +/datum/gear/hat/navy/blueofficerberet + name = "Security officer's Navyblue beret" + path = /obj/item/clothing/head/beret/sec/navyofficer + restricted_roles = list("Security Officer") + +/datum/gear/hat/navy/bluewardenberet + name = "Warden's navyblue beret" + path = /obj/item/clothing/head/beret/sec/navywarden + restricted_roles = list("Warden") + //trek fancy Hats! -/datum/gear/trekcap +/datum/gear/hat/navy/trekcap name = "Federation Officer's Cap" - category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover restricted_roles = list("Captain","Head of Personnel") -/datum/gear/trekcapmedisci +/datum/gear/hat/navy/trekcap/medisci name = "Federation Officer's Cap" - category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekcapeng +/datum/gear/hat/navy/trekcap/eng name = "Federation Officer's Cap" - category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/eng restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") -/datum/gear/trekcapsec +/datum/gear/hat/navy/trekcap/sec name = "Federation Officer's Cap" - category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/sec - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") diff --git a/modular_citadel/code/modules/client/loadout/shoes.dm b/modular_citadel/code/modules/client/loadout/loadout_shoes.dm similarity index 59% rename from modular_citadel/code/modules/client/loadout/shoes.dm rename to modular_citadel/code/modules/client/loadout/loadout_shoes.dm index 0d233c3a5e..379b65ace0 100644 --- a/modular_citadel/code/modules/client/loadout/shoes.dm +++ b/modular_citadel/code/modules/client/loadout/loadout_shoes.dm @@ -1,39 +1,37 @@ -/datum/gear/laceup + +/datum/gear/shoes/shoes + subtype_path = /datum/gear/shoes/shoes + slot = slot_shoes + sort_category = "Shoes" + +/datum/gear/shoes/laceup name = "Laceup shoes" - category = slot_shoes path = /obj/item/clothing/shoes/laceup -/datum/gear/workboots +/datum/gear/shoes/workboots name = "Work boots" - category = slot_shoes path = /obj/item/clothing/shoes/workboots -/datum/gear/jackboots +/datum/gear/shoes/jackboots name = "Jackboots" - category = slot_shoes path = /obj/item/clothing/shoes/jackboots -/datum/gear/winterboots +/datum/gear/shoes/winterboots name = "Winter boots" - category = slot_shoes path = /obj/item/clothing/shoes/winterboots -/datum/gear/sandals +/datum/gear/shoes/sandals name = "Sandals" - category = slot_shoes path = /obj/item/clothing/shoes/sandal -/datum/gear/blackshoes +/datum/gear/shoes/blackshoes name = "Black shoes" - category = slot_shoes path = /obj/item/clothing/shoes/sneakers/black -/datum/gear/brownshoes +/datum/gear/shoes/brownshoes name = "Brown shoes" - category = slot_shoes path = /obj/item/clothing/shoes/sneakers/brown -/datum/gear/whiteshoes +/datum/gear/shoes/whiteshoes name = "White shoes" - category = slot_shoes path = /obj/item/clothing/shoes/sneakers/white diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/loadout_suit.dm similarity index 61% rename from modular_citadel/code/modules/client/loadout/suit.dm rename to modular_citadel/code/modules/client/loadout/loadout_suit.dm index 941da5c29f..40bc6fcf4d 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/loadout_suit.dm @@ -1,102 +1,115 @@ -/datum/gear/poncho +/datum/gear/suit/suit + subtype_path = /datum/gear/suit/suit + slot = slot_wear_suit + cost = 2 + sort_category = "External Wear" + +/datum/gear/suit/poncho name = "Poncho" - category = slot_wear_suit path = /obj/item/clothing/suit/poncho -/datum/gear/ponchogreen +/datum/gear/suit/ponchogreen name = "Green poncho" - category = slot_wear_suit path = /obj/item/clothing/suit/poncho/green -/datum/gear/ponchored +/datum/gear/suit/ponchored name = "Red poncho" - category = slot_wear_suit path = /obj/item/clothing/suit/poncho/red -/datum/gear/jacketbomber +/datum/gear/suit/jacketbomber name = "Bomber jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket -/datum/gear/jacketleather +/datum/gear/suit/jacketleather name = "Leather jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/leather -/datum/gear/overcoatleather +/datum/gear/suit/overcoatleather name = "Leather overcoat" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/leather/overcoat -/datum/gear/jacketpuffer +/datum/gear/suit/jacketpuffer name = "Puffer jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/puffer -/datum/gear/vestpuffer +/datum/gear/suit/vestpuffer name = "Puffer vest" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/puffer/vest -/datum/gear/jacketlettermanbrown +/datum/gear/suit/jacketlettermanbrown name = "Brown letterman jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/letterman -/datum/gear/jacketlettermanred +/datum/gear/suit/jacketlettermanred name = "Red letterman jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/letterman_red -/datum/gear/jacketlettermanNT +/datum/gear/suit/jacketlettermanNT name = "Nanotrasen letterman jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/letterman_nanotrasen -/datum/gear/coat +/datum/gear/suit/coat name = "Winter coat" - category = slot_wear_suit path = /obj/item/clothing/suit/hooded/wintercoat -/datum/gear/militaryjacket +/datum/gear/suit/militaryjacket name = "Military Jacket" - category = slot_wear_suit path = /obj/item/clothing/suit/jacket/miljacket -/datum/gear/ianshirt +/datum/gear/suit/ianshirt name = "Ian Shirt" - category = slot_wear_suit path = /obj/item/clothing/suit/ianshirt -/datum/gear/trekds9_coat - name = "DS9 Overcoat (use uniform)" - category = slot_wear_suit +//Job Coats +/datum/gear/suit/job + subtype_path = /datum/gear/suit/job + subtype_cost_overlap = FALSE + sort_category = "Job Specific Coats" + +/datum/gear/suit/job/sec/navybluejackethos + name = "head of security's navyblue jacket" + path = /obj/item/clothing/suit/security/hos + restricted_roles = list("Head of Security") + +/datum/gear/suit/job/sec/navybluejacketofficer + name = "security officer's navyblue jacket" + path = /obj/item/clothing/suit/security/officer + restricted_roles = list("Security Officer") + +/datum/gear/suit/job/sec/navybluejacketwarden + name = "warden navyblue jacket" + path = /obj/item/clothing/suit/security/warden + restricted_roles = list("Warden") + +//Trek Coats +/datum/gear/suit/trek + subtype_path = /datum/gear/suit/trek + subtype_cost_overlap = FALSE + sort_category = "Trek Coats" + +/datum/gear/suit/trek/ds9_coat + name = "DS9 Overcoat" path = /obj/item/clothing/suit/storage/trek/ds9 restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster", "Medical Doctor","Chemist","Virologist","Geneticist","Scientist", "Roboticist", "Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer", "Cargo Technician", "Shaft Miner") //everyone who actually deserves a job. -//Federation jackets from movies -/datum/gear/trekcmdcap +/datum/gear/suit/trek/cap name = "fed (movie) uniform, Captain" - category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt restricted_roles = list("Captain","Head of Personnel") -/datum/gear/trekcmdmov +/datum/gear/suit/trek/sec name = "fed (movie) uniform, sec" - category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer") -/datum/gear/trekmedscimov +/datum/gear/suit/trek/medsci name = "fed (movie) uniform, med/sci" - category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekengmov +/datum/gear/suit/trek/eng name = "fed (movie) uniform, ops/eng" - category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/loadout_uniform.dm similarity index 63% rename from modular_citadel/code/modules/client/loadout/uniform.dm rename to modular_citadel/code/modules/client/loadout/loadout_uniform.dm index acb2b4e13c..9aff13e707 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/loadout_uniform.dm @@ -1,220 +1,240 @@ -/datum/gear/suitblack - name = "Black suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket +// Uniform slot +/datum/gear/uniform + subtype_path = /datum/gear/uniform + slot = slot_w_uniform + cost = 2 + sort_category = "Uniforms and Casual Dress" -/datum/gear/suitgreen - name = "Green suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/green - -/datum/gear/suitred - name = "Red suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/red - -/datum/gear/suitcharcoal - name = "Charcoal suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/charcoal - -/datum/gear/suitnavy - name = "Navy suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/navy - -/datum/gear/suitburgundy - name = "Burgundy suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/burgundy - -/datum/gear/suittan - name = "Tan suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/tan - -/datum/gear/suitwhite - name = "White suit" - category = slot_w_uniform - path = /obj/item/clothing/under/suit_jacket/white - -/datum/gear/assistantformal - name = "Assistant's formal uniform" - category = slot_w_uniform - path = /obj/item/clothing/under/assistantformal - -/datum/gear/maidcostume - name = "Maid costume" - category = slot_w_uniform - path = /obj/item/clothing/under/maid - -/datum/gear/mailmanuniform - name = "Mailman's jumpsuit" - category = slot_w_uniform - path = /obj/item/clothing/under/rank/mailman - -/datum/gear/skirtblack - name = "Black skirt" - category = slot_w_uniform - path = /obj/item/clothing/under/skirt/black - -/datum/gear/skirtblue - name = "Blue skirt" - category = slot_w_uniform - path = /obj/item/clothing/under/skirt/blue - -/datum/gear/skirtred - name = "Red skirt" - category = slot_w_uniform - path = /obj/item/clothing/under/skirt/red - -/datum/gear/skirtpurple - name = "Purple skirt" - category = slot_w_uniform - path = /obj/item/clothing/under/skirt/purple - -/datum/gear/kilt - name = "Kilt" - category = slot_w_uniform - path = /obj/item/clothing/under/kilt - -/datum/gear/camoshorts - name = "Camo Pants" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/camo - -/datum/gear/bjeans - name = "Black Jeans" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/blackjeans - -/datum/gear/cjeans - name = "Classic Jeans" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/classicjeans - -/datum/gear/khaki - name = "Khaki Pants" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/khaki - -/datum/gear/wpants - name = "White Pants" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/white - -/datum/gear/rpants - name = "Red Pants" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/red - -/datum/gear/tpants - name = "Tan Pants" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/tan - -/datum/gear/trpants - name = "Track Pants" - category = slot_w_uniform - path = /obj/item/clothing/under/pants/track - -/datum/gear/turtleneck +/datum/gear/uniform/turtleneck name = "Tactitool Turtleneck" - category = slot_w_uniform path = /obj/item/clothing/under/syndicate/cosmetic +/datum/gear/uniform/suitblack + name = "Black suit" + path = /obj/item/clothing/under/suit_jacket + +/datum/gear/uniform/suitgreen + name = "Green suit" + path = /obj/item/clothing/under/suit_jacket/green + +/datum/gear/uniform/suitred + name = "Red suit" + path = /obj/item/clothing/under/suit_jacket/red + +/datum/gear/uniform/suitcharcoal + name = "Charcoal suit" + path = /obj/item/clothing/under/suit_jacket/charcoal + +/datum/gear/uniform/suitnavy + name = "Navy suit" + path = /obj/item/clothing/under/suit_jacket/navy + +/datum/gear/uniform/suitburgundy + name = "Burgundy suit" + path = /obj/item/clothing/under/suit_jacket/burgundy + +/datum/gear/uniform/suittan + name = "Tan suit" + path = /obj/item/clothing/under/suit_jacket/tan + +/datum/gear/uniform/suitwhite + name = "White suit" + path = /obj/item/clothing/under/suit_jacket/white + +/datum/gear/uniform/assistantformal + name = "Assistant's formal uniform" + path = /obj/item/clothing/under/assistantformal + +/datum/gear/uniform/maidcostume + name = "Maid costume" + path = /obj/item/clothing/under/maid + +/datum/gear/uniform/mailmanuniform + name = "Mailman's jumpsuit" + path = /obj/item/clothing/under/rank/mailman + +/datum/gear/uniform/skirt + subtype_path = /datum/gear/uniform/skirt + subtype_cost_overlap = FALSE + +/datum/gear/uniform/skirt/black + name = "Black skirt" + path = /obj/item/clothing/under/skirt/black + +/datum/gear/uniform/skirt/blue + name = "Blue skirt" + path = /obj/item/clothing/under/skirt/blue + +/datum/gear/uniform/skirt/red + name = "Red skirt" + path = /obj/item/clothing/under/skirt/red + +/datum/gear/uniform/skirt/purple + name = "Purple skirt" + path = /obj/item/clothing/under/skirt/purple + +/datum/gear/uniform/skirt/kilt + name = "Kilt" + path = /obj/item/clothing/under/kilt + +/datum/gear/uniform/pants + subtype_path = /datum/gear/uniform/pants + sort_category = "Pants" + +/datum/gear/uniform/pants/camoshorts + name = "Camo Pants" + path = /obj/item/clothing/under/pants/camo + +/datum/gear/uniform/pants/bjeans + name = "Black Jeans" + path = /obj/item/clothing/under/pants/blackjeans + +/datum/gear/uniform/pants/cjeans + name = "Classic Jeans" + path = /obj/item/clothing/under/pants/classicjeans + +/datum/gear/uniform/pants/khaki + name = "Khaki Pants" + path = /obj/item/clothing/under/pants/khaki + +/datum/gear/uniform/pants/wpants + name = "White Pants" + path = /obj/item/clothing/under/pants/white + +/datum/gear/uniform/pants/rpants + name = "Red Pants" + path = /obj/item/clothing/under/pants/red + +/datum/gear/uniform/pants/tpants + name = "Tan Pants" + path = /obj/item/clothing/under/pants/tan + +/datum/gear/uniform/pants/trpants + name = "Track Pants" + path = /obj/item/clothing/under/pants/track + +/datum/gear/uniform/job + subtype_path = /datum/gear/uniform/job + subtype_cost_overlap = FALSE + sort_category = "Job Specific Uniformss" + +/datum/gear/uniform/job/sec + subtype_path = /datum/gear/uniform/job/sec + +/datum/gear/uniform/job/sec/navyblueuniformhos + name = "Head of Security navyblue uniform" + path = /obj/item/clothing/under/rank/head_of_security/navyblue + restricted_roles = list("Head of Security") + +/datum/gear/uniform/job/sec/navyblueuniformofficer + name = "security officer navyblue uniform" + path = /obj/item/clothing/under/rank/security/navyblue + restricted_roles = list("Security officer") + +/datum/gear/uniform/job/sec/navyblueuniformwarden + name = "Warden navyblue uniform" + path = /obj/item/clothing/under/rank/warden/navyblue + restricted_roles = list("Warden") + +/datum/gear/uniform/job/sec/secskirt + name = "Security skirt" + path = /obj/item/clothing/under/rank/security/skirt + restricted_roles = list("Security Officer", "Warden", "Head of Security") + +/datum/gear/uniform/job/sec/hosskirt + name = "Head of security's skirt" + path = /obj/item/clothing/under/rank/head_of_security/skirt + restricted_roles = list("Head of Security") + // Trekie things +/datum/gear/uniform/trek + sort_category = "Trek Uniforms" + subtype_path = /datum/gear/uniform/trek + subtype_cost_overlap = FALSE + +/datum/gear/uniform/trek/cmd + subtype_path = /datum/gear/uniform/trek/cmd +/datum/gear/uniform/trek/medsci + subtype_path = /datum/gear/uniform/trek/medsci +/datum/gear/uniform/trek/eng + subtype_path = /datum/gear/uniform/trek/eng + //TOS -/datum/gear/trekcmdtos +/datum/gear/uniform/trek/cmd/tos name = "TOS uniform, cmd" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/trekmedscitos +/datum/gear/uniform/trek/medsci/tos name = "TOS uniform, med/sci" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekengtos +/datum/gear/uniform/trek/eng/tos name = "TOS uniform, ops/sec" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //TNG -/datum/gear/trekcmdtng +/datum/gear/uniform/trek/cmd/tng name = "TNG uniform, cmd" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/next restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/trekmedscitng +/datum/gear/uniform/trek/medsci/tng name = "TNG uniform, med/sci" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/next restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekengtng +/datum/gear/uniform/trek/eng/tng name = "TNG uniform, ops/sec" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/next restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //VOY -/datum/gear/trekcmdvoy +/datum/gear/uniform/trek/cmd/voy name = "VOY uniform, cmd" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/voy restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/trekmedscivoy +/datum/gear/uniform/trek/medsci/voy name = "VOY uniform, med/sci" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/voy restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekengvoy +/datum/gear/uniform/trek/eng/voy name = "VOY uniform, ops/sec" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/voy restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //DS9 -/datum/gear/trekcmdds9 +/datum/gear/uniform/trek/cmd/ds9 name = "DS9 uniform, cmd" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/ds9 restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/trekmedscids9 +/datum/gear/uniform/trek/medsci/ds9 name = "DS9 uniform, med/sci" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/ds9 restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekengds9 +/datum/gear/uniform/trek/eng/ds9 name = "DS9 uniform, ops/sec" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/ds9 restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //ENT -/datum/gear/trekcmdent +/datum/gear/uniform/trek/cmd/ent name = "ENT uniform, cmd" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/ent restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/trekmedscient +/datum/gear/uniform/trek/medsci/ent name = "ENT uniform, med/sci" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/ent restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/trekengent +/datum/gear/uniform/trek/eng/ent name = "ENT uniform, ops/sec" - category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/ent restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm deleted file mode 100644 index 839502d99c..0000000000 --- a/modular_citadel/code/modules/client/loadout/mask.dm +++ /dev/null @@ -1,4 +0,0 @@ -/datum/gear/balaclava - name = "Balaclava" - category = slot_wear_mask - path = /obj/item/clothing/mask/balaclava diff --git a/modular_citadel/code/modules/client/loadout/neck.dm b/modular_citadel/code/modules/client/loadout/neck.dm deleted file mode 100644 index 5e1e0017fe..0000000000 --- a/modular_citadel/code/modules/client/loadout/neck.dm +++ /dev/null @@ -1,84 +0,0 @@ -/datum/gear/bluetie - name = "Blue tie" - category = slot_neck - path = /obj/item/clothing/neck/tie/blue - -/datum/gear/redtie - name = "Red tie" - category = slot_neck - path = /obj/item/clothing/neck/tie/red - -/datum/gear/blacktie - name = "Black tie" - category = slot_neck - path = /obj/item/clothing/neck/tie/black - -/datum/gear/collar - name = "Collar" - category = slot_neck - path = /obj/item/clothing/neck/petcollar - -/datum/gear/scarf - name = "White scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf - -/datum/gear/blackscarf - name = "Black scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/black - -/datum/gear/redscarf - name = "Red scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/red - -/datum/gear/greenscarf - name = "Green scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/green - -/datum/gear/darkbluescarf - name = "Dark blue scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/darkblue - -/datum/gear/purplescarf - name = "Purple scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/purple - -/datum/gear/yellowscarf - name = "Yellow scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/yellow - -/datum/gear/orangescarf - name = "Orange scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/orange - -/datum/gear/cyanscarf - name = "Cyan scarf" - category = slot_neck - path = /obj/item/clothing/neck/scarf/cyan - -/datum/gear/stripedredscarf - name = "Striped red scarf" - category = slot_neck - path = /obj/item/clothing/neck/stripedredscarf - -/datum/gear/stripedbluescarf - name = "Striped blue scarf" - category = slot_neck - path = /obj/item/clothing/neck/stripedbluescarf - -/datum/gear/stripedgreenscarf - name = "Striped green scarf" - category = slot_neck - path = /obj/item/clothing/neck/stripedgreenscarf - -/datum/gear/headphones - name = "Headphones" - category = slot_neck - path = /obj/item/clothing/ears/headphones diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index b515264320..aba6f6b3dc 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -3,11 +3,7 @@ #define BACKPACK_SLOT_AMT 4 /datum/preferences - //gear - var/gear_points = 10 - var/list/gear_categories - var/list/chosen_gear - var/gear_tab + //pref vars var/screenshake = 100 @@ -261,58 +257,7 @@ . += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" . += "" */ - . += "" - - if(current_tab == 3) - if(!gear_tab) - gear_tab = GLOB.loadout_items[1] - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - for(var/j in GLOB.loadout_items[gear_tab]) - var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] - var/donoritem - if(gear.ckeywhitelist && gear.ckeywhitelist.len) - donoritem = TRUE - if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) - continue - var/class_link = "" - if(gear.type in chosen_gear) - class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=0'" - else if(donoritem) - class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" - else if(gear_points <= 0) - class_link = "class='linkOff'" - else - class_link = "href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" - . += "" - . += "" - . += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " - var/firstcat = TRUE - for(var/i in GLOB.loadout_items) - if(firstcat) - firstcat = FALSE - else - . += " |" - if(i == gear_tab) - . += " [i] " - else - . += " [i] " - . += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" - if(islist(gear.restricted_roles)) - if(gear.restricted_roles.len) - . += "" - . += gear.restricted_roles.Join(";") - . += "" - . += "[gear.description]
      " + . += "" /datum/preferences/proc/process_citadel_prefs(mob/user, list/href_list) if(href_list["task"] == "input") @@ -726,35 +671,6 @@ else user << "Invalid color. Your color is not bright enough." - if(href_list["preference"] == "gear") - if(href_list["clear_loadout"]) - LAZYCLEARLIST(chosen_gear) - gear_points = initial(gear_points) - save_preferences() - if(href_list["select_category"]) - for(var/i in GLOB.loadout_items) - if(i == href_list["select_category"]) - gear_tab = i - if(href_list["toggle_gear_path"]) - var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]] - if(!G) - return - var/toggle = text2num(href_list["toggle_gear"]) - if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear) - LAZYREMOVE(chosen_gear, G.type) - gear_points += initial(G.cost) - else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) - if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) - to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") - return - if(!is_loadout_slot_available(G.category)) - to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") - return - if(gear_points >= initial(G.cost)) - LAZYADD(chosen_gear, G.type) - gear_points -= initial(G.cost) - - /datum/preferences/proc/is_loadout_slot_available(slot) var/list/L LAZYINITLIST(L) diff --git a/tgstation.dme b/tgstation.dme index f79ca52b3c..16c163bde1 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2681,21 +2681,16 @@ #include "modular_citadel\code\modules\client\preferences.dm" #include "modular_citadel\code\modules\client\preferences_savefile.dm" #include "modular_citadel\code\modules\client\preferences_toggles.dm" -#include "modular_citadel\code\modules\client\loadout\__donator.dm" -#include "modular_citadel\code\modules\client\loadout\_medical.dm" -#include "modular_citadel\code\modules\client\loadout\_security.dm" -#include "modular_citadel\code\modules\client\loadout\_service.dm" -#include "modular_citadel\code\modules\client\loadout\backpack.dm" -#include "modular_citadel\code\modules\client\loadout\glasses.dm" -#include "modular_citadel\code\modules\client\loadout\gloves.dm" -#include "modular_citadel\code\modules\client\loadout\hands.dm" -#include "modular_citadel\code\modules\client\loadout\head.dm" +#include "modular_citadel\code\modules\client\loadout\gear_tweaks.dm" #include "modular_citadel\code\modules\client\loadout\loadout.dm" -#include "modular_citadel\code\modules\client\loadout\mask.dm" -#include "modular_citadel\code\modules\client\loadout\neck.dm" -#include "modular_citadel\code\modules\client\loadout\shoes.dm" -#include "modular_citadel\code\modules\client\loadout\suit.dm" -#include "modular_citadel\code\modules\client\loadout\uniform.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_accessories.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_cosmetics.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_donator.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_gloves.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_hat.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_shoes.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_suit.dm" +#include "modular_citadel\code\modules\client\loadout\loadout_uniform.dm" #include "modular_citadel\code\modules\client\verbs\who.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" From b27c5cd3b0030ae172ba832a22c91724e6637c5f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Mar 2018 05:32:12 -0500 Subject: [PATCH 08/12] Revert "SCREEE. fuck this. I'mma just revert at this point, but don't want to lose progress." This reverts commit a2fbab5ccb24ad69bb8c7f4faf50447ba3074adf. --- code/__DEFINES/colors.dm | 26 +-- code/__HELPERS/text_vr.dm | 24 +-- code/modules/client/preferences.dm | 121 ------------ .../{loadout_donator.dm => __donator.dm} | 157 +++++++-------- .../code/modules/client/loadout/_medical.dm | 5 + .../code/modules/client/loadout/_security.dm | 71 +++++++ .../code/modules/client/loadout/_service.dm | 13 ++ .../code/modules/client/loadout/backpack.dm | 24 +++ .../modules/client/loadout/gear_tweaks.dm | 113 ----------- .../code/modules/client/loadout/glasses.dm | 44 +++++ .../code/modules/client/loadout/gloves.dm | 4 + .../code/modules/client/loadout/hands.dm | 61 ++++++ .../loadout/{loadout_hat.dm => head.dm} | 75 +++---- .../code/modules/client/loadout/loadout.dm | 74 +------ .../client/loadout/loadout_accessories.dm | 170 ---------------- .../client/loadout/loadout_cosmetics.dm | 47 ----- .../modules/client/loadout/loadout_gloves.dm | 8 - .../code/modules/client/loadout/mask.dm | 4 + .../code/modules/client/loadout/neck.dm | 84 ++++++++ .../loadout/{loadout_shoes.dm => shoes.dm} | 30 +-- .../loadout/{loadout_suit.dm => suit.dm} | 93 ++++----- .../{loadout_uniform.dm => uniform.dm} | 184 ++++++++---------- .../code/modules/client/preferences.dm | 88 ++++++++- tgstation.dme | 23 ++- 24 files changed, 673 insertions(+), 870 deletions(-) rename modular_citadel/code/modules/client/loadout/{loadout_donator.dm => __donator.dm} (66%) create mode 100644 modular_citadel/code/modules/client/loadout/_medical.dm create mode 100644 modular_citadel/code/modules/client/loadout/_security.dm create mode 100644 modular_citadel/code/modules/client/loadout/_service.dm create mode 100644 modular_citadel/code/modules/client/loadout/backpack.dm delete mode 100644 modular_citadel/code/modules/client/loadout/gear_tweaks.dm create mode 100644 modular_citadel/code/modules/client/loadout/glasses.dm create mode 100644 modular_citadel/code/modules/client/loadout/gloves.dm create mode 100644 modular_citadel/code/modules/client/loadout/hands.dm rename modular_citadel/code/modules/client/loadout/{loadout_hat.dm => head.dm} (56%) delete mode 100644 modular_citadel/code/modules/client/loadout/loadout_accessories.dm delete mode 100644 modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm delete mode 100644 modular_citadel/code/modules/client/loadout/loadout_gloves.dm create mode 100644 modular_citadel/code/modules/client/loadout/mask.dm create mode 100644 modular_citadel/code/modules/client/loadout/neck.dm rename modular_citadel/code/modules/client/loadout/{loadout_shoes.dm => shoes.dm} (59%) rename modular_citadel/code/modules/client/loadout/{loadout_suit.dm => suit.dm} (61%) rename modular_citadel/code/modules/client/loadout/{loadout_uniform.dm => uniform.dm} (63%) diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 211f47d59b..824f5b3e61 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -2,27 +2,27 @@ #define COLOR_INPUT_DISABLED "#F0F0F0" #define COLOR_INPUT_ENABLED "#D3B5B5" -//CITADEL EDIT - why the fuck are colors commented out??? -#define COLOR_WHITE "#EEEEEE" -#define COLOR_SILVER "#C0C0C0" -#define COLOR_GRAY "#808080" + +//#define COLOR_WHITE "#EEEEEE" +//#define COLOR_SILVER "#C0C0C0" +//#define COLOR_GRAY "#808080" #define COLOR_FLOORTILE_GRAY "#8D8B8B" #define COLOR_ALMOST_BLACK "#333333" -#define COLOR_BLACK "#000000" +//#define COLOR_BLACK "#000000" #define COLOR_RED "#FF0000" -#define COLOR_RED_LIGHT "#FF3333" -#define COLOR_MAROON "#800000" +//#define COLOR_RED_LIGHT "#FF3333" +//#define COLOR_MAROON "#800000" #define COLOR_YELLOW "#FFFF00" -#define COLOR_OLIVE "#808000" -#define COLOR_LIME "#32CD32" +//#define COLOR_OLIVE "#808000" +//#define COLOR_LIME "#32CD32" #define COLOR_GREEN "#008000" #define COLOR_CYAN "#00FFFF" -#define COLOR_TEAL "#008080" +//#define COLOR_TEAL "#008080" #define COLOR_BLUE "#0000FF" -#define COLOR_BLUE_LIGHT "#33CCFF" -#define COLOR_NAVY "#000080" +//#define COLOR_BLUE_LIGHT "#33CCFF" +//#define COLOR_NAVY "#000080" #define COLOR_PINK "#FFC0CB" -#define COLOR_MAGENTA "#FF00FF" +//#define COLOR_MAGENTA "#FF00FF" #define COLOR_PURPLE "#800080" #define COLOR_ORANGE "#FF9900" #define COLOR_BEIGE "#CEB689" diff --git a/code/__HELPERS/text_vr.dm b/code/__HELPERS/text_vr.dm index 52d43a6501..846cb1b26a 100644 --- a/code/__HELPERS/text_vr.dm +++ b/code/__HELPERS/text_vr.dm @@ -24,26 +24,4 @@ GLOBAL_LIST_EMPTY(whitelisted_species_list) /proc/log_mentor(text) GLOB.mentorlog.Add(text) - GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]" - - -//Mergesort: any value in a list, preserves key=value structure -/proc/sortAssoc(var/list/L) - if(L.len < 2) - return L - var/middle = L.len / 2 + 1 // Copy is first,second-1 - return mergeAssoc(sortAssoc(L.Copy(0,middle)), sortAssoc(L.Copy(middle))) //second parameter null = to end of list - -/proc/mergeAssoc(var/list/L, var/list/R) - var/Li=1 - var/Ri=1 - var/list/result = new() - while(Li <= L.len && Ri <= R.len) - if(sorttext(L[Li], R[Ri]) < 1) - result += R&R[Ri++] - else - result += L&L[Li++] - - if(Li <= L.len) - return (result + L.Copy(Li, 0)) - return (result + R.Copy(Ri, 0)) \ No newline at end of file + GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]" \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 5fe17f566f..0b21646a4b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -127,14 +127,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/action_buttons_screen_locs = list() - //CITADEL GEAR SLOT DATA - //Gear stuff - var/list/gear = list() - var/gear_tab = "General" - var/max_gear_slots = 10 - var/list/gear_categories - var/list/chosen_gear - /datum/preferences/New(client/C) parent = C custom_names["human"] = random_unique_name() @@ -523,66 +515,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Be [capitalize(i)]: [(i in be_special) ? "Yes" : "No"]
      " dat += citadel_pref_replace(current_tab) dat += "" - //CITDEL EDIT - GEAR THINGS, fuck trying to get this working modularlly ****************************** - if(current_tab == 3) - var/total_cost = 0 - var/list/type_blacklist = list() - if(gear && gear.len) - for(var/i = 1, i <= gear.len, i++) - var/datum/gear/G = GLOB.loadout_items[gear[i]] - if(G) - if(!G.subtype_cost_overlap) - if(G.subtype_path in type_blacklist) - continue - type_blacklist += G.subtype_path - total_cost += G.cost - var/fcolor = "#3366CC" - if(total_cost < max_gear_slots) - fcolor = "#E67300" - dat += "" - dat += "" - dat += "" - - var/datum/loadout_catagories/LC = GLOB.loadout_catagories[gear_tab] - dat += "" - dat += "" - dat += "" - for(var/gear_name in LC.gear) - var/datum/gear/G = LC.gear[gear_name] - var/ticked = (G.name in gear) - dat += "" - dat += "" - if(ticked) - . += "" - dat += "
      [total_cost]/[max_gear_slots] loadout points spent. \[Clear Loadout\]
      " - - var/firstcat = 1 - for(var/category in GLOB.loadout_items) - var/datum/loadout_catagories/LC = GLOB.loadout_items[category] - var/datum/gear/gear = GLOB.loadout_items - if(LC.donor_only) - if(gear.ckeywhitelist && gear.ckeywhitelist.len) - if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) - continue - if(firstcat) - firstcat = 0 - else - dat += " |" - if(category == gear_tab) - dat += " [category] " - else - dat += " [category] " - dat += "

      [LC.catagory]

      [G.name][G.cost]" - if(G.restricted_roles) - dat += "Restrictions: " - for(var/role in G.restricted_roles) - dat += role + " " - dat += "" - dat += "[G.description]
      " - for(var/datum/gear_tweak/tweak in G.gear_tweaks) - . += " [tweak.get_contents(get_tweak_metadata(G, tweak))]" - . += "
      " else dat = citadel_dat_replace(current_tab) @@ -600,25 +533,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) popup.set_content(dat) popup.open(0) -//CITADEL GEAR STUFF -/datum/preferences/proc/get_gear_metadata(var/datum/gear/G) - . = gear[G.name] - if(!.) - . = list() - gear[G.name] = . - -/datum/preferences/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak) - var/list/metadata = get_gear_metadata(G) - . = metadata["[tweak]"] - if(!.) - . = tweak.get_default() - metadata["[tweak]"] = . - -/datum/preferences/proc/set_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak, var/new_metadata) - var/list/metadata = get_gear_metadata(G) - metadata["[tweak]"] = new_metadata -//END CITADEL GEAR STUFF - /datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620) if(!SSjob) return @@ -1509,41 +1423,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("tab") if (href_list["tab"]) current_tab = text2num(href_list["tab"]) - - if(href_list["toggle_gear"]) - var/datum/gear/TG = GLOB.loadout_items[href_list["toggle_gear"]] - if(TG.name in TG) - TG -= TG.name - else - if(TG.donor_only) - if(TG.ckeywhitelist && TG.ckeywhitelist.len) - if(user && user.client && user.client.ckey && !(TG.ckeywhitelist.Find(user.client.ckey))) - return - var/total_cost = 0 - var/list/type_blacklist = list() - for(var/gear_name in TG) - var/datum/gear/G = GLOB.loadout_items[gear_name] - if(istype(G)) - if(!G.subtype_cost_overlap) - if(G.subtype_path in type_blacklist) - continue - type_blacklist += G.subtype_path - total_cost += G.cost - if((total_cost + TG.cost) <= max_gear_slots) - gear += TG.name - else if(href_list["gear"] && href_list["tweak"]) - var/datum/gear/gear = GLOB.loadout_items[href_list["gear"]] - var/datum/gear_tweak/tweak = locate(href_list["tweak"]) - if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks)) - return - var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak)) - if(!metadata) - return - set_tweak_metadata(gear, tweak, metadata) - else if(href_list["select_category"]) - gear_tab = href_list["select_category"] - else if(href_list["clear_loadout"]) - gear.Cut() process_citadel_prefs(user, href_list) process_citadel_link(user, href_list) ShowChoices(user) diff --git a/modular_citadel/code/modules/client/loadout/loadout_donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm similarity index 66% rename from modular_citadel/code/modules/client/loadout/loadout_donator.dm rename to modular_citadel/code/modules/client/loadout/__donator.dm index 21dc9ccbb6..69015b064d 100644 --- a/modular_citadel/code/modules/client/loadout/loadout_donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -1,223 +1,224 @@ //This is the file that handles donator loadout items. -/datum/gear/donor - donor_only = TRUE - sort_category = "Donor" - subtype_path = /datum/gear/donor - -/datum/gear/donor/pingcoderfailsafe +/datum/gear/pingcoderfailsafe name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/bikehorn/golden ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard -/datum/gear/donor/donortestingbikehorn +/datum/gear/donortestingbikehorn name = "Donor item testing bikehorn" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/bikehorn - ckeywhitelist = list("jayehh","deathride58","poojawa") + ckeywhitelist = list("jayehh","deathride58") -/datum/gear/donor/kevhorn +/datum/gear/kevhorn name = "Airhorn" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/bikehorn/airhorn ckeywhitelist = list("kevinz000") -/datum/gear/donor/cebusoap +/datum/gear/cebusoap name = "Cebutris' soap" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/custom/ceb_soap ckeywhitelist = list("cebutris") -/datum/gear/donor/kiaracloak +/datum/gear/kiaracloak name = "Kiara's cloak" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/cloak/inferno ckeywhitelist = list("inferno707") -/datum/gear/donor/kiaracollar +/datum/gear/kiaracollar name = "Kiara's collar" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/petcollar/inferno ckeywhitelist = list("inferno707") -/datum/gear/donor/kiaramedal +/datum/gear/kiaramedal name = "Insignia of Steele" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/clothing/accessory/medal/steele ckeywhitelist = list("inferno707") -/datum/gear/donor/sexymimemask +/datum/gear/sexymimemask name = "The hollow heart" - slot = slot_wear_mask + category = slot_wear_mask path = /obj/item/clothing/mask/sexymime ckeywhitelist = list("inferno707") -/datum/gear/donor/engravedzippo +/datum/gear/engravedzippo name = "Engraved zippo" - slot = slot_hands + category = slot_hands path = /obj/item/lighter/gold ckeywhitelist = list("dirtyoldharry") -/datum/gear/donor/geisha +/datum/gear/geisha name = "Geisha suit" - slot = slot_w_uniform + category = slot_w_uniform path = /obj/item/clothing/under/geisha ckeywhitelist = list("atiefling") -/datum/gear/donor/specialscarf +/datum/gear/specialscarf name = "Special scarf" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/scarf/zomb ckeywhitelist = list("zombierobin") -/datum/gear/donor/redmadcoat +/datum/gear/redmadcoat name = "The Mad's labcoat" - slot = slot_wear_suit + category = slot_wear_suit path = /obj/item/clothing/suit/toggle/labcoat/mad/red ckeywhitelist = list("zombierobin") -/datum/gear/donor/santahat +/datum/gear/santahat name = "Santa hat" - slot = slot_head + category = slot_head path = /obj/item/clothing/head/santa/fluff ckeywhitelist = list("illotafv") -/datum/gear/donor/reindeerhat +/datum/gear/reindeerhat name = "Reindeer hat" - slot = slot_head + category = slot_head path = /obj/item/clothing/head/hardhat/reindeer/fluff ckeywhitelist = list("illotafv") -/datum/gear/donor/treeplushie +/datum/gear/treeplushie name = "Christmas tree plushie" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/toy/plush/tree ckeywhitelist = list("illotafv") -/datum/gear/donor/santaoutfit +/datum/gear/santaoutfit name = "Santa costume" - slot = slot_wear_suit + category = slot_wear_suit path = /obj/item/clothing/suit/space/santa/fluff ckeywhitelist = list("illotafv") -/datum/gear/donor/treecloak +/datum/gear/treecloak name = "Christmas tree cloak" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/cloak/festive ckeywhitelist = list("illotafv") -/datum/gear/donor/carrotplush +/datum/gear/carrotplush name = "Carrot plushie" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/toy/plush/carrot ckeywhitelist = list("improvedname") -/datum/gear/donor/carrotcloak +/datum/gear/carrotcloak name = "Carrot cloak" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/cloak/carrot ckeywhitelist = list("improvedname") -/datum/gear/donor/albortorosamask +/datum/gear/albortorosamask name = "Alborto Rosa mask" - slot = slot_wear_mask + category = slot_wear_mask path = /obj/item/clothing/mask/luchador/zigfie ckeywhitelist = list("zigfie") -/datum/gear/donor/mankini +/datum/gear/mankini name = "Mankini" - slot = slot_w_uniform + category = slot_w_uniform path = /obj/item/clothing/under/mankini ckeywhitelist = list("zigfie") -/datum/gear/donor/pinkshoes +/datum/gear/pinkshoes name = "Pink shoes" - slot = slot_shoes + category = slot_shoes path = /obj/item/clothing/shoes/sneakers/pink ckeywhitelist = list("zigfie") -/datum/gear/donor/reecesgreatcoat +/datum/gear/reecesgreatcoat name = "Reece's Great Coat" - slot = slot_wear_suit + category = slot_wear_suit path = /obj/item/clothing/suit/trenchcoat/green ckeywhitelist = list("geemiesif") -/datum/gear/donor/russianflask +/datum/gear/russianflask name = "Russian flask" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/reagent_containers/food/drinks/flask/russian cost = 2 ckeywhitelist = list("slomka") -/datum/gear/donor/stalkermask +/datum/gear/stalkermask name = "S.T.A.L.K.E.R. mask" - slot = slot_wear_mask + category = slot_wear_mask path = /obj/item/clothing/mask/gas/stalker ckeywhitelist = list("slomka") -/datum/gear/donor/stripedcollar +/datum/gear/stripedcollar name = "Striped collar" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/petcollar/stripe ckeywhitelist = list("jademanique") -/datum/gear/donor/performersoutfit +/datum/gear/performersoutfit name = "Bluish performer's outfit" - slot = slot_w_uniform + category = slot_w_uniform path = /obj/item/clothing/under/singery/custom ckeywhitelist = list("killer402402") -/datum/gear/donor/vermillion +/datum/gear/vermillion name = "Vermillion clothing" - slot = slot_w_uniform + category = slot_w_uniform path = /obj/item/clothing/suit/vermillion ckeywhitelist = list("fractious") -/datum/gear/donor/AM4B +/datum/gear/AM4B name = "Foam Force AM4-B" - slot = slot_in_backpack + category = slot_in_backpack path = /obj/item/gun/ballistic/automatic/AM4B ckeywhitelist = list("zeronetalpha") -/datum/gear/donor/carrotsatchel +/datum/gear/carrotsatchel name = "Carrot Satchel" - slot = slot_hands + category = slot_hands path = /obj/item/storage/backpack/satchel/carrot ckeywhitelist = list("improvedname") -/datum/gear/donor/naomisweater +/datum/gear/naomisweater name = "worn black sweater" - slot = slot_w_uniform + category = slot_w_uniform path = /obj/item/clothing/under/bb_sweater/black/naomi ckeywhitelist = list("technicalmagi") -/datum/gear/donor/naomicollar +/datum/gear/naomicollar name = "worn pet collar" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/petcollar/naomi ckeywhitelist = list("technicalmagi") -/datum/gear/donor/gladiator +/datum/gear/gladiator name = "Gladiator Armor" - slot = slot_wear_suit + category = slot_wear_suit path = /obj/item/clothing/under/gladiator ckeywhitelist = list("aroche") -/datum/gear/donor/bloodredtie +/datum/gear/bloodredtie name = "Blood Red Tie" - slot = slot_neck + category = slot_neck path = /obj/item/clothing/neck/tie/bloodred ckeywhitelist = list("kyutness") -/datum/gear/donor/puffydress +/datum/gear/puffydress name = "Puffy Dress" - slot = slot_wear_suit + category = slot_wear_suit path = /obj/item/clothing/suit/puffydress //ckeywhitelist = //Don't know their ckey yet -/datum/gear/donor/labredblack +/datum/gear/labredblack name = "Black and Red Coat" - slot = slot_wear_suit + category = slot_wear_suit path = /obj/item/clothing/suit/toggle/labcoat/labredblack ckeywhitelist = list("blakeryan") + + + + + + diff --git a/modular_citadel/code/modules/client/loadout/_medical.dm b/modular_citadel/code/modules/client/loadout/_medical.dm new file mode 100644 index 0000000000..e8c8ea453d --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/_medical.dm @@ -0,0 +1,5 @@ +/datum/gear/stethoscope + name = "Stethoscope" + category = slot_neck + path = /obj/item/clothing/neck/stethoscope + restricted_roles = list("Medical Doctor", "Chief Medical Officer") diff --git a/modular_citadel/code/modules/client/loadout/_security.dm b/modular_citadel/code/modules/client/loadout/_security.dm new file mode 100644 index 0000000000..304e99f311 --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/_security.dm @@ -0,0 +1,71 @@ +/datum/gear/navyblueuniformhos + name = "Head of Security navyblue uniform" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/head_of_security/navyblue + restricted_roles = list("Head of Security") + +/datum/gear/navybluehosberet + name = "Head of security's Naviblue beret" + category = slot_head + path = /obj/item/clothing/head/beret/sec/navyhos + restricted_roles = list("Head of Security") + +/datum/gear/navybluejackethos + name = "head of security's navyblue jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/security/hos + restricted_roles = list("Head of Security") + +/datum/gear/navybluejacketofficer + name = "security officer's navyblue jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/security/officer + restricted_roles = list("Security Officer") + +/datum/gear/navyblueofficerberet + name = "Security officer's Navyblue beret" + category = slot_head + path = /obj/item/clothing/head/beret/sec/navyofficer + restricted_roles = list("Security Officer") + +/datum/gear/navyblueuniformofficer + name = "security officer navyblue uniform" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/security/navyblue + restricted_roles = list("Security officer") + +/datum/gear/navybluejacketwarden + name = "warden navyblue jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/security/warden + restricted_roles = list("Warden") + +/datum/gear/navybluewardenberet + name = "Warden's navyblue beret" + category = slot_head + path = /obj/item/clothing/head/beret/sec/navywarden + restricted_roles = list("Warden") + +/datum/gear/navyblueuniformwarden + name = "Warden navyblue uniform" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/warden/navyblue + restricted_roles = list("Warden") + +/datum/gear/secskirt + name = "Security skirt" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/security/skirt + restricted_roles = list("Security Officer", "Warden", "Head of Security") + +/datum/gear/hosskirt + name = "Head of security's skirt" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/head_of_security/skirt + restricted_roles = list("Head of Security") + +/datum/gear/sechud + name = "Security Hud" + category = slot_glasses + path = /obj/item/clothing/glasses/hud/security + restricted_roles = list("Security Officer", "Warden", "Head of Security") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/_service.dm b/modular_citadel/code/modules/client/loadout/_service.dm new file mode 100644 index 0000000000..56345e9185 --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/_service.dm @@ -0,0 +1,13 @@ +/datum/gear/plushvar + name = "Ratvar Plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/plushvar + cost = 5 + restricted_roles = list("Chaplain") + +/datum/gear/narplush + name = "Narsie Plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/narplush + cost = 5 + restricted_roles = list("Chaplain") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm new file mode 100644 index 0000000000..2779d6f124 --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -0,0 +1,24 @@ +/datum/gear/plushcarp + name = "Space carp plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/carpplushie + +/datum/gear/plushliz + name = "Lizard plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/lizardplushie + +/datum/gear/plushsnek + name = "Snake plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/snakeplushie + +/datum/gear/plushslime + name = "Slime plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/slimeplushie + +/datum/gear/dildo + name = "Customizable dildo" + category = slot_in_backpack + path = /obj/item/dildo/custom diff --git a/modular_citadel/code/modules/client/loadout/gear_tweaks.dm b/modular_citadel/code/modules/client/loadout/gear_tweaks.dm deleted file mode 100644 index 31ffcbf29c..0000000000 --- a/modular_citadel/code/modules/client/loadout/gear_tweaks.dm +++ /dev/null @@ -1,113 +0,0 @@ -/datum/gear_tweak/proc/get_contents(var/metadata) - return - -/datum/gear_tweak/proc/get_metadata(var/user, var/metadata) - return - -/datum/gear_tweak/proc/get_default() - return - -/datum/gear_tweak/proc/tweak_gear_data(var/metadata, var/datum/gear_data) - return - -/datum/gear_tweak/proc/tweak_item(var/obj/item/I, var/metadata) - return - -/* -* Color adjustment -*/ - -var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() - -/datum/gear_tweak/color - var/list/valid_colors - -/datum/gear_tweak/color/New(var/list/colors) - valid_colors = colors - ..() - -/datum/gear_tweak/color/get_contents(var/metadata) - return "Color: " - -/datum/gear_tweak/color/get_default() - return valid_colors ? valid_colors[1] : COLOR_GRAY - -/datum/gear_tweak/color/get_metadata(var/user, var/metadata) - if(valid_colors) - return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors - return input(user, "Choose an item color.", "Global Preference", metadata) as color|null - -/datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata) - if(valid_colors && !(metadata in valid_colors)) - return - I.color = metadata - -/* -* Path adjustment -*/ - -/datum/gear_tweak/path - var/list/valid_paths - -/datum/gear_tweak/path/New(var/list/paths) - valid_paths = paths - ..() - -/datum/gear_tweak/path/get_contents(var/metadata) - return "Type: [metadata]" - -/datum/gear_tweak/path/get_default() - return valid_paths[1] - -/datum/gear_tweak/path/get_metadata(var/user, var/metadata) - return input(user, "Choose a type.", "Character Preference", metadata) as null|anything in valid_paths - -/datum/gear_tweak/path/tweak_gear_data(var/metadata, var/datum/gear_data/gear_data) - if(!(metadata in valid_paths)) - return - gear_data.path = valid_paths[metadata] - -/* -* Content adjustment -*/ - -/datum/gear_tweak/contents - var/list/valid_contents - -/datum/gear_tweak/contents/New() - valid_contents = args.Copy() - ..() - -/datum/gear_tweak/contents/get_contents(var/metadata) - return "Contents: [english_list(metadata, and_text = ", ")]" - -/datum/gear_tweak/contents/get_default() - . = list() - for(var/i = 1 to valid_contents.len) - . += "Random" - -/datum/gear_tweak/contents/get_metadata(var/user, var/list/metadata) - . = list() - for(var/i = metadata.len to valid_contents.len) - metadata += "Random" - for(var/i = 1 to valid_contents.len) - var/entry = input(user, "Choose an entry.", "Character Preference", metadata[i]) as null|anything in (valid_contents[i] + list("Random", "None")) - if(entry) - . += entry - else - return metadata - -/datum/gear_tweak/contents/tweak_item(var/obj/item/I, var/list/metadata) - if(metadata.len != valid_contents.len) - return - for(var/i = 1 to valid_contents.len) - var/path - var/list/contents = valid_contents[i] - if(metadata[i] == "Random") - path = pick(contents) - path = contents[path] - else if(metadata[i] == "None") - continue - else - path = contents[metadata[i]] - new path(I) \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/glasses.dm b/modular_citadel/code/modules/client/loadout/glasses.dm new file mode 100644 index 0000000000..b1e6068a9e --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/glasses.dm @@ -0,0 +1,44 @@ +/datum/gear/cold + name = "Cold goggles" + category = slot_glasses + path = /obj/item/clothing/glasses/cold + +/datum/gear/eyepatch + name = "Eyepatch" + category = slot_glasses + path = /obj/item/clothing/glasses/eyepatch + +/datum/gear/heat + name = "Heat goggles" + category = slot_glasses + path = /obj/item/clothing/glasses/heat + +/datum/gear/hipster + name = "Hipster glasses" + category = slot_glasses + path = /obj/item/clothing/glasses/regular/hipster + +/datum/gear/jamjar + name = "Jamjar glasses" + category = slot_glasses + path = /obj/item/clothing/glasses/regular/jamjar + +/datum/gear/monocle + name = "Monocle" + category = slot_glasses + path = /obj/item/clothing/glasses/monocle + +/datum/gear/orange + name = "Orange glasses" + category = slot_glasses + path = /obj/item/clothing/glasses/orange + +/datum/gear/red + name = "Red Glasses" + category = slot_glasses + path = /obj/item/clothing/glasses/red + +/datum/gear/prescription + name = "Prescription glasses" + category = slot_glasses + path = /obj/item/clothing/glasses/regular diff --git a/modular_citadel/code/modules/client/loadout/gloves.dm b/modular_citadel/code/modules/client/loadout/gloves.dm new file mode 100644 index 0000000000..ec67fbc0ec --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/gloves.dm @@ -0,0 +1,4 @@ +/datum/gear/fingerless + name = "Fingerless Gloves" + category = slot_gloves + path = /obj/item/clothing/gloves/fingerless \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm new file mode 100644 index 0000000000..94815a7243 --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/hands.dm @@ -0,0 +1,61 @@ +/datum/gear/cane + name = "Cane" + category = slot_hands + path = /obj/item/cane + +/datum/gear/cigarettes + name = "Cigarette pack" + category = slot_hands + path = /obj/item/storage/fancy/cigarettes + +/datum/gear/dice + name = "Dice bag" + category = slot_hands + path = /obj/item/storage/pill_bottle/dice + +/datum/gear/eightball + name = "Magic eightball" + category = slot_hands + path = /obj/item/toy/eightball + +/datum/gear/matches + name = "Matchbox" + category = slot_hands + path = /obj/item/storage/box/matches + +/datum/gear/cheaplighter + name = "Cheap lighter" + category = slot_hands + path = /obj/item/lighter/greyscale + +/datum/gear/cards + name = "Playing cards" + category = slot_hands + path = /obj/item/toy/cards/deck + +/datum/gear/skub + name = "Skub" + category = slot_hands + path = /obj/item/skub + +/datum/gear/carpplushie + name = "Space carp plushie" + category = slot_hands + path = /obj/item/toy/plush/carpplushie + +/datum/gear/wallet + name = "Wallet" + category = slot_hands + path = /obj/item/storage/wallet + +/datum/gear/flask + name = "Flask" + category = slot_hands + path = /obj/item/reagent_containers/food/drinks/flask + cost = 2 + +/datum/gear/zippolighter + name = "Zippo Lighter" + category = slot_hands + path = /obj/item/lighter + cost = 2 diff --git a/modular_citadel/code/modules/client/loadout/loadout_hat.dm b/modular_citadel/code/modules/client/loadout/head.dm similarity index 56% rename from modular_citadel/code/modules/client/loadout/loadout_hat.dm rename to modular_citadel/code/modules/client/loadout/head.dm index 11ba3c6de4..168debf2cc 100644 --- a/modular_citadel/code/modules/client/loadout/loadout_hat.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -1,91 +1,74 @@ -/datum/gear/hat - subtype_path = /datum/gear/hat - slot = slot_head - sort_category = "Headwear" - -/datum/gear/hat/balaclava - name = "Balaclava" - slot = slot_in_backpack - cost = 3 - path = /obj/item/clothing/mask/balaclava - -/datum/gear/hat/baseball +/datum/gear/baseball name = "Ballcap" + category = slot_head path = /obj/item/clothing/head/soft/mime -/datum/gear/hat/beanie +/datum/gear/beanie name = "Beanie" + category = slot_head path = /obj/item/clothing/head/beanie -/datum/gear/hat/beret +/datum/gear/beret name = "Black beret" + category = slot_head path = /obj/item/clothing/head/beret/black -/datum/gear/hat/flatcap +/datum/gear/flatcap name = "Flat cap" + category = slot_head path = /obj/item/clothing/head/flatcap -/datum/gear/hat/pirate +/datum/gear/pirate name = "Pirate hat" + category = slot_head path = /obj/item/clothing/head/pirate -/datum/gear/hat/rice_hat +/datum/gear/rice_hat name = "Rice hat" + category = slot_head path = /obj/item/clothing/head/rice_hat -/datum/gear/hat/ushanka +/datum/gear/ushanka name = "Ushanka" + category = slot_head path = /obj/item/clothing/head/ushanka -/datum/gear/hat/slime +/datum/gear/slime name = "Slime hat" + category = slot_head path = /obj/item/clothing/head/collectable/slime -/datum/gear/hat/fedora +/datum/gear/fedora name = "Fedora" + category = slot_head path = /obj/item/clothing/head/fedora -/datum/gear/hat/that +/datum/gear/that name = "Top Hat" + category = slot_head path = /obj/item/clothing/head/that -/datum/gear/hat/navy - subtype_path = datum/gear/hat/navy - subtype_cost_overlap = FALSE - sort_category = "Job Specific Headwear" - -/datum/gear/hat/navy/bluehosberet - name = "Head of security's Navy beret" - path = /obj/item/clothing/head/beret/sec/navyhos - restricted_roles = list("Head of Security") - -/datum/gear/hat/navy/blueofficerberet - name = "Security officer's Navyblue beret" - path = /obj/item/clothing/head/beret/sec/navyofficer - restricted_roles = list("Security Officer") - -/datum/gear/hat/navy/bluewardenberet - name = "Warden's navyblue beret" - path = /obj/item/clothing/head/beret/sec/navywarden - restricted_roles = list("Warden") - //trek fancy Hats! -/datum/gear/hat/navy/trekcap +/datum/gear/trekcap name = "Federation Officer's Cap" + category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover restricted_roles = list("Captain","Head of Personnel") -/datum/gear/hat/navy/trekcap/medisci +/datum/gear/trekcapmedisci name = "Federation Officer's Cap" + category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/hat/navy/trekcap/eng +/datum/gear/trekcapeng name = "Federation Officer's Cap" + category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/eng restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") -/datum/gear/hat/navy/trekcap/sec +/datum/gear/trekcapsec name = "Federation Officer's Cap" + category = slot_head path = /obj/item/clothing/head/caphat/formal/fedcover/sec - restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") + restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/loadout.dm b/modular_citadel/code/modules/client/loadout/loadout.dm index 7db13f5a3e..86efc6dc5b 100644 --- a/modular_citadel/code/modules/client/loadout/loadout.dm +++ b/modular_citadel/code/modules/client/loadout/loadout.dm @@ -3,55 +3,9 @@ // slot_to_string(slot) proc in hippiestation/code/_HELPERS/mobs.dm to show the category name in preferences menu) and path (the actual item path). // description defaults to the path initial desc, cost defaults to 1 point but if you think your item requires more points, the framework allows that // and lastly, restricted_roles list allows you to let someone spawn with certain items only if the job they spawned with is on the list. -GLOBAL_LIST_EMPTY(loadout_catagories) + GLOBAL_LIST_EMPTY(loadout_items) -/datum/loadout_category - var/category = "" - var/list/gear = list() - var/donor_only = FALSE - -/datum/loadout_category/New(cat) - category = cat - ..() - -/proc/initialize_global_loadout_items() - LAZYINITLIST(GLOB.loadout_items) - //create a list of gear datums to sort - for(var/geartype in subtypesof(/datum/gear)) - var/datum/gear/G = geartype - - var/use_name = initial(G.name) - var/use_category = initial(G.sort_category) - - if(G == initial(G.subtype_path)) - continue - - if(!use_name) - error("Loadout - Missing display name: [G]") - continue - if(!initial(G.cost)) - error("Loadout - Missing cost: [G]") - continue - if(!initial(G.path)) - error("Loadout - Missing path definition: [G]") - continue - - if(!GLOB.loadout_catagories[use_category]) - GLOB.loadout_catagories[use_category] = new /datum/loadout_category(use_category) - var/datum/loadout_category/LC = GLOB.loadout_catagories[use_category] - if(initial(G.donor_only)) - LC.donor_only = TRUE - GLOB.loadout_items[use_name] = new geartype - LC.gear[use_name] = GLOB.loadout_items[use_name] - - GLOB.loadout_catagories = sortAssoc(loadout_catagories) - for(var/loadout_category in GLOB.loadout_catagories) - var/datum/loadout_category/LC = GLOB.loadout_catagories[loadout_category] - LC.gear = sortAssoc(LC.gear) - return 1 - -/* /proc/initialize_global_loadout_items() LAZYINITLIST(GLOB.loadout_items) for(var/item in subtypesof(/datum/gear)) @@ -59,41 +13,19 @@ GLOBAL_LIST_EMPTY(loadout_items) if(!GLOB.loadout_items[slot_to_string(I.category)]) LAZYINITLIST(GLOB.loadout_items[slot_to_string(I.category)]) LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I) -*/ + /datum/gear var/name - var/slot + var/category var/description var/path //item-to-spawn path var/cost = 1 //normally, each loadout costs a single point. var/list/restricted_roles var/list/ckeywhitelist - var/sort_category = "General" - var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned. - var/subtype_path = /datum/gear //for skipping organizational subtypes (optional) - var/subtype_cost_overlap = TRUE //if subtypes can take points at the same time - var/donor_only = FALSE // if it's only available to donors /datum/gear/New() ..() if(!description && path) var/obj/O = path description = initial(O.desc) - -/datum/gear_data - var/path - var/location - -/datum/gear_data/New(npath, nlocation) - path = npath - location = nlocation - -/datum/gear/proc/spawn_item(location, metadata) - var/datum/gear_data/gd = new(path, location) - for(var/datum/gear_tweak/gt in gear_tweaks) - gt.tweak_gear_data(metadata["[gt]"], gd) - var/item = new gd.path(gd.location) - for(var/datum/gear_tweak/gt in gear_tweaks) - gt.tweak_item(item, metadata["[gt]"]) - return item \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/loadout_accessories.dm b/modular_citadel/code/modules/client/loadout/loadout_accessories.dm deleted file mode 100644 index 458cc8ec85..0000000000 --- a/modular_citadel/code/modules/client/loadout/loadout_accessories.dm +++ /dev/null @@ -1,170 +0,0 @@ - -/datum/gear/accessory - subtype_path = /datum/gear/accessory - slot = slot_in_backpack - sort_category = "Accessories" - -/datum/gear/accessory/cane - name = "Cane" - path = /obj/item/cane - -/datum/gear/accessory/cigarettes - name = "Cigarette pack" - path = /obj/item/storage/fancy/cigarettes - -/datum/gear/accessory/dice - name = "Dice bag" - path = /obj/item/storage/pill_bottle/dice -/datum/gear/accessory/eightball - name = "Magic eightball" - path = /obj/item/toy/eightball - -/datum/gear/accessory/matches - name = "Matchbox" - path = /obj/item/storage/box/matches - -/datum/gear/accessory/cheaplighter - name = "Cheap lighter" - path = /obj/item/lighter/greyscale - -/datum/gear/accessory/cards - name = "Playing cards" - path = /obj/item/toy/cards/deck - -/datum/gear/accessory/skub - name = "Skub" - path = /obj/item/skub - -/datum/gear/accessory/carpplushie - name = "Space carp plushie" - path = /obj/item/toy/plush/carpplushie - -/datum/gear/accessory/wallet - name = "Wallet" - path = /obj/item/storage/wallet - -/datum/gear/accessory/flask - name = "Flask" - path = /obj/item/reagent_containers/food/drinks/flask - cost = 2 - -/datum/gear/accessory/zippolighter - name = "Zippo Lighter" - path = /obj/item/lighter - cost = 2 - -/datum/gear/accessory/stethoscope - name = "Stethoscope" - slot = slot_neck - path = /obj/item/clothing/neck/stethoscope - restricted_roles = list("Medical Doctor", "Chief Medical Officer") - -/datum/gear/accessory/plush - subtype_path = /datum/gear/accessory/plush - sort_category = "Toys" - -/datum/gear/accessory/plush/plushvar - name = "Ratvar Plushie" - path = /obj/item/toy/plush/plushvar - cost = 5 - restricted_roles = list("Chaplain") - -/datum/gear/accessory/plush/narplush - name = "Narsie Plushie" - path = /obj/item/toy/plush/narplush - cost = 5 - restricted_roles = list("Chaplain") - -/datum/gear/accessory/plush/plushcarp - name = "Space carp plushie" - path = /obj/item/toy/plush/carpplushie - -/datum/gear/accessory/plush/plushliz - name = "Lizard plushie" - path = /obj/item/toy/plush/lizardplushie - -/datum/gear/accessory/plush/plushsnek - name = "Snake plushie" - path = /obj/item/toy/plush/snakeplushie - -/datum/gear/accessory/plush/plushslime - name = "Slime plushie" - path = /obj/item/toy/plush/slimeplushie - -/datum/gear/accessory/plush/dildo - name = "Customizable dildo" - path = /obj/item/dildo/custom - -/datum/gear/accessory/tie - subtype_path = /datum/gear/accessory/tie - slot = slot_neck - subtype_cost_overlap = FALSE - sort_category = "Neckwear" - -/datum/gear/accessory/tie/bluetie - name = "Blue tie" - path = /obj/item/clothing/neck/tie/blue - -/datum/gear/accessory/tie/redtie - name = "Red tie" - path = /obj/item/clothing/neck/tie/red - -/datum/gear/accessory/tie/blacktie - name = "Black tie" - path = /obj/item/clothing/neck/tie/black - -/datum/gear/accessory/tie/collar - name = "Collar" - path = /obj/item/clothing/neck/petcollar - -/datum/gear/accessory/tie/scarf - name = "White scarf" - path = /obj/item/clothing/neck/scarf - -/datum/gear/accessory/tie/blackscarf - name = "Black scarf" - path = /obj/item/clothing/neck/scarf/black - -/datum/gear/accessory/tie/redscarf - name = "Red scarf" - path = /obj/item/clothing/neck/scarf/red - -/datum/gear/accessory/tie/greenscarf - name = "Green scarf" - path = /obj/item/clothing/neck/scarf/green - -/datum/gear/accessory/tie/darkbluescarf - name = "Dark blue scarf" - path = /obj/item/clothing/neck/scarf/darkblue - -/datum/gear/accessory/tie/purplescarf - name = "Purple scarf" - path = /obj/item/clothing/neck/scarf/purple - -/datum/gear/accessory/tie/yellowscarf - name = "Yellow scarf" - path = /obj/item/clothing/neck/scarf/yellow - -/datum/gear/accessory/tie/orangescarf - name = "Orange scarf" - path = /obj/item/clothing/neck/scarf/orange - -/datum/gear/accessory/tie/cyanscarf - name = "Cyan scarf" - path = /obj/item/clothing/neck/scarf/cyan - -/datum/gear/accessory/tie/stripedredscarf - name = "Striped red scarf" - path = /obj/item/clothing/neck/stripedredscarf - -/datum/gear/accessory/tie/stripedbluescarf - name = "Striped blue scarf" - path = /obj/item/clothing/neck/stripedbluescarf - -/datum/gear/accessory/tie/stripedgreenscarf - name = "Striped green scarf" - path = /obj/item/clothing/neck/stripedgreenscarf - -/datum/gear/accessory/tie/headphones - name = "Headphones" - path = /obj/item/clothing/ears/headphones diff --git a/modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm b/modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm deleted file mode 100644 index 889818e53e..0000000000 --- a/modular_citadel/code/modules/client/loadout/loadout_cosmetics.dm +++ /dev/null @@ -1,47 +0,0 @@ -/datum/gear/cosmetics - sort_category = "Cosmetics" - subtype_path = /datum/gear/accessory - -/datum/gear/cosmetics/glasses - slot = slot_glasses - -/datum/gear/cosmetics/glasses/cold - name = "Cold goggles" - path = /obj/item/clothing/glasses/cold - -/datum/gear/cosmetics/glasses/eyepatch - name = "Eyepatch" - path = /obj/item/clothing/glasses/eyepatch - -/datum/gear/cosmetics/glasses/heat - name = "Heat goggles" - path = /obj/item/clothing/glasses/heat - -datum/gear/cosmetics/glasses/hipster - name = "Hipster glasses" - path = /obj/item/clothing/glasses/regular/hipster - -datum/gear/cosmetics/glasses/jamjar - name = "Jamjar glasses" - path = /obj/item/clothing/glasses/regular/jamjar - -datum/gear/cosmetics/glasses/monocle - name = "Monocle" - path = /obj/item/clothing/glasses/monocle - -datum/gear/cosmetics/glasses/orange - name = "Orange glasses" - path = /obj/item/clothing/glasses/orange - -datum/gear/cosmetics/glasses/red - name = "Red Glasses" - path = /obj/item/clothing/glasses/red - -datum/gear/cosmetics/glasses/prescription - name = "Prescription glasses" - path = /obj/item/clothing/glasses/regular - -datum/gear/cosmetics/glasses/sechud - name = "Security Hud" - path = /obj/item/clothing/glasses/hud/security - restricted_roles = list("Security Officer", "Warden", "Head of Security") diff --git a/modular_citadel/code/modules/client/loadout/loadout_gloves.dm b/modular_citadel/code/modules/client/loadout/loadout_gloves.dm deleted file mode 100644 index 083e40ec90..0000000000 --- a/modular_citadel/code/modules/client/loadout/loadout_gloves.dm +++ /dev/null @@ -1,8 +0,0 @@ -/datum/gear/gloves - subtype_path = /datum/gear/gloves - slot = slot_gloves - sort_category = "Gloves" - -/datum/gear/gloves/fingerless - name = "Fingerless Gloves" - path = /obj/item/clothing/gloves/fingerless \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm new file mode 100644 index 0000000000..839502d99c --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/mask.dm @@ -0,0 +1,4 @@ +/datum/gear/balaclava + name = "Balaclava" + category = slot_wear_mask + path = /obj/item/clothing/mask/balaclava diff --git a/modular_citadel/code/modules/client/loadout/neck.dm b/modular_citadel/code/modules/client/loadout/neck.dm new file mode 100644 index 0000000000..5e1e0017fe --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/neck.dm @@ -0,0 +1,84 @@ +/datum/gear/bluetie + name = "Blue tie" + category = slot_neck + path = /obj/item/clothing/neck/tie/blue + +/datum/gear/redtie + name = "Red tie" + category = slot_neck + path = /obj/item/clothing/neck/tie/red + +/datum/gear/blacktie + name = "Black tie" + category = slot_neck + path = /obj/item/clothing/neck/tie/black + +/datum/gear/collar + name = "Collar" + category = slot_neck + path = /obj/item/clothing/neck/petcollar + +/datum/gear/scarf + name = "White scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf + +/datum/gear/blackscarf + name = "Black scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/black + +/datum/gear/redscarf + name = "Red scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/red + +/datum/gear/greenscarf + name = "Green scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/green + +/datum/gear/darkbluescarf + name = "Dark blue scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/darkblue + +/datum/gear/purplescarf + name = "Purple scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/purple + +/datum/gear/yellowscarf + name = "Yellow scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/yellow + +/datum/gear/orangescarf + name = "Orange scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/orange + +/datum/gear/cyanscarf + name = "Cyan scarf" + category = slot_neck + path = /obj/item/clothing/neck/scarf/cyan + +/datum/gear/stripedredscarf + name = "Striped red scarf" + category = slot_neck + path = /obj/item/clothing/neck/stripedredscarf + +/datum/gear/stripedbluescarf + name = "Striped blue scarf" + category = slot_neck + path = /obj/item/clothing/neck/stripedbluescarf + +/datum/gear/stripedgreenscarf + name = "Striped green scarf" + category = slot_neck + path = /obj/item/clothing/neck/stripedgreenscarf + +/datum/gear/headphones + name = "Headphones" + category = slot_neck + path = /obj/item/clothing/ears/headphones diff --git a/modular_citadel/code/modules/client/loadout/loadout_shoes.dm b/modular_citadel/code/modules/client/loadout/shoes.dm similarity index 59% rename from modular_citadel/code/modules/client/loadout/loadout_shoes.dm rename to modular_citadel/code/modules/client/loadout/shoes.dm index 379b65ace0..0d233c3a5e 100644 --- a/modular_citadel/code/modules/client/loadout/loadout_shoes.dm +++ b/modular_citadel/code/modules/client/loadout/shoes.dm @@ -1,37 +1,39 @@ - -/datum/gear/shoes/shoes - subtype_path = /datum/gear/shoes/shoes - slot = slot_shoes - sort_category = "Shoes" - -/datum/gear/shoes/laceup +/datum/gear/laceup name = "Laceup shoes" + category = slot_shoes path = /obj/item/clothing/shoes/laceup -/datum/gear/shoes/workboots +/datum/gear/workboots name = "Work boots" + category = slot_shoes path = /obj/item/clothing/shoes/workboots -/datum/gear/shoes/jackboots +/datum/gear/jackboots name = "Jackboots" + category = slot_shoes path = /obj/item/clothing/shoes/jackboots -/datum/gear/shoes/winterboots +/datum/gear/winterboots name = "Winter boots" + category = slot_shoes path = /obj/item/clothing/shoes/winterboots -/datum/gear/shoes/sandals +/datum/gear/sandals name = "Sandals" + category = slot_shoes path = /obj/item/clothing/shoes/sandal -/datum/gear/shoes/blackshoes +/datum/gear/blackshoes name = "Black shoes" + category = slot_shoes path = /obj/item/clothing/shoes/sneakers/black -/datum/gear/shoes/brownshoes +/datum/gear/brownshoes name = "Brown shoes" + category = slot_shoes path = /obj/item/clothing/shoes/sneakers/brown -/datum/gear/shoes/whiteshoes +/datum/gear/whiteshoes name = "White shoes" + category = slot_shoes path = /obj/item/clothing/shoes/sneakers/white diff --git a/modular_citadel/code/modules/client/loadout/loadout_suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm similarity index 61% rename from modular_citadel/code/modules/client/loadout/loadout_suit.dm rename to modular_citadel/code/modules/client/loadout/suit.dm index 40bc6fcf4d..941da5c29f 100644 --- a/modular_citadel/code/modules/client/loadout/loadout_suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -1,115 +1,102 @@ -/datum/gear/suit/suit - subtype_path = /datum/gear/suit/suit - slot = slot_wear_suit - cost = 2 - sort_category = "External Wear" - -/datum/gear/suit/poncho +/datum/gear/poncho name = "Poncho" + category = slot_wear_suit path = /obj/item/clothing/suit/poncho -/datum/gear/suit/ponchogreen +/datum/gear/ponchogreen name = "Green poncho" + category = slot_wear_suit path = /obj/item/clothing/suit/poncho/green -/datum/gear/suit/ponchored +/datum/gear/ponchored name = "Red poncho" + category = slot_wear_suit path = /obj/item/clothing/suit/poncho/red -/datum/gear/suit/jacketbomber +/datum/gear/jacketbomber name = "Bomber jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket -/datum/gear/suit/jacketleather +/datum/gear/jacketleather name = "Leather jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/leather -/datum/gear/suit/overcoatleather +/datum/gear/overcoatleather name = "Leather overcoat" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/leather/overcoat -/datum/gear/suit/jacketpuffer +/datum/gear/jacketpuffer name = "Puffer jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/puffer -/datum/gear/suit/vestpuffer +/datum/gear/vestpuffer name = "Puffer vest" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/puffer/vest -/datum/gear/suit/jacketlettermanbrown +/datum/gear/jacketlettermanbrown name = "Brown letterman jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/letterman -/datum/gear/suit/jacketlettermanred +/datum/gear/jacketlettermanred name = "Red letterman jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/letterman_red -/datum/gear/suit/jacketlettermanNT +/datum/gear/jacketlettermanNT name = "Nanotrasen letterman jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/letterman_nanotrasen -/datum/gear/suit/coat +/datum/gear/coat name = "Winter coat" + category = slot_wear_suit path = /obj/item/clothing/suit/hooded/wintercoat -/datum/gear/suit/militaryjacket +/datum/gear/militaryjacket name = "Military Jacket" + category = slot_wear_suit path = /obj/item/clothing/suit/jacket/miljacket -/datum/gear/suit/ianshirt +/datum/gear/ianshirt name = "Ian Shirt" + category = slot_wear_suit path = /obj/item/clothing/suit/ianshirt -//Job Coats -/datum/gear/suit/job - subtype_path = /datum/gear/suit/job - subtype_cost_overlap = FALSE - sort_category = "Job Specific Coats" - -/datum/gear/suit/job/sec/navybluejackethos - name = "head of security's navyblue jacket" - path = /obj/item/clothing/suit/security/hos - restricted_roles = list("Head of Security") - -/datum/gear/suit/job/sec/navybluejacketofficer - name = "security officer's navyblue jacket" - path = /obj/item/clothing/suit/security/officer - restricted_roles = list("Security Officer") - -/datum/gear/suit/job/sec/navybluejacketwarden - name = "warden navyblue jacket" - path = /obj/item/clothing/suit/security/warden - restricted_roles = list("Warden") - -//Trek Coats -/datum/gear/suit/trek - subtype_path = /datum/gear/suit/trek - subtype_cost_overlap = FALSE - sort_category = "Trek Coats" - -/datum/gear/suit/trek/ds9_coat - name = "DS9 Overcoat" +/datum/gear/trekds9_coat + name = "DS9 Overcoat (use uniform)" + category = slot_wear_suit path = /obj/item/clothing/suit/storage/trek/ds9 restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster", "Medical Doctor","Chemist","Virologist","Geneticist","Scientist", "Roboticist", "Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer", "Cargo Technician", "Shaft Miner") //everyone who actually deserves a job. -/datum/gear/suit/trek/cap +//Federation jackets from movies +/datum/gear/trekcmdcap name = "fed (movie) uniform, Captain" + category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt restricted_roles = list("Captain","Head of Personnel") -/datum/gear/suit/trek/sec +/datum/gear/trekcmdmov name = "fed (movie) uniform, sec" + category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer") -/datum/gear/suit/trek/medsci +/datum/gear/trekmedscimov name = "fed (movie) uniform, med/sci" + category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/suit/trek/eng +/datum/gear/trekengmov name = "fed (movie) uniform, ops/eng" + category = slot_wear_suit path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/loadout_uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm similarity index 63% rename from modular_citadel/code/modules/client/loadout/loadout_uniform.dm rename to modular_citadel/code/modules/client/loadout/uniform.dm index 9aff13e707..acb2b4e13c 100644 --- a/modular_citadel/code/modules/client/loadout/loadout_uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -1,240 +1,220 @@ -// Uniform slot -/datum/gear/uniform - subtype_path = /datum/gear/uniform - slot = slot_w_uniform - cost = 2 - sort_category = "Uniforms and Casual Dress" - -/datum/gear/uniform/turtleneck - name = "Tactitool Turtleneck" - path = /obj/item/clothing/under/syndicate/cosmetic - -/datum/gear/uniform/suitblack +/datum/gear/suitblack name = "Black suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket -/datum/gear/uniform/suitgreen +/datum/gear/suitgreen name = "Green suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/green -/datum/gear/uniform/suitred +/datum/gear/suitred name = "Red suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/red -/datum/gear/uniform/suitcharcoal +/datum/gear/suitcharcoal name = "Charcoal suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/charcoal -/datum/gear/uniform/suitnavy +/datum/gear/suitnavy name = "Navy suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/navy -/datum/gear/uniform/suitburgundy +/datum/gear/suitburgundy name = "Burgundy suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/burgundy -/datum/gear/uniform/suittan +/datum/gear/suittan name = "Tan suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/tan -/datum/gear/uniform/suitwhite +/datum/gear/suitwhite name = "White suit" + category = slot_w_uniform path = /obj/item/clothing/under/suit_jacket/white -/datum/gear/uniform/assistantformal +/datum/gear/assistantformal name = "Assistant's formal uniform" + category = slot_w_uniform path = /obj/item/clothing/under/assistantformal -/datum/gear/uniform/maidcostume +/datum/gear/maidcostume name = "Maid costume" + category = slot_w_uniform path = /obj/item/clothing/under/maid -/datum/gear/uniform/mailmanuniform +/datum/gear/mailmanuniform name = "Mailman's jumpsuit" + category = slot_w_uniform path = /obj/item/clothing/under/rank/mailman -/datum/gear/uniform/skirt - subtype_path = /datum/gear/uniform/skirt - subtype_cost_overlap = FALSE - -/datum/gear/uniform/skirt/black +/datum/gear/skirtblack name = "Black skirt" + category = slot_w_uniform path = /obj/item/clothing/under/skirt/black -/datum/gear/uniform/skirt/blue +/datum/gear/skirtblue name = "Blue skirt" + category = slot_w_uniform path = /obj/item/clothing/under/skirt/blue -/datum/gear/uniform/skirt/red +/datum/gear/skirtred name = "Red skirt" + category = slot_w_uniform path = /obj/item/clothing/under/skirt/red -/datum/gear/uniform/skirt/purple +/datum/gear/skirtpurple name = "Purple skirt" + category = slot_w_uniform path = /obj/item/clothing/under/skirt/purple -/datum/gear/uniform/skirt/kilt +/datum/gear/kilt name = "Kilt" + category = slot_w_uniform path = /obj/item/clothing/under/kilt -/datum/gear/uniform/pants - subtype_path = /datum/gear/uniform/pants - sort_category = "Pants" - -/datum/gear/uniform/pants/camoshorts +/datum/gear/camoshorts name = "Camo Pants" + category = slot_w_uniform path = /obj/item/clothing/under/pants/camo -/datum/gear/uniform/pants/bjeans +/datum/gear/bjeans name = "Black Jeans" + category = slot_w_uniform path = /obj/item/clothing/under/pants/blackjeans -/datum/gear/uniform/pants/cjeans +/datum/gear/cjeans name = "Classic Jeans" + category = slot_w_uniform path = /obj/item/clothing/under/pants/classicjeans -/datum/gear/uniform/pants/khaki +/datum/gear/khaki name = "Khaki Pants" + category = slot_w_uniform path = /obj/item/clothing/under/pants/khaki -/datum/gear/uniform/pants/wpants +/datum/gear/wpants name = "White Pants" + category = slot_w_uniform path = /obj/item/clothing/under/pants/white -/datum/gear/uniform/pants/rpants +/datum/gear/rpants name = "Red Pants" + category = slot_w_uniform path = /obj/item/clothing/under/pants/red -/datum/gear/uniform/pants/tpants +/datum/gear/tpants name = "Tan Pants" + category = slot_w_uniform path = /obj/item/clothing/under/pants/tan -/datum/gear/uniform/pants/trpants +/datum/gear/trpants name = "Track Pants" + category = slot_w_uniform path = /obj/item/clothing/under/pants/track -/datum/gear/uniform/job - subtype_path = /datum/gear/uniform/job - subtype_cost_overlap = FALSE - sort_category = "Job Specific Uniformss" +/datum/gear/turtleneck + name = "Tactitool Turtleneck" + category = slot_w_uniform + path = /obj/item/clothing/under/syndicate/cosmetic -/datum/gear/uniform/job/sec - subtype_path = /datum/gear/uniform/job/sec - -/datum/gear/uniform/job/sec/navyblueuniformhos - name = "Head of Security navyblue uniform" - path = /obj/item/clothing/under/rank/head_of_security/navyblue - restricted_roles = list("Head of Security") - -/datum/gear/uniform/job/sec/navyblueuniformofficer - name = "security officer navyblue uniform" - path = /obj/item/clothing/under/rank/security/navyblue - restricted_roles = list("Security officer") - -/datum/gear/uniform/job/sec/navyblueuniformwarden - name = "Warden navyblue uniform" - path = /obj/item/clothing/under/rank/warden/navyblue - restricted_roles = list("Warden") - -/datum/gear/uniform/job/sec/secskirt - name = "Security skirt" - path = /obj/item/clothing/under/rank/security/skirt - restricted_roles = list("Security Officer", "Warden", "Head of Security") - -/datum/gear/uniform/job/sec/hosskirt - name = "Head of security's skirt" - path = /obj/item/clothing/under/rank/head_of_security/skirt - restricted_roles = list("Head of Security") - // Trekie things -/datum/gear/uniform/trek - sort_category = "Trek Uniforms" - subtype_path = /datum/gear/uniform/trek - subtype_cost_overlap = FALSE - -/datum/gear/uniform/trek/cmd - subtype_path = /datum/gear/uniform/trek/cmd -/datum/gear/uniform/trek/medsci - subtype_path = /datum/gear/uniform/trek/medsci -/datum/gear/uniform/trek/eng - subtype_path = /datum/gear/uniform/trek/eng - //TOS -/datum/gear/uniform/trek/cmd/tos +/datum/gear/trekcmdtos name = "TOS uniform, cmd" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/uniform/trek/medsci/tos +/datum/gear/trekmedscitos name = "TOS uniform, med/sci" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/uniform/trek/eng/tos +/datum/gear/trekengtos name = "TOS uniform, ops/sec" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //TNG -/datum/gear/uniform/trek/cmd/tng +/datum/gear/trekcmdtng name = "TNG uniform, cmd" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/next restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/uniform/trek/medsci/tng +/datum/gear/trekmedscitng name = "TNG uniform, med/sci" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/next restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/uniform/trek/eng/tng +/datum/gear/trekengtng name = "TNG uniform, ops/sec" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/next restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //VOY -/datum/gear/uniform/trek/cmd/voy +/datum/gear/trekcmdvoy name = "VOY uniform, cmd" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/voy restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/uniform/trek/medsci/voy +/datum/gear/trekmedscivoy name = "VOY uniform, med/sci" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/voy restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/uniform/trek/eng/voy +/datum/gear/trekengvoy name = "VOY uniform, ops/sec" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/voy restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //DS9 -/datum/gear/uniform/trek/cmd/ds9 +/datum/gear/trekcmdds9 name = "DS9 uniform, cmd" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/ds9 restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/uniform/trek/medsci/ds9 +/datum/gear/trekmedscids9 name = "DS9 uniform, med/sci" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/ds9 restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/uniform/trek/eng/ds9 +/datum/gear/trekengds9 name = "DS9 uniform, ops/sec" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/ds9 restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") //ENT -/datum/gear/uniform/trek/cmd/ent +/datum/gear/trekcmdent name = "ENT uniform, cmd" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/command/ent restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster") -/datum/gear/uniform/trek/medsci/ent +/datum/gear/trekmedscient name = "ENT uniform, med/sci" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/medsci/ent restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist") -/datum/gear/uniform/trek/eng/ent +/datum/gear/trekengent name = "ENT uniform, ops/sec" + category = slot_w_uniform path = /obj/item/clothing/under/rank/trek/engsec/ent restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster") diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index aba6f6b3dc..b515264320 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -3,7 +3,11 @@ #define BACKPACK_SLOT_AMT 4 /datum/preferences - + //gear + var/gear_points = 10 + var/list/gear_categories + var/list/chosen_gear + var/gear_tab //pref vars var/screenshake = 100 @@ -257,7 +261,58 @@ . += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" . += "" */ - . += "" + . += "" + + if(current_tab == 3) + if(!gear_tab) + gear_tab = GLOB.loadout_items[1] + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + . += "" + for(var/j in GLOB.loadout_items[gear_tab]) + var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] + var/donoritem + if(gear.ckeywhitelist && gear.ckeywhitelist.len) + donoritem = TRUE + if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) + continue + var/class_link = "" + if(gear.type in chosen_gear) + class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=0'" + else if(donoritem) + class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" + else if(gear_points <= 0) + class_link = "class='linkOff'" + else + class_link = "href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" + . += "" + . += "" + . += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " + var/firstcat = TRUE + for(var/i in GLOB.loadout_items) + if(firstcat) + firstcat = FALSE + else + . += " |" + if(i == gear_tab) + . += " [i] " + else + . += " [i] " + . += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" + if(islist(gear.restricted_roles)) + if(gear.restricted_roles.len) + . += "" + . += gear.restricted_roles.Join(";") + . += "" + . += "[gear.description]
      " /datum/preferences/proc/process_citadel_prefs(mob/user, list/href_list) if(href_list["task"] == "input") @@ -671,6 +726,35 @@ else user << "Invalid color. Your color is not bright enough." + if(href_list["preference"] == "gear") + if(href_list["clear_loadout"]) + LAZYCLEARLIST(chosen_gear) + gear_points = initial(gear_points) + save_preferences() + if(href_list["select_category"]) + for(var/i in GLOB.loadout_items) + if(i == href_list["select_category"]) + gear_tab = i + if(href_list["toggle_gear_path"]) + var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]] + if(!G) + return + var/toggle = text2num(href_list["toggle_gear"]) + if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear) + LAZYREMOVE(chosen_gear, G.type) + gear_points += initial(G.cost) + else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) + if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) + to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") + return + if(!is_loadout_slot_available(G.category)) + to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") + return + if(gear_points >= initial(G.cost)) + LAZYADD(chosen_gear, G.type) + gear_points -= initial(G.cost) + + /datum/preferences/proc/is_loadout_slot_available(slot) var/list/L LAZYINITLIST(L) diff --git a/tgstation.dme b/tgstation.dme index 16c163bde1..f79ca52b3c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2681,16 +2681,21 @@ #include "modular_citadel\code\modules\client\preferences.dm" #include "modular_citadel\code\modules\client\preferences_savefile.dm" #include "modular_citadel\code\modules\client\preferences_toggles.dm" -#include "modular_citadel\code\modules\client\loadout\gear_tweaks.dm" +#include "modular_citadel\code\modules\client\loadout\__donator.dm" +#include "modular_citadel\code\modules\client\loadout\_medical.dm" +#include "modular_citadel\code\modules\client\loadout\_security.dm" +#include "modular_citadel\code\modules\client\loadout\_service.dm" +#include "modular_citadel\code\modules\client\loadout\backpack.dm" +#include "modular_citadel\code\modules\client\loadout\glasses.dm" +#include "modular_citadel\code\modules\client\loadout\gloves.dm" +#include "modular_citadel\code\modules\client\loadout\hands.dm" +#include "modular_citadel\code\modules\client\loadout\head.dm" #include "modular_citadel\code\modules\client\loadout\loadout.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_accessories.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_cosmetics.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_donator.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_gloves.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_hat.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_shoes.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_suit.dm" -#include "modular_citadel\code\modules\client\loadout\loadout_uniform.dm" +#include "modular_citadel\code\modules\client\loadout\mask.dm" +#include "modular_citadel\code\modules\client\loadout\neck.dm" +#include "modular_citadel\code\modules\client\loadout\shoes.dm" +#include "modular_citadel\code\modules\client\loadout\suit.dm" +#include "modular_citadel\code\modules\client\loadout\uniform.dm" #include "modular_citadel\code\modules\client\verbs\who.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" From d593e46c6b70fb0f431f5f4d25c7f6826b6ef817 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Mar 2018 07:00:05 -0500 Subject: [PATCH 09/12] working as intended now and improved --- code/modules/client/preferences.dm | 162 +++++- code/modules/client/preferences_savefile.dm | 13 +- .../code/modules/client/preferences.dm | 524 +++++++----------- 3 files changed, 367 insertions(+), 332 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0b21646a4b..ad144c0cae 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -513,9 +513,71 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Be [capitalize(i)]: \[IN [days_remaining] DAYS]
      " else dat += "Be [capitalize(i)]: [(i in be_special) ? "Yes" : "No"]
      " - dat += citadel_pref_replace(current_tab) + dat += "
      " + dat += "

      Citadel Preferences

      " //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. + dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
      " + dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
      " + dat += "Allow MediHound sleeper: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
      " + dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
      " + dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " + dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
      " + dat += "Auto stand: [autostand ? "Enabled" : "Disabled"]
      " + dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
      " + if (user && user.client && !user.client.prefs.screenshake==0) + dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
      " + dat += "
      " + if(3) + if(!gear_tab) + gear_tab = GLOB.loadout_items[1] + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + for(var/j in GLOB.loadout_items[gear_tab]) + var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] + var/donoritem + if(gear.ckeywhitelist && gear.ckeywhitelist.len) + donoritem = TRUE + if(!(user.ckey in gear.ckeywhitelist)) + continue + var/class_link = "" + if(gear.type in chosen_gear) + class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=0'" + else if(gear_points <= 0) + class_link = "style='white-space:normal;' class='linkOff'" + else if(donoritem) + class_link = "style='white-space:normal;background:#ebc42e;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" + else + class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'" + dat += "" + dat += "" + dat += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " + var/firstcat = TRUE + for(var/i in GLOB.loadout_items) + if(firstcat) + firstcat = FALSE + else + dat += " |" + if(i == gear_tab) + dat += " [i] " + else + dat += " [i] " + dat += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" + if(islist(gear.restricted_roles)) + if(gear.restricted_roles.len) + dat += "" + dat += gear.restricted_roles.Join(";") + dat += "" + dat += "[gear.description]
      " else dat = citadel_dat_replace(current_tab) @@ -1034,7 +1096,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_metadata) metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN)) - if("hair") +/* if("hair") var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null if(new_hair) hair_color = sanitize_hexcolor(new_hair) @@ -1116,7 +1178,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_eyes) eye_color = sanitize_hexcolor(new_eyes) -/* if("species") + if("species") var/result = input(user, "Select a species", "Species Selection") as null|anything in GLOB.roundstart_races @@ -1149,7 +1211,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/new_tail new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.tails_list_human if(new_tail) - features["tail_human"] = new_tail */ + features["tail_human"] = new_tail if("snout") var/new_snout @@ -1163,11 +1225,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_horns) features["horns"] = new_horns -/* if("ears") + if("ears") var/new_ears new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in GLOB.ears_list if(new_ears) - features["ears"] = new_ears */ + features["ears"] = new_ears if("wings") var/new_wings @@ -1208,7 +1270,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("s_tone") var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones if(new_s_tone) - skin_tone = new_s_tone + skin_tone = new_s_tone*/ if("ooccolor") var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference",ooccolor) as color|null @@ -1315,6 +1377,52 @@ GLOBAL_LIST_EMPTY(preferences_datums) else switch(href_list["preference"]) + + //CITADEL PREFERENCES EDIT - I can't figure out how to modularize these, so they have to go here. :c -Pooj + if("genital_colour") + features["genitals_use_skintone"] = !features["genitals_use_skintone"] + if("arousable") + arousable = !arousable + if("has_cock") + features["has_cock"] = !features["has_cock"] + if("has_balls") + features["has_balls"] = !features["has_balls"] + if("has_ovi") + features["has_ovi"] = !features["has_ovi"] + if("has_eggsack") + features["has_eggsack"] = !features["has_eggsack"] + if("balls_internal") + features["balls_internal"] = !features["balls_internal"] + if("eggsack_internal") + features["eggsack_internal"] = !features["eggsack_internal"] + if("has_breasts") + features["has_breasts"] = !features["has_breasts"] + if("has_vag") + features["has_vag"] = !features["has_vag"] + if("has_womb") + features["has_womb"] = !features["has_womb"] + if("exhibitionist") + features["exhibitionist"] = !features["exhibitionist"] + if("widescreenpref") + widescreenpref = !widescreenpref + user.client.change_view(CONFIG_GET(string/default_view)) + if("autostand") + autostand = !autostand + if ("screenshake") + var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num + if (!isnull(desiredshake)) + screenshake = desiredshake + if("damagescreenshake") + switch(damagescreenshake) + if(0) + damagescreenshake = 1 + if(1) + damagescreenshake = 2 + if(2) + damagescreenshake = 0 + else + damagescreenshake = 1 + //END CITADEL EDIT if("publicity") if(unlock_content) toggles ^= MEMBER_PUBLIC @@ -1401,6 +1509,16 @@ GLOBAL_LIST_EMPTY(preferences_datums) parallax = WRAP(parallax - 1, PARALLAX_INSANE, PARALLAX_DISABLE + 1) if (parent && parent.mob && parent.mob.hud_used) parent.mob.hud_used.update_parallax_pref(parent.mob) + // Citadel edit - Prefs don't work outside of this. :c + if("hound_sleeper") + cit_toggles ^= MEDIHOUND_SLEEPER + + if("toggleeatingnoise") + cit_toggles ^= EATING_NOISES + + if("toggledigestionnoise") + cit_toggles ^= DIGESTION_NOISES + //END CITADEL EDIT if("save") save_preferences() @@ -1423,7 +1541,35 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("tab") if (href_list["tab"]) current_tab = text2num(href_list["tab"]) - process_citadel_prefs(user, href_list) + + if(href_list["preference"] == "gear") + if(href_list["clear_loadout"]) + LAZYCLEARLIST(chosen_gear) + gear_points = initial(gear_points) + save_preferences() + if(href_list["select_category"]) + for(var/i in GLOB.loadout_items) + if(i == href_list["select_category"]) + gear_tab = i + if(href_list["toggle_gear_path"]) + var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])] + if(!G) + return + var/toggle = text2num(href_list["toggle_gear"]) + if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear) + LAZYREMOVE(chosen_gear, G.type) + gear_points += initial(G.cost) + else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) + if(!is_loadout_slot_available(G.category)) + to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") + return + if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) + to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") + return + if(gear_points >= initial(G.cost)) + LAZYADD(chosen_gear, G.type) + gear_points -= initial(G.cost) + process_citadel_link(user, href_list) ShowChoices(user) return 1 diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 8bebf460e6..d2efc477c6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -383,17 +383,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(gender == MALE) hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_male_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_male_list) - //underwear = sanitize_inlist(underwear, GLOB.underwear_m) - //undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m) + underwear = sanitize_inlist(underwear, GLOB.underwear_m) + undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m) else hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_female_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_female_list) - //underwear = sanitize_inlist(underwear, GLOB.underwear_f) - //undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f) - //socks = sanitize_inlist(socks, GLOB.socks_list) - underwear = "Nude" - undershirt = "Nude" - socks = "Nude" + underwear = sanitize_inlist(underwear, GLOB.underwear_f) + undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f) + socks = sanitize_inlist(socks, GLOB.socks_list) age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age)) hair_color = sanitize_hexcolor(hair_color, 3, 0) facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0) diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index b515264320..1bc484fb9d 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -20,101 +20,84 @@ var/toggleeatingnoise = TRUE var/toggledigestionnoise = TRUE var/hound_sleeper = TRUE + var/cit_toggles = TOGGLES_CITADEL // stuff that was in base max_save_slots = 10 - var/cit_toggles = TOGGLES_CITADEL features = list("mcolor" = "FFF", - "tail_lizard" = "Smooth", - "tail_human" = "None", - "snout" = "Round", - "horns" = "None", - "ears" = "None", - "wings" = "None", - "frills" = "None", - "spines" = "None", - "body_markings" = "None", - "legs" = "Normal Legs", - "moth_wings" = "Plain", - "mcolor2" = "FFF", - "mcolor3" = "FFF", - "mam_body_markings" = "None", - "mam_ears" = "None", - "mam_tail" = "None", - "mam_tail_animated" = "None", - "xenodorsal" = "None", - "xenohead" = "None", - "xenotail" = "None", - "taur" = "None", - "exhibitionist" = FALSE, - "genitals_use_skintone" = FALSE, - "has_cock" = FALSE, - "cock_shape" = "Human", - "cock_length" = 6, - "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, - "cock_color" = "fff", - "has_sheath" = FALSE, - "sheath_color" = "fff", - "has_balls" = FALSE, - "balls_internal" = FALSE, - "balls_color" = "fff", - "balls_amount" = 2, - "balls_sack_size" = BALLS_SACK_SIZE_DEF, - "balls_size" = BALLS_SIZE_DEF, - "balls_cum_rate" = CUM_RATE, - "balls_cum_mult" = CUM_RATE_MULT, - "balls_efficiency" = CUM_EFFICIENCY, - "balls_fluid" = "semen", - "has_ovi" = FALSE, - "ovi_shape" = "knotted", - "ovi_length" = 6, - "ovi_color" = "fff", - "has_eggsack" = FALSE, - "eggsack_internal" = TRUE, - "eggsack_color" = "fff", - "eggsack_size" = BALLS_SACK_SIZE_DEF, - "eggsack_egg_color" = "fff", - "eggsack_egg_size" = EGG_GIRTH_DEF, - "has_breasts" = FALSE, - "breasts_color" = "fff", - "breasts_size" = "C", - "breasts_shape" = "Pair", - "breasts_fluid" = "milk", - "has_vag" = FALSE, - "vag_shape" = "Human", - "vag_color" = "fff", - "vag_clits" = 1, - "vag_clit_diam" = 0.25, - "has_womb" = FALSE, - "womb_cum_rate" = CUM_RATE, - "womb_cum_mult" = CUM_RATE_MULT, - "womb_efficiency" = CUM_EFFICIENCY, - "womb_fluid" = "femcum", - "ipc_screen" = "Sunburst", - "flavor_text" = "") + "tail_lizard" = "Smooth", + "tail_human" = "None", + "snout" = "Round", + "horns" = "None", + "ears" = "None", + "wings" = "None", + "frills" = "None", + "spines" = "None", + "body_markings" = "None", + "legs" = "Normal Legs", + "moth_wings" = "Plain", + "mcolor2" = "FFF", + "mcolor3" = "FFF", + "mam_body_markings" = "None", + "mam_ears" = "None", + "mam_tail" = "None", + "mam_tail_animated" = "None", + "xenodorsal" = "None", + "xenohead" = "None", + "xenotail" = "None", + "taur" = "None", + "exhibitionist" = FALSE, + "genitals_use_skintone" = FALSE, + "has_cock" = FALSE, + "cock_shape" = "Human", + "cock_length" = 6, + "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, + "cock_color" = "fff", + "has_sheath" = FALSE, + "sheath_color" = "fff", + "has_balls" = FALSE, + "balls_internal" = FALSE, + "balls_color" = "fff", + "balls_amount" = 2, + "balls_sack_size" = BALLS_SACK_SIZE_DEF, + "balls_size" = BALLS_SIZE_DEF, + "balls_cum_rate" = CUM_RATE, + "balls_cum_mult" = CUM_RATE_MULT, + "balls_efficiency" = CUM_EFFICIENCY, + "balls_fluid" = "semen", + "has_ovi" = FALSE, + "ovi_shape" = "knotted", + "ovi_length" = 6, + "ovi_color" = "fff", + "has_eggsack" = FALSE, + "eggsack_internal" = TRUE, + "eggsack_color" = "fff", + "eggsack_size" = BALLS_SACK_SIZE_DEF, + "eggsack_egg_color" = "fff", + "eggsack_egg_size" = EGG_GIRTH_DEF, + "has_breasts" = FALSE, + "breasts_color" = "fff", + "breasts_size" = "C", + "breasts_shape" = "Pair", + "breasts_fluid" = "milk", + "has_vag" = FALSE, + "vag_shape" = "Human", + "vag_color" = "fff", + "vag_clits" = 1, + "vag_clit_diam" = 0.25, + "has_womb" = FALSE, + "womb_cum_rate" = CUM_RATE, + "womb_cum_mult" = CUM_RATE_MULT, + "womb_efficiency" = CUM_EFFICIENCY, + "womb_fluid" = "femcum", + "ipc_screen" = "Sunburst", + "flavor_text" = "" + ) /datum/preferences/New(client/C) ..() LAZYINITLIST(chosen_gear) - -/datum/preferences/proc/citadel_pref_replace(current_tab) - var/mob/user - - . += "
      " - . += "

      Citadel Preferences

      " - . += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
      " - . += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
      " - . += "Allow MediHound sleeper: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
      " - . += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
      " - . += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
      " - . += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
      " - . += "Auto stand: [autostand ? "Enabled" : "Disabled"]
      " - . += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
      " - if (user && user.client && !user.client.prefs.screenshake==0) - . += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
      " - . += "
      " - /datum/preferences/proc/citadel_dat_replace(current_tab) var/mob/user //This proc is for menus other than game pref and char pref @@ -263,214 +246,93 @@ */ . += "" - if(current_tab == 3) - if(!gear_tab) - gear_tab = GLOB.loadout_items[1] - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - . += "" - for(var/j in GLOB.loadout_items[gear_tab]) - var/datum/gear/gear = GLOB.loadout_items[gear_tab][j] - var/donoritem - if(gear.ckeywhitelist && gear.ckeywhitelist.len) - donoritem = TRUE - if(user && user.client && user.client.ckey && !(gear.ckeywhitelist.Find(user.client.ckey))) - continue - var/class_link = "" - if(gear.type in chosen_gear) - class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=0'" - else if(donoritem) - class_link = "class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" - else if(gear_points <= 0) - class_link = "class='linkOff'" - else - class_link = "href='?_src_=prefs;preference=gear;toggle_gear_path=[j];toggle_gear=1'" - . += "" - . += "" - . += "
      [gear_points] loadout points remaining. \[Clear Loadout\]
      You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
      " - var/firstcat = TRUE - for(var/i in GLOB.loadout_items) - if(firstcat) - firstcat = FALSE - else - . += " |" - if(i == gear_tab) - . += " [i] " - else - . += " [i] " - . += "

      [gear_tab]

      NameCostRestrictionsDescription
      [j][gear.cost]" - if(islist(gear.restricted_roles)) - if(gear.restricted_roles.len) - . += "" - . += gear.restricted_roles.Join(";") - . += "" - . += "[gear.description]
      " - -/datum/preferences/proc/process_citadel_prefs(mob/user, list/href_list) - if(href_list["task"] == "input") - switch(href_list["preference"]) - //genital code - if("genital_colour") - switch(features["genitals_use_skintone"]) - if(TRUE) - features["genitals_use_skintone"] = FALSE - if(FALSE) - features["genitals_use_skintone"] = TRUE - else - features["genitals_use_skintone"] = FALSE - if("arousable") - switch(arousable) - if(TRUE) - arousable = FALSE - if(FALSE) - arousable = TRUE - else//failsafe - arousable = FALSE - if("has_cock") - switch(features["has_cock"]) - if(TRUE) - features["has_cock"] = FALSE - if(FALSE) - features["has_cock"] = TRUE - features["has_ovi"] = FALSE - features["has_eggsack"] = FALSE - else - features["has_cock"] = FALSE - features["has_ovi"] = FALSE - if("has_balls") - switch(features["has_balls"]) - if(TRUE) - features["has_balls"] = FALSE - if(FALSE) - features["has_balls"] = TRUE - features["has_eggsack"] = FALSE - else - features["has_balls"] = FALSE - features["has_eggsack"] = FALSE - if("has_ovi") - switch(features["has_ovi"]) - if(TRUE) - features["has_ovi"] = FALSE - if(FALSE) - features["has_ovi"] = TRUE - features["has_cock"] = FALSE - features["has_balls"] = FALSE - else - features["has_ovi"] = FALSE - features["has_cock"] = FALSE - if("has_eggsack") - switch(features["has_eggsack"]) - if(TRUE) - features["has_eggsack"] = FALSE - if(FALSE) - features["has_eggsack"] = TRUE - features["has_balls"] = FALSE - else - features["has_eggsack"] = FALSE - features["has_balls"] = FALSE - if("balls_internal") - switch(features["balls_internal"]) - if(TRUE) - features["balls_internal"] = FALSE - if(FALSE) - features["balls_internal"] = TRUE - features["eggsack_internal"] = FALSE - else - features["balls_internal"] = FALSE - features["eggsack_internal"] = FALSE - if("eggsack_internal") - switch(features["eggsack_internal"]) - if(TRUE) - features["eggsack_internal"] = FALSE - if(FALSE) - features["eggsack_internal"] = TRUE - features["balls_internal"] = FALSE - else - features["eggsack_internal"] = FALSE - features["balls_internal"] = FALSE - if("has_breasts") - switch(features["has_breasts"]) - if(TRUE) - features["has_breasts"] = FALSE - if(FALSE) - features["has_breasts"] = TRUE - else - features["has_breasts"] = FALSE - if("has_vag") - switch(features["has_vag"]) - if(TRUE) - features["has_vag"] = FALSE - if(FALSE) - features["has_vag"] = TRUE - else - features["has_vag"] = FALSE - if("has_womb") - switch(features["has_womb"]) - if(TRUE) - features["has_womb"] = FALSE - if(FALSE) - features["has_womb"] = TRUE - else - features["has_womb"] = FALSE - if("exhibitionist") - switch(features["exhibitionist"]) - if(TRUE) - features["exhibitionist"] = FALSE - if(FALSE) - features["exhibitionist"] = TRUE - else - features["exhibitionist"] = FALSE - else - switch(href_list["preference"]) - if("widescreenpref") - widescreenpref = !widescreenpref - user.client.change_view(CONFIG_GET(string/default_view)) - - if("autostand") - autostand = !autostand - - if("screenshake") - var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num - if (!isnull(desiredshake)) - screenshake = desiredshake - - if("damagescreenshake") - switch(damagescreenshake) - if(0) - damagescreenshake = 1 - if(1) - damagescreenshake = 2 - if(2) - damagescreenshake = 0 - else - damagescreenshake = 1 - - if("hound_sleeper") - toggles ^= MEDIHOUND_SLEEPER - - if("toggleeatingnoise") - toggles ^= EATING_NOISES - - if("toggledigestionnoise") - toggles ^= DIGESTION_NOISES - /datum/preferences/proc/process_citadel_link(mob/user, list/href_list) - if(href_list["task"] == "input") + if("input") switch(href_list["preference"]) - if("flavor_text") var/msg = stripped_multiline_input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(features["flavor_text"]), MAX_MESSAGE_LEN*2, TRUE) as message if(msg != null) msg = copytext(msg, 1, MAX_MESSAGE_LEN*2) features["flavor_text"] = msg + + if("hair") + var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null + if(new_hair) + hair_color = sanitize_hexcolor(new_hair) + + if("hair_style") + var/new_hair_style + if(gender == MALE) + new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in GLOB.hair_styles_male_list + else + new_hair_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in GLOB.hair_styles_female_list + if(new_hair_style) + hair_style = new_hair_style + + if("next_hair_style") + if (gender == MALE) + hair_style = next_list_item(hair_style, GLOB.hair_styles_male_list) + else + hair_style = next_list_item(hair_style, GLOB.hair_styles_female_list) + + if("previous_hair_style") + if (gender == MALE) + hair_style = previous_list_item(hair_style, GLOB.hair_styles_male_list) + else + hair_style = previous_list_item(hair_style, GLOB.hair_styles_female_list) + + if("facial") + var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference","#"+facial_hair_color) as color|null + if(new_facial) + facial_hair_color = sanitize_hexcolor(new_facial) + if("facial_hair_style") + var/new_facial_hair_style + if(gender == MALE) + new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in GLOB.facial_hair_styles_male_list + else + new_facial_hair_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in GLOB.facial_hair_styles_female_list + if(new_facial_hair_style) + facial_hair_style = new_facial_hair_style + + if("next_facehair_style") + if (gender == MALE) + facial_hair_style = next_list_item(facial_hair_style, GLOB.facial_hair_styles_male_list) + else + facial_hair_style = next_list_item(facial_hair_style, GLOB.facial_hair_styles_female_list) + if("previous_facehair_style") + if (gender == MALE) + facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_male_list) + else + facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_female_list) + + if("underwear") + var/new_underwear + if(gender == MALE) + new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in GLOB.underwear_m + else + new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in GLOB.underwear_f + if(new_underwear) + underwear = new_underwear + + if("undershirt") + var/new_undershirt + if(gender == MALE) + new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in GLOB.undershirt_m + else + new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in GLOB.undershirt_f + if(new_undershirt) + undershirt = new_undershirt + + if("socks") + var/new_socks + new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in GLOB.socks_list + if(new_socks) + socks = new_socks + + if("eyes") + var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference","#"+eye_color) as color|null + if(new_eyes) + eye_color = sanitize_hexcolor(new_eyes) if("species") var/result = input(user, "Select a species", "Species Selection") as null|anything in GLOB.roundstart_races @@ -563,6 +425,65 @@ if(new_tail != "None") features["taur"] = "None" + if("snout") + var/new_snout + new_snout = input(user, "Choose your character's snout:", "Character Preference") as null|anything in GLOB.snouts_list + if(new_snout) + features["snout"] = new_snout + + if("horns") + var/new_horns + new_horns = input(user, "Choose your character's horns:", "Character Preference") as null|anything in GLOB.horns_list + if(new_horns) + features["horns"] = new_horns + + if("ears") + var/new_ears + new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in GLOB.ears_list + if(new_ears) + features["ears"] = new_ears + + if("wings") + var/new_wings + new_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.r_wings_list + if(new_wings) + features["wings"] = new_wings + + if("frills") + var/new_frills + new_frills = input(user, "Choose your character's frills:", "Character Preference") as null|anything in GLOB.frills_list + if(new_frills) + features["frills"] = new_frills + + if("spines") + var/new_spines + new_spines = input(user, "Choose your character's spines:", "Character Preference") as null|anything in GLOB.spines_list + if(new_spines) + features["spines"] = new_spines + + if("body_markings") + var/new_body_markings + new_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in GLOB.body_markings_list + if(new_body_markings) + features["body_markings"] = new_body_markings + + if("legs") + var/new_legs + new_legs = input(user, "Choose your character's legs:", "Character Preference") as null|anything in GLOB.legs_list + if(new_legs) + features["legs"] = new_legs + + if("moth_wings") + var/new_moth_wings + new_moth_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.moth_wings_list + if(new_moth_wings) + features["moth_wings"] = new_moth_wings + + if("s_tone") + var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones + if(new_s_tone) + skin_tone = new_s_tone + if("taur") var/list/snowflake_taur_list = list("Normal" = null) for(var/path in GLOB.taur_list) @@ -726,35 +647,6 @@ else user << "Invalid color. Your color is not bright enough." - if(href_list["preference"] == "gear") - if(href_list["clear_loadout"]) - LAZYCLEARLIST(chosen_gear) - gear_points = initial(gear_points) - save_preferences() - if(href_list["select_category"]) - for(var/i in GLOB.loadout_items) - if(i == href_list["select_category"]) - gear_tab = i - if(href_list["toggle_gear_path"]) - var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]] - if(!G) - return - var/toggle = text2num(href_list["toggle_gear"]) - if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear) - LAZYREMOVE(chosen_gear, G.type) - gear_points += initial(G.cost) - else if(toggle && (!(is_type_in_ref_list(G, chosen_gear)))) - if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist)) - to_chat(user, "This is an item intended for donator use only. You are not authorized to use this item.") - return - if(!is_loadout_slot_available(G.category)) - to_chat(user, "You cannot take this loadout, as you've already chosen too many of the same category!") - return - if(gear_points >= initial(G.cost)) - LAZYADD(chosen_gear, G.type) - gear_points -= initial(G.cost) - - /datum/preferences/proc/is_loadout_slot_available(slot) var/list/L LAZYINITLIST(L) From af82e1109fd9c1310775c2e0d6d5ae1823bcf41a Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 20 Mar 2018 10:41:36 -0500 Subject: [PATCH 10/12] slight tweaks, revert job controller changes, penor layering tweaked --- .../mob/living/carbon/human/species.dm | 22 ++---------------- .../code/controllers/subsystem/job.dm | 13 +++++++---- .../mob/living/carbon/human/species.dm | 18 +++++++++++++- .../icons/obj/genitals/penis_onmob.dmi | Bin 1335 -> 1341 bytes 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index c60eafbad2..5c45ab9172 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -685,26 +685,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.moth_wings_list[H.dna.features["moth_wings"]] if("caps") S = GLOB.caps_list[H.dna.features["caps"]] - - //Mammal Bodyparts - if("mam_tail") - S = GLOB.mam_tails_list[H.dna.features["mam_tail"]] - if("mam_waggingtail") - S.= GLOB.mam_tails_animated_list[H.dna.features["mam_tail"]] - if("mam_body_markings") - S = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]] - if("mam_ears") - S = GLOB.mam_ears_list[H.dna.features["mam_ears"]] - if("taur") - S = GLOB.taur_list[H.dna.features["taur"]] - - //Xeno Bodyparts - if("xenodorsal") - S = GLOB.xeno_dorsal_list[H.dna.features["xenodorsal"]] - if("xenohead") - S = GLOB.xeno_head_list[H.dna.features["xenohead"]] - if("xenotail") - S = GLOB.xeno_tail_list[H.dna.features["xenotail"]] + else + S = citadel_mutant_bodyparts(bodypart, H) if(!S || S.icon_state == "none") continue diff --git a/modular_citadel/code/controllers/subsystem/job.dm b/modular_citadel/code/controllers/subsystem/job.dm index e9d7c65a34..846c17344c 100644 --- a/modular_citadel/code/controllers/subsystem/job.dm +++ b/modular_citadel/code/controllers/subsystem/job.dm @@ -1,4 +1,4 @@ -/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M) +/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff) var/mob/the_mob = N if(!the_mob) the_mob = M // cause this doesn't get assigned if player is a latejoiner @@ -11,18 +11,21 @@ if(!G) continue var/permitted = TRUE + if(G.restricted_roles && G.restricted_roles.len && !(M.mind.assigned_role in G.restricted_roles)) + permitted = FALSE if(G.ckeywhitelist && G.ckeywhitelist.len && !(the_mob.client.ckey in G.ckeywhitelist)) permitted = FALSE - if(G.restricted_roles && G.restricted_roles.len && !(M.job in G.restricted_roles)) + if(!equipbackpackstuff && G.category == slot_in_backpack)//snowflake check since plopping stuff in the backpack doesnt work for pre-job equip loadout stuffs + permitted = FALSE + if(equipbackpackstuff && G.category != slot_in_backpack)//ditto permitted = FALSE if(!permitted) continue var/obj/item/I = new G.path - if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Try to put it in its slot, first - if(!M.equip_to_slot_if_possible(I, slot_in_backpack, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If it fails, try to put it in the backpack + if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first + if(!M.equip_to_slot_if_possible(I, slot_in_backpack, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. - /datum/controller/subsystem/job/proc/FreeRole(rank) if(!rank) return diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species.dm b/modular_citadel/code/modules/mob/living/carbon/human/species.dm index 74b5404c09..d3ac99d61c 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species.dm @@ -76,4 +76,20 @@ /datum/species/proc/citadel_mutant_bodyparts(bodypart, mob/living/carbon/human/H) switch(bodypart) if("ipc_screen") - return GLOB.ipc_screens_list[H.dna.features["ipc_screen"]] \ No newline at end of file + return GLOB.ipc_screens_list[H.dna.features["ipc_screen"]] + if("mam_tail") + return GLOB.mam_tails_list[H.dna.features["mam_tail"]] + if("mam_waggingtail") + return GLOB.mam_tails_animated_list[H.dna.features["mam_tail"]] + if("mam_body_markings") + return GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]] + if("mam_ears") + return GLOB.mam_ears_list[H.dna.features["mam_ears"]] + if("taur") + return GLOB.taur_list[H.dna.features["taur"]] + if("xenodorsal") + return GLOB.xeno_dorsal_list[H.dna.features["xenodorsal"]] + if("xenohead") + return GLOB.xeno_head_list[H.dna.features["xenohead"]] + if("xenotail") + return GLOB.xeno_tail_list[H.dna.features["xenotail"]] \ No newline at end of file diff --git a/modular_citadel/icons/obj/genitals/penis_onmob.dmi b/modular_citadel/icons/obj/genitals/penis_onmob.dmi index bdda4a94d53f42e2a76e47704517fd3554e9bde1..733e0a08da1619edbd1428cb354e5cee695f3c73 100644 GIT binary patch delta 963 zcmV;!13dh<3cU)ji2;9~Nkl!JX5C%{&#txR2fql0l@EU>(zzr}bP9R9tPGW2prq+>G4C5 zSRbG57{>p@eoGKI_#K{Je|o|0`qK+`*YBRlch?6100000T8*C9rY+B3)CUdm0QP)d z`)hT-Y(6<_ihTR{Ly-9W@wY@g-Y=Wa&5J|x2h_*bkF84(xU%u-^nzjF;QG@GhJl0Y zhq?#U>kgPX#z}p{F@i1_% z{=nB|`!B(MQU2g*V)=njFPPnLV_kwk^uWUnw)=&NvkixjPp7}b-O3N#KotN00000c zy777O&iMPi$KEf_4%hbo-F&|{J+EGuAP_X19$$Wr3ci0mA76&!(`dhqHOfZ~hZ}73 zQ3t2<@ny7qxZgG(Z8-WJ{wXZ@XDS{Bw%dn^V8itN-sX3By6)cy000000Dw!@J+GZ! ze_etN!az3P{9U%w3u<_B{pkg}8@~9jM-BtUd|CJSbX}svjWJ&a00000;IbS%uU(fQ zFn#pWJ?nqb@X_@(JhtG+D1Z8xiid%Xb(cT5;coi}bmI-bV0r$+{aye70000u)Qu0< zrWXwJ8XjAJdciQS;j#5!C^&mSy{&&^O)8S3i(Nc7+}fwB>t9R1^!nBt-Y=*&-2K2_FL!?p?+RvrMt1q~fm2T`42PfL zn{RkGUJZBHtk~sq8|>4mfo~l4_0RwS0001R$>QP0>*7(&*!9)(YIyc~4PRKj@f##N znEihd8o$BhhU>R+s~aQ-zU9yGwYj^7{RRL40002Mg**5%W%v5&1-sWzFW9|)dcp4X zFL?dBYq4PYx~_(E_0tR54?OzH{2exYKB6CfgFN|--}`v(0AU&c0001hUfq`|r?0=d z16S8y-GQs?ukOIr_0{XA#RJd2ZF`3eU)?)_s|UEdhO75&m*V>Jec$Q<000000N_Yp l|L#7)WZ!ik006i>{{UJlpSy!;iID&R002ovPDHLkV1nLO?d$*m delta 957 zcmV;u148`03bzWdi2;9^NklnuGY%0y5NqDk?+oy0+ZG^N>03z}&H00000PT|$=^?usCJUIV?4c|Hkmi6Y% z%flPaHu#1E000000KorN4BM8uZ$MG+_HOg?r;mN}*Y%Fp@a=!;-PBW2?`RG0o?nbp z_YTZ%xcvvBfk$gN`y&wh=K}x$0000xdj0YHj~+7r_0KOK730~x=e5(P`~2T`&Yz~` zY5w-07^nX5^h?*Yvfk&XKQ=D+&Y#i;)Ri0FJAcX_Uk=W{V8fMpZSTOM-uQ;MWe>=g zdHu|TGr;bQ)pe7<+@d38B|9Xq~k9iN8h#jSzUmp@~HYel^` zziwTQ-|%H#J#p~yY50Z@53JSOeud*VyeLpwpP6w^As{1OeU)q8V4+)E#y7CV24=CAAB?r(UJzkZ@s>nr>r z8d$4$`)m7hG_d)6Z}KZVT=pjd000000N~WFHZMNi>C zsOS5r?=AECnFnWp3;+NC0KloW&TE&sZ+=nFaIJIx@WAZ+;epxtt%2{Ofwg+K_nViO zXns-P;9q~w9KPYpy1>C34s*U20000000vs-)e{FFt_=_Dy@S^L;eow((3(Fyu=fsH z^M?oa-a%`A*zf^$t=`ebx7nWv00000008zh&*xtMTkHC-&#}Pl_00|c7|TmvfBV`R z_#6xTJGOj$!_#vtFt|M2aPwRGat&wy4o2^o^Sgfl00000aAfVXntScTt-kBms{LrV zcR)q&hO70i)^Ip4Tp)VK8p~a-;i-1LDq5iPz}Ng3000000EW7sjkHe}8`qbkn3qfH zgPPX$<%TZTaARP!;n6ot!;OKpiq$(7eM@iOv08iOGZ$#M@!#o|6)V@<3RIVG|3BdJ zV&{MP`te<^VV?j100000IJfM>n8W|Dp1olW?=5@7XKVOqr)_r+JYB=-8}5B%e)qhy zHJpC{Jh}k@000004ki0A<<9Ge2WGDy9+&p2PLN0Qs~Z3S0000W)8)SBvS>B<-+vNzF;LO)+l*ZdQRW f*Ra#LJdFPUl(nC`VAvSh00000NkvXXu0mjfuA%jT From 2bb09bef5fac3ac64bc5f99476321dc0be48dd83 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 20 Mar 2018 13:53:52 -0500 Subject: [PATCH 11/12] Adds additional screen 'faces', allows switching of screens in game also puts jelly people in with the jelly people file. --- code/__DEFINES/citadel_defines.dm | 3 +- code/modules/mob/living/carbon/human/human.dm | 15 --- .../code/modules/mob/cit_emotes.dm | 8 +- .../mob/dead/new_player/sprite_accessories.dm | 125 ++++++++++++++++-- .../modules/mob/living/carbon/human/human.dm | 0 .../carbon/human/species_types/furrypeople.dm | 111 ---------------- .../living/carbon/human/species_types/ipc.dm | 29 +++- .../carbon/human/species_types/jellypeople.dm | 111 ++++++++++++++++ modular_citadel/icons/mob/ipc_screens.dmi | Bin 0 -> 10895 bytes modular_citadel/icons/mob/mobs.dmi | Bin 182 -> 0 bytes .../icons/mob/mutant_bodyparts.dmi | Bin 29990 -> 20912 bytes tgstation.dme | 1 - 12 files changed, 254 insertions(+), 149 deletions(-) delete mode 100644 modular_citadel/code/modules/mob/living/carbon/human/human.dm create mode 100644 modular_citadel/icons/mob/ipc_screens.dmi delete mode 100644 modular_citadel/icons/mob/mobs.dmi diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 870816975b..2fed84553e 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -105,8 +105,9 @@ #define NOAROUSAL 37 //Stops all arousal effects #define NOGENITALS 38 //Cannot create, use, or otherwise have genitals -//Brainslugs +//Citadel istypes #define isborer(A) (istype(A, /mob/living/simple_animal/borer)) +#define isipcperson(A) (is_species(A, /datum/species/ipc)) #define CITADEL_MENTOR_OOC_COLOUR "#224724" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2bcb1d5189..17a42f4ad1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1052,18 +1052,3 @@ /mob/living/carbon/human/species/zombie/krokodil_addict race = /datum/species/krokodil_addict - -/* -//CITADEL EDIT - TODO: Enable people to set custom races -/mob/living/carbon/human/species/mammal - race = /datum/species/mammal -/mob/living/carbon/human/species/avian - race = /datum/species/avian -/mob/living/carbon/human/species/aquatic - race = /datum/species/aquatic -/mob/living/carbon/human/species/insect - race = /datum/species/insect -/mob/living/carbon/human/species/xeno - race = /datum/species/xeno -/mob/living/carbon/human/species/guilmon - race = /datum/species/guilmon */ diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 65b6d43a77..df97cee63b 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -4,7 +4,7 @@ //Disables the custom emote blacklist from TG that normally applies to slimes. /datum/emote/living/custom mob_type_blacklist_typecache = list(/mob/living/brain) - + /datum/emote/living/scream/run_emote(mob/living/user, params) //I can't not port this shit, come on. if(user.nextsoundemote >= world.time || user.stat != CONSCIOUS) return @@ -35,7 +35,7 @@ sound = 'modular_citadel/sound/voice/scream_lizard.ogg' if(is_species(user, /datum/species/skeleton)) sound = 'modular_citadel/sound/voice/scream_skeleton.ogg' - if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/moth)) + if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/insect)) sound = 'modular_citadel/sound/voice/scream_moth.ogg' if(isalien(user)) sound = 'sound/voice/hiss6.ogg' @@ -49,7 +49,7 @@ else message = "makes a very loud noise." . = ..() - + /datum/emote/sound/carbon/snap key = "snap" key_third_person = "snaps" @@ -58,7 +58,7 @@ emote_type = EMOTE_AUDIBLE sound = 'sound/effects/snap01.ogg' mob_type_allowed_typecache = list(/mob/living/carbon/) - + /datum/emote/living/snap key = "snap" diff --git a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index a2d3ce7b85..1b1e2c81e5 100644 --- a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -878,23 +878,17 @@ /datum/sprite_accessory/xeno_dorsal icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' -/datum/sprite_accessory/xeno_dorsal/none - name = "None" - /datum/sprite_accessory/xeno_dorsal/standard name = "Standard" icon_state = "standard" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/royal name = "Royal" icon_state = "royal" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/down name = "Dorsal Down" icon_state = "down" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' //Xeno Tail /datum/sprite_accessory/xeno_tail @@ -906,7 +900,6 @@ /datum/sprite_accessory/xeno_tail/standard name = "Xenomorph Tail" icon_state = "xeno" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' //Xeno Caste Heads /datum/sprite_accessory/xeno_head @@ -915,28 +908,100 @@ /datum/sprite_accessory/xeno_head/standard name = "Standard" icon_state = "standard" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/royal name = "royal" icon_state = "royal" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/hollywood name = "hollywood" icon_state = "hollywood" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/warrior name = "warrior" icon_state = "warrior" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' // IPCs /datum/sprite_accessory/screen - icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/ipc_screens.dmi' color_src = null +/datum/sprite_accessory/screen/blank + name = "Blank" + icon_state = "blank" + +/datum/sprite_accessory/screen/pink + name = "Pink" + icon_state = "pink" + +/datum/sprite_accessory/screen/green + name = "Green" + icon_state = "green" + +/datum/sprite_accessory/screen/red + name = "Red" + icon_state = "red" + +/datum/sprite_accessory/screen/blue + name = "Blue" + icon_state = "blue" + +/datum/sprite_accessory/screen/yellow + name = "Yellow" + icon_state = "yellow" + +/datum/sprite_accessory/screen/shower + name = "Shower" + icon_state = "shower" + +/datum/sprite_accessory/screen/nature + name = "Nature" + icon_state = "nature" + +/datum/sprite_accessory/screen/eight + name = "Eight" + icon_state = "eight" + +/datum/sprite_accessory/screen/goggles + name = "Goggles" + icon_state = "goggles" + +/datum/sprite_accessory/screen/heart + name = "Heart" + icon_state = "heart" + +/datum/sprite_accessory/screen/monoeye + name = "Mono eye" + icon_state = "monoeye" + +/datum/sprite_accessory/screen/breakout + name = "Breakout" + icon_state = "breakout" + +/datum/sprite_accessory/screen/purple + name = "Purple" + icon_state = "purple" + +/datum/sprite_accessory/screen/scroll + name = "Scroll" + icon_state = "scroll" + +/datum/sprite_accessory/screen/console + name = "Console" + icon_state = "console" + +/datum/sprite_accessory/screen/rgb + name = "RGB" + icon_state = "rgb" + +/datum/sprite_accessory/screen/golglider + name = "Gol Glider" + icon_state = "golglider" + +/datum/sprite_accessory/screen/rainbow + name = "Rainbow" + icon_state = "rainbow" + /datum/sprite_accessory/screen/sunburst name = "Sunburst" icon_state = "sunburst" @@ -944,7 +1009,41 @@ /datum/sprite_accessory/screen/static name = "Static" icon_state = "static" - + +//Oracle Station sprites + +/datum/sprite_accessory/screen/bsod + name = "BSOD" + icon_state = "bsod" + +/datum/sprite_accessory/screen/redtext + name = "Red Text" + icon_state = "retext" + +/datum/sprite_accessory/screen/sinewave + name = "Sine wave" + icon_state = "sinewave" + +/datum/sprite_accessory/screen/squarewave + name = "Square wave" + icon_state = "squarwave" + +/datum/sprite_accessory/screen/ecgwave + name = "ECG wave" + icon_state = "ecgwave" + +/datum/sprite_accessory/screen/eyes + name = "Eyes" + icon_state = "eyes" + +/datum/sprite_accessory/screen/textdrop + name = "Text drop" + icon_state = "textdrop" + +/datum/sprite_accessory/screen/stars + name = "Stars" + icon_state = "stars" + // *** Snooooow flaaaaake *** /datum/sprite_accessory/mam_body_markings/guilmon diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 801d64f5cf..68780d0890 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -201,117 +201,6 @@ acidpwr = 12 */ -//##########SLIMEPEOPLE########## - -/datum/species/jelly/roundstartslime - name = "Slimeperson" - id = "slimeperson" - default_color = "00FFFF" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) - inherent_traits = list(TRAIT_TOXINLOVER) - mutant_bodyparts = list("mam_tail", "mam_ears", "taur") - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") - say_mod = "says" - hair_color = "mutcolor" - hair_alpha = 180 - liked_food = MEAT - coldmod = 3 - heatmod = 1 - burnmod = 1 - -/datum/action/innate/slime_change - name = "Alter Form" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "alter_form" //placeholder - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/slime_change/Activate() - var/mob/living/carbon/human/H = owner - if(!isjellyperson(H)) - return - else - H.visible_message("[owner] gains a look of \ - concentration while standing perfectly still.\ - Their body seems to shift and starts getting more goo-like.", - "You focus intently on altering your body while \ - standing perfectly still...") - change_form() - -/datum/action/innate/slime_change/proc/change_form() - var/mob/living/carbon/human/H = owner - var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel") - if(select_alteration == "Hair Style") - if(H.gender == MALE) - var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list - if(new_style) - H.facial_hair_style = new_style - else - H.facial_hair_style = "Shaved" - //handle normal hair - var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list - if(new_style) - H.hair_style = new_style - H.update_hair() - else if (select_alteration == "Genitals") - var/list/organs = list() - var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") - switch(operation) - if("add sexual organ") - var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") - if(new_organ == "Penis") - H.give_penis() - else if(new_organ == "Testicles") - H.give_balls() - else if(new_organ == "Breasts") - H.give_breasts() - else if(new_organ == "Vagina") - H.give_vagina() - else if(new_organ == "Womb") - H.give_womb() - else - return - if("remove sexual organ") - for(var/obj/item/organ/genital/X in H.internal_organs) - var/obj/item/organ/I = X - organs["[I.name] ([I.type])"] = I - var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs - organ = organs[organ] - if(!organ) - return - var/obj/item/organ/genital/O - if(isorgan(organ)) - O = organ - O.Remove(H) - organ.forceMove(get_turf(H)) - qdel(organ) - H.update_body() - else if (select_alteration == "Ears") - var/new_ears - new_ears = input(owner, "Choose your character's ears:", "Ear Alteration") as null|anything in GLOB.mam_ears_list - if(new_ears) - H.dna.features["mam_ears"] = new_ears - H.update_body() - else if (select_alteration == "Tail") - var/new_tail - new_tail = input(owner, "Choose your character's tail:", "Tail Alteration") as null|anything in GLOB.mam_tails_list - if(new_tail) - H.dna.features["mam_tail"] = new_tail - if(new_tail != "None") - H.dna.features["taur"] = "None" - H.update_body() - else if (select_alteration == "Taur body") - var/new_taur - new_taur = input(owner, "Choose your character's tauric body:", "Taur Body Alteration") as null|anything in GLOB.taur_list - if(new_taur) - H.dna.features["taur"] = new_taur - if(new_taur != "None") - H.dna.features["mam_tail"] = "None" - H.dna.features["xenotail"] = "None" - H.update_body() - else - return - //misc /mob/living/carbon/human/dummy no_vore = TRUE diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index 93823c03c8..f38cdb62f0 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -7,17 +7,38 @@ sexes = 0 species_traits = list(MUTCOLORS,NOEYES) mutant_bodyparts = list("ipc_screen") - default_features = list("ipc_screen" = "Sunburst") + default_features = list("ipc_screen" = "Blank") species_traits = list(MUTCOLORS) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc + var/datum/action/innate/monitor_change/screen + /datum/species/ipc/on_species_gain(mob/living/carbon/human/C) C.draw_citadel_parts() - . = ..() + if(isipcperson(C) && !screen) + screen = new + screen.Grant(C) + ..() /datum/species/ipc/on_species_loss(mob/living/carbon/human/C) C.draw_citadel_parts(TRUE) - . = ..() + if(screen) + screen.Remove(C) + ..() /datum/species/ipc/get_spans() - return SPAN_ROBOT \ No newline at end of file + return SPAN_ROBOT + +/datum/action/innate/monitor_change + name = "Screen Change" + check_flags = AB_CHECK_CONSCIOUS + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "drone_vision" + +/datum/action/innate/monitor_change/Activate() + var/mob/living/carbon/human/H = owner + var/new_ipc_screen = input(usr, "Choose your character's screen:", "Monitor Display") as null|anything in GLOB.ipc_screens_list + if(!new_ipc_screen) + return + H.dna.features["ipc_screen"] = new_ipc_screen + H.update_body() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 5e3f58e26c..03a7cbc0a7 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -1,2 +1,113 @@ /datum/species/jelly/slime name = "Xenobiological Slimeperson" + +//##########SLIMEPEOPLE########## + +/datum/species/jelly/roundstartslime + name = "Slimeperson" + id = "slimeperson" + default_color = "00FFFF" + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + inherent_traits = list(TRAIT_TOXINLOVER) + mutant_bodyparts = list("mam_tail", "mam_ears", "taur") + default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") + say_mod = "says" + hair_color = "mutcolor" + hair_alpha = 180 + liked_food = MEAT + coldmod = 3 + heatmod = 1 + burnmod = 1 + +/datum/action/innate/slime_change + name = "Alter Form" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "alter_form" //placeholder + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/slime_change/Activate() + var/mob/living/carbon/human/H = owner + if(!isjellyperson(H)) + return + else + H.visible_message("[owner] gains a look of \ + concentration while standing perfectly still.\ + Their body seems to shift and starts getting more goo-like.", + "You focus intently on altering your body while \ + standing perfectly still...") + change_form() + +/datum/action/innate/slime_change/proc/change_form() + var/mob/living/carbon/human/H = owner + var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel") + if(select_alteration == "Hair Style") + if(H.gender == MALE) + var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list + if(new_style) + H.facial_hair_style = new_style + else + H.facial_hair_style = "Shaved" + //handle normal hair + var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list + if(new_style) + H.hair_style = new_style + H.update_hair() + else if (select_alteration == "Genitals") + var/list/organs = list() + var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") + switch(operation) + if("add sexual organ") + var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") + if(new_organ == "Penis") + H.give_penis() + else if(new_organ == "Testicles") + H.give_balls() + else if(new_organ == "Breasts") + H.give_breasts() + else if(new_organ == "Vagina") + H.give_vagina() + else if(new_organ == "Womb") + H.give_womb() + else + return + if("remove sexual organ") + for(var/obj/item/organ/genital/X in H.internal_organs) + var/obj/item/organ/I = X + organs["[I.name] ([I.type])"] = I + var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs + organ = organs[organ] + if(!organ) + return + var/obj/item/organ/genital/O + if(isorgan(organ)) + O = organ + O.Remove(H) + organ.forceMove(get_turf(H)) + qdel(organ) + H.update_body() + else if (select_alteration == "Ears") + var/new_ears + new_ears = input(owner, "Choose your character's ears:", "Ear Alteration") as null|anything in GLOB.mam_ears_list + if(new_ears) + H.dna.features["mam_ears"] = new_ears + H.update_body() + else if (select_alteration == "Tail") + var/new_tail + new_tail = input(owner, "Choose your character's tail:", "Tail Alteration") as null|anything in GLOB.mam_tails_list + if(new_tail) + H.dna.features["mam_tail"] = new_tail + if(new_tail != "None") + H.dna.features["taur"] = "None" + H.update_body() + else if (select_alteration == "Taur body") + var/new_taur + new_taur = input(owner, "Choose your character's tauric body:", "Taur Body Alteration") as null|anything in GLOB.taur_list + if(new_taur) + H.dna.features["taur"] = new_taur + if(new_taur != "None") + H.dna.features["mam_tail"] = "None" + H.dna.features["xenotail"] = "None" + H.update_body() + else + return \ No newline at end of file diff --git a/modular_citadel/icons/mob/ipc_screens.dmi b/modular_citadel/icons/mob/ipc_screens.dmi new file mode 100644 index 0000000000000000000000000000000000000000..09b2493bbd84e22f7c48231321096ec09bc38114 GIT binary patch literal 10895 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 W0R!VxY5#RV7K5j&pUXO@geCygCOLEf diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi index f89d815b16f134f7a59adf216cd0def1ca2b256f..741051faa05ada53ca3213d85161f972758bf350 100644 GIT binary patch literal 20912 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 literal 29990 zcmbSzcT^K!*KQCLQ3L@MK`BOxbO8ma0Yqv9q)Jyh(xgczs3;)Pd$-W5^iC{vr1u)6 zh=72!1PDp)8GrBl-S_*}UF+U;|B%UKCUeT{v-h)~{T#!zG?dSsVLk(c!Op3wC~CuC zC*Fa7L8niFZ|+8S@4{eY$G*A`Jru3oE#2&&df2--!(iU&IZ5)GFK=Fc-T#L#b)(_( zgN2BfHpAboM1|+Nxcy5bw4xIwNX;RGUoLUG+?EpXIntWLO%G|b%`QByzqC6lGUH~c zn{yAo5Z-h1K({^tPB(7wnBCARdln^}$RDnVj2BCvycOr@cqB&k(&V-h2b|_*?Q1nL zINcyqlj1g4&Z*aD*&d24AJlN_Y*wzn5I-nwexxedfg>B-8;sRsGFcWzWWHG}7h#F0 zo@|V{;8#n#!E}8h=Gzx}>95aCYTn$M`xT@#`v_rtkJ+hZ*J9h#g7&gwGs9xB0q3Jx z&IHbj`MxUOoU1mkU#+oB@VY6cPANKaD8F&nvYKt=bb1`;^#Y#|a)haHrVskW)#O03 zO9B0s%`^lp;x|ff!9OKr>jxY|+caV&yxnI=jGo6?dv|DQg1?pfvP7KI+){e6HGA6W zjGo9*EV;MzXPLJ(64?*L6ZbRQVxO7)Vq9uvy*c)d;rj1L&y%OhElr=AufsLddMYDB*CN)+j0^-;CcTY{5;cr$+{i>&3> zNZzm1%DP;|voG-U7UoCvCvwT^*;|`Bhvb)9A zWS*ori>Ivfsd25;?Ut zem^(6=dy3qIEps&lTjEu3OE6bG+Cr?9XgVHEXVHkERlAN{Z0Gx;?k@~O-a{$<;Y-i zTrS@m?DX{XRBdhZboKPQip3Y+?{!>lF6-3Bc|Cj99iYrjLF z0S2S)NeNDu^nB7u7|zoaPdxUaL+D5p78Wkee|ZUq?i8Vzh_BffL$hIA1@YN=;9c9d`U}WY6RS7X4ZN(!&4r$&PaY-qudsd%hFOinb zJ2O!P@f2~F%qH(Y?{fI4dgJ}g_<9ssu7x~pBq(PD6)w5x*&TjLXl(QCo$~t?Ai(zG zI%gK#f^9q{xKQL*WSjuh9@K&A9T(QiL?UVkKSeO=4-{YwI^OwuR;Y8l1$$eHjDZQM zX6F6lWQ>`p_0x82cY#ix6>f93!m5jYwK4jpK9}tRAH2d3w~2`8YU)w(uboD$TPN2% zEVKUooO!cu8VoaK)Rkq;W~2)YUHNx}=(2BEeVS|Oc)M}&IKQdq2eTEG4VS|E$3sM@ zH`av&viY#NMg^g!KMLLDjAq_nCYHCjeYei!Xuc4ZAr9L^t%LSngsnfr+XhgzI4fm1 zN^GYt|E8L?Xto*c%@<9iNJWZ;gm3+J^_;7<+e8iyo-L-2Xbzdvlqij*)$y!oQ*-iL zalL->JgFL8S>kDW^77^x#awJ2dUW-X4{l%CsJfzjq06t$-XMpqJiVucHLda{ZH@|0MH$Ic2!Me`7 zudacCb`+cCLa1U{VcbVotSO@Ck2_*D!$MV@oHnBIQ&UsKy|hUzV?CBrk!4(!vyL}& z*M9=Mv#vePldzd3y{M1o3x0a15KYc>xNhM!ioN45h6#TUe&RXC}AfrLeeX+F~wq(tgj4 zY6<;p1nric)&{z15}#&q9O>|*`PykA_mw`DSpQtwl9 zAru5OJ?ldyDgQk7s^6%Yo)O4+sV1gJU+A1A<>lNdtfNkUY`91-;j=U)_h>fhGs$PJ z_OAI+o@OIpVF+l3c- zPZA}kMx7cEZ!$0}*QYVr=(V*^dP)0xw$T7M$ZE65rI&%;&SR+a{fM%s8t_o1 zj3A;LQT#4xzggv%6y`88!%-5|vYWBhi3$*+KUzL^d9r%Z`vb0YfT7vzm6^|S!do1A zr<)IJ>Cx&1=A{CqcnWjeFTMLVhHUR;_VMnS6^<7-ieCL9t$nU7cJW`l!nB2N7jLaUihVxHMU^>hwakX6RzyDE$z~N-nUK&N{o-6Kw~_H z?_)J{@t$f~=MXbPNari1lr@Eg-4oP`o`$?SJMVp;d$tj0R%C5SnFTAoK4^{AvRPfY zncW83Ys(C>@t;3!s7lN)hfY?%-#=Rd&cK&$&6K*;;H}Bt5Nh6wMfz{be)P1EG!vXD zCb4It%+eX4ucZ&>UuJHerdWa(QRqf&d2nU)O-pv5Y}^k1JpQA;+ooQml_?$nc39sZ zpn>Ow!N=(}b>bq=On&|x6dKxUAsnSHB3b_MyT%I-H4ge%6^^QQ72Bh;fr2xoq<0yp z-02%JDxJYp3~$>hW@7bd^LIiJ$B#Rsc)s;|h)a;m5^%tpEgQ9@2mK6w0U*OuE}C#Z z4;dGYWD;DxB||=U*wCCFoL$LMypLBXe~7dwPky+LJGn5FxhZ1qzZ0S5;!?JU#df!G zV{RI8=PoXP?LDGhI9zFy_%V8T`mLUZ-m7O;wfB+d6RefnA07?6!A?YmbRM`9k(g6D~}NQ$3NMpN1ZNA_m#VMO6d0S zFNPuoE+L70`3=xoQnMef8w3zvyREtAXD6&IO75(PTz|9r1p}=#wXN;j&AMG_E-gHH z8W|#zn>rEbqLPvX89!_%wDkP2zhj_4h4<_pA?B{n(OSb`kN6?^9 zWM|}f2M#yiK;RLk6cYqM>E|2t(51`wPCyCPM-_lZVUI3Q-2f+V8=OxZwHJr$3u>mX zlSKFZB~KOizYy0A%m4?Of2vLuJWC`>itqSL!r1OQRR((>b-xChW^_&-(7O9AMpn7yU&^&x#~ra#tHB|9FVVc591Y!YcHBzS$K zKnI{IXTu7susu_i%Y1R7+ZX93!OO{NZ=JK|kcGkI2COrJWFgzU$8?plFqxIKS_OU~ z^wswgBN*ndip=2bJ3^j*3H~+>Go_9EX02d2o!k=K??5{PWjrll`|FuMcY=pxTt70ZF*Duf3z$kdbW4jY)hh*U9i8i-eI8uFbVf!7{h8IQ z$XFy7=T(~NuDphfvrw`E^Iw~(cXwNi5YII^YVlZ&CHRS?#9wh~dH|MU;sNLuPkCHd zHes=8c4j7hbT<|RJhlYl9JhIw7KG`q?RV{?S-r{cE;7Mt)$3En#r3#%mhr| zrS&AeGBPsKjveq25D-8rfM0fsJ5UBX>*?#OnVMz<{9fvc8yX$W5jaFfnVXv*Z)m$=hwu9`;S*G@wZnxj)HHb}~qs&ImnFc=!clMUcN4 zo62?^aS?nmx-w$D;ErPwSZQ6^td!mUi1uvm%XpznlI%l!+(sN+S!X~T8TW+Oh%pJx zHXvH;XPGW)V(zftganJAD?<^YU;Y!s(dSp zM~~#XdwOPhKj^QD2787p!m(S<+&AQlQR4k*WV+|?Vm}6CmT?L)^_HrlB7Io!U-uQx zs1unsFgkjBVZ$*x=!9IRR^=ngQ>RRPWcQ^TY{naU>+gnBg()h4`)gKcjR=ha#B<7C z&9)XtGio>x>+)taG((5CXitFk-N^ua!TX2&T)ZmoX*?|h zErRE<8y~iud3bo}s=4fyl{=E#+bd}7f|?$>eNP3MoCipEL3*_WvL9&@*8xDF4o7>d z+Io7Nl(ek3v~x-86KBW1(IWT(2F@IPwd)Dx$2CsVOZ$y2Hcc|fF|>IfVu}s+B8pXu zqVMagvpFD2uUkw&Uh2o!S7wYK9}N&;=lwa}kqu8y^1$IBi`uW_c&RI)TaTQsaZ2;I zB``0#qALR<9H(n~y=Odf*D)?D=I?6}Fp7&*cAxVzvj9}^F^QEgylS?m;`!{E@6>M9 z(;o``^e$~41pMmpM*rHxIKzC|IxgFZ(tKv>qh1 z)Z4LpZR$P6R191bjjrhu?(K2Q^2kwi*1v{NaSNuf&S(VL|Hkv@WEg&ptH9cMg@lrz zUvx}OPgf`2ck1|QLVRCaYp}3ghm{2Q#O~t7i|4`w7J837xYoe9**0ilUpf@_$lm+b zUO;eU!Cx*9l&@^5j8HaD`w7{8s~1R13JWPX!VMoPVz4en-dHO2!O+fW@d_WsQV7!@Gh$%q6~0<==C>S{L1fZ zQ0HU)W|xsJBq6q}HN2#-ssVv=`B-!#q}J;p*Bl8plQhcdy%G}D`KUh)a`L!=)sYL+ zk0t!r^q9W>_@wypfs?gXmpKQ0%!dyj;_<*abI^xnOKTYT->ZHudN{&lZncCpFSmGA z{`YUdv?4x_n-n-UFz~K~Md=BOdguX3UXp|q-N&&7;VW3l*P8bHmOAP1IJ;ZC;u!x* zsT}4nz2X@DLAzU)OzGCc_CwjK*XPFW?*|qtexAHiIQ?{E>*DMNTPrOpLp8rL(raTX z=epv2y&*|nnuK)Ae3?rml0Q}Mi;D)+m7SdpIV6(?4^=_ah9#SNrR)VxdMdDZV@gW} zH-yvD(#q0)amK0IJ3EWfBT|r4h`#BDg*=^&t=n-MY!tcO1%CO;TC4sf%lzKu9)*!} z=aCYe@A?$;OG@tl^>utFna^ERZ_^NpqxqNf&n_#|?8}r%bHhwl+U9_h^~)R=QQ716 zPpIQ7sm-vGcP!WKP@{OOijc{3T~^u-LUsdd-)_~eA@WzU81t{Qd%LO0Ww0G5BqZ$o z2x04!vIQQz*VWgz;g6#N5mA`ApXVwK?V)g2R8oUSB9BVk zl@Z2^8OIaE!1sUCUY}R)^ru-3#>ku;9phaWzYFk4I?vR_TSo&EKYvxiHUf&67)fM!BE(Y_}XAL?e!$Y*ozuVUb<6E9Fyz}2bMCf~>_TqhC(H_FqI9X+q6_t~m;`-|Ka#_?=HvW6~glY@gXZjE5- zK}0Wqz5~6ORHIWuyZK$>Tya@ok%2hk+`O;fh!edO&Xjg~>Fw~;6z~52{@uv+5ez0v z8=ebO=$cj61_JwIQaNC?fiNfTJYStb6|b`?phY! zpSo`ri1WjT*OACB$I}LK|IG2g-6ctplh6!PBDG>~)Nl6JDF5 ztTWE()8cmBg^L#_*B{|ul^)?14_B1%qNgsvf*#+oHNmIwTI%f5^o&s3-)3kinEd{l zikEKJ((hLx3Xz4fbV5NeUuk|cwg2OfHn9>G7M9X2>7;Xr>X0ztyVozemJtjo|E2}P z;F13`J80wJ0CC%1l|Bv+XY}zUtQ7uq`rbaU0{d4O6<62oD5ZF&GyP*$wl$ji}?VoZhhK^T&TMZr0Y_Xz*62 z7#%b;1JkL3!Vc7YcLqmCIk)=!Ro{e%=K$C|^nhl+sjaPTXY+efc2QAJi_ldX==syv zL=&H5g=VnI#2@t1L7%mnHKNRXRF_VblkRiHDJ@DZ=3vH3K=k-9n4b|0R(&_QX}^l9 zXBZ(l_Y&^XH)jw9z@-5E^Gw^{C-d)}T5laOimyUFu0`ye1%TzmW5^EG)x!h2%BriO z_q9PQH=9IC-v-Om;KSgrXj=b-^TFR9uWoF3%GkKLxTt+y%%+FW+L7d6O%Xd0Z^=%c zzX9UY*o%{AtpJp9TN~k-M5EB#s_bAmSlQ0pj+O#eo)znfh6YJIE8mqpi59%Y)6shr*`=i#&o*c5F=c#oPa_3@e=f)fjt)xJ%ilne z2Jb&RzR0Jqa_`8YvTi+JqDa4f|f$|J7YrkB|V{7O-ADbsJWe9N76y3Y0E z7>7q!%t~>8AhyyCzfs$>z1XpgopwnAv3c^-Wn{ng`f=!b)2aawm#15tS-;$ z>qxm2)nN^AX1{9uaT_@`(e#Q$E02i6qJ#4??(upSF z(GFS9TO7vL2E4cll8e@x5X6l2=ZaGe>sX|Z>WDxpOwArx{p#5MqE2vjY>}hQKh;oc zg}Xf}FglN)^OO-;qYUD)wzdZ0zO9~GR}i;u;l?OfYk4F~7GP~uRGo8N`&_kd zgxRSK=`gDOvzi=H3;G8j$s*gaydAkMp>f+ET&ix$UpMh_)c_X^rT*;7jnKm0>K)~v zgtGfzi{GZQ&la)j!BORR&N~*pbKKAAwqGz-b#*PrUN&p*c~wd5NPSyC0s*PN$NdEd zC?!B_TW^Mx_+kJco^KD48-f%QREdbAQM+|X$OtmexH5(TVDIXjZmWKnql7RweFKB= zP!$vkjeV#A5jY!1v{Q#GqZ04?RAB?lxoOVbYjqlC*ubA>&AI=bGG^D;OWd4pDiB$p zN_G4e>~|M9n@q<5#$d6hmBg36#FWVKp&>ZVP6bFspgGcnr|;XymK|t zX}X3fEw~CC-Z})?@J{a^1YYvjl0C@qNb-T6CL(Ve{Ky?V$(xv>#6ot{x-VS<%ld~; zzc^aL{b%;?;OsOt|5~SME?UI#r}DbSD_PV65V*4uV0^{qg!2Div>xuuL5w?Pfab?$o4G=Jm52hai66epon|2NO zcUb)+D1gD<{=b6w|A=C+x7|F|uV&STk5oGwY#a5z$;t~L!VmsHGAHYK*XUI?$WetxV~D1l3tV?BC3@y58)V}TKlM9$Eyi7A z@MMTT64&bkPwLui=Vo%Dfk`lXo=CNK)6C6QALn>iW`3|69opF*aYfYZ1*Xo`vU_np zqozj8!1ulGmN6)dsB_*GdtpR!&OpIn0TpJi3rb3yI&-!*H=VDuX=f4l@^rYaNeCEK zsmKymH64WRHq6bXi1C9#bEMgxEN`FTpI0WQxNqxB+z(8iMKGiAWu&Zakz7ssp+Oy{_#?(acOp+; z!~PmQnsMc!*ocUpv&=Y%7%nH5k9UsD1nd$&^H&Nq{j1S|RdrxNLdFBcZs zoy%bTI*VY*;8tc1drc9PmtZbcQT0BW8kA=ugvZos=do zC{HXvW~g||FEhPk)X5X={H<*q1eJga;5Q5bq~kZK(}LEA8&)zUccEw}e`i$z&-e^a ze)yVIi(O8)-#}7F=5gT)Uq(UZC(vXul5Ho~@0$px>{&*^kvaT5=w?2scZ+Fj&#?~v zLf!Lu2WI1>hYOW7H_o4jTfeQ~DBEQqcd>&SZU#PCB>3(&V@ok&V zPB{TQJqR$#ah%GTm4L?Nf?^k-E__TmKI&=?3)IfQYiHcTAyH77EGmvO*2gi^c*LEw zwkvK37|>__wkgPW1YDTP;~KP@zb^b8aUXtdM-9-mV6rA^x$mb!fqp9PW&&(%e7q-H zHSYH!w?=yOL;hSo$2Xt=4fP}&id%{x(OL$4sT=mU;q~oVC19ehz=SVqCmE55TO`?K z4Dj@WGDM9w;LkNA=4NM|I9g%@scvONaxD4w`!tKxKgY7^=5HWS{mW3oWK#E39^lKX zGQPUt0G$D9ze-an1-;^y4=7|yd~Hn)a~iddnVBrdkF;C%vCyp!Oh32kuS)vv*{SXD zh$Np+N=jNklSYpQgb`pP6ybCdzI*xL5Y}cfG&Xjr6ALOOCziGZ`_8b)`ae`Gk#)ABLLQc0J8tOF{Xk6W}5VPV}&#Z z%GrUtX_=gIRixXmCWyN@6Pm6}j7j5$>hYKIkbA7Hnzn_M53T-GvqfLxV~(I%rMk_T zHI?Q05131uC;Q)Zy8kas_TPT=#9xfI#cMsO#N~LNVQAF8ixzz-b$Hm#_S)m3Bga`1 zPQ>9WsBnz8pz?I}UoWrXqnL$ynvKzpGK~(29-f@buR0LX&-o0jFr>=64otd)@KFDi z7+RSkRGwdL;N;Ox?Phd$VRX63#V2^6BNM7nlN*;o)glWUc;Tpc($4ts?Tf2NmjVwF zJ#Saz6gdDbuPGyLyyRum^Jm1p^4?NmXy`FUvp1F@PtY!^U=96oH_DBKnY-p@=-0V^ zB!rSNApaP>6TEP@AKzSu#u+ZfkezGm>Qg4sC8pt< zuiSh3Ua|?DUr2%N4RisNo|!(Z~4~y zXi&ol@)s$j@E~!co$epC>ZR<3eWAJ;_`r}Uv9$CHht<%AK?KJ&m)Y&6oCQx$&YTKu z6m4=LDrYO0z|lwKI}s+Z7gGm;pA?M=Mw$B zAHCQM^w4u|nf+}&akhhUkVURV!5oJO7PI*dBCB$&buPfW+( z;1PLX-sE`P;g^W4-{-PS`f;`#P-dOn*Bl74Wj!FQ2A%k-p#qNoE;d^?Q^&bI+CGS< zVgsfw)<6?A4w3iKY3cL>H#Zjok5F0wY~3SA6DIO03`Pj}xu=T- zO3STb3=r?c52ZIVaXKfaW@iO}BgSq329-xpF!6AA#bM)>Zql5dbPk|+8X6ltUqPjc za6lx3!s%-ce^Hz7(Oz>t%Ij9|4*di}=6qIIQiLs)y0-zkD#*_txOfRXTCiJ^ECcwq z8#-UdLF8J~=a!)!xAY&^&)*FVGZtvUvezNr|dT?$YjN= z0nY}7X)&kN0I91qATt`pMP0e?FU5wQrKeNnio=$R+V$^GI@V#uh~G~PR z!*Rkqx9Jc`cww-4=N#Vtp_d&*|8BNJ6ZYoBh2}!d0`a$4rYDIYkR?`Bh~UZd2Byrt`Ypvg5;*gl zHDzRElziodrN!6GGf;bfu9?RKMaJ$<2OcSMtT>rApZFMHHrz~q{eE|M-UMV;1uoN0 zPEOc|J)oWvE}6^vQ7VwDVKK_8JD$gFXGztv=ux_~k9ICH<%3kbfJ$?~-f16oWdh~u zF?ogj3CUAtDA9e%!1oXMuH`T3jFQ0A=hW2b`$fgQDZ4X`QS|4&ji0fCCu_7l>kFoY zQIJ#F1^G$E)b=wZJOo+VS%oVRiAD>m!8r5+7Gpp^ApGa3H!+G$L|y^E zf~X$R*J{@*w7Q3@Uu~;r4Bl-9reYmZQ4Z>cS1NW>vzDiQzTgp}wQK1Vx75vWax~+A z%t)?c)ePEgq$AT`AERW4SZp3vp==tw9%)0bRHT|CqG8E#t-4;`DM#pQjIO@d z2WfOKThGrQxL^8;v8~+(YTyfRu!GD6c-jAZLHNIMNq=#RoIX^6$(@Ky_p;=G%F1#Y zZub>bA#8M$w=c6F(BBgs6#<#so0ralrVf=jQ$T&;Z(Ub9cje>XLI+a;Yd;78K3+f7 zfue*H{xa-Wxn&0jbHvZRrag%BdK3y+$)1!)vIDzsLET`g7N}Z)TxV%-=I>?pk8^Wo zcrV)>9{AAEP^>%cjlZg?*Apf!{3D>46cG{O*1_VX0+{M<0;ui*@M{H?5^DN;LE$54 ztAOe}_!fwkHWrm5ua*mu{oJ{htnP0cr3EU7F$b?AvA8~<3woam_;z9HztR31Ed&>e8^ z-aYy-MQzqRz7~2QLduF^UE#9bxdyoH+~SAj@RhdDl>#q~aD#@gLE#XL*q8|v-Iux( z_^#KG68H?>R*|Zj@uY`}aEPowBhmj*hp+h<$S_WJ7++1gJa0;ZR+u z-h2B4*wLY;sCb0O=Y0J5@!gcUV)nml<(r?x{+7yh#8l*jZ9sG#m&H=RbicYUcPG5< zxc@Yg^!*l%ZY?lNKRB|dzD>zesyf}6f7!r1PBbZrSv6Q3StmXMXmFsUsS*NWf!$uW zKlAeT_VzL77&dQ^IC<9mkDrB8tRF#f*4AK5M-x`n74K1?n6G6bNGO!q<}_+hCgvPI zTeLn%`Z*1qDW2k9hOS|gq3T%h)NL#WM>V_eg9kCld{av+`bf6?2K}v9Kmo!e-e`mvRojZvuP!AkHP}4RxzLIPvJM82E;GqNd z_awkfaYLN6u&3k8LuK7^(@FrN08`Cbp0PMo_~yE}d;tF1OVmCD#a-Y_ne3+XWvCz$ zayd7urZc5SJ*T)Bsdy@G0L)_deKscun&>(BBUD^a`zL`*(Didnm`_SfoHCai5mc$K zLFrTFKk+~Si6($CJUY2=ecq2ib-b_yUo$j_O=NO{7K@4MRUT0?G#j9}PcJZQxkvAB zU@#t9>&a|4eS_i2c=pxZLdp?)g$?Gv-6=KNW(U$0plvm2@)lmMqY8Wi+6K~*3H6v& zZ4(p6jtAy)Ac4Qffy4Iml5MQ6c1Z@=gRrlyum97?u&28_8)WY{LBy?kaK7&>tdkO0 zMJ0o?C)3Q56$h}Y$OvO+tJAF=Y$!(*8C`wNshpz|78camY6tWJ4M<*9^$ao10B7Ix;~{Bj|T^uGF;g?f1`fz=u{jjF-lj*A2IC z#Xr5{*snEi4RmyhrPW@(_#(XL&Ru-Sx5toQ^6>PWw0wU5`)3UJQMNw$c_v33sLiYW zo){jQo6FR}uPk$9Lr7#s?e&a*ssBAtz9|69R3k%@vkXma;NBj!Hi%0y*L(2*Pyt|P z0C;KJD=oJCfs!jUa&HPY*v(Od{TEIo&_OBZqndZQ`J=Roin$sYPc*4}Y6u;T=C|Z% zZ~stLT>A6lTgxw3nNQwLdVrMzXuZ9AshE<^W$i1iwTe*4rbxDC-R|1)?%i4ZdulF5 z!ZTi=f*U;xNhT^p-#Y)*Sx7#6xa=k4;7HnjYi*}Gdqw8iZ~Kqd=id`3r%`#g#M2B> zw{oZjph8dv9FYzloVxow255~Uag9Xf!DQLkSPCZ{Ez4ZcvRxJ zLqwK#WGN<8rFpRKZug@tiURcJMsgKeXbL0X<3q)I zVMFZAn0Q{hVkStJtN;3sx?eJ{vZiK~OQIxDxp_Zc8!3P$S%i-7e`<^2=STGO182_9 zgGs?|an(BNC7CzpGYDDQe&~K*M9k=4cXSaNB*L1`M|D7It+n+IF*2Y`ZpllOq-VP7 z_cMt??g3jXupqFW9XP0fNyh*HJMBvQ52!Db*_=$+Pka&u?D|0uz0WFWXF(bi z49TgGvXHFt^*H&@VL1}qnzD3@s*AQO(!g5F)c}ak0Iyx^;v#5%Y3IY$Rcm2W8i0Eo zfmlcE)-7s@L`gn1p^HE~rFQ447%M`@Fg3N8;{)%uu4}XJEO=Obw=Z?RntzRnArGML zE0(*v;};w9Tl<)lIkWl}xqM+C2lKB=J^LOx`M(tt)#oU+`i+6022xOf^hMF?k0+bd zGbB(tOkV?Is_JZ@)ZLeq^5JWB^)T zKKo3eTi*ACk%0lXl-Fj})_B5c$&N&zWE;`=3l`;~ql3QcH6*^U2rKv==& zsHoHk>w#e93_MN7g5>zIX~0 z^U_gjM+vlgI9Sl{n4qto&Rk^jYJp9k9L5FlUMz8#7Y|7wgS2Il0tLEg7J98Zwehb9 z{B>EA0O|c#{SE95X*VJNd>M4k(^gQ(Glx-aza^u-X{6-CvH;8a{HbcHUyQiZNPMj#uGgUY0Gcn^Wx6~Y-_F$0|M2Az95ocvdB7=J4oyc)UDt3ePxJ`Dl zSC@cSZ6dy;mep)&G&#}}=)W>@G;Zi@>KXCgEM=^llHeIlo$~~Y5}XxUt2@>Kyi}@& z5gR$zVB^(T0^~RcY%+Qna;GcHZmR~>d%CA`i1+r=QQc5SdUDJYp4UWVj)XC;7}P*O zU0@kqJ)?4U)ZtwB;mR@|weh*Xx@}gQXpG77deetPhjxWZJgF<++|SC`$1s41tv)kP|`*HdBo^CLX#v1Jrz)%i!)aOIXV=J z4@bwVq*2jp=B-GHp0XCMa@QUi`*lV5<6Aa0-lSb3j(&^u=rK1(oyNX@ovXw|?@G4; zzMqsERiK&@r53#p{MED{E9vbg?hKv$}vZ>*(PeX;SqQKmB9QbX zI~f7cJ=(LU8%(3f>F^SvLuHFxP&@X&OMBz|O^~A9jl3-`ekCgF@16s2Ea1Q2YvUKB zXHsS+en!W4r+`>eP*5Jn&af@YGR|VY-;yaCFcq28t)s8cwS^|NNOK+eTCjl;j)Dvf zuuxS|66Tewne+ai!BFLN7b=&#)gbk%fPsGQ)$x0r&-(809(u5f50YPwP+FcSw|w>; zgn1|@1fZ(e37P9V_uq2FGCa5kVE$Pes%&qcsk_$_{xo5y(Amd+U{D*)E`0~9$o4YO zMO1uV=F}tZ*OKkog^+|GS9*Ws6uz#KpKFaB1N8i4U|R*?=LY$NQ~{`y_FV=EM(zU8 z&fz<({A0d&uB2}RI${}!(y|*GjDXt)Y8-=(Ffp*JVa=zgsOayNii)8Y5H}+21*9L{ z(xsh;rucA22u$|QvU&8~5Snw?7W+)<>;+p3kruTV3}L~9O8-N~B?1n^RueLI?)L55 zJ4F0e54c+;Oh6<#C@ue`|6Qo?1G%FF|LWRWbq9x{s@mFVs_4x*Wm|u4o$Um>Tap|< z+_{253RBwQA)6EiZBP^>#21j>qZbU>n)v*gAp@$YpqXL9ER7k>5qkB)Ji=8qgcXQw-k#3%X(L+OmnR!YlvY0 zJbAL-Jud(qmH-1`;|cfsTzah)>KR4&HIQ~B-cJ)#1%5~JY(sIeV`l&_*^OXYOh;eS z6Q`NF2Q`k9aCiZg*0rWUA&GwZ1X!t2wHgqPSQc+KKS9}^Faa{CBK?wB0ppr%Wbm0O zJmd!aH_JuKjMivTAoA!H=}+RECM()n_9ljhKQ7-@*_Vy*2-D&G+JKyco0gBg%#kDNo`h0+nx8_?|@uw zu#@6E5YqAA1?>Qak?Xx3cBd*tp?_}gaG-%Ni%Q0Cc;&86%Q$`NPIIDG3wIW<6m0VN zk2%tl%R$pC@7`?rqpf{O%J7)tMF2nLU?3B@#wOccs8>{_@mXtIlrv*3dGlZuQ0Wov zyADjzn2`x>&q$5I9+P_phW1?K2 z+Y@POkcCojtm@XfhiL-s;N^?8+}Es% z^71-}pVhOXg&%*V*w`Mn%ooWPdQGz=TH6u?GzD^U)Hq6vhh{co&rPydj@i|B?(>r+ z+DmZ7%p{s?|J_s(^uTpJoEu0K&aliG%I z-tXlky*5sxdpi9zEQ`?qKI6RwDU8V~fszxC8+43WxwMjq%3VZDZ@iDjcrkacu=vc= zf@j8#78&%!*YLQtV4Iq`o2j1gaNYhnSugNJ5QH9f*lYFAx*~QKmx`0NGpwI-&F5P1 zfkw~C)YwFnF+5)4PWW~I&`e!L(dtbo2Qm8QGeJqTcfN2i^~C zXuk*cbL=inn?V>oaJ*8)=~#n~4%$j!c1e#B4hPsL0ic@dB>CpeouV=yBhsq%8>NpR zb&sgN`@RMNh&}ipOS!l%EBUrekO{W73y8Chmw~;npcF-EX#N7>?o$xo;~?1`TRk?W zPse0(`JrH1gba{h|J_#;Lse~Ki5~oU^? zza*LOE7RUMe!dHkvz6rtl^y8tmJMNad|Vx{6@Y(QEdNKFtr`%}9OK=0gmeFDyCcn$ zjirRKXT5zwo$uaWh5;Pnn@|;<-A45u^p|qyXOh{|0@*2ySux!v3K=GTr>RW{a7%Dk$aY0I18*g6JSl9E9R)E z;9zlssQhc-T8flcX=o^L$BTc(&0*%gOsrBe-X>o3cTA4KHq{>Jc`6EIus;aFFSb13 zKWXW#UfLaaf0w7@ejD3{tGLXwpL*(?fnX^mg4?HYAnQ_9Rt_0^4~xq18D0DJD;lb2 zBv)PqO;X>39J7jCd^g zghi@d7nLR}tiwaIx#T$5ds|HClK*ZB5d?qdwA1Ncq*r5BXP z-&-Re#;62$nY~V#u@_JonQA>IP`=<^DY+vhDXHxeBK6uQ8!vkr#cm;Z^-Mgo8+|q{ z34~c7cBu^c7|oHIq{3lRfLb{m2Z3Ltw^#c_P_2n!DDf4eSv2$?o~T51{;%e~JRIux zZF`h&NFiEON?B4WO0qMe>?8?gPsmkbdNlMdG^t_cEdV zEe50|yD+oA+t4W9+<0FG;MEbShB3ZbXcq!}qO((%g_N z#2PbebdIkwZR^B_`v8~DKM4;XI$(J2!<*MWoYOigN&f3MZ{l1Nep^cm2+Z~7UO0N; za6=eBj&M*qV+yviq{Ij90Lxn7`a{lpeZW4XVaGYCn_)}|=d7QIBfRTtYwc9FvqrhM zgc(8lrM534TCMdv_+y=e~2DD;g!=ZhkaaH zG=FL6QGn96?>Bn^EO_5F{UUHZp<%Ty6%Y5*mybQ5jXgx(zWlW;p_f9MTNr}4P{5;q z9SlVt>B$flc&w=uwQ3o1i*bDe#K$~QW&B&2s{FR^_Oimsv7vE#TU!PkC}q0)qSgd9 zgf~8tL-%Z7lu}1tMa57g0dsLu22=nFrTs@DOU`-gJ?iMK^QLg(KMmhSa>Q$>!ZoYf zvMAKEy0FuEdw=Qazq(v|Ab;qNEaZ*i1iV>U0Z>m-p+`+i?(>BSS< z@Sm$)|1e!@!W8u_goS}1D`rtS-PrRTptOwc`pl<;`y4ql9Ffmw@BncF{yRC7rAa#= zgQaQoh_rb^>y4k{OW@4KgXSA(-q=QjLHODW8_(rii!%`UteEU z-(`=qT`tJI05E{R7Z(@f5yp-MO7NZ-ZVY$yl=Y_+G4ebT#hCCAN|TwH zncwwfY$nZJmb1X(B?Ae;`wyG@Kgj+~z|Y6`b1B^oD>R9VxA!}4hOXcEuq)v8k|zzq zMzF-ABm5{XXK-oKPdRU~??2P;NF2cvCCE(ExXrZYQ5*v-*Y{f&TQj$b3LIr07T(n1 z4`3YkZbb09#&6x|ny}whd6@jMxHCZv><9U{K3m3W-O`05a*Ng!{)7_h1$Fu2K8#S- z(Ur5&JPYVb6=*~%(^(Ax!UIi4z+^2|uC^IX;b%)TH&YZ{n*b|OSPa#X6L-;ZzxJ%W zypgQgVRqP;ebz}w1#WR=FnhQ>u*j&Y@=v9FGFChfsCYO}wZR5&(c0$g%+0n(b$ord zc91BAry@f)f${?>#W4)CDAPVo8kfgfz(MLVVeR<5=N3Au=JKYsO>EZoKbT9@-~9b- zrvf`01l}z^zK*>O<=BD^bz@0{>HJ6iA_?IIS$(5l?XIK`N%&Elt4M$9Y zAh<9#)s_%Rq%A%yLSv9{VX)O|=}zWzBIf*0Md?s7L5cwE)Ir<(N4sd3;xms{ZZ1ok zhw5lvm4os+g?8n#kRmj|KA&-#0F4#j1u#_nna`Q z>W^O89jylu1|`7Mwd_hK#$MogKwF6yJuX16v~_?k5Yb70ePCh9R=jet|I(t%hL24| zGV8d-GHT~_UtiyEp92EQ`CQ*M-fU-__VD_Wbihr>WNYo}J2CZ4NpQ7D zw@E)=@w&ly4>k2?PQ>`Ccb;Nr!>P7q4ZVX zJoK&ma>&}isD(t;nt|LPKks3&n(eH6i^WEh5OPv;K8EIWUUAIOA0=+`$trvG;g9W=0_c{$L7pn{T0M7Uw4G#uc zsH2XJGPE5`C*Y0pCK_w}V}%@_qpZ35YlY zHxjhIM9iP?E^dAD&_>}G+!3Q!Zsr3u%DKy=fJA`snC|N1X@_|@j`KYo`$JLg&0lbB zR~he>j~*T#-*L5=RAJ=yk@i6Mb#5FE7n!jg6?h(eR~KcA0o%)E;xcO+mpWP1Ufw)! zo8SyjvNf{9wf8D0NOi?WN@fb8T*-DTSR>fWt5~WwH5EUpn9LiMd?v^?E8b$)Lspf; z)1o$978O|DfbCyga6i1_bP^SA!aiBn1X)x0ya1_Y|J&3=Ls`#&W4SGne`wh#BCZ$$`bc;1ePBk_M- z-SZwED+tTF1Ovp1ynF+H5D=p!SRPlq)x-yuZy8yFVm>xEuNoz-}gcNj(VO7TUo!S zUf{o5m4Q*DmY4g?Jzo!s&OGledTQ_!1|J?X)4T+rG0Fy&+#vh6JUq;om-M0^>3#Lz zzkgk?n5m3M{lYbhJTF17|9~UTc`;fbkf8AXe^lZBJ~ONTH5hJ^FO&%k1d-oLWYSyE zexYtcdu#%Sr{#izlQ-mxgX;pwzh)Z{;#!uLN!>j?jes?=1+@eQvEURaNw_^jw5S%- z&t~HqEpH(h-;KkE8e&JixB8A7jmz6RONxYRNHjKunn=snsEn}LG0!Ym{}p;+4{MN& z>p)y}9#u*Z>_xvDovYMW~Mo5{;MB{z3W>0Ajt>cBV7w~0U zR>)G(R=c{guJE4SrVCf`+mt2M`qF4MHJ5U8ax(N!W`O-~-8i|osG#5je3(r|s;jFT z=z8$Dq_MBlgGERZKwv4?iBfiO7Yv(rwN~81Jdo4ePU?19bd10=$D@i>`ZX ztFq@BD=Ng{!GnTdNKg`NdEU&e8y&SOn}_S{P8zaP`J1h_hD#ES&hLiH&%jJ#{T3YVmHUBCZO!{OwU~(OE+vEA)9AEM> zwrhw+89=sE?-QecTb_CU&Swu4cM(>bHj>M^ZXD5x9ZCr7cSWoaP7V%N8FIe^VtSCt z+{~;Ch`}F4p$+DgIJcqoKaN$qUCEI=N8m5-TMRGcIog3KsNxuhw zQ8QoGx+0B@n$YF%YmwB+qu%v!8N|Z@ZAoai3AW8HZT`*TZn_<EL5KMG3`L_v!_><2 z>Lz_kp@a1ST0*-w-k0B|4DBkJPeW8WlOZjayEhsL;!w2~9t;&Z3!fQbxGB@qDG|4L z{dZT;pr7C|`h{uArRsVf74ms=hAiHW9XnJk*I|iTIxX;rCMyJ`uWf{J>BQZ07xph?mR-7!F{P$5^ zMcefk6*EZt_UVEuk3j5sY=TYEXAyLK_9mP(4j*}9Vb4p+} zC5Lnzb7=$gl%DA!yi*AdN$x0iKqgz`Cfe^)*IhK{tjFPv-igPSH*aRjY;$zyUTak# zbd8VSA&VwWdF!31k!}&br#azM%K9XY*1BeF$K1WDAhLiims*HZ!b*h(wh;(R8Cy>= zC0vfesp|G@C5tc4qc=uVsuocph{plEw+KZkS4pVz*yrd3H!0;HvROJ`t_yg)&)!w{@fE?4k1i6b#&^ysxFkA_6c4nV|P4r`R6?b`PAch>tc6p);_JhBKmr zO<_RR;cOC!|6Ma!WAWxuD9N@lAssf4TZh&(*`Jt369&hu7I7!QHAVNy-0;fEO7uz) zn!V8Px~s9VF}Z3LregvxD@G&s^`+O>Uuh)}obKJz2cOhN+!HptN118#)L%h?KP8^- zs7tp#{nUtJ8Ulbat=D2NT{#k=0L$9+wSLCcwIAX@KbK0-&(*~r6}>7~?>+5eR;hcM z`$=6{`UL?P<3B)Zif{SDt`BiRQ(m4zPrnTnUNc6a9BaHD&v&M3%R$#bP28f$i>>#q zTW$K3_XNS--ky}gPt!ou8ORq6+M}WX`MAaJ zEr|ee+cjeX1dWW1Wj$gsK;O!Z7S;p^RWU4ZNmK_1mudnMr_#l+iMk_m15$QBIzpMPLQP{V46rL3JE_!Y4lP8x9efFYsSv^nn zv(yymF2Aj7-5wGu{^a!MK@2h=}-ZK zSMI%C>6`he+t|*7Fqn?-=dnsM_9CZL9}4l?2_b@E+~uNo2A!|Ko$vi20FV`zC2y z%#ts02-=Vcj*y!dEKMhAn^@`K8GTOl zN*7{dV>5x^ii`IsII#*Q%dhnqTh4%ZZWp_FWisuW@s73*B&6YuO6(V&@n6<2Mm^+f z+8vyL0M}$`Vsg@QRx-scq9r4;Rg_WM9Zp1TC|vE!Ge1qFP6_xK&SJ11%IDFH5pyv` zvjK=JOw6*HFPP3bLe<>NIm_IBWDw_;#KEt`cav=CPl^J?5**#lFzV%ly<)%iC{rwV z43pR^9J*voA*Rr%#{O8@Y1$ zg&Y*V6zPEF@+3%JW`5?&05(-Cy=&swA*n77V0ttmT`xOl*7C47Ns7sthFJ>axk-XF zXX6m}KR=!F9`PyZry6wM80ZCCC2hGcjVR{k|dLZ@UKu4tm~5ybIV$KtsQaiD@4;C9e1etjD#B*XQTuiDH{G zD=JKB{Ak?Vgz*t&78Vvket(@*12~_l5e$ zr&r-Dvcztj{n9IaEOB5U(@f0Rm2*L{XwKG%#1&D7JgDes2u{HK`WOW1$Y{F3Db29S z_w1p8E5`ub-XBtitDfjn+1z!=``iTQ?%k*6_q2zzTn~^-Fv9%A%!!luNlS@Cw0S}K za+adb>6B(|A}qCib6*(j?PI&(cAD-;91`EVg+rUZO{9)(?%18up^idv*D(G^K*tND znIAozsw0}>EOnT|dKXTsl+=e-aMybnAT8jq(VQUSLEOcU_c~ZQKr2v}1cGThYKf==eQT z{OkIipk=WXHAYM8MZ%o zV>(zHTJWglHLtyJ3@R`I%C1N7ffeq*6Po|?2tGTIahh>Xp{@pg$`CDwF@R!CgsD}= zf*`bPh&4%j_HPXU*+OV$L7W4Mq|KVSY9UZybR`ey(F3+YALwQA%oryP@W^wpEomCy zMWcA?&Rrndu}V&8LrD@0aK&-&#Lk%_a5wWGw^CDuqgI4%C1Q7@<^4846%6EXBQwNJ z`oNPYIia?+t)#7S5!0sVkIqursf(`o!otF=V@=SWLvcAleY2vF|BIkNI32caPz;3T zH8+-s*eP#D^X56h1q&;>iAbz?=vIe4JrotEm73+c{m(5{HT5^D(4soF6ErqQR7A+mrw{Bu2l;BX`qQR6Cyp*PQcJtSM1#? ze?O1h^BsqmdCS{398E==KPOmu!zwOwtc^ww(y*aK+OPx|{{2AAI`#0*OLB@Fr2Qm#*5!@9+!cSyUF_WGGjaKjW| zv>mT`iv|+3nb_3Y7k=zYD(T!k5FUhPT#wK4%j*Lf{GKGPPVjt~il^0oR!NvV)!|N; zc|H}EjH#0^>ZI=`yQPl@=b%U5oZf~!;~Ut!GZ4defwec0?mNI0EJdR{NV7L!OkC8{ zoO#iY{8b0|4t&1ud2t)X7{5`*$dFXtbIslyfVro01}ty)r<14Tyk>Cm3oa5XR!#ii zgy=M?s+%wBoKE}f%uL7EuTKHDDJd;2(nz0Bw^<)YZ(vB$4Qmv<*;^q`8aBys{Gn5u znu_{S9kQLk8XyH0pf@_;Yy?UxdSW%vT63%VAf0j*O0(!9rGvhPf;AcDa6jdrK3Uny zJvYewNI)ZIiBpQ}y1PQ0Jw1D7%u5Xx|w=JVciQgpCuoFD-PFtIE&FAIc`6=;# zyFI4`{^dbg{OZgxlw>rZM5DBX%`3cgXFP5}w1v8TP(t{PZsODoJ~W~0vkm`D{~f); zAU9cAu{RKiICt%uhW+IULiN^)_LK;6!Y_b4ft?`aSyW|#K4>~_Tk?9(4U{58Fo7h3 z)7`ro;6vY^=`x#aoLX%gA>DG)N{xVleA_%BS}nLARcp20z|PJNa{STz_wQHvK}7E+ ztga0aUAIP_395&l#5Uj98i28n)E=E$Ptn$^Do6(STv^4)qf2L!Hgrwx&rj?eq zR_9?CLOi=|8R_FftotmPpArAwaBcrIIefua>ZyJq#;eRyY-x;MS9og+hbaj_#xAU< zcehPEn9!z8M!kT+-+E3k*GTVbnt0#?#vt8Y@5iB#TkgX;Q}rUBN>ozFGZak)H{W#d zCzvNXvJo0T({1){a|u)Q&};3wYB2G{fXVp9E!WF49`C|$ql{u{4@{_JN7_VP9}TUc zEAPK)N7+8F7ubs+G#Tce$?P)J160K|Bdkfsd zk&Zx409pyXpdSrYu%m#VT8}#8Zh$oGrG&~k1YciG?^;o~I^!`&R&oRDM_4i)Xg2RH z;e&xX>8SNwD5Js89OC7@_keT?W(C4Dyw^%KxOzj~O8&-Q?YBzt1O+w|hq3-wiHV8t zd`iE0@`otItbn%QzFWTAzj%G)wAi?w`F4d|sX(}{lw>R#^s}4Ap9OMNG)$p< z=lhxtf#vD(%P8ycvSilIWJsV&X7?O&U$QrmevZr<<6+IR zFC-caeV9&x^3PuS*Y>;4cH>=7(S6iJSU(^L`h)!ACD5?C{9VD2v-7KGb1KtGv)TD_ zu{(B>QnTdK87W3TXFjADS&&~O`K>hOiA?xIJhk8WshN2*u6t0dDAXwk)+K|iYhwoYzx8c zE!yA~hCMQ~4nl?!d7S6O2lbxW+2cYE{v&M=Y>y;au)El7mf{=TTwU{Cp)8grM<~%t zj!og|wj<2-ls&t#3;Ycv&JbIedpt11;gS>SZRYu5lhHx2WB{r<2f6An@+zyx9CgM2 zg4?#ni3guqnXYx)Z;g5qTiAGQ569qXu)5ZWb^lao1UHbwA#Nq_{YC!T@SAj5@Ozx%DB=)Q_QSa1~SZUW&)b)Rty z_jTc&MX=4XPQe~>3u{$lVRdq-qwK=}?lxtn}k1(P@ zhIfX-+2CM_AU6fsl8vXq0=O6@I)pCC8}w@Q2Oo$wD?qqYqD%|UEx4uqAh$iNP6=lz z)9AyG%8jOW1sGmE#*)tT+7T`jSIQjr?!5ojdvQ(1Kg5AtcNE4w;%E=y#OjItntH@9 z1!Wv|+{-8DtYb(uUevgWIC^N)r020Df_ll(ueNXsU$|2?$Sa~%3GnYHZvWm}P^2X4 z1;~pBT%V3Sk-|<>Gl=&oFBZ8z5_|MiR*Tj|`5EecXB>vF4}X#>kVWEDrXBm!wKxU4aS(w|G2$>P zUf`cjM#5k17xJkM^eOyCp?JV7r#NPMu4PUKZ{6=498KG?_lj@LH0F2_awL8$3G`HX{Ft#Ih(b+g}f0RI>0J+I(;l zE6#(lW5~J;-Pl&0NiwcA3sjyVs2vb9)BkKT>_GMuiEHg0FUSsWywgNO%gY~*^Qpgd zA~Lhl)>sgZHaX+?=#fdRjvD;nWx3Yp4%Q)Lem)1PWr^4~@al)&-%xK7laP=LKL~;g z9kQl!u5RK}Q19S`@=4Gj$;9CvHtfrg4&hRUA3$#P{Kbo?Ry&(Q>#vVn6YiUNtpSAi zT|&ayrR~2A@?}1iiN9$M=yhHiaF&vyek{HF7FGKjFA<9L3|vE9Je@#(-TZtHOGD_9 zY`CHg+*~Jx>9fh1Z<8$w96CeYg9X{v6mtV_k*A(;!PaTqLAEjG@o+U6rio3w;=j&f zuQb_t`1Gh?$fxZR*wGgJ8X_2Sk4?{jJj#xT&&#(dNks7$@S73IZ)(!{>-?61zYHJIY} z2*GRx=hu?~r;pW1JApM1fz0^!=Zv2}t!*U^nwQ=?J}X+UCKbmp3L7skqx##|z=Ytn z+Om+E)ZW_G#xS`Df;bZU9GIxtAX!asmea33)#83TD=mNHqw}ct(iQXfN3ttWx6bT$ zdN9y4y|B^X-W5 zpAjs*uik0tyfr^@Qj}XYq#bd0kD#C1eB8}*!`ACm&0_`uU99H^qi8^VJ$Fh2X2y`sr@t zA9Y5lIeWn`UW)SnD!loFH((_{In?~oNjwz1` z1WLkmd!1d=UUqjkxZ2O|`Dxy9xU`T|h)w7dNOT?k+{bvNki!p!Xx^hiG5_2K=B$e> zd6UMNRD5(*$)~b;$4>~+LeLqJUeurjha^?;UAb~QV^B$J)1Ey#i_x8SuKzR3GFMQr z@g8`cnXxzhKl+BCW)6nd{s@A^HDjhdxBqN+|GV|wc*r^Zd$n4Le!tehJaHsen;uOV zQ9S5h^=q_6nE1~Gg(eXPk^3g%V_znv4q+FP=r9axNb19qb)<3QL%uPenNPzXvj}-^ zXpX81k6g2nznIzNYaq4kq86d2W{55IzPkP=hW(j-nH=nSEBC`8&FdIJk=-oS_+#}S z{x|^4M3b~XJ;b{HHf}Gwab7>emef>#aVt3XEk|Ph@|>@QR}|M(NN&WoY1oW0Gou`h zZeT~ydD_p}i_7O Date: Tue, 20 Mar 2018 23:53:55 -0500 Subject: [PATCH 12/12] fixes some screen issues --- .../living/carbon/human/species_types/ipc.dm | 1 - modular_citadel/icons/mob/ipc_screens.dmi | Bin 10895 -> 6861 bytes 2 files changed, 1 deletion(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index f38cdb62f0..22e9f12115 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -8,7 +8,6 @@ species_traits = list(MUTCOLORS,NOEYES) mutant_bodyparts = list("ipc_screen") default_features = list("ipc_screen" = "Blank") - species_traits = list(MUTCOLORS) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc var/datum/action/innate/monitor_change/screen diff --git a/modular_citadel/icons/mob/ipc_screens.dmi b/modular_citadel/icons/mob/ipc_screens.dmi index 09b2493bbd84e22f7c48231321096ec09bc38114..c7d44da5a8402670346843622eeebc3143fe56d6 100644 GIT binary patch literal 6861 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 RDSMXt?q8jD=GuE-`X8;?8|VN4 literal 10895 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

      5P5}A{e1DI6 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 OLzv$$-LrqW6Zu~>Wl0SH literal 0 HcmV?d00001 diff --git a/modular_citadel/sound/voice/scream_silicon.ogg b/modular_citadel/sound/voice/scream_silicon.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0b3f47370a5ebfd4157ba833048ed19daaa023d2 GIT binary patch literal 10953 zcmbt)c|4Tg_xLlmLAGomM3{^%G=vbc%`k&mOok!LWZ#XF6tYB!v9CpA?9^DZrIJGS zEhZ@?6ctH({T}c4=llJ>zJL9Guh;Ls?(;n7-h1x3=bn4+J?EYoJ8y3szy|y$1^E68 zM4enuhR8x9gTp+0!}qEnhaLZI=_CL9t%ca__5AO&*AoJk_MaIJ;k)wpzmpdGzeHrf zw$r{LJ{opm-f{uH9*+NzmP5*EYib_X)YaBz2N6WT2N!%c;+%UJ#mMyBDOFXuNNo)* zA+Q>c#M@dJVS_z_BjilO!orS#b*F+uqQZQ=eIkth8`>kMsV0XDrUrR=1$&2Ucm@YT zIR9lq-0YMi1mFgMSUFzFf!Og(0sw%d&8}Jw*jMFn-qX3S`OhQ1^^s@i3F#B$4f09GwyPUM?4NCaBeehcYU6`Fj)g0v#)Xq zLK>?t!anqTmF4Dl;sik1YI4gbfMoVwyzojajd zJv&2tu=>_C38nr>6c=#!(P{q%oz>_5_Cpe$X<7sS^Wy$z9&!MXV9F)wwMRMeAEJBo z9{)QnIUp944`7ugI+!Irn5BqhD%wmcj%}-f*-k{q0cSy=5?HMrjN}QvT|9Adp>T(d^rh~RC!R8C!1&QL(+Rr(gK)|4ryGHPopd~0iKix|HDmu%wm zLa;_698P(K6_ECEa~ApiX)TY91#=8jEFht#c9I9|5^la z*}>GeB|Ww!ZMO}I0t6K8CK2eV|HljpHuoQWiI<)dpeYK)^U}P9!iBQWih|I4i5$`F zV>xPnLzg_Dy#b7$yd6UZZT?mgE||xikTblnL+y=ZvGtFy4(1% zjv4T)HelbqhWA5vej2ZYlif~JoFp8b#gjmWC1;~Mt`;i6@5kwjiaigkD*7VY;m6vQwYKo0X>z2ofd!)v|z91<)ny8DOp{kGJ&?6$~IS~s20ZpKy3Atpjbwe@#C z&RVtNS``*k?R}>j>p^2@V_ib5uDauS_46A*;_WeSyN>}fPA!b8YTitMH;Ll#~ zB4$7>BLM6+%-mRLQy=ctEMoW0|a9 zcB!wP;0aD`;6_cy?|lv=p=#AYnf|m?0OHH@{;7lgg5?+~xMZqg2a40PpSkngq|v-p zSOg(qPP++JBm?%Bddx)BJdgT*RF0TrS zeGUL7@V64#_GT*bxk6^jxt>A>N0jK(Bp!H+u*%v^YK9p~z10z`qC^n}J&y!oly7Cu zG-^;TLD&o~pO6DGn~-P91JAL?qLf<4v2dj;LT0{7bVsZ|JO_{Es-z2}P&F;HSQU7y z0LrGaWtOB0PsEc@GC4F7D4JQ4azpE^0kX0slVsD->PUiDM&yB`wa$|K8Y**0Je4hz zD1UIsy;eNdU%fSN56UB{R_5e@D0_G{^l2<_WsW0?x26(osA&;0vr)=*B>92_uqx#s z8z9Oo300mej#5?1%^|7O&~vahHK4q$YZ4r>HVt4mm711m5TavAD)34y0F1}6117Qi zbHzQXB#E+d3cQlAo1i5Z0?x>pon?z-Q`XFc08nloEMVduR~}Km&+MuknZwC2yzJ2RpP25oLq1Ae=-QqD<^8%^j@GZSiPJV>44*TePjUDay*m*1^)=33jfQ8M{k@O8h-0M8G7N4G=Jb!b3b&)@C14RWj*%eE@1I z$NzUx&vtY+^X#RO-pwu8Few;iML%35BqF9VdJ)J|475ZX+f6$gHndjJzP8!g{t0;& zr!?zJ=8|ETD5Dn=+3piJ1dUzX-gjqNV@BMitPyw|xHiu=|K z%8it5VJD%G4nyfh*B3kk1!;9dEhiUS8EDcQc~^4jsW&xc&9}pa{8DT>Y1FG9)IaGS zYuy}%d+QIukK3>r3ND`OL)%sijRv4+U2;42+4$w{ zXslmszO;Dnj-{W1(WDTke!9nUe_`iegE|eXyVE=arJtLphvO1l1%8I<+OjG4xIAuI zv`x|I^m0B1u|(HF^lpeW=(wnx##-V5Xl-3>z~-O2i>(b4e?Quk<-IA?`}!7X8DOt{ zIPy8y zKp+iI*=pGez7?#Keed4q)5W*mqN6Jj4wbBrlc(g#Zyw|qsn#@WKgyssuZb;etazV9 zi_TyBj(U@Nh)_Pk%r$0hY;#;PfGoMhLNNrEKtUKH!v8KU&kIp;5Rki6;$hA3>j%4Bjq!$WB?fBz$t1=Uidvspu_ZTLG(;&c)1n}b)&il zdXTJzH&HHGFLGM7pzI^|%;vb+JeeYyTCuf=`N}f#F6I`y+=M)Y6EHv@XA6mn4O(>J z#0b+R`XH!lwRc>73xB1l*+q%R%#A*F^3PsKl^DwS9uLb5eXa*wc_W~Hf9Q$7B6RY6 zAj>y71#_-wQYZlv3YY?#oaOe)4eZ9m1JXiKu^;k@MH8AB7fJTavSUrinBw30Ijzo* z%wBkvSj?^n!Dm(MS;!&d0sNQRUU3oBf zzxY?(u|wf$Rm-HMnfnJuXm87_%?gNc9)Bm-TGo_p)sWofn^pEZhukko!Hfj&R3rVB;NI& zxZ>%76q(fs*%$HMYrvwqG|I5$%6hr{36o5dlQNm20EuWMFW9or@yEO3I+(T8zCy&V?4PFgpsc0_lagJ)e5*KW` zM9^G+Wp(d}OIjvBr98%~fQ=#<^!LrJs#<&d*jZ!jO`GpNUl4J6`uW7=1+zN(K}GOF}Zg zb>+U!nDa6iAzOPajD6s>+q(bj7na1$3GC=A-ED>ASlrKs3sjkQLLbz%m73jz8o zIX{~N*)loFLI5Y==)i(>{ATNvZNzEO=um-J8iTKTHKk|dFZx}PPFLWnl;C3o`GqW8 zY@-}?-HgT?>9saJRn&G(Y=Sei*+q9IKq`F5v>f11XFy2km`dqS#82NI>yYNNS2_A( z9k7y9w$e6{&vc_^-+nbNQv4y8ag~;F@>XQ{(#Q19%B!UXTPL6UKTp2lCLO7?JP(WlIn2~dysJ-PgX4Bk>yPnfXM)s4#{kqE4-a#SJhGdK{}gt-NoYitS@4V zfkvbd*n8=+0o=kf=CrHvfgM`utz-=WW^1na(W*%uURlFfxq}4}CQafyGOwq9e$|M2Gz)3A7r% zfoMwf!Kh+CYx@6&!<&h4%&Qp1Lbu=#e zPHM~Xf_Fad&sLZPPemg7?_ZfR$yyv~3l%3%#zTcrIPhrONmL~AoMe^k( z^_h3DvBS*Znt?SI z@Fa=iT#T=?*2WA$_^v`}9Lnr+qjyK2(~EsNJFG}F-O1Z@O|cZu!6$hrvyVJ0zNd=e zu%>Rdmo3Lk<2b+_&lf`BS|l~H@vFaPasu{P$*jcTtlc1#`p0}D=kRTHDrNtm&`)R6 z#jX+a8@6+)pIZy9ABL^zNNu)E0WjrQsAkqp_GeI60#2zaXJ&kJMM=kW_?bSAv1?oS zi}YF?Ufk)N#)lj5cDGYI(zwg<;#Gf_OR!JF*C@{L(}!l^O|bwsf5qkU7lkK2PN zqHrX?{3a`e^N2;J2LO$1Opt$}tDb!*tIF_teN$0#GueMZ;jEA2tthJ-8*Xx(Ho9AMnK{HuO){!pU-^R^3>8ePAzWi_RYpRTS^xRUqkT|^Jwl4%E9hzC&>Q#g4^ za&5r{lv5fz-%UI&$wy_Wtk!e3YOqnqS*CuX+ZT4T=(_e&%O=~sjVINTQY*bSp3llwX5;Z+w7=tlid%ui?Xf7UiQ1+*A+ImW);=$Ec_%mw}x7leNe23!yuth zieoU2y^sB@$2-idsxZn9G$i`5fsG`t!5VYHH1;hMVPF(Lr^>W;YNj*ZM0YZ&NY@F= zRQkIV1Jnw`5;HuX8+f&WKW}LIwzdYxi80H<@bY8Y)SCw)#>I*w_(F=e1G%L0#-B=hi{8@4L z@O3qTgypU}BZ=uL{8C<9wo*w+g(@yuKq{7ptq)>m1Lc)~jX!pCJvCzb(G2#lkADAD zn@ZWochR14F)(}okk%`Me*zF3@1Oop0AlY)u^>Z+u$HM6(#Xon0%eM^CD>S)pR&f- zSt9MMQMR@YU`zswJ?)6Wo+i3DI-e$x9q}XwE6~m6v!3K!)Mx^|fCHfkX*b&xbgWX( ze#k2P^T$JW_0w9EMt|;1+J$sCyGO6?Dtjc}ZCFu5Mjz}7QyhmV18jSqwa^Lx-V_DY z`AwDlV%cX1TxpMC_u3b9cU8xj4Dfu*qY5Lj5hYqymk?a)VRl$|>OhWpjNA zXq+Ey4nWx@i(1d}gWhMAN7|d0z*?@B$B(ja!*i&=u*Fd)1=-;{{awWD)VIsNi^)`% z>U-Iw!cU}??p?p8p1te(cpn5B!fS%uvrC-T`jVaZvZG{Z;Tp*akbburkP7ZpJOqpPN`ZVcSBP%mZm)r zyZhB^cE@ch82$6Y&*SS8;9j@3qO%nf7_CP8G9F$OB3TBkRWwia9$%^o;~kHqgVr@! zT2ucZc%NKB(iD9`3y+8OUCb`EA?4+$kGhFCqa28cKv%eE)|UDGN*^z2j#dG_TFv>% zw<~y~r0?^>5hiBtY=9%qnM?5oKe#rP@_GkC@mx<}T}@kVuiFM}f85*ZNY!Ut)*`c~ zq=z%t6ZG02hNq5L?&cin+^x@j)D0Vg+*A~d9e`j6$?kv`t!_ zjPF?K=5Bu7Y`BWBBaIn>;f9fs=D_{Wiz3s%q%Ecdst9)3Iw`t#xf(RFn-w(eqp`C& z;zSe#Ux}>w3pTCn_#oE^0MhHDS8~07NqdjWlkED(UCe-EdE@ljXErtHdsEs^8e3~3 z(kJ`F4P%vQ>57^Va6STiF%%WzBZ>PI!8Aw?o}$JWsbDsE1kX{@&!YXOar3l_Nxq$P zH6>S0{}5Pj9$gbp2ko@q+(4qP7!U2Xx|oPuw*WLYmIJ^NoVg^5_w8NU)d#Dqg*D}R zRWci4ov=&kM%%wH)1UhL7Vl8j&r};D+k!SzZq&9vKcymk)E8I2sMd4?mfEk@`RK4{ zPoXSS5#neE`k&pgjU!@sjw*3>sEMzGQmD&T>z%4;%um)2<7?LI1-rxVxT{0z!g>?m zkxYX>)HA8NlZ{uTrJkuLO_Ne4B1=_;aiRtsi43TTjcuGjtN@C@;_6#9e=pH^7>Ty9 z+mX=I#KR^(?v%DY`RgzJS*dlhGZWC|zc1 zWn6a3pAjScnqc{Fa!S5O^T~7QH_=TeHaX0?w+(3<5mkjSEeMK`%x-NQ_d)QekM%%G zb{gb1c_HU--dW$rQ?lw7UZc3*MvM_rB>Fnt?LlTW>0=z*XTO7f$-m#!=QExlEOs@( z4N7q4?en%e6y1?J&4E<9kfs3ipkgCVe8y-{g0q|4$|}Dr+Z0!!tX~`%WZ3;m3h=vf zi;@Lr$YHwXF()<=CXw^&u5rg97zZds@1#k);88uK=KlP;GcQnD>$Clr!8^mBy4n(j z!>gA)zrfF(3T}T+O+t_jovEpgNtpP}Cjui`8*`w*Y3B9K|Ry%&3lw(It}6PSsO34dDkd8*Q#n zC0nw)TwPPv5%vWh2Et<;28Mb7=&K1x+%Rp=uPdjNpmqVpt7C;gMV7anT5Frl#ou9< zi(!?zhljCXu;2q76B_X4c+Zz!g!+SxP?C{ReOjHc2rm}OvF9T1`S`4F;-#4{8v50&AfY4mk2zxL z;NK-cSqXG#UkO@rNw;Myf$-f#6x#bTDT6<9mWnB5pZ(6JpP$4WTs%>DFu-TZcvjz*S$n!ajBmmqF5!Y4&20WUOhW_ zgwn25v$Fypp0)DBww?8*VVAm`EuRFvNPY>Ov88}FWLGs0k;lc*=6QH?Wjxn;EO@)t z1Emz)nDi#Ci0dU_MASTcdAm6!=!^g7&9;?j9k|Q@0*y^L(*4Iemuy^rdw*QXFLA4* zdSU8cE%i4~7@&od>H5~TfFq&Kv~IwAd^0RPNnlVCkkiQD|8^%ETihekykfV4PSve< z{_}R&H1S9D!kp4(u=D|(WUJ}g(ADSWQrRkZ-ij)kFmB2L5z^za9N=vo9Q zB-B}ei!WER$8E^2r=#i1nCFE<*WZpzi6wZf#{VfdaHaLU^y)+eO&iqZR4{gs_%8jo%!~n_*^oqS^|A&3CST>_ z!|R7{^B$ppD52rrv5|1Nhl28A5lb#IB&qmRh_td&uGUA-l%5{C?w`QjF?wbmDyz(^ zrNud)HvT($$n)SVK!8g$)nf6m5_bl`CX*5S8t`z+?mOb$Q|>%W zRT-$(?~Cgw(*Abx4#QC9`wRM#zHdshUF2JxlxJ>7cVP2~MZf5IOv`D5l^h&Ke_!Zh zcvXp+tyb+pDJoc&(X$6U9AXr_-H$nT>2zn6ly%cvs?8Vso8SC=(;9HS9xr-#4xc|` zQGK_4=%qmG4e@TnGlVk=q6&C6;ZJ27L2YyEdX%gO0Wf}EZjJK$93u`eUeKi0@o4S^ zs_K;bxZeYO5;elVUj)oX*sSMIw*LK!N^WyvA=ht;M}(LER$aD2yr5NIGYLulTUatQ z5~l9;^96^<)N)dCJ0N_MGiOle6TlCK&A^?`+j+7(RT1g8cC7|e%nYwNUF+<}>WsF! zaP>#|Czt9Ih{R6@J@>qtvms>)SZz#m*%irjbLNREr@J3?N)Au?KzSHh(pInM)Yt^2 zlqdUTXj~}tUU+sB^P{}oRZlV0TZKl_6k-sUHusU+sNf4bxcdu7qwT~FEZ07mw%oPdMa)mpdwqk@mtY^IK7KIu zA-Qg7(H|?BRf?y$$|-F355HDFbm7D!6A>?wO2vb2%SvVJ07+rG0bxmo@@Pi#McmsW zXmO1~xW?;h+eh+-E^RU^r;Vd}r^Q0shKtAO2w~5UE-l4NDPN2F4AxrKR#H|kbXOct zRZOj))A?d+^K|<40p6@seMZK)VFzL~azR2#LpCQp_SjGh_U<@E2y3TtF z0R8c;_)BVb+RJ{t&WOJePPT^ZdGhjKw?e!1raNQfaj?$d%W9pJjPB#QEXl$xR6b%k z_ao*+Ix>r#TA*uuqVRdz?G@y;)+;}w{V#R|gjUPt#Q9D^T-g9uaylC@Gt?5?rsnR-T|5WxCMigb6 zWq9^Fvh5gko|Lu&>|Ont0ea`3O*id*D6jQ{5Vg^FTKJeQ-IjXSC3W|)Fps) zZP|PNyyBIjZ4Co_H;-rU_w3r)UJ`chYFs5mnWF+{ZHtmCyd0-I^+`Ej49(y=Lt+?3i^IGN4Ny4@Gzrbl{8hv z$R7H-&71Iv8!c$@uGDU*giV_~B`QHUzMxR_CH@#j-LKKFJGTh=7Z&7yqx5@lPP0U4 zc9iotaxE{vIT(3dyQ9V!n}mrWC()ZyB*=ncvp-@tsLd z4L3psx%|CvWsmu6on+O+8bWJKMz`ZVX5%cZC#`!MpLVi*eq44IuWj!7dzbg&;MIbX z&cGU$1qRW0bU{% z{yS!?ZJku{v6%|`y?%LasKBT8)*lakld&jgMyOku7S-olOU*fbg}*C3EB;M)s<_88 zGST`IxmRE5d-`@n4svS}{TWra{z8fkZaD&o-{95R$f=PzB+-_#Fj&@?JZPD$c(Q!R=8kXdXSx}ixK$AO zp14s*$KQZWElCBxqU9atyVnO3KNF67j*b!opOlu6pTd(~rF*w6$t@aggh6_BlkR$! TO0=`{0?M%fW3$3$gAMpURTOSm literal 0 HcmV?d00001 diff --git a/modular_citadel/sound/voice/scream_skeleton.ogg b/modular_citadel/sound/voice/scream_skeleton.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6bf2f637e329c3c32490a469571678374c1e80ee GIT binary patch literal 14818 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 literal 0 HcmV?d00001 diff --git a/modular_citadel/sound/voice/snap.ogg b/modular_citadel/sound/voice/snap.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5e17b9dc242333454ff9e13ad3267d3fb0d9640c GIT binary patch literal 9372 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 literal 0 HcmV?d00001 diff --git a/modular_citadel/sound/voice/snap2.ogg b/modular_citadel/sound/voice/snap2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1537084be43c0faa2291bbdc659735d7c5901554 GIT binary patch literal 13617 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 W(J`vUN*z_@P+P literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 443d286b4d..51b6040dea 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1770,7 +1770,6 @@ #include "code\modules\mob\dead\new_player\poll.dm" #include "code\modules\mob\dead\new_player\preferences_setup.dm" #include "code\modules\mob\dead\new_player\sprite_accessories.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories_Citadel.dm" #include "code\modules\mob\dead\observer\login.dm" #include "code\modules\mob\dead\observer\logout.dm" #include "code\modules\mob\dead\observer\observer.dm" @@ -1872,7 +1871,6 @@ #include "code\modules\mob\living\carbon\human\species_types\corporate.dm" #include "code\modules\mob\living\carbon\human\species_types\dullahan.dm" #include "code\modules\mob\living\carbon\human\species_types\flypeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\furrypeople.dm" #include "code\modules\mob\living\carbon\human\species_types\golems.dm" #include "code\modules\mob\living\carbon\human\species_types\humans.dm" #include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm" @@ -2635,6 +2633,7 @@ #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "modular_citadel\code\game\objects\items\handcuffs.dm" #include "modular_citadel\code\game\objects\items\holy_weapons.dm" +#include "modular_citadel\code\game\objects\items\meat.dm" #include "modular_citadel\code\game\objects\items\stunsword.dm" #include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm" #include "modular_citadel\code\game\objects\items\devices\aicard.dm" @@ -2728,6 +2727,7 @@ #include "modular_citadel\code\modules\mining\mine_items.dm" #include "modular_citadel\code\modules\mob\cit_emotes.dm" #include "modular_citadel\code\modules\mob\mob.dm" +#include "modular_citadel\code\modules\mob\dead\new_player\sprite_accessories.dm" #include "modular_citadel\code\modules\mob\living\damage_procs.dm" #include "modular_citadel\code\modules\mob\living\living.dm" #include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" @@ -2737,6 +2737,8 @@ #include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\life.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\species.dm" +#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\furrypeople.dm" +#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\ipc.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\species_types\jellypeople.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm" From acfee53a9874f37439832b022e29eb911cde7250 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Mar 2018 11:26:00 -0500 Subject: [PATCH 02/12] :HELP: MAINT --- code/__DEFINES/citadel_defines.dm | 7 ++ code/__DEFINES/preferences.dm | 6 +- code/modules/client/preferences.dm | 22 +++- config/game_options.txt | 1 + modular_citadel/code/game/objects/items.dm | 12 +++ .../modules/client/loadout/uniform_trek.dm | 8 +- .../code/modules/client/preferences.dm | 45 ++++---- .../modules/client/preferences_savefile.dm | 6 ++ .../modules/client/preferences_toggles.dm | 20 ++-- .../code/modules/mob/cit_emotes.dm | 102 +++++++++++++++++- .../mob/living/carbon/reindex_screams.dm | 45 ++++++++ .../code/modules/vore/eating/belly_obj_vr.dm | 10 +- .../code/modules/vore/eating/bellymodes_vr.dm | 12 +-- .../code/modules/vore/eating/living_vr.dm | 2 +- .../code/modules/vore/eating/vorepanel_vr.dm | 8 +- modular_citadel/sound/misc/cheekibreeki.ogg | Bin 0 -> 46056 bytes modular_citadel/sound/misc/cyka1.ogg | Bin 0 -> 27520 bytes tgstation.dme | 1 + 18 files changed, 244 insertions(+), 63 deletions(-) create mode 100644 modular_citadel/code/modules/mob/living/carbon/reindex_screams.dm create mode 100644 modular_citadel/sound/misc/cheekibreeki.ogg create mode 100644 modular_citadel/sound/misc/cyka1.ogg diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 261e7c7586..870816975b 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -123,3 +123,10 @@ #define MIN_MELEE_STAMCOST 1.25 //Minimum cost for swinging items around. Will be extra useful when stats and skills are introduced. #define CRAWLUNDER_DELAY 30 //Delay for crawling under a standing mob + +//Citadel toggles because bitflag memes +#define MEDIHOUND_SLEEPER 1 +#define EATING_NOISES 2 +#define DIGESTION_NOISES 4 + +#define TOGGLES_CITADEL (MEDIHOUND_SLEEPER|EATING_NOISES|DIGESTION_NOISES) \ No newline at end of file diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index b4a9f41213..2ed8c86eec 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -14,10 +14,8 @@ #define SOUND_ANNOUNCEMENTS 2048 #define DISABLE_DEATHRATTLE 4096 #define DISABLE_ARRIVALRATTLE 8192 -#define MEDIHOUND_SLEEPER 16384 //CITADEL EDITS, vore prefs. -#define EATING_NOISES 32768 -#define DIGESTION_NOISES 65536 -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|MEDIHOUND_SLEEPER|EATING_NOISES|DIGESTION_NOISES) + +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) //Chat toggles #define CHAT_OOC 1 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index cddf64b6db..86413bbb6b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -156,11 +156,16 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/ShowChoices(mob/user) if(!user || !user.client) return - update_preview_icon() + if(current_tab == 2) //CITADEL EDIT, for muh nudies + update_preview_icon(nude=TRUE) + else + update_preview_icon(nude=FALSE) //EDIT END user << browse_rsc(preview_icon, "previewicon.png") var/dat = "