mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
## About The Pull Request This add frontier equipment that is found in the frontier organic printer. The PR has been tested and functional codewise. ## Why It's Good For The Game Created because of a bounty on Discord by user mrgloopy. This add no advantage variant of the frontier clothing pieces such as jacket, gloves, mask and hat. The original pieces are still kept if the player(s) require armoured variant. These variants are solely for drip purpose. Of which the user has stated in their bounty. This sentiment is shared among other players. After all... Drip is good. ## Proof Of Testing <img width="375" height="555" alt="image" src="https://github.com/user-attachments/assets/2e48d1d5-577f-465f-af7b-7462af2c6376" /> <img width="299" height="575" alt="image" src="https://github.com/user-attachments/assets/bf015a07-ec9d-4555-884b-5e199f0535f2" /> <img width="180" height="156" alt="image" src="https://github.com/user-attachments/assets/25e1be7c-f6f7-4574-ab95-9a9d0e62b090" /> <img width="218" height="300" alt="image" src="https://github.com/user-attachments/assets/63d74ddf-ba82-4989-bb13-536f09d2aec2" /> <img width="598" height="230" alt="image" src="https://github.com/user-attachments/assets/1085230c-fe46-46b7-8a75-d2115cca6e2c" /> <img width="603" height="190" alt="image" src="https://github.com/user-attachments/assets/6bb3616d-c610-4af1-9d63-ec173998e080" /> <img width="1100" height="837" alt="image" src="https://github.com/user-attachments/assets/08580f6d-d34f-4669-89a9-b4945998fa66" /> ## Changelog 🆑 add: frontier caps. add: frontier jacket. add: frontier gas mask. add: frontier jackboots. add: frontier jumpsuit. add: frontier bags. add: frontier gloves. code: added new define for frontier bags in character creation menu. code: added icon define for frontier bags. code: added frontier bags to spawn roundstart from character creation. 🆑
227 lines
8.7 KiB
Plaintext
227 lines
8.7 KiB
Plaintext
/proc/generate_underwear_icon(datum/sprite_accessory/accessory, datum/universal_icon/base_icon, color, icon_offset = 0) //SKYRAT EDIT CHANGE : adds icon_offset - Colorable Undershirt/Socks
|
|
var/datum/universal_icon/final_icon = base_icon.copy()
|
|
|
|
if (!isnull(accessory))
|
|
var/datum/universal_icon/accessory_icon = uni_icon(accessory.icon, accessory.icon_state) // SKYRAT EDIT CHANGE: ORIGINAL - var/icon/accessory_icon = uni_icon('icons/mob/clothing/underwear.dmi', accessory.icon_state)
|
|
if (color && !accessory.use_static)
|
|
accessory_icon.blend_color(color, ICON_MULTIPLY)
|
|
final_icon.blend_icon(accessory_icon, ICON_OVERLAY)
|
|
|
|
final_icon.crop(10, 1+icon_offset, 22, 13+icon_offset) //SKYRAT EDIT CHANGE : adds icon_offset - Colorable Undershirt/Socks
|
|
final_icon.scale(32, 32)
|
|
|
|
return final_icon
|
|
|
|
/// Backpack preference
|
|
/datum/preference/choiced/backpack
|
|
savefile_key = "backpack"
|
|
savefile_identifier = PREFERENCE_CHARACTER
|
|
main_feature_name = "Backpack"
|
|
category = PREFERENCE_CATEGORY_CLOTHING
|
|
should_generate_icons = TRUE
|
|
|
|
/datum/preference/choiced/backpack/init_possible_values()
|
|
return list(
|
|
GBACKPACK,
|
|
GSATCHEL,
|
|
LSATCHEL,
|
|
GDUFFELBAG,
|
|
GMESSENGER,
|
|
DBACKPACK,
|
|
DSATCHEL,
|
|
DDUFFELBAG,
|
|
DMESSENGER,
|
|
FBACKPACK,
|
|
FSATCHEL,
|
|
FMESSENGER,
|
|
)
|
|
|
|
/datum/preference/choiced/backpack/create_default_value()
|
|
return DBACKPACK
|
|
|
|
/datum/preference/choiced/backpack/icon_for(value)
|
|
switch (value)
|
|
if (GBACKPACK)
|
|
return /obj/item/storage/backpack
|
|
if (GSATCHEL)
|
|
return /obj/item/storage/backpack/satchel
|
|
if (LSATCHEL)
|
|
return /obj/item/storage/backpack/satchel/leather
|
|
if (GDUFFELBAG)
|
|
return /obj/item/storage/backpack/duffelbag
|
|
if (GMESSENGER)
|
|
return /obj/item/storage/backpack/messenger
|
|
if (FBACKPACK)
|
|
return /obj/item/storage/backpack/industrial/frontier_colonist
|
|
if (FSATCHEL)
|
|
return /obj/item/storage/backpack/industrial/frontier_colonist/satchel
|
|
if (FMESSENGER)
|
|
return /obj/item/storage/backpack/industrial/frontier_colonist/messenger
|
|
|
|
// In a perfect world, these would be your department's backpack.
|
|
// However, this doesn't factor in assistants, or no high slot, and would
|
|
// also increase the spritesheet size a lot.
|
|
// I play medical doctor, and so medical doctor you get.
|
|
if (DBACKPACK)
|
|
return /obj/item/storage/backpack/medic
|
|
if (DSATCHEL)
|
|
return /obj/item/storage/backpack/satchel/med
|
|
if (DDUFFELBAG)
|
|
return /obj/item/storage/backpack/duffelbag/med
|
|
if (DMESSENGER)
|
|
return /obj/item/storage/backpack/messenger/med
|
|
|
|
/datum/preference/choiced/backpack/apply_to_human(mob/living/carbon/human/target, value)
|
|
target.backpack = value
|
|
|
|
/// Jumpsuit preference
|
|
/datum/preference/choiced/jumpsuit
|
|
savefile_key = "jumpsuit_style"
|
|
savefile_identifier = PREFERENCE_CHARACTER
|
|
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
|
main_feature_name = "Jumpsuit"
|
|
category = PREFERENCE_CATEGORY_CLOTHING
|
|
should_generate_icons = TRUE
|
|
|
|
/datum/preference/choiced/jumpsuit/init_possible_values()
|
|
return list(
|
|
PREF_SUIT,
|
|
PREF_SKIRT,
|
|
)
|
|
|
|
/datum/preference/choiced/jumpsuit/create_default_value()
|
|
return PREF_SUIT
|
|
|
|
/datum/preference/choiced/jumpsuit/icon_for(value)
|
|
switch (value)
|
|
if (PREF_SUIT)
|
|
return /obj/item/clothing/under/color/grey
|
|
if (PREF_SKIRT)
|
|
return /obj/item/clothing/under/color/jumpskirt/grey
|
|
|
|
/datum/preference/choiced/jumpsuit/apply_to_human(mob/living/carbon/human/target, value)
|
|
target.jumpsuit_style = value
|
|
|
|
/// Socks preference
|
|
/datum/preference/choiced/socks
|
|
savefile_key = "socks"
|
|
savefile_identifier = PREFERENCE_CHARACTER
|
|
main_feature_name = "Socks"
|
|
category = PREFERENCE_CATEGORY_CLOTHING
|
|
should_generate_icons = TRUE
|
|
can_randomize = FALSE
|
|
|
|
/datum/preference/choiced/socks/init_possible_values()
|
|
return assoc_to_keys_features(SSaccessories.socks_list)
|
|
|
|
/datum/preference/choiced/socks/create_default_value()
|
|
return /datum/sprite_accessory/socks/nude::name
|
|
|
|
/datum/preference/choiced/socks/icon_for(value)
|
|
var/static/datum/universal_icon/lower_half
|
|
|
|
if (isnull(lower_half))
|
|
lower_half = uni_icon('icons/blanks/32x32.dmi', "nothing")
|
|
lower_half.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_leg"), ICON_OVERLAY)
|
|
lower_half.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_leg"), ICON_OVERLAY)
|
|
|
|
return generate_underwear_icon(SSaccessories.socks_list[value], lower_half)
|
|
|
|
/datum/preference/choiced/socks/apply_to_human(mob/living/carbon/human/target, value)
|
|
target.socks = value
|
|
|
|
/// Undershirt preference
|
|
/datum/preference/choiced/undershirt
|
|
savefile_key = "undershirt"
|
|
savefile_identifier = PREFERENCE_CHARACTER
|
|
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
|
main_feature_name = "Undershirt"
|
|
category = PREFERENCE_CATEGORY_CLOTHING
|
|
should_generate_icons = TRUE
|
|
can_randomize = FALSE
|
|
|
|
/datum/preference/choiced/undershirt/init_possible_values()
|
|
return assoc_to_keys_features(SSaccessories.undershirt_list)
|
|
|
|
/datum/preference/choiced/undershirt/create_default_value()
|
|
return /datum/sprite_accessory/undershirt/nude::name
|
|
|
|
/* // SKYRAT EDIT REMOVAL - sports bra doesn't exist as an undershirt. so just let this default to naked and we'll add underwear elsewhere
|
|
/datum/preference/choiced/undershirt/create_informed_default_value(datum/preferences/preferences)
|
|
switch(preferences.read_preference(/datum/preference/choiced/gender))
|
|
if(MALE)
|
|
return /datum/sprite_accessory/undershirt/nude::name
|
|
if(FEMALE)
|
|
return /datum/sprite_accessory/undershirt/sports_bra::name
|
|
|
|
return ..()
|
|
*/ // SKYRAT EDIT REMOVAL END
|
|
|
|
/datum/preference/choiced/undershirt/icon_for(value)
|
|
var/static/datum/universal_icon/body
|
|
if (isnull(body))
|
|
body = uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_leg")
|
|
body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_leg"), ICON_OVERLAY)
|
|
body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_arm"), ICON_OVERLAY)
|
|
body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_arm"), ICON_OVERLAY)
|
|
body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_hand"), ICON_OVERLAY)
|
|
body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_hand"), ICON_OVERLAY)
|
|
body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_chest_m"), ICON_OVERLAY)
|
|
|
|
var/datum/universal_icon/icon_with_undershirt = body.copy()
|
|
|
|
if (value != "Nude")
|
|
var/datum/sprite_accessory/accessory = SSaccessories.undershirt_list[value]
|
|
icon_with_undershirt.blend_icon(uni_icon(accessory.icon, accessory.icon_state), ICON_OVERLAY)// SKYRAT EDIT CHANGE: ORIGINAL - icon_with_undershirt.blend_icon(uni_icon('icons/mob/clothing/underwear.dmi', accessory.icon_state), ICON_OVERLAY)
|
|
|
|
icon_with_undershirt.crop(10, 11, 22, 23) // SKYRAT EDIT CHANGE : ORIGINAL - icon_with_undershirt.crop(9, 9, 23, 23)
|
|
icon_with_undershirt.scale(32, 32)
|
|
return icon_with_undershirt
|
|
|
|
/datum/preference/choiced/undershirt/apply_to_human(mob/living/carbon/human/target, value)
|
|
target.undershirt = value
|
|
|
|
/// Underwear preference
|
|
/datum/preference/choiced/underwear
|
|
savefile_key = "underwear"
|
|
savefile_identifier = PREFERENCE_CHARACTER
|
|
main_feature_name = "Underwear"
|
|
category = PREFERENCE_CATEGORY_CLOTHING
|
|
should_generate_icons = TRUE
|
|
can_randomize = FALSE
|
|
|
|
/datum/preference/choiced/underwear/init_possible_values()
|
|
return assoc_to_keys_features(SSaccessories.underwear_list)
|
|
|
|
/datum/preference/choiced/underwear/create_default_value()
|
|
return /datum/sprite_accessory/underwear/male_hearts::name
|
|
|
|
/datum/preference/choiced/underwear/icon_for(value)
|
|
var/static/datum/universal_icon/lower_half
|
|
|
|
if (isnull(lower_half))
|
|
lower_half = uni_icon('icons/blanks/32x32.dmi', "nothing")
|
|
lower_half.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_chest_m"), ICON_OVERLAY)
|
|
lower_half.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_leg"), ICON_OVERLAY)
|
|
lower_half.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_leg"), ICON_OVERLAY)
|
|
|
|
return generate_underwear_icon(SSaccessories.underwear_list[value], lower_half, COLOR_ALMOST_BLACK, icon_offset = 5) // SKYRAT EDIT CHANGE : ICON_OFFSET // SKYRAT EDIT CHANGE - ORIGINAL: return generate_underwear_icon(SSaccessories.underwear_list[value], lower_half, COLOR_ALMOST_BLACK)
|
|
|
|
/datum/preference/choiced/underwear/apply_to_human(mob/living/carbon/human/target, value)
|
|
target.underwear = value
|
|
|
|
/datum/preference/choiced/underwear/is_accessible(datum/preferences/preferences)
|
|
if (!..(preferences))
|
|
return FALSE
|
|
|
|
var/species_type = preferences.read_preference(/datum/preference/choiced/species)
|
|
var/datum/species/species = GLOB.species_prototypes[species_type]
|
|
return !(TRAIT_NO_UNDERWEAR in species.inherent_traits)
|
|
|
|
/datum/preference/choiced/underwear/compile_constant_data()
|
|
var/list/data = ..()
|
|
|
|
data[SUPPLEMENTAL_FEATURE_KEY] = "underwear_color"
|
|
|
|
return data
|