Skip to content

Commit

Permalink
IPC hair
Browse files Browse the repository at this point in the history
  • Loading branch information
FeenieRU committed Oct 19, 2024
1 parent 305c63f commit fb8413f
Show file tree
Hide file tree
Showing 14 changed files with 207 additions and 4 deletions.
1 change: 1 addition & 0 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 5 additions & 0 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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),
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
30 changes: 29 additions & 1 deletion code/modules/client/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -666,6 +667,23 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "</td>"
mutant_category = 0

// [CELADON-ADD] - CELADON_IPC_HAIR
if("ipc_hair" in pref_species.default_features)
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN

dat += "<h3>IPC hair Style</h3>"

dat += "<a href='?_src_=prefs;preference=ipc_hair;task=input'>[features["ipc_hair"]]</a><BR>"

dat += "<span style='border: 1px solid #161616; background-color: #[hair_color];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=hair;task=input'>Change</a><BR>"

mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
dat += "</td>"
mutant_category = 0
// [/CELADON-ADD] - CELADON_IPC_HAIR

if("ipc_screen" in pref_species.default_features)
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
Expand All @@ -689,7 +707,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)

dat += "<a href='?_src_=prefs;preference=ipc_antenna;task=input'>[features["ipc_antenna"]]</a><BR>"

dat += "<span style='border:1px solid #161616; background-color: #[hair_color];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=hair;task=input'>Change</a><BR>"
dat += "<span style='border:1px solid #161616; background-color: #[facial_hair_color];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=facial;task=input'>Change</a><BR>" // [CELADON-EDIT] - CELADON_IPC_HAIR

mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
Expand Down Expand Up @@ -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

Expand Down
3 changes: 3 additions & 0 deletions code/modules/client/preferences_savefile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"])
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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"])
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/dead/new_player/sprite_accessories/ipc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/carbon/human/consistent_human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down
10 changes: 10 additions & 0 deletions code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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")
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/carbon/human/species_types/IPC.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Binary file added mod_celadon/_storge_icons/icons/ipc/ipc_hair.dmi
Binary file not shown.
43 changes: 43 additions & 0 deletions mod_celadon/ipc_chassis/code/ipc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
97 changes: 97 additions & 0 deletions mod_celadon/ipc_hair/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@

#### Список PRов

- https://github.com/CeladonSS13/Shiptest/pulls/#####
<!--
Ссылки на PRы, связанные с модом:
- Создание
- Большие изменения
-->

<!-- Название мода. Не важно на русском или на английском. -->
## IPC hair

ID мода: CELADON_IPC_HAIR
<!--
Название модпака прописными буквами, СОЕДИНЁННЫМИ_ПОДЧЁРКИВАНИЕМ,
которое ты будешь использовать для обозначения файлов.
При запуске скрипта выставляется автоматически.
Приставка CELADON гарантирует уникальность
модпака. Этот ID будет использоваться для обозначения
изменений в кор коде, если того потребуется.
-->

### Описание мода

Добавляет волосы для СПУ
<!--
Что он делает, что добавляет: что, куда, зачем и почему - всё здесь.
А также любая полезная информация.
-->

### Используется в других проектах?
- Нет
<!--
ВНИМАНИЕ!
Заполняется другими авторами, кто использует этот модпак или
его часть в других модпаках! Для Автора модпака внимательно
отслеживать данный пункт при изменении своего кода!
Пример заполнения: `Используется часть кода для модпака EXAMP_EXAM`
-->

### Изменения *кор кода*

- Отсутствуют
<!--
Если вы редактировали какие-либо процедуры или переменные в кор коде,
они должны быть указаны здесь.
Нужно указать и файл, и процедуры/переменные.
Изменений нет - напиши "Отсутствуют"
Примеры: `code/modules/mob/living.dm`: `proc/overriden_proc`, `var/overriden_var`
-->

### Оверрайды

- Отсутствуют
<!--
Если ты добавлял новый модульный оверрайд, его нужно указать здесь.
Здесь указываются оверрайды в твоём моде и папке `_master_files`
Изменений нет - напиши "Отсутствуют"
Примеры:
- `mods/_master_files/sound/my_cool_sound.ogg`
- `mods/_master_files/code/my_modular_override.dm`: `proc/overriden_proc`, `var/overriden_var`
-->

### Дефайны

- Отсутствуют
<!--
Если требовалось добавить какие-либо дефайны, укажи файлы,
в которые ты их добавил, а также перечисли имена.
И то же самое, если ты используешь дефайны, определённые другим модом.
Не используешь - напиши "Отсутствуют"
Примеры: `code/__defines/~mod_celadon/ipc_hair.dm`: `IPC_HAIR_SPEED_MULTIPLIER`, `IPC_HAIR_SPEED_BASE`
-->

### Используемые файлы, не содержащиеся в модпаке

- Отсутствуют
<!--
Будь то немодульный файл или модульный файл, который не содержится в папке,
принадлежащей этому конкретному моду, он должен быть упомянут здесь.
Хорошими примерами являются иконки или звуки, которые используются одновременно
несколькими модулями, или что-либо подобное.
Примеры: `mods/_master_files/icons/obj/alien.dmi`
-->

### Авторы

Feenie
<!--
Здесь находится твой никнейм
Если работал совместно - никнеймы тех, кто помогал.
В случае порта чего-либо должна быть ссылка на источник.
-->
8 changes: 8 additions & 0 deletions mod_celadon/ipc_hair/_ipc_hair.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/// name - название модпака. Используется для поиска других модпаков в init.
/// desc - описание для модпака. Может использоваться для списка глаголов модпака в качестве описания.
/// author - автор(ы) этого модпака.

/datum/modpack/ipc_hair
name = "IPC hair"
desc = "Additional sprite accessory"
author = "Feenie"
6 changes: 6 additions & 0 deletions mod_celadon/ipc_hair/_ipc_hair.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef MODPACK_CELADON_IPC_HAIR
#define MODPACK_CELADON_IPC_HAIR

#include "_ipc_hair.dm"

#endif

0 comments on commit fb8413f

Please sign in to comment.