diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 391726e3..6d77a1f6 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -390,6 +390,7 @@ SUBSYSTEM_DEF(job) var/datum/job/job = GetJob(rank) H.job = rank + equip_loadout(N, H) //If we joined at roundstart we should be positioned at our workstation if(!joined_late) @@ -410,17 +411,27 @@ SUBSYSTEM_DEF(job) if(!S) //if there isn't a spawnpoint send them to latejoin, if there's no latejoin go yell at your mapper log_world("Couldn't find a round start spawn point for [rank]") SendToLateJoin(H) - + + if(H.mind) H.mind.assigned_role = rank - + + if(job) + var/new_mob = job.equip(H, null, null, joined_late) + if(ismob(new_mob)) + H = new_mob + if(!joined_late) + N.new_character = H + else + M = H + + SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() + + var/display_rank = rank + if(M.client && M.client.prefs && M.client.prefs.alt_titles_preferences[rank]) + display_rank = M.client.prefs.alt_titles_preferences[rank] + to_chat(M, "You are the [display_rank].") if(job) - equip_loadout(N, H, job, joined_late) //Handles loadout and job equipping - - var/display_rank = rank - if(M.client && M.client.prefs && M.client.prefs.alt_titles_preferences[rank]) - display_rank = M.client.prefs.alt_titles_preferences[rank] - to_chat(M, "You are the [display_rank].") to_chat(M, "As the [display_rank] you answer directly to [job.supervisors]. Special circumstances may change this.") to_chat(M, "To speak on your departments radio, use the :h button. To see others, look closely at your headset.") if(job.req_admin_notify) @@ -430,14 +441,16 @@ SUBSYSTEM_DEF(job) if(CONFIG_GET(number/minimal_access_threshold)) to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") - SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() - if(ishuman(H)) var/mob/living/carbon/human/wageslave = H to_chat(M, "Your account ID is [wageslave.account_id]") to_chat(M, "You do not have a pin, can set your pin at a ATM.") H.add_memory("Your account ID is [wageslave.account_id].") + if(job && H) + job.after_spawn(H, M, joined_late) // note: this happens before the mob has a key! M will always have a client, H might not. + equip_loadout(N, H, TRUE)//CIT CHANGE - makes players spawn with in-backpack loadout items properly. A little hacky but it works + return H diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 16b97924..04314dd7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -36,7 +36,7 @@ var/buckle_message_cooldown = 0 var/fingerprintslast - var/list/filter_data = list() //For handling persistent filters + var/list/filter_data //For handling persistent filters var/datum/component/orbiter/orbiters @@ -861,15 +861,14 @@ Proc for attack log creation, because really why not filters += filter(arglist(arguments)) /atom/movable/proc/get_filter(name) - if(filter_data) - if(filter_data[name]) return filters[filter_data.Find(name)] + if(filter_data && filter_data[name]) + return filters[filter_data.Find(name)] /atom/movable/proc/remove_filter(name) - if(filter_data) - if(filter_data[name]) - filter_data -= name - update_filters() - return TRUE + if(filter_data[name]) + filter_data -= name + update_filters() + return TRUE /atom/proc/intercept_zImpact(atom/movable/AM, levels = 1) . |= SEND_SIGNAL(src, COMSIG_ATOM_INTERCEPT_Z_FALL, AM, levels) diff --git a/code/modules/hydroponics/grown/peas.dm b/code/modules/hydroponics/grown/peas.dm index bdbcd288..da5f57ce 100644 --- a/code/modules/hydroponics/grown/peas.dm +++ b/code/modules/hydroponics/grown/peas.dm @@ -31,11 +31,11 @@ // Laughin' Peas /obj/item/seeds/peas/laugh - name = "pack of laughing peas" - desc = "These seeds give off a very soft purple glow.. they should grow into Laughing Peas." + name = "pack of laughin' peas" + desc = "These seeds give off a very soft purple glow.. they should grow into Laughin' Peas." icon_state = "seed-laughpeas" species = "laughpeas" - plantname = "Laughing Peas" + plantname = "Laughin' Peas" product = /obj/item/reagent_containers/food/snacks/grown/laugh maturation = 7 potency = 10 @@ -53,7 +53,7 @@ /obj/item/reagent_containers/food/snacks/grown/laugh seed = /obj/item/seeds/peas/laugh - name = "pod of laughing peas" + name = "pod of laughin' peas" desc = "Ridens Cicer, guaranteed to improve your mood dramatically upon consumption!" icon_state = "laughpeas" filling_color = "#ee7bee" diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 72603970..6073fcdf 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -167,7 +167,7 @@ for (var/obj/T in contents)//Now we find the seed we need to vend var/obj/item/seeds/O = T - if (sanitize(O.plantname) == sanitize(href_list["name"]) && O.lifespan == href_list["li"] && O.endurance == href_list["en"] && O.maturation == href_list["ma"] && O.production == href_list["pr"] && O.yield == href_list["yi"] && O.potency == href_list["pot"]) + if (O.plantname == href_list["name"] && O.lifespan == href_list["li"] && O.endurance == href_list["en"] && O.maturation == href_list["ma"] && O.production == href_list["pr"] && O.yield == href_list["yi"] && O.potency == href_list["pot"]) O.forceMove(drop_location()) break diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e0be7ace..bca71db9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -260,7 +260,7 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA //This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the round starts and when events happen and such. //Also bypasses equip delay checks, since the mob isn't actually putting it on. /mob/proc/equip_to_slot_or_del(obj/item/W, slot) - return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE, FALSE) + return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE) /mob/proc/equip_to_slot_or_store(obj/item/W, slot) return equip_to_slot_if_possible(W, slot, FALSE, TRUE, FALSE, TRUE, TRUE) diff --git a/hyperstation/code/controllers/subsystem/economy.dm b/hyperstation/code/controllers/subsystem/economy.dm index 282af80e..b69e29c8 100644 --- a/hyperstation/code/controllers/subsystem/economy.dm +++ b/hyperstation/code/controllers/subsystem/economy.dm @@ -2,9 +2,8 @@ SUBSYSTEM_DEF(economy) name = "Economy" wait = 5 MINUTES init_order = INIT_ORDER_ECONOMY - flags = SS_NO_FIRE runlevels = RUNLEVEL_GAME var/roundstart_paychecks = 5 var/budget_pool = 35000 var/list/generated_accounts = list() - var/list/bank_accounts = list() //List of normal accounts (not department accounts) + var/list/bank_accounts = list() //List of normal accounts (not department accounts) \ No newline at end of file diff --git a/modular_citadel/code/controllers/subsystem/job.dm b/modular_citadel/code/controllers/subsystem/job.dm index 23dab6f8..f66cbe81 100644 --- a/modular_citadel/code/controllers/subsystem/job.dm +++ b/modular_citadel/code/controllers/subsystem/job.dm @@ -1,50 +1,39 @@ -/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, datum/job/job, joined_late) +/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, backpackstuffs) var/mob/the_mob = N if(!the_mob) the_mob = M // cause this doesn't get assigned if player is a latejoiner - if(the_mob.client && the_mob.client.prefs && (the_mob.client.prefs.chosen_gear && the_mob.client.prefs.chosen_gear.len)) if(!ishuman(M))//no silicons allowed return - - var/list/queued_to_equip = list() //items the player will equip on their person - var/list/queued_for_storage = list() //items that will get stuffed into the player's backpack - - for(var/i in the_mob.client.prefs.chosen_gear) //Prepare our loadouts for creation and equipping + for(var/i in the_mob.client.prefs.chosen_gear) var/datum/gear/G = i G = GLOB.loadout_items[slot_to_string(initial(G.category))][initial(G.name)] if(!G) continue if(G.restricted_roles && G.restricted_roles.len && !(M.mind.assigned_role in G.restricted_roles)) - continue //If the player's not supposed to equip this because they lack the job + continue if(G.ckeywhitelist && G.ckeywhitelist.len && !(the_mob.client.ckey in G.ckeywhitelist)) - continue //how the fuck + continue - if(G.category == SLOT_IN_BACKPACK || G.blacklist_join_equip) - queued_for_storage += G - else - queued_to_equip += G - - for(var/datum/gear/G in queued_to_equip) //Dress up the player like a doll var/obj/item/I = new G.path - if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) - queued_for_storage += G //If the player can't equip the item, queue it for storage - - job.after_spawn(the_mob, M, joined_late) - job.equip(M, null, null, joined_late) //Equip the job outfit - - if(iscarbon(M)) //Start storing the items into the player's backpack. They should have one from job.equip - var/mob/living/carbon/C = M - var/obj/item/storage/backpack/B = C.back - if(B) - for(var/datum/gear/G in queued_for_storage) - var/obj/item/I = new G.path - if(SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, I, null, TRUE, TRUE)) - queued_for_storage -= G - - for(var/datum/gear/G in queued_for_storage) //If there isn't a backpack, or if the backpack became full, drop items beneath the player's feet - var/obj/item/I = new G.path - I.forceMove(M) + if(iscarbon(M) && backpackstuffs && (G.category == SLOT_IN_BACKPACK || G.blacklist_join_equip)) + var/mob/living/carbon/C = M + var/obj/item/storage/backpack/B = C.back + if(!B || !SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, I, null, TRUE, TRUE)) + I.forceMove(get_turf(C)) + continue + else if(G.blacklist_join_equip) //Assume we're gonna be put in a backpack and not equipped + continue + else if(backpackstuffs && G.category != SLOT_IN_BACKPACK) + continue + if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first + if(iscarbon(M)) + var/mob/living/carbon/C = M + var/obj/item/storage/backpack/B = C.back + if(!B || !SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, I, null, TRUE, TRUE)) // Otherwise, try to put it in the backpack, for carbons. + I.forceMove(get_turf(C)) + else if(!M.equip_to_slot_if_possible(I, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack + I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. /datum/controller/subsystem/job/proc/FreeRole(rank) if(!rank)