diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 3565bc3d51a0..da3dccd7f3d3 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -33,6 +33,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_fluff, GLOB.moth_fluff_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/squid_face, GLOB.squid_face_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_hair, GLOB.ipc_hair_list) // [CELADON-ADD] - CELADON_IPC_HAIR init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_tail, GLOB.ipc_tail_list) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index fc326cf72420..b56149947e3d 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -68,6 +68,10 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) if(!GLOB.squid_face_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/squid_face, GLOB.squid_face_list) + // [CELADON-ADD] - CELADON_IPC_HAIR + if(!GLOB.ipc_hair_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_hair, GLOB.ipc_hair_list) + // [/CELADON-ADD] - CELADON_IPC_HAIR if(!GLOB.ipc_screens_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) if(!GLOB.ipc_antennas_list.len) @@ -155,6 +159,7 @@ "ipc_brain" = pick(GLOB.ipc_brain_list), "ipc_chassis" = pick(GLOB.ipc_chassis_list), "ipc_screen" = pick(GLOB.ipc_screens_list), + "ipc_hair" = pick(GLOB.ipc_hair_list), // [CELADON-ADD] - CELADON_IPC_HAIR "kepori_body_feathers" = pick(GLOB.kepori_body_feathers_list), "kepori_head_feathers" = pick(GLOB.kepori_head_feathers_list), "kepori_feathers" = pick(GLOB.kepori_feathers_list), diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index f9edbc500142..1a5cecef67a9 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -37,6 +37,7 @@ GLOBAL_LIST_EMPTY(moth_wings_list) GLOBAL_LIST_EMPTY(moth_fluff_list) GLOBAL_LIST_EMPTY(moth_markings_list) GLOBAL_LIST_EMPTY(squid_face_list) +GLOBAL_LIST_EMPTY(ipc_hair_list) // [CELADON-ADD] - CELADON_IPC_HAIR GLOBAL_LIST_EMPTY(ipc_screens_list) GLOBAL_LIST_EMPTY(ipc_antennas_list) GLOBAL_LIST_EMPTY(ipc_tail_list) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e83a47824490..6fb094628cfb 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -128,6 +128,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "spider_spinneret" = "Plain", "spider_mandibles" = "Plain", "squid_face" = "Squidward", + "ipc_hair" = "None", // [CELADON-ADD] - CELADON_IPC_HAIR "ipc_screen" = "Blue", "ipc_antenna" = "None", "ipc_tail" = "None", @@ -666,6 +667,23 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 + // [CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_hair" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + + dat += "

IPC hair Style

