[MIRROR] Add station trait for varying colored assistant jumpsuits [MDB IGNORE] (#9646)

* Add station trait for varying colored assistant jumpsuits

* Feex

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
This commit is contained in:
SkyratBot
2021-11-23 16:25:32 +00:00
committed by GitHub
parent 6f7585f53b
commit 698d06dad7
3 changed files with 173 additions and 16 deletions
@@ -114,3 +114,16 @@
/datum/station_trait/announcement_medbot/New()
. = ..()
SSstation.announcer = /datum/centcom_announcer/medbot
/datum/station_trait/colored_assistants
name = "Colored Assistants"
trait_type = STATION_TRAIT_NEUTRAL
weight = 10
show_in_report = TRUE
report_message = "Due to a shortage in standard issue jumpsuits, we have provided your assistants with one of our backup supplies."
/datum/station_trait/colored_assistants/New()
. = ..()
var/new_colored_assistant_type = pick(subtypesof(/datum/colored_assistant) - get_configured_colored_assistant_type())
GLOB.colored_assistant = new new_colored_assistant_type
+21 -2
View File
@@ -21,12 +21,23 @@
icon_state = "jumpskirt"
greyscale_config_worn_digi = null
/// Returns a random, acceptable jumpsuit typepath
/proc/get_random_jumpsuit()
return pick(
subtypesof(/obj/item/clothing/under/color) \
- typesof(/obj/item/clothing/under/color/jumpskirt) \
- /obj/item/clothing/under/color/random \
- /obj/item/clothing/under/color/grey/ancient \
- /obj/item/clothing/under/color/black/ghost \
- /obj/item/clothing/under/rank/prisoner \
)
/obj/item/clothing/under/color/random
icon_state = "random_jumpsuit"
/obj/item/clothing/under/color/random/Initialize(mapload)
..()
var/obj/item/clothing/under/color/C = pick(subtypesof(/obj/item/clothing/under/color) - typesof(/obj/item/clothing/under/color/jumpskirt) - /obj/item/clothing/under/color/random - /obj/item/clothing/under/color/grey/ancient - /obj/item/clothing/under/color/black/ghost - /obj/item/clothing/under/rank/prisoner)
var/obj/item/clothing/under/color/C = get_random_jumpsuit()
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
H.equip_to_slot_or_del(new C(H), ITEM_SLOT_ICLOTHING, initial=TRUE) //or else you end up with naked assistants running around everywhere...
@@ -34,12 +45,20 @@
new C(loc)
return INITIALIZE_HINT_QDEL
/// Returns a random, acceptable jumpskirt typepath
/proc/get_random_jumpskirt()
return pick(
subtypesof(/obj/item/clothing/under/color/jumpskirt) \
- /obj/item/clothing/under/color/jumpskirt/random \
- /obj/item/clothing/under/rank/prisoner/skirt \
)
/obj/item/clothing/under/color/jumpskirt/random
icon_state = "random_jumpsuit" //Skirt variant needed
/obj/item/clothing/under/color/jumpskirt/random/Initialize(mapload)
..()
var/obj/item/clothing/under/color/jumpskirt/C = pick(subtypesof(/obj/item/clothing/under/color/jumpskirt) - /obj/item/clothing/under/color/jumpskirt/random - /obj/item/clothing/under/rank/prisoner/skirt)
var/obj/item/clothing/under/color/jumpskirt/C = get_random_jumpskirt()
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
H.equip_to_slot_or_del(new C(H), ITEM_SLOT_ICLOTHING, initial=TRUE)
+139 -14
View File
@@ -1,3 +1,5 @@
GLOBAL_DATUM(colored_assistant, /datum/colored_assistant)
/*
Assistant
*/
@@ -39,29 +41,31 @@ Assistant
uniform = /obj/item/clothing/under/color/random
/* SKYRAT EDIT REMOVAL - THIS OVERRIDES CLOTHING LOADOUTS
/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H)
/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/target)
..()
if (CONFIG_GET(flag/grey_assistants))
give_grey_suit(H)
else
if(H.jumpsuit_style == PREF_SUIT)
uniform = /obj/item/clothing/under/color/random
else
uniform = /obj/item/clothing/under/color/jumpskirt/random
give_jumpsuit(target)
/datum/outfit/job/assistant/proc/give_jumpsuit(mob/living/carbon/human/target)
var/static/jumpsuit_number = 0
jumpsuit_number += 1
if (isnull(GLOB.colored_assistant))
var/configured_type = get_configured_colored_assistant_type()
GLOB.colored_assistant = new configured_type
var/index = (jumpsuit_number % GLOB.colored_assistant.jumpsuits.len) + 1
/datum/outfit/job/assistant/proc/give_grey_suit(mob/living/carbon/human/target)
if (target.jumpsuit_style == PREF_SUIT)
uniform = /obj/item/clothing/under/color/grey
uniform = GLOB.colored_assistant.jumpsuits[index]
else
uniform = /obj/item/clothing/under/color/jumpskirt/grey
uniform = GLOB.colored_assistant.jumpskirts[index]
*/
/datum/outfit/job/assistant/consistent
name = "Assistant - Consistent"
/* SKYRAT EDIT REMOVAL
/datum/outfit/job/assistant/consistent/pre_equip(mob/living/carbon/human/H)
..()
give_grey_suit(H)
/datum/outfit/job/assistant/consistent/give_jumpsuit(mob/living/carbon/human/target)
uniform = /obj/item/clothing/under/color/grey
/datum/outfit/job/assistant/consistent/post_equip(mob/living/carbon/human/H, visualsOnly)
..()
@@ -70,3 +74,124 @@ Assistant
if (SSatoms.initialized == INITIALIZATION_INSSATOMS)
H.w_uniform?.update_greyscale()
*/
/proc/get_configured_colored_assistant_type()
return CONFIG_GET(flag/grey_assistants) ? /datum/colored_assistant/grey : /datum/colored_assistant/random
/// Defines a style of jumpsuit/jumpskirt for assistants.
/// Jumpsuit and jumpskirt lists should match in colors, as they are used interchangably.
/datum/colored_assistant
var/list/jumpsuits
var/list/jumpskirts
/datum/colored_assistant/grey
jumpsuits = list(/obj/item/clothing/under/color/grey)
jumpskirts = list(/obj/item/clothing/under/color/jumpskirt/grey)
/datum/colored_assistant/random
jumpsuits = list(/obj/item/clothing/under/color/random)
jumpskirts = list(/obj/item/clothing/under/color/jumpskirt/random)
/datum/colored_assistant/christmas
jumpsuits = list(
/obj/item/clothing/under/color/green,
/obj/item/clothing/under/color/red,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/green,
/obj/item/clothing/under/color/jumpskirt/red,
)
/datum/colored_assistant/mcdonalds
jumpsuits = list(
/obj/item/clothing/under/color/yellow,
/obj/item/clothing/under/color/red,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/yellow,
/obj/item/clothing/under/color/jumpskirt/red,
)
/datum/colored_assistant/halloween
jumpsuits = list(
/obj/item/clothing/under/color/orange,
/obj/item/clothing/under/color/black,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/orange,
/obj/item/clothing/under/color/jumpskirt/black,
)
/datum/colored_assistant/ikea
jumpsuits = list(
/obj/item/clothing/under/color/yellow,
/obj/item/clothing/under/color/blue,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/yellow,
/obj/item/clothing/under/color/jumpskirt/blue,
)
/datum/colored_assistant/mud
jumpsuits = list(
/obj/item/clothing/under/color/brown,
/obj/item/clothing/under/color/lightbrown,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/brown,
/obj/item/clothing/under/color/jumpskirt/lightbrown,
)
/datum/colored_assistant/warm
jumpsuits = list(
/obj/item/clothing/under/color/red,
/obj/item/clothing/under/color/pink,
/obj/item/clothing/under/color/orange,
/obj/item/clothing/under/color/yellow,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/red,
/obj/item/clothing/under/color/jumpskirt/pink,
/obj/item/clothing/under/color/jumpskirt/orange,
/obj/item/clothing/under/color/jumpskirt/yellow,
)
/datum/colored_assistant/cold
jumpsuits = list(
/obj/item/clothing/under/color/blue,
/obj/item/clothing/under/color/darkblue,
/obj/item/clothing/under/color/darkgreen,
/obj/item/clothing/under/color/green,
/obj/item/clothing/under/color/lightpurple,
/obj/item/clothing/under/color/teal,
)
jumpskirts = list(
/obj/item/clothing/under/color/jumpskirt/blue,
/obj/item/clothing/under/color/jumpskirt/darkblue,
/obj/item/clothing/under/color/jumpskirt/darkgreen,
/obj/item/clothing/under/color/jumpskirt/green,
/obj/item/clothing/under/color/jumpskirt/lightpurple,
/obj/item/clothing/under/color/jumpskirt/teal,
)
/// Will pick one color, and stick with it
/datum/colored_assistant/solid
/datum/colored_assistant/solid/New()
var/obj/item/clothing/under/color/random_jumpsuit_type = get_random_jumpsuit()
jumpsuits = list(random_jumpsuit_type)
for (var/obj/item/clothing/under/color/jumpskirt/jumpskirt_type as anything in subtypesof(/obj/item/clothing/under/color/jumpskirt))
if (initial(jumpskirt_type.greyscale_colors) == initial(random_jumpsuit_type.greyscale_colors))
jumpskirts = list(jumpskirt_type)
return
// Couldn't find a matching jumpskirt, oh well
jumpskirts = list(get_random_jumpskirt())