A "postal workers strike" negative station trait. (can be positive) (#80213)

## About The Pull Request
Added a negative station trait, which blocks the mail like it's sunday
or a official holiday. However! If it's actually sunday or a official
holiday, when the mail would be normally blocked already, instead it'll
unblock it. It was done this way because it's easier (station traits are
loaded before the events and economy subsystems are initialized) and
cooler.

## Why It's Good For The Game
Granted there are quite a few station traits around cargo already,
features interacting with other features is honestly a good thing.

## Changelog

🆑
add: Added a "postal workers strike" negative station trait. In the case
of holidays and sunday though, it'll be a "postal system overtime"
instead.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
Ghom
2023-12-27 16:10:32 -05:00
committed by GitHub
co-authored by Mothblocks
parent 65c97dc9b5
commit cdaa1d29a4
10 changed files with 285 additions and 27 deletions
+1
View File
@@ -1,2 +1,3 @@
#define WALL_DENT_HIT 1
#define WALL_DENT_SHOT 2
#define MAX_DENT_DECALS 15
@@ -17,6 +17,30 @@
/datum/station_trait/distant_supply_lines/on_round_start()
SSeconomy.pack_price_modifier *= 1.2
///A negative trait that stops mail from arriving (or the inverse if on holiday). It also enables a specific shuttle loan situation.
/datum/station_trait/mail_blocked
name = "Postal workers strike"
trait_type = STATION_TRAIT_NEGATIVE
weight = 2
show_in_report = TRUE
report_message = "Due to an ongoing strike announced by the postal workers union, mail won't be delivered this shift."
/datum/station_trait/mail_blocked/on_round_start()
//This is either a holiday or sunday... well then, let's flip the situation.
if(SSeconomy.mail_blocked)
name = "Postal system overtime"
report_message = "Despite being a day off, the postal system is working overtime today. Mail will be delivered this shift."
else
var/datum/round_event_control/shuttle_loan/our_event = locate() in SSevents.control
our_event.unavailable_situations -= /datum/shuttle_loan_situation/mail_strike
SSeconomy.mail_blocked = !SSeconomy.mail_blocked
/datum/station_trait/mail_blocked/hangover/revert()
var/datum/round_event_control/shuttle_loan/our_event = locate() in SSevents.control
our_event.unavailable_situations |= /datum/shuttle_loan_situation/mail_strike
SSeconomy.mail_blocked = !SSeconomy.mail_blocked
return ..()
///A negative trait that reduces the amount of products available from vending machines throughout the station.
/datum/station_trait/vending_shortage
name = "Vending products shortage"
@@ -141,3 +141,59 @@
/obj/item/restraints/legcuffs/beartrap/prearmed = 5, //not really a landmine, but still a good threat
/obj/effect/mine/shrapnel = 5,
)
/obj/effect/spawner/random/contraband/grenades
name = "grenades spawner"
loot = list(
/obj/item/grenade/chem_grenade/metalfoam,
/obj/item/grenade/chem_grenade/cleaner,
/obj/effect/spawner/random/entertainment/colorful_grenades,
/obj/item/grenade/smokebomb,
/obj/item/grenade/chem_grenade/antiweed,
/obj/item/grenade/spawnergrenade/syndiesoap,
/obj/effect/spawner/random/contraband/grenades/dangerous,
)
/obj/effect/spawner/random/contraband/grenades/dangerous
name = "dangerous grenades spawner"
loot = list(
/obj/item/grenade/flashbang = 3,
/obj/item/grenade/chem_grenade/teargas = 2,
/obj/item/grenade/iedcasing/spawned = 2,
/obj/item/grenade/empgrenade = 2,
/obj/item/grenade/antigravity = 2,
/obj/effect/spawner/random/contraband/grenades/cluster = 1,
/obj/effect/spawner/random/contraband/grenades/lethal = 1,
)
/obj/effect/spawner/random/contraband/grenades/cluster
name = "clusterbusters spawner"
loot = list(
/obj/item/grenade/clusterbuster/smoke = 4,
/obj/item/grenade/clusterbuster/metalfoam = 4,
/obj/item/grenade/clusterbuster/cleaner = 4,
/obj/item/grenade/clusterbuster = 3,
/obj/item/grenade/clusterbuster/teargas = 3,
/obj/item/grenade/clusterbuster/antiweed = 3,
/obj/item/grenade/clusterbuster/soap = 2,
/obj/item/grenade/clusterbuster/emp = 1,
/obj/item/grenade/clusterbuster/spawner_spesscarp = 1,
/obj/item/grenade/clusterbuster/facid = 1,
/obj/item/grenade/clusterbuster/inferno = 1,
/obj/item/grenade/clusterbuster/clf3 = 1,
)
/obj/effect/spawner/random/contraband/grenades/lethal
name = "lethal grenades spawner"
loot = list(
/obj/item/grenade/chem_grenade/incendiary = 3,
/obj/item/grenade/chem_grenade/facid = 3,
/obj/item/grenade/chem_grenade/ez_clean = 3,
/obj/item/grenade/chem_grenade/clf3 = 2,
/obj/item/grenade/gluon = 2,
/obj/item/grenade/chem_grenade/holy = 2,
/obj/item/grenade/spawnergrenade/spesscarp = 1,
/obj/item/grenade/spawnergrenade/cat = 1,
/obj/item/grenade/frag = 1,
/obj/item/grenade/chem_grenade/bioterrorfoam = 1,
)
@@ -281,3 +281,12 @@
/obj/item/toy/plush/ratplush = 2,
/obj/item/toy/plush/narplush = 2,
)
/obj/effect/spawner/random/entertainment/colorful_grenades
name = "colorful/glitter grenades spawner"
loot = list(
/obj/item/grenade/chem_grenade/glitter/pink,
/obj/item/grenade/chem_grenade/glitter/blue,
/obj/item/grenade/chem_grenade/glitter/white,
/obj/item/grenade/chem_grenade/colorful
)
@@ -323,3 +323,17 @@
/obj/item/food/donut/jelly/slimejelly/matcha = 2,
/obj/item/food/donut/jelly/slimejelly/trumpet = 2,
)
/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage
name = "any snack or beverage spawner"
icon_state = "slime_jelly_donut"
loot = list(
/obj/effect/spawner/random/food_or_drink/snack = 6,
/obj/effect/spawner/random/food_or_drink/refreshing_beverage = 6,
/obj/effect/spawner/random/food_or_drink/donuts = 5,
/obj/effect/spawner/random/food_or_drink/donkpockets_single = 5,
/obj/effect/spawner/random/food_or_drink/booze = 4,
/obj/effect/spawner/random/food_or_drink/snack/lizard = 4,
/obj/effect/spawner/random/food_or_drink/jelly_donuts = 3,
/obj/effect/spawner/random/food_or_drink/slime_jelly_donuts = 1,
)
+80 -6
View File
@@ -152,14 +152,18 @@
/obj/item/mail/examine_more(mob/user)
. = ..()
var/list/msg = list(span_notice("<i>You notice the postmarking on the front of the mail...</i>"))
if(!postmarked)
. += span_info("This mail has no postmarking of any sort...")
else
. += span_notice("<i>You notice the postmarking on the front of the mail...</i>")
var/datum/mind/recipient = recipient_ref.resolve()
if(recipient)
msg += "\t[span_info("Certified NT mail for [recipient].")]"
. += span_info("[postmarked ? "Certified NT" : "Uncertfieid"] mail for [recipient].")
else if(postmarked)
. += span_info("Certified mail for [GLOB.station_name].")
else
msg += "\t[span_info("Certified mail for [GLOB.station_name].")]"
msg += "\t[span_info("Distribute by hand or via destination tagger using the certified NT disposal system.")]"
return msg
. += span_info("This is a dead letter mail with no recipient.")
. += span_info("Distribute by hand or via destination tagger using the certified NT disposal system.")
/// Accepts a mind to initialize goodies for a piece of mail.
/obj/item/mail/proc/initialize_for_recipient(datum/mind/recipient)
@@ -249,6 +253,8 @@
lid_x = -26
lid_y = 2
paint_jobs = null
///if it'll show the nt mark on the crate
var/postmarked = TRUE
/obj/structure/closet/crate/mail/update_icon_state()
. = ..()
@@ -259,6 +265,11 @@
else
icon_state = "[base_icon_state]sealed"
/obj/structure/closet/crate/mail/update_overlays()
. = ..()
if(postmarked)
. += "mail_nt"
/// Fills this mail crate with N pieces of mail, where N is the lower of the amount var passed, and the maximum capacity of this crate. If N is larger than the number of alive human players, the excess will be junkmail.
/obj/structure/closet/crate/mail/proc/populate(amount)
var/mail_count = min(amount, storage_capacity)
@@ -304,6 +315,19 @@
. = ..()
populate(INFINITY)
///Used in the mail strike shuttle loan event
/obj/structure/closet/crate/mail/full/mail_strike
desc = "A post crate from somewhere else. It has no NT logo on it."
postmarked = FALSE
/obj/structure/closet/crate/mail/full/mail_strike/populate(amount)
var/strike_mail_to_spawn = rand(1, storage_capacity-1)
for(var/i in 1 to strike_mail_to_spawn)
if(prob(95))
new /obj/item/mail/mail_strike(src)
else
new /obj/item/mail/traitor/mail_strike(src)
return ..(storage_capacity - strike_mail_to_spawn)
/// Opened mail crate
/obj/structure/closet/crate/mail/preopen
@@ -381,7 +405,8 @@
playsound(loc, 'sound/items/poster_ripped.ogg', vol = 50, vary = TRUE)
for(var/obj/item/stuff as anything in contents) // Mail and envelope actually can have more than 1 item.
if(user.put_in_hands(stuff) && armed)
log_bomber(user, "opened armed mail made by [made_by_cached_name] ([made_by_cached_ckey]), activating", stuff)
var/whomst = made_by_cached_name ? "[made_by_cached_name] ([made_by_cached_ckey])" : "no one in particular"
log_bomber(user, "opened armed mail made by [whomst], activating", stuff)
INVOKE_ASYNC(stuff, TYPE_PROC_REF(/obj/item, attack_self), user)
qdel(src)
return TRUE
@@ -412,6 +437,55 @@
after_unwrap(user)
return TRUE
///Generic mail used in the mail strike shuttle loan event
/obj/item/mail/mail_strike
name = "dead mail"
desc = "An unmarked parcel of unknown origins, effectively undeliverable."
postmarked = FALSE
generic_goodies = list(
/obj/effect/spawner/random/entertainment/money_medium = 2,
/obj/effect/spawner/random/contraband = 2,
/obj/effect/spawner/random/entertainment/money_large = 1,
/obj/effect/spawner/random/entertainment/coin = 1,
/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage = 1,
/obj/effect/spawner/random/entertainment/drugs = 1,
/obj/effect/spawner/random/contraband/grenades = 1,
)
/obj/item/mail/mail_strike/Initialize(mapload)
if(prob(35))
stamped = FALSE
if(prob(35))
name = "dead envelope"
icon_state = "mail_large"
goodie_count = 2
stamp_max = 2
stamp_offset_y = 5
. = ..()
color = pick(COLOR_SILVER, COLOR_DARK, COLOR_DRIED_TAN, COLOR_ORANGE_BROWN, COLOR_BROWN, COLOR_SYNDIE_RED)
for(var/goodie in 1 to goodie_count)
var/target_good = pick_weight(generic_goodies)
new target_good(src)
///Also found in the mail strike shuttle loan. It contains a random grenade that'll be triggered when unwrapped
/obj/item/mail/traitor/mail_strike
name = "dead mail"
desc = "An unmarked parcel of unknown origins, effectively undeliverable."
postmarked = FALSE
/obj/item/mail/traitor/mail_strike/Initialize(mapload)
if(prob(35))
stamped = FALSE
if(prob(35))
name = "dead envelope"
icon_state = "mail_large"
goodie_count = 2
stamp_max = 2
stamp_offset_y = 5
. = ..()
color = pick(COLOR_SILVER, COLOR_DARK, COLOR_DRIED_TAN, COLOR_ORANGE_BROWN, COLOR_BROWN, COLOR_SYNDIE_RED)
new /obj/effect/spawner/random/contraband/grenades/dangerous(src)
/obj/item/storage/mail_counterfeit_device
name = "GLA-2 mail counterfeit device"
desc = "Device that actually able to counterfeit NT's mail. This device also able to place a trap inside of mail for malicious actions. Trap will \"activate\" any item inside of mail. Also it might be used for contraband purposes. Integrated micro-computer will give you great configuration optionality for your needs."
-2
View File
@@ -1,4 +1,3 @@
#define MAX_DENT_DECALS 15
#define LEANING_OFFSET 11
/turf/closed/wall
@@ -387,5 +386,4 @@
. = ..()
SEND_SIGNAL(gone, COMSIG_LIVING_WALL_EXITED, src)
#undef MAX_DENT_DECALS
#undef LEANING_OFFSET
@@ -7,7 +7,7 @@
/// What the shuttle says about it.
var/shuttle_transit_text = "Unset transit text"
/// Supply points earned for taking the deal.
var/bonus_points = 10000
var/bonus_points = CARGO_CRATE_VALUE * 50
/// Response for taking the deal.
var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble."
/// Small description of the loan for easier log reading.
@@ -21,7 +21,7 @@
bonus_points *= 1.15
/// Spawns paths added to `spawn_list`, and passes empty shuttle turfs so you can spawn more complicated things like dead bodies.
/datum/shuttle_loan_situation/proc/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/proc/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
SHOULD_CALL_PARENT(FALSE)
CRASH("Unimplemented get_spawned_items() on [src.type].")
@@ -31,7 +31,7 @@
shuttle_transit_text = "Virus samples incoming."
logging_desc = "Virus shuttle"
/datum/shuttle_loan_situation/antidote/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/antidote/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/obj/effect/mob_spawn/corpse/human/assistant/infected_assistant = pick(list(
/obj/effect/mob_spawn/corpse/human/assistant/beesease_infection,
/obj/effect/mob_spawn/corpse/human/assistant/brainrot_infection,
@@ -58,7 +58,7 @@
bonus_points = 0
logging_desc = "Resupply packages"
/datum/shuttle_loan_situation/department_resupply/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/department_resupply/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/list/crate_types = list(
/datum/supply_pack/emergency/equipment,
/datum/supply_pack/security/supplies,
@@ -84,7 +84,7 @@
shuttle_transit_text = "Syndicate hijack team incoming."
logging_desc = "Syndicate boarding party"
/datum/shuttle_loan_situation/syndiehijacking/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/syndiehijacking/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/imports/specialops]
pack.generate(pick_n_take(empty_shuttle_turfs))
@@ -99,10 +99,10 @@
sender = "CentCom Janitorial Division"
announcement_text = "One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?"
shuttle_transit_text = "Biohazard cleanup incoming."
bonus_points = 20000 //Toxin bees can be unbeelievably lethal
bonus_points = CARGO_CRATE_VALUE * 100 //Toxin bees can be unbeelievably lethal
logging_desc = "Shuttle full of bees"
/datum/shuttle_loan_situation/lots_of_bees/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/lots_of_bees/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/hydroponics/beekeeping_fullkit]
pack.generate(pick_n_take(empty_shuttle_turfs))
@@ -135,10 +135,10 @@
announcement_text = "We have discovered an active Syndicate bomb near our VIP shuttle's fuel lines. If you feel up to the task, we will pay you for defusing it."
shuttle_transit_text = "Live explosive ordnance incoming. Exercise extreme caution."
thanks_msg = "Live explosive ordnance incoming via supply shuttle. Evacuating cargo bay is recommended."
bonus_points = 45000 //If you mess up, people die and the shuttle gets turned into swiss cheese
bonus_points = CARGO_CRATE_VALUE * 225 //If you mess up, people die and the shuttle gets turned into swiss cheese
logging_desc = "Shuttle with a ticking bomb"
/datum/shuttle_loan_situation/jc_a_bomb/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/jc_a_bomb/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
spawn_list.Add(/obj/machinery/syndicatebomb/shuttle_loan)
if(prob(95))
spawn_list.Add(/obj/item/paper/fluff/cargo/bomb)
@@ -153,7 +153,7 @@
bonus_points = 0 //Payout is made when the stamped papers are returned
logging_desc = "Paperwork shipment"
/datum/shuttle_loan_situation/papers_please/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/papers_please/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
spawn_list += subtypesof(/obj/item/paperwork) - typesof(/obj/item/paperwork/photocopy) - typesof(/obj/item/paperwork/ancient)
/datum/shuttle_loan_situation/pizza_delivery
@@ -164,7 +164,7 @@
bonus_points = 0
logging_desc = "Pizza delivery"
/datum/shuttle_loan_situation/pizza_delivery/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/pizza_delivery/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/naughtypizza = list(/obj/item/pizzabox/bomb, /obj/item/pizzabox/margherita/robo) //oh look another blacklist, for pizza nonetheless!
var/nicepizza = list(/obj/item/pizzabox/margherita, /obj/item/pizzabox/meat, /obj/item/pizzabox/vegetable, /obj/item/pizzabox/mushroom)
for(var/i in 1 to 6)
@@ -176,7 +176,7 @@
shuttle_transit_text = "Partying Russians incoming."
logging_desc = "Russian party squad"
/datum/shuttle_loan_situation/russian_party/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/russian_party/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/service/party]
pack.generate(pick_n_take(empty_shuttle_turfs))
@@ -194,7 +194,7 @@
shuttle_transit_text = "Spider Clan gift incoming."
logging_desc = "Shuttle full of spiders"
/datum/shuttle_loan_situation/spider_gift/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
/datum/shuttle_loan_situation/spider_gift/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/imports/specialops]
pack.generate(pick_n_take(empty_shuttle_turfs))
@@ -213,3 +213,82 @@
for(var/i in 1 to 5)
var/turf/web_turf = pick_n_take(empty_shuttle_turfs)
new /obj/structure/spider/stickyweb(web_turf)
#define DENT_WALL "dent"
#define CHANGE_WALL "change"
#define DISMANTLE_WALL "dismantle"
#define BREAK_TILE "break"
#define PLATING_TILE "plating"
#define RUST_TILE "rust"
/**
* A special shuttle loan situation enabled by the 'mail blocked' station trait.
* It sends back a lot of mail to the station, at the cost of wrecking the cargo shuttle a little.
*/
/datum/shuttle_loan_situation/mail_strike
sender = "Spinward Mail Workers Union"
announcement_text = "The Mail Workers Union wants to borrow your cargo shuttle to employ \"advanced union strike tactics\" with. Payment is strictly in mails."
bonus_points = 0
thanks_msg = "The cargo shuttle should return in five minutes."
shuttle_transit_text = "Nothing stops the mail."
logging_desc = "Shuttle full of shady mail"
/datum/shuttle_loan_situation/mail_strike/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs)
for(var/i in 1 to rand(7, 12))
var/turf/closed/wall/wall = pick_n_take(blocked_shutte_turfs)
if(!istype(wall))
continue
var/static/list/wall_bad_stuff = list(DENT_WALL = 85, CHANGE_WALL = 13, DISMANTLE_WALL = 2)
var/static/list/possible_new_walls = list(
/turf/closed/wall/mineral/sandstone,
/turf/closed/wall/mineral/wood,
/turf/closed/wall/mineral/iron,
/turf/closed/wall/metal_foam_base,
/turf/closed/wall/r_wall,
)
var/damage_done = pick_weight(wall_bad_stuff)
switch(damage_done)
if(DENT_WALL)
for(var/dent in 1 to rand(1, MAX_DENT_DECALS))
wall.add_dent(prob(90) ? WALL_DENT_SHOT : WALL_DENT_HIT)
if(CHANGE_WALL)
wall.ChangeTurf(pick(possible_new_walls - wall.type))
if(prob(25))
for(var/dent in 1 to rand(1, MAX_DENT_DECALS))
wall.add_dent(prob(90) ? WALL_DENT_SHOT : WALL_DENT_HIT)
if(DISMANTLE_WALL)
wall.dismantle_wall()
for(var/i in 1 to rand(7, 12))
var/turf/open/floor/floor = pick_n_take(empty_shuttle_turfs)
if(!istype(floor))
continue
var/static/list/floor_bad_stuff = list(BREAK_TILE = 65, PLATING_TILE = 25, RUST_TILE = 10)
var/damage_done = pick_weight(floor_bad_stuff)
switch(damage_done)
if(BREAK_TILE)
if(prob(50))
floor.break_tile()
else
floor.burn_tile()
if(PLATING_TILE)
if(prob(25))
floor.remove_tile()
else
floor.make_plating()
if(RUST_TILE)
floor.ChangeTurf(/turf/open/floor/plating/rust)
if(prob(25))
spawn_list += pick(/obj/effect/gibspawner/robot, /obj/effect/gibspawner/human)
for(var/i in 1 to rand(4, 7))
spawn_list += /obj/structure/closet/crate/mail/full/mail_strike
#undef BREAK_TILE
#undef PLATING_TILE
#undef RUST_TILE
#undef DENT_WALL
#undef CHANGE_WALL
#undef DISMANTLE_WALL
@@ -8,7 +8,8 @@
description = "If cargo accepts the offer, fills the shuttle with loot and/or enemies."
///The types of loan events already run (and to be excluded if the event triggers).
admin_setup = list(/datum/event_admin_setup/listed_options/shuttle_loan)
var/list/run_situations = list()
///A list of normally unavailable (or already run) situations datums
var/list/unavailable_situations = list(/datum/shuttle_loan_situation/mail_strike)
/datum/round_event_control/shuttle_loan/can_spawn_event(players_amt, allow_magic = FALSE)
. = ..()
@@ -28,14 +29,14 @@
var/datum/round_event_control/shuttle_loan/loan_control = control
//by this point if situation is admin picked, it is a type, not an instance.
if(!situation)
var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_control.run_situations
var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_control.unavailable_situations
if(!valid_situations.len)
//If we somehow run out of loans (fking campbell), they all become available again
loan_control.run_situations.Cut()
loan_control.unavailable_situations.Cut()
valid_situations = subtypesof(/datum/shuttle_loan_situation)
situation = pick(valid_situations)
loan_control.run_situations.Add(situation)
loan_control.unavailable_situations.Add(situation)
situation = new situation()
/datum/round_event/shuttle_loan/announce(fake)
@@ -76,10 +77,12 @@
//get empty turfs
var/list/empty_shuttle_turfs = list()
var/list/blocked_shutte_turfs = list()
var/list/area/shuttle/shuttle_areas = SSshuttle.supply.shuttle_areas
for(var/area/shuttle/shuttle_area as anything in shuttle_areas)
for(var/turf/open/floor/shuttle_turf in shuttle_area)
if(shuttle_turf.is_blocked_turf())
blocked_shutte_turfs += shuttle_turf
continue
empty_shuttle_turfs += shuttle_turf
if(!empty_shuttle_turfs.len)
@@ -87,7 +90,7 @@
//let the situation spawn its items
var/list/spawn_list = list()
situation.spawn_items(spawn_list, empty_shuttle_turfs)
situation.spawn_items(spawn_list, empty_shuttle_turfs, blocked_shutte_turfs)
var/false_positive = 0
while(spawn_list.len && empty_shuttle_turfs.len)
@@ -103,7 +106,7 @@
/datum/event_admin_setup/listed_options/shuttle_loan/get_list()
var/datum/round_event_control/shuttle_loan/loan_event = event_control
var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_event.run_situations
var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_event.unavailable_situations
return valid_situations
/datum/event_admin_setup/listed_options/shuttle_loan/apply_to_event(datum/round_event/shuttle_loan/event)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 40 KiB