" + + dat += "[features["ipc_hair"]]
" + + dat += "    Change
" + + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 + // [/CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_screen" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -689,7 +707,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["ipc_antenna"]]
" - dat += "    Change
" + dat += "    Change
" // [CELADON-EDIT] - CELADON_IPC_HAIR mutant_category++ if(mutant_category >= MAX_MUTANT_ROWS) @@ -2273,6 +2291,16 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_spider_spinneret) features["spider_spinneret"] = new_spider_spinneret + // [CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_hair") + var/new_ipc_hair + + new_ipc_hair = input(user, "Choose your character's IPC hair:", "Character Preference") as null|anything in GLOB.ipc_hair_list + + if(new_ipc_hair) + features["ipc_hair"] = new_ipc_hair + // [/CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_screen") var/new_ipc_screen diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 49d1db666fa0..be1c4edf4721 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -437,6 +437,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car READ_FILE(S["feature_spider_spinneret"], features["spider_spinneret"]) READ_FILE(S["feature_spider_mandibles"], features["spider_mandibles"]) READ_FILE(S["feature_squid_face"], features["squid_face"]) + READ_FILE(S["feature_ipc_hair"], features["ipc_hair"]) // [CELADON-ADD] - CELADON_IPC_HAIR READ_FILE(S["feature_ipc_screen"], features["ipc_screen"]) READ_FILE(S["feature_ipc_antenna"], features["ipc_antenna"]) READ_FILE(S["feature_ipc_tail"], features["ipc_tail"]) @@ -620,6 +621,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") features["moth_markings"] = sanitize_inlist(features["moth_markings"], GLOB.moth_markings_list, "None") features["squid_face"] = sanitize_inlist(features["squid_face"], GLOB.squid_face_list, "Squidward") + features["ipc_hair"] = sanitize_inlist(features["ipc_hair"], GLOB.ipc_hair_list) // [CELADON-ADD] - CELADON_IPC_HAIR features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list) features["ipc_antenna"] = sanitize_inlist(features["ipc_antenna"], GLOB.ipc_antennas_list) features["ipc_tail"] = sanitize_inlist(features["ipc_tail"], GLOB.ipc_tail_list) @@ -738,6 +740,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_spider_spinneret"] , features["spider_spinneret"]) WRITE_FILE(S["feature_spider_mandibles"] , features["spider_mandibles"]) WRITE_FILE(S["feature_squid_face"] , features["squid_face"]) + WRITE_FILE(S["feature_ipc_hair"] , features["ipc_hair"]) // [CELADON-ADD] - CELADON_IPC_HAIR WRITE_FILE(S["feature_ipc_screen"] , features["ipc_screen"]) WRITE_FILE(S["feature_ipc_antenna"] , features["ipc_antenna"]) WRITE_FILE(S["feature_ipc_tail"] , features["ipc_tail"]) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm b/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm index 1592a3ef6682..e1441fc11e4e 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm @@ -181,7 +181,7 @@ /datum/sprite_accessory/ipc_antennas icon = 'icons/mob/ipc_accessories.dmi' - color_src = HAIR + color_src = FACEHAIR // [CELADON-EDIT] - CELADON_IPC_HAIR /datum/sprite_accessory/ipc_antennas/none name = "None" diff --git a/code/modules/mob/living/carbon/human/consistent_human.dm b/code/modules/mob/living/carbon/human/consistent_human.dm index 2e0881773b21..248c5759e6fa 100644 --- a/code/modules/mob/living/carbon/human/consistent_human.dm +++ b/code/modules/mob/living/carbon/human/consistent_human.dm @@ -38,6 +38,7 @@ dna.features["tail_elzu"] = GLOB.tails_list_elzu[hex2num(copytext(seed, 17, 18)) % length(GLOB.tails_list_elzu) + 1] dna.features["ipc_chassis"] = GLOB.ipc_chassis_list[hex2num(copytext(seed, 18, 19)) % length(GLOB.ipc_chassis_list) + 1] dna.features["ipc_screen"] = GLOB.ipc_screens_list[hex2num(copytext(seed, 19, 20)) % length(GLOB.ipc_screens_list) + 1] + dna.features["ipc_hair"] = GLOB.ipc_hair_list[hex2num(copytext(seed, 20, 21)) % length(GLOB.ipc_hair_list) + 1] // [CELADON-ADD] - CELADON_IPC_HAIR // [CELADON-ADD] - TAJARA skin_tone_nose = GLOB.skin_tones_nose[hex2num(copytext(seed, 1, 2)) % length(GLOB.skin_tones_nose)] diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index c6fb4d2fa5ec..c68451d6f1e1 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -854,6 +854,12 @@ GLOBAL_LIST_EMPTY(roundstart_races) bodyparts_to_add -= "ears" bodyparts_to_add -= "ears" + // [CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_hair" in mutant_bodyparts) + if(!H.dna.features["ipc_hair"] || H.dna.features["ipc_hair"] == "None" || (H.head && (H.head.flags_inv & HIDEHAIR)) || !HD) + bodyparts_to_add -= "ipc_hair" + // [/CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_screen" in mutant_bodyparts) if(!H.dna.features["ipc_screen"] || H.dna.features["ipc_screen"] == "None" || (H.wear_mask && (H.wear_mask.flags_inv & HIDEEYES)) || !HD) bodyparts_to_add -= "ipc_screen" @@ -1049,6 +1055,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.moth_markings_list[H.dna.features["moth_markings"]] if("squid_face") S = GLOB.squid_face_list[H.dna.features["squid_face"]] + // [CELADON-ADD] - CELADON_IPC_HAIR + if("ipc_hair") + S = GLOB.ipc_hair_list[H.dna.features["ipc_hair"]] + // [/CELADON-ADD] - CELADON_IPC_HAIR if("ipc_screen") S = GLOB.ipc_screens_list[H.dna.features["ipc_screen"]] if("ipc_antenna") diff --git a/code/modules/mob/living/carbon/human/species_types/IPC.dm b/code/modules/mob/living/carbon/human/species_types/IPC.dm index acff82c13369..dcea79caa971 100644 --- a/code/modules/mob/living/carbon/human/species_types/IPC.dm +++ b/code/modules/mob/living/carbon/human/species_types/IPC.dm @@ -20,8 +20,8 @@ mutantlungs = null //no more collecting change for you mutantappendix = null mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord) - mutant_bodyparts = list("ipc_screen", "ipc_antenna", "ipc_chassis", "ipc_tail", "ipc_brain") - default_features = list("mcolor" = "#7D7D7D", "ipc_screen" = "Static", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics (Custom)", "ipc_tail" = "None", "ipc_brain" = "Posibrain", "body_size" = "Normal") + mutant_bodyparts = list("ipc_hair", "ipc_screen", "ipc_antenna", "ipc_chassis", "ipc_tail", "ipc_brain") // [CELADON-ADD] - CELADON_IPC_HAIR + default_features = list("mcolor" = "#7D7D7D", "ipc_hair" = "None", "ipc_screen" = "Static", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics (Custom)", "ipc_tail" = "None", "ipc_brain" = "Posibrain", "body_size" = "Normal") // [CELADON-ADD] - CELADON_IPC_HAIR meat = /obj/item/stack/sheet/plasteel{amount = 5} skinned_type = /obj/item/stack/sheet/metal{amount = 10} exotic_bloodtype = "Coolant" diff --git a/mod_celadon/_storge_icons/icons/ipc/ipc_hair.dmi b/mod_celadon/_storge_icons/icons/ipc/ipc_hair.dmi new file mode 100644 index 000000000000..9683cacc4a38 Binary files /dev/null and b/mod_celadon/_storge_icons/icons/ipc/ipc_hair.dmi differ diff --git a/mod_celadon/ipc_chassis/code/ipc.dm b/mod_celadon/ipc_chassis/code/ipc.dm index eff6f084e76e..1fc064d2836e 100644 --- a/mod_celadon/ipc_chassis/code/ipc.dm +++ b/mod_celadon/ipc_chassis/code/ipc.dm @@ -109,3 +109,46 @@ /datum/sprite_accessory/ipc_chassis/zion_spirit name = "Zion AC - spirit" limbs_id = "zen_sp" + +/* + IPC hair +*/ + +/datum/sprite_accessory/ipc_hair + icon = 'mod_celadon/_storge_icons/icons/ipc/ipc_hair.dmi' + color_src = HAIR + +/datum/sprite_accessory/ipc_hair/none + name = "None" + icon_state = null + +/datum/sprite_accessory/ipc_hair/buisness + name = "Buisness" + icon_state = "buisness" + +/datum/sprite_accessory/ipc_hair/sideswipe + name = "Sideswipe" + icon_state = "sideswipe" + +/datum/sprite_accessory/ipc_hair/spiky + name = "Spiky" + icon_state = "spiky" + +/datum/sprite_accessory/ipc_hair/longfringe + name = "Long Fringe" + icon_state = "longfringe" + +/datum/sprite_accessory/ipc_hair/emo + name = "Emo" + icon_state = "emo" +/datum/sprite_accessory/ipc_hair/pigtails + name = "Pigtails" + icon_state = "pigtails" + +/datum/sprite_accessory/ipc_hair/sidetail + name = "Sidetail" + icon_state = "sidetail" + +/datum/sprite_accessory/ipc_hair/slightlymessy + name = "Slightly messy" + icon_state = "slightlymessy" diff --git a/mod_celadon/ipc_hair/README.md b/mod_celadon/ipc_hair/README.md new file mode 100644 index 000000000000..e53614c4e4ad --- /dev/null +++ b/mod_celadon/ipc_hair/README.md @@ -0,0 +1,97 @@ + +#### Список PRов + +- https://github.com/CeladonSS13/Shiptest/pulls/##### + + + +## IPC hair + +ID мода: CELADON_IPC_HAIR + + +### Описание мода + +Добавляет волосы для СПУ + + +### Используется в других проектах? +- Нет + + +### Изменения *кор кода* + +- Отсутствуют + + +### Оверрайды + +- Отсутствуют + + +### Дефайны + +- Отсутствуют + + +### Используемые файлы, не содержащиеся в модпаке + +- Отсутствуют + + +### Авторы + +Feenie + diff --git a/mod_celadon/ipc_hair/_ipc_hair.dm b/mod_celadon/ipc_hair/_ipc_hair.dm new file mode 100644 index 000000000000..4fc518984c36 --- /dev/null +++ b/mod_celadon/ipc_hair/_ipc_hair.dm @@ -0,0 +1,8 @@ +/// name - название модпака. Используется для поиска других модпаков в init. +/// desc - описание для модпака. Может использоваться для списка глаголов модпака в качестве описания. +/// author - автор(ы) этого модпака. + +/datum/modpack/ipc_hair + name = "IPC hair" + desc = "Additional sprite accessory" + author = "Feenie" diff --git a/mod_celadon/ipc_hair/_ipc_hair.dme b/mod_celadon/ipc_hair/_ipc_hair.dme new file mode 100644 index 000000000000..0e6556503cc8 --- /dev/null +++ b/mod_celadon/ipc_hair/_ipc_hair.dme @@ -0,0 +1,6 @@ +#ifndef MODPACK_CELADON_IPC_HAIR +#define MODPACK_CELADON_IPC_HAIR + +#include "_ipc_hair.dm" + +#endif