From 2f3cca3a8346e3f9d72d507253a886bead4ab51f Mon Sep 17 00:00:00 2001 From: NovaBot <154629622+NovaBot13@users.noreply.github.com> Date: Fri, 19 Jan 2024 16:59:57 -0500 Subject: [PATCH] [MIRROR] Geared Assistants Station Trait (#216) * Geared Assistants Station Trait * Fixes diffs, modular adjustments * Update tgstation.dme * Update tgstation.dme * lets see if that fixes the hard deletes from showing up --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com> Co-authored-by: Paxilmaniac --- code/__DEFINES/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/datums/outfit.dm | 2 +- code/datums/station_traits/neutral_traits.dm | 1 + code/datums/station_traits/positive_traits.dm | 10 + code/game/objects/items/storage/fancy.dm | 10 + code/modules/cargo/coupon.dm | 13 +- code/modules/jobs/job_types/_job.dm | 6 +- .../jobs/job_types/assistant/assistant.dm | 96 ++++++++ .../colorful_assistants.dm} | 96 -------- .../job_types/assistant/gimmick_assistants.dm | 210 ++++++++++++++++++ .../jobs/job_types/assistant/assistant.dm | 14 ++ tgstation.dme | 5 +- 13 files changed, 365 insertions(+), 100 deletions(-) create mode 100644 code/modules/jobs/job_types/assistant/assistant.dm rename code/modules/jobs/job_types/{assistant.dm => assistant/colorful_assistants.dm} (54%) create mode 100644 code/modules/jobs/job_types/assistant/gimmick_assistants.dm create mode 100644 modular_nova/master_files/code/modules/jobs/job_types/assistant/assistant.dm diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 3524e3967cc..1bd6245cd00 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -886,6 +886,7 @@ #define TRAIT_BLOB_ALLY "blob_ally" ///Traits given by station traits +#define STATION_TRAIT_ASSISTANT_GIMMICKS "station_trait_assistant_gimmicks" #define STATION_TRAIT_BANANIUM_SHIPMENTS "station_trait_bananium_shipments" #define STATION_TRAIT_BIGGER_PODS "station_trait_bigger_pods" #define STATION_TRAIT_BIRTHDAY "station_trait_birthday" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 91864702a1c..0ed28215828 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -69,6 +69,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( ), // AKA SSstation /datum/controller/subsystem/processing/station = list( + "STATION_TRAIT_ASSISTANT_GIMMICKS" = STATION_TRAIT_ASSISTANT_GIMMICKS, "STATION_TRAIT_BANANIUM_SHIPMENTS" = STATION_TRAIT_BANANIUM_SHIPMENTS, "STATION_TRAIT_BIGGER_PODS" = STATION_TRAIT_BIGGER_PODS, "STATION_TRAIT_BIRTHDAY" = STATION_TRAIT_BIRTHDAY, diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 6289ea13f38..61ac828644a 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -416,7 +416,7 @@ for(var/skillpath in skillchips) preload += skillpath - preload -= typesof(/obj/item/clothing/under/color/random) // NOVA EDIT - Don't preload random jumpsuit spawners that delete themselves + preload -= typesof(/obj/item/clothing/under/color/random, /obj/item/camera) // NOVA EDIT - Don't preload random jumpsuit spawners that delete themselves return preload diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index d3eba73bdc1..96c33259152 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -134,6 +134,7 @@ 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." + blacklist = list(/datum/station_trait/assistant_gimmicks) /datum/station_trait/colored_assistants/New() . = ..() diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index c652c55400a..fb740dbaf0b 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -357,5 +357,15 @@ trim_state = "trim_stationengineer" department_color = COLOR_ASSISTANT_GRAY +/// Spawns assistants with some gear, either gimmicky or functional. Maybe, one day, it will inspire an assistant to do something productive or fun +/datum/station_trait/assistant_gimmicks + name = "Geared Assistants Pilot" + report_message = "The Nanotrassen Assistant Affairs division is performing a pilot to see if different assistant equipments help improve productivity!" + trait_type = STATION_TRAIT_POSITIVE + weight = 3 + trait_to_give = STATION_TRAIT_ASSISTANT_GIMMICKS + show_in_report = TRUE + blacklist = list(/datum/station_trait/colored_assistants) + #undef PARTY_COOLDOWN_LENGTH_MIN #undef PARTY_COOLDOWN_LENGTH_MAX diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 61d96c1ff34..e1c21d1305c 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -155,6 +155,16 @@ . = ..() atom_storage.set_holdable(list(/obj/item/food/egg)) +/* + * Fertile Egg Box + */ + +/obj/item/storage/fancy/egg_box/fertile + name = "fertile egg box" + desc = "Only one thing here is fertile, and it's not the eggs." + spawn_type = /obj/item/food/egg/fertile + spawn_count = 6 + /* * Candle Box */ diff --git a/code/modules/cargo/coupon.dm b/code/modules/cargo/coupon.dm index e56544a1864..f654db44887 100644 --- a/code/modules/cargo/coupon.dm +++ b/code/modules/cargo/coupon.dm @@ -56,6 +56,12 @@ var/discount_pct_off = 0.05 var/obj/machinery/computer/cargo/inserted_console +/obj/item/coupon/Initialize(mapload) + . = ..() + + if(discounted_pack) + update_name() + /// Choose what our prize is :D /obj/item/coupon/proc/generate(discount, datum/supply_pack/discounted_pack) src.discounted_pack = discounted_pack || pick(GLOB.discountable_packs[pick_weight(GLOB.pack_discount_odds)]) @@ -65,11 +71,12 @@ if(discount_pct_off != COUPON_OMEN) if(!discount) // the discount arg should be a number already, while the keys in the chances list cannot be numbers discount_pct_off = text2num(discount_pct_off) - name = "coupon - [round(discount_pct_off * 100)]% off [initial(src.discounted_pack.name)]" + update_name() return name = "coupon - fuck you" desc = "The small text reads, 'You will be slaughtered'... That doesn't sound right, does it?" + if(!ismob(loc)) return FALSE @@ -83,6 +90,10 @@ to_chat(cursed, span_warning("What a horrible night... To have a curse!")) addtimer(CALLBACK(src, PROC_REF(curse_heart), cursed), 5 SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE) +/obj/item/coupon/update_name() + name = "coupon - [round(discount_pct_off * 100)]% off [initial(discounted_pack.name)]" + return ..() + /// Play stupid games, win stupid prizes /obj/item/coupon/proc/curse_heart(mob/living/cursed) if(!iscarbon(cursed)) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 19f592910f2..ad233dd7d4f 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -178,6 +178,10 @@ for(var/i in roundstart_experience) spawned_human.mind.adjust_experience(i, roundstart_experience[i], TRUE) +/// Return the outfit to use +/datum/job/proc/get_outfit() + return outfit + /// Announce that this job as joined the round to all crew members. /// Note the joining mob has no client at this point. /datum/job/proc/announce_job(mob/living/joining_mob, job_title) // NOVA EDIT CHANGE - ALTERNATIVE_JOB_TITLES - Original: /datum/job/proc/announce_job(mob/living/joining_mob) @@ -220,7 +224,7 @@ /mob/living/carbon/human/dress_up_as_job(datum/job/equipping, visual_only = FALSE, datum/preferences/used_pref) //NOVA EDIT CHANGE dna.species.pre_equip_species_outfit(equipping, src, visual_only) - equip_outfit_and_loadout(equipping.outfit, used_pref, visual_only, equipping) //NOVA EDIT CHANGE + equip_outfit_and_loadout(equipping.get_outfit(), used_pref, visual_only, equipping) //NOVA EDIT CHANGE : ORIGINAL equipOutfit(equipping.get_outfit(), visual_only) /// tells the given channel that the given mob is the new department head. See communications.dm for valid channels. /datum/job/proc/announce_head(mob/living/carbon/human/H, channels, job_title) // NOVA EDIT CHANGE - ALTERNATIVE_JOB_TITLES - Original: /datum/job/proc/announce_head(mob/living/carbon/human/H, channels) diff --git a/code/modules/jobs/job_types/assistant/assistant.dm b/code/modules/jobs/job_types/assistant/assistant.dm new file mode 100644 index 00000000000..c97c987cb58 --- /dev/null +++ b/code/modules/jobs/job_types/assistant/assistant.dm @@ -0,0 +1,96 @@ +GLOBAL_DATUM(colored_assistant, /datum/colored_assistant) + +/* +Assistant +*/ +/datum/job/assistant + title = JOB_ASSISTANT + description = "Get your space legs, assist people, ask the HoP to give you a job." + faction = FACTION_STATION + total_positions = 5 + spawn_positions = 5 + supervisors = "absolutely everyone" + exp_granted_type = EXP_TYPE_CREW + outfit = /datum/outfit/job/assistant + plasmaman_outfit = /datum/outfit/plasmaman + paycheck = PAYCHECK_LOWER // Get a job. Job reassignment changes your paycheck now. Get over it. + + paycheck_department = ACCOUNT_CIV + display_order = JOB_DISPLAY_ORDER_ASSISTANT + + liver_traits = list(TRAIT_MAINTENANCE_METABOLISM) + + department_for_prefs = /datum/job_department/assistant + + family_heirlooms = list(/obj/item/storage/toolbox/mechanical/old/heirloom, /obj/item/clothing/gloves/cut/heirloom) + + mail_goodies = list( + /obj/effect/spawner/random/food_or_drink/donkpockets = 10, + /obj/item/clothing/mask/gas = 10, + /obj/item/clothing/gloves/color/fyellow = 7, + /obj/item/choice_beacon/music = 5, + /obj/item/toy/sprayoncan = 3, + /obj/item/crowbar/large = 1 + ) + + job_flags = STATION_JOB_FLAGS + rpg_title = "Lout" + config_tag = "ASSISTANT" + +/datum/job/assistant/get_outfit() + if(!HAS_TRAIT(SSstation, STATION_TRAIT_ASSISTANT_GIMMICKS)) + return ..() + + var/static/list/gimmicks = list() + if(!length(gimmicks)) + for(var/datum/outfit/job/assistant/gimmick/gimmick_outfit as anything in subtypesof(/datum/outfit/job/assistant/gimmick)) + gimmicks[gimmick_outfit] = gimmick_outfit::outfit_weight + + return pick_weight(gimmicks) + +/datum/outfit/job/assistant + name = JOB_ASSISTANT + jobtype = /datum/job/assistant + id_trim = /datum/id_trim/job/assistant + belt = /obj/item/modular_computer/pda/assistant + +/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/target) + ..() + for(var/holidayname in GLOB.holidays) + var/datum/holiday/holiday_today = GLOB.holidays[holidayname] + var/obj/item/special_hat = holiday_today.holiday_hat + if(prob(HOLIDAY_HAT_CHANCE) && !isnull(special_hat) && isnull(head)) + head = special_hat + + 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 + + //We don't cache these, because they can delete on init + //Too fragile, better to just eat the cost + if (target.jumpsuit_style == PREF_SUIT) + uniform = GLOB.colored_assistant.jumpsuits[index] + else + uniform = GLOB.colored_assistant.jumpskirts[index] + +/datum/outfit/job/assistant/consistent + name = "Assistant - Consistent" + +/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) + ..() + + // This outfit is used by the assets SS, which is ran before the atoms SS + if (SSatoms.initialized == INITIALIZATION_INSSATOMS) + H.w_uniform?.update_greyscale() + H.update_worn_undersuit() diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant/colorful_assistants.dm similarity index 54% rename from code/modules/jobs/job_types/assistant.dm rename to code/modules/jobs/job_types/assistant/colorful_assistants.dm index 0fb5f6fec90..740b64912c1 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant/colorful_assistants.dm @@ -1,99 +1,3 @@ -GLOBAL_DATUM(colored_assistant, /datum/colored_assistant) - -/* -Assistant -*/ -/datum/job/assistant - title = JOB_ASSISTANT - description = "Get your space legs, assist people, ask the HoP to give you a job." - faction = FACTION_STATION - total_positions = 5 - spawn_positions = 5 - supervisors = "absolutely everyone" - exp_granted_type = EXP_TYPE_CREW - outfit = /datum/outfit/job/assistant - plasmaman_outfit = /datum/outfit/plasmaman - paycheck = PAYCHECK_LOWER // Get a job. Job reassignment changes your paycheck now. Get over it. - - paycheck_department = ACCOUNT_CIV - display_order = JOB_DISPLAY_ORDER_ASSISTANT - - liver_traits = list(TRAIT_MAINTENANCE_METABOLISM) - - department_for_prefs = /datum/job_department/assistant - - family_heirlooms = list(/obj/item/storage/toolbox/mechanical/old/heirloom, /obj/item/clothing/gloves/cut/heirloom) - - mail_goodies = list( - /obj/effect/spawner/random/food_or_drink/donkpockets = 10, - /obj/item/clothing/mask/gas = 10, - /obj/item/clothing/gloves/color/fyellow = 7, - /obj/item/choice_beacon/music = 5, - /obj/item/toy/sprayoncan = 3, - /obj/item/crowbar/large = 1 - ) - - job_flags = STATION_JOB_FLAGS - rpg_title = "Lout" - config_tag = "ASSISTANT" - - allow_bureaucratic_error = FALSE // NOVA EDIT ADDITION - -/datum/outfit/job/assistant - name = JOB_ASSISTANT - jobtype = /datum/job/assistant - id_trim = /datum/id_trim/job/assistant - uniform = /obj/item/clothing/under/color/random // NOVA EDIT ADD - belt = /obj/item/modular_computer/pda/assistant - -/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/target) - ..() - for(var/holidayname in GLOB.holidays) - var/datum/holiday/holiday_today = GLOB.holidays[holidayname] - var/obj/item/special_hat = holiday_today.holiday_hat - if(prob(HOLIDAY_HAT_CHANCE) && !isnull(special_hat) && isnull(head)) - head = special_hat - - 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 - - // NOVA EDIT - Loadouts (we don't want jumpsuits to override the person's loadout item) - if(modified_outfit_slots & ITEM_SLOT_ICLOTHING) - return - // NOVA EDIT END - - //We don't cache these, because they can delete on init - //Too fragile, better to just eat the cost - if (target.jumpsuit_style == PREF_SUIT) - uniform = GLOB.colored_assistant.jumpsuits[index] - else - uniform = GLOB.colored_assistant.jumpskirts[index] - -/datum/outfit/job/assistant/consistent - name = "Assistant - Consistent" - - -/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) - ..() - - // This outfit is used by the assets SS, which is ran before the atoms SS - if (SSatoms.initialized == INITIALIZATION_INSSATOMS) - H.w_uniform?.update_greyscale() - H.update_worn_undersuit() - - /proc/get_configured_colored_assistant_type() return CONFIG_GET(flag/grey_assistants) ? /datum/colored_assistant/grey : /datum/colored_assistant/random diff --git a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm new file mode 100644 index 00000000000..7c2ac4a2df2 --- /dev/null +++ b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm @@ -0,0 +1,210 @@ +// This file contains the louadouts for the assistant gimmicks station trait! When active, gives assistants random stupid gear + +/// Parent type of gimmick loadouts for assistants for the functional assistant station traits +/datum/outfit/job/assistant/gimmick + name = "Gimmick Assistant" + /// The weight of the outfit to be picked + var/outfit_weight = 0 + + +/datum/outfit/job/assistant/gimmick/give_jumpsuit(mob/living/carbon/human/target) + return //dont do colorized and stuff, it messes with our uniforms + +/datum/outfit/job/assistant/gimmick/bee + name = "Gimmick Assistant - Bee" + suit = /obj/item/clothing/suit/hooded/bee_costume + uniform = /obj/item/clothing/under/color/yellow + + l_pocket = /obj/item/coupon/bee + + outfit_weight = 2 + +/obj/item/coupon/bee + desc = "BEEEES???? AT AN AFFORDAbLE PORICE?!!!" //wordcoders seething + + discounted_pack = /datum/supply_pack/organic/hydroponics/beekeeping_fullkit + discount_pct_off = 0.7 + +/datum/outfit/job/assistant/gimmick/chicken + name = "Gimmick Assistant - Chicken" + suit = /obj/item/clothing/suit/costume/chickensuit + head = /obj/item/clothing/head/costume/chicken + + l_hand = /obj/item/storage/fancy/egg_box/fertile + + outfit_weight = 2 + +/datum/outfit/job/assistant/gimmick/cyborg + name = "Gimmick Assistant - Cardborg" + suit = /obj/item/clothing/suit/costume/cardborg + head = /obj/item/clothing/head/costume/cardborg + uniform = /obj/item/clothing/under/color/black + + r_hand = /obj/item/weldingtool/largetank + l_hand = /obj/item/stack/cable_coil/five + + uniform = /obj/item/clothing/under/color/black + + outfit_weight = 2 + +/datum/outfit/job/assistant/gimmick/cyborg/post_equip(mob/living/carbon/human/equipped, visualsOnly) + . = ..() + var/obj/item/organ/internal/tongue/robot/robotongue = new () + robotongue.Insert(equipped, movement_flags = DELETE_IF_REPLACED) + +/datum/outfit/job/assistant/gimmick/skater + name = "Gimmick Assistant - Skater" + head = /obj/item/clothing/head/helmet/redtaghelm + suit = /obj/item/clothing/suit/redtag + + l_hand = /obj/item/melee/skateboard + + uniform = /obj/item/clothing/under/color/orange + + outfit_weight = 6 + +/datum/outfit/job/assistant/gimmick/rollerskater + name = "Gimmick Assistant - Rollerskater" + head = /obj/item/clothing/head/helmet/bluetaghelm + suit = /obj/item/clothing/suit/bluetag + + shoes = /obj/item/clothing/shoes/wheelys/rollerskates + + uniform = /obj/item/clothing/under/color/darkblue + + outfit_weight = 6 + +/datum/outfit/job/assistant/gimmick/fisher + name = "Gimmick Assistant - Fisher" + suit = /obj/item/clothing/suit/jacket/puffer/vest + uniform = /obj/item/clothing/under/color/blue + + r_hand = /obj/item/storage/toolbox/fishing + + outfit_weight = 3 + +/datum/outfit/job/assistant/gimmick/patient + name = "Gimmick Assistant - Patient" + suit = /obj/item/clothing/suit/apron/surgical + + l_pocket = /obj/item/storage/pill_bottle/multiver + r_pocket = /obj/item/storage/pill_bottle/mutadone + + uniform = /obj/item/clothing/under/color/white + + outfit_weight = 3 + +/datum/outfit/job/assistant/gimmick/mopper + name = "Gimmick Assistant - Mopper" + suit = /obj/item/clothing/suit/caution + uniform = /obj/item/clothing/under/color/lightpurple + + l_hand = /obj/item/mop + + outfit_weight = 5 + +/datum/outfit/job/assistant/gimmick/mopper/post_equip(mob/living/carbon/human/equipped, visualsOnly) + . = ..() + + for(var/turf/turf in range(1, equipped)) + if(turf.is_blocked_turf()) + continue + var/obj/structure/mop_bucket/bucket = new /obj/structure/mop_bucket(turf) + equipped.start_pulling(bucket) + +/datum/outfit/job/assistant/gimmick/broomer + name = "Gimmick Assistant - Broomer" + suit = /obj/item/clothing/suit/caution + uniform = /obj/item/clothing/under/color/lightpurple + + l_hand = /obj/item/pushbroom + r_hand = /obj/item/storage/bag/trash + + outfit_weight = 5 + +/datum/outfit/job/assistant/gimmick/hall_monitor + name = "Gimmick Assistant - Hall Monitor" + head = /obj/item/clothing/head/collectable/police + mask = /obj/item/clothing/mask/whistle + uniform = /obj/item/clothing/under/color/red + + neck = /obj/item/camera + + outfit_weight = 2 + +/datum/outfit/job/assistant/gimmick/monkey + name = "Gimmick Assistant - Monkey" + suit = /obj/item/clothing/suit/costume/monkeysuit + mask = /obj/item/clothing/mask/gas/monkeymask + l_pocket = /obj/item/food/monkeycube + r_pocket = /obj/item/food/monkeycube + + outfit_weight = 1 + +/datum/outfit/job/assistant/gimmick/flesh + name = "Gimmick Assistant - Fleshy" + suit = /obj/item/clothing/suit/hooded/bloated_human + r_hand = /obj/item/toy/foamblade + + outfit_weight = 1 + +/datum/outfit/job/assistant/gimmick/lightbringer + name = "Gimmick Assistant - Lightbringer" + uniform = /obj/item/clothing/under/color/yellow + head = /obj/item/clothing/head/costume/cueball + gloves = /obj/item/clothing/gloves/color/black + + l_pocket = /obj/item/flashlight/lantern + r_pocket = /obj/item/lightreplacer + + outfit_weight = 3 + +/datum/outfit/job/assistant/gimmick/handyman + name = "Gimmick Assistant - Handyman" + + suit = /obj/item/clothing/suit/hazardvest + belt = /obj/item/storage/belt/utility/full + head = /obj/item/clothing/head/utility/hardhat + uniform = /obj/item/clothing/under/color/yellow + + outfit_weight = 6 + +/datum/outfit/job/assistant/gimmick/magician + name = "Gimmick Assistant - Magician" + + head = /obj/item/clothing/head/hats/tophat + uniform = /obj/item/clothing/under/color/lightpurple + + l_hand = /obj/item/gun/magic/wand/nothing + + outfit_weight = 2 + +/datum/outfit/job/assistant/gimmick/firefighter + name = "Gimmick Assistant - Firefighter" + + head = /obj/item/clothing/head/utility/hardhat/red + suit = /obj/item/clothing/suit/hazardvest + uniform = /obj/item/clothing/under/color/red + + l_pocket = /obj/item/stack/medical/ointment + r_pocket = /obj/item/extinguisher/mini + + outfit_weight = 3 + +/datum/outfit/job/assistant/gimmick/gardener + name = "Gimmick Assistant - Gardener" + uniform = /obj/item/clothing/under/color/green + skillchips = list(/obj/item/skillchip/bonsai) + + l_pocket = /obj/item/knife/plastic + l_hand = /obj/item/kirbyplants/random + + outfit_weight = 3 + +/datum/outfit/job/assistant/gimmick/artist + name = "Gimmick Assistant - Artist" + uniform = /obj/item/clothing/under/color/rainbow + + backpack_contents = list(/obj/item/storage/crayons) + + outfit_weight = 3 diff --git a/modular_nova/master_files/code/modules/jobs/job_types/assistant/assistant.dm b/modular_nova/master_files/code/modules/jobs/job_types/assistant/assistant.dm new file mode 100644 index 00000000000..fdaf36c7db0 --- /dev/null +++ b/modular_nova/master_files/code/modules/jobs/job_types/assistant/assistant.dm @@ -0,0 +1,14 @@ +/datum/job/assistant + allow_bureaucratic_error = FALSE + +/datum/outfit/job/assistant + uniform = /obj/item/clothing/under/color/random + +// reverse the uniform override if we have a loadout uniform, we don't want to replace that +/datum/outfit/job/assistant/give_jumpsuit(mob/living/carbon/human/target) + var/original_uniform = uniform + + . = ..() + + if(modified_outfit_slots & ITEM_SLOT_ICLOTHING) + uniform = original_uniform diff --git a/tgstation.dme b/tgstation.dme index 59aa34de8e6..af4b43847a8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4235,7 +4235,6 @@ #include "code\modules\jobs\departments\departments.dm" #include "code\modules\jobs\job_types\_job.dm" #include "code\modules\jobs\job_types\ai.dm" -#include "code\modules\jobs\job_types\assistant.dm" #include "code\modules\jobs\job_types\atmospheric_technician.dm" #include "code\modules\jobs\job_types\bartender.dm" #include "code\modules\jobs\job_types\botanist.dm" @@ -4287,6 +4286,9 @@ #include "code\modules\jobs\job_types\antagonists\space_wizard.dm" #include "code\modules\jobs\job_types\antagonists\wizard_apprentice.dm" #include "code\modules\jobs\job_types\antagonists\xenomorph.dm" +#include "code\modules\jobs\job_types\assistant\assistant.dm" +#include "code\modules\jobs\job_types\assistant\colorful_assistants.dm" +#include "code\modules\jobs\job_types\assistant\gimmick_assistants.dm" #include "code\modules\jobs\job_types\chaplain\chaplain.dm" #include "code\modules\jobs\job_types\chaplain\chaplain_costumes.dm" #include "code\modules\jobs\job_types\chaplain\chaplain_divine_archer.dm" @@ -6407,6 +6409,7 @@ #include "modular_nova\master_files\code\modules\jobs\job_types\station_engineer.dm" #include "modular_nova\master_files\code\modules\jobs\job_types\virologist.dm" #include "modular_nova\master_files\code\modules\jobs\job_types\warden.dm" +#include "modular_nova\master_files\code\modules\jobs\job_types\assistant\assistant.dm" #include "modular_nova\master_files\code\modules\jobs\job_types\spawner\blackmarket.dm" #include "modular_nova\master_files\code\modules\jobs\job_types\spawner\ds2.dm" #include "modular_nova\master_files\code\modules\jobs\job_types\spawner\freighter_crew.dm"