[MIRROR] A "postal workers strike" negative station trait. (can be positive) [MDB IGNORE] (#25874)

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

* Update shuttle_loan_datum.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-12-29 18:25:27 +00:00
committed by GitHub
co-authored by Ghom Gandalf
parent 4b1815fd05
commit 75cd7f69f6
10 changed files with 286 additions and 28 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
@@ -154,14 +154,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)
@@ -251,6 +255,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()
. = ..()
@@ -261,6 +267,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)
@@ -306,6 +317,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
@@ -383,7 +407,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
@@ -414,6 +439,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,8 +164,8 @@
bonus_points = 0
logging_desc = "Pizza delivery"
/datum/shuttle_loan_situation/pizza_delivery/spawn_items(list/spawn_list, list/empty_shuttle_turfs)
var/naughtypizza = list(/obj/item/pizzabox/bomb /*/obj/item/pizzabox/margherita/robo*/) // SKYRAT EDIT: oh look another blacklist, for pizza nonetheless! removes borg pizza
/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)
spawn_list.Add(pick(prob(5) ? naughtypizza : nicepizza))
@@ -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