#define HIJACK_SYNDIE 1 #define RUSKY_PARTY 2 #define SPIDER_GIFT 3 #define DEPARTMENT_RESUPPLY 4 #define ANTIDOTE_NEEDED 5 #define PIZZA_DELIVERY 6 #define ITS_HIP_TO 7 #define MY_GOD_JC 8 #define DELTA_CRATES 9 /datum/round_event_control/shuttle_loan name = "Shuttle Loan" typepath = /datum/round_event/shuttle_loan max_occurrences = 1 earliest_start = 7 MINUTES /datum/round_event/shuttle_loan announceWhen = 1 endWhen = 500 var/dispatched = 0 var/dispatch_type = 0 var/bonus_points = 10000 var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble." /datum/round_event/shuttle_loan/setup() dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY, ITS_HIP_TO, MY_GOD_JC) /datum/round_event/shuttle_loan/announce(fake) SSshuttle.shuttle_loan = src switch(dispatch_type) if(HIJACK_SYNDIE) if(prob(50)) priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache." P.update_icon() if(RUSKY_PARTY) if(prob(50)) priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache." P.update_icon() if(SPIDER_GIFT) if(prob(50)) priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?" P.update_icon() if(DEPARTMENT_RESUPPLY) if(prob(50)) priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?" P.update_icon() if(ANTIDOTE_NEEDED) if(prob(50)) priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples." P.update_icon() if (PIZZA_DELIVERY) if(prob(50)) priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead.", "CentCom Spacepizza Division") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead." P.update_icon() if(ITS_HIP_TO) if(prob(50)) priority_announce("Cargo: One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?", "CentCom Janitorial Division") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?." P.update_icon() bonus_points = 20000 //Toxin bees can be unbeelievably lethal if(MY_GOD_JC) if(prob(50)) priority_announce("Cargo: 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.", "CentCom Security Division") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: 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." P.update_icon() bonus_points = 45000 //If you mess up, people die and the shuttle gets turned into swiss cheese if(DELTA_CRATES) if(prob(50)) priority_announce("Cargo: We have discovered a warehouse of DELTA locked crates, we cant store any more of them at CC can you take them for us?.", "CentCom Security Division") else priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) P.name = "Cargo Report" P.info = "Cargo: We have discovered a warehouse of DELTA locked crates, we cant store any more of them at CC can you take them for us?." P.update_icon() bonus_points = 25000 //If you mess up, people die and the shuttle gets turned into swiss cheese /datum/round_event/shuttle_loan/proc/loan_shuttle() priority_announce(thanks_msg, "Cargo shuttle commandeered by CentCom.") dispatched = 1 SSshuttle.points += bonus_points endWhen = activeFor + 1 SSshuttle.supply.mode = SHUTTLE_CALL SSshuttle.supply.destination = SSshuttle.getDock("supply_home") SSshuttle.supply.setTimer(3000) switch(dispatch_type) if(HIJACK_SYNDIE) SSshuttle.centcom_message += "Syndicate hijack team incoming." if(RUSKY_PARTY) SSshuttle.centcom_message += "Partying Russians incoming." if(SPIDER_GIFT) SSshuttle.centcom_message += "Spider Clan gift incoming." if(DEPARTMENT_RESUPPLY) SSshuttle.centcom_message += "Department resupply incoming." if(ANTIDOTE_NEEDED) SSshuttle.centcom_message += "Virus samples incoming." if(PIZZA_DELIVERY) SSshuttle.centcom_message += "Pizza delivery for [station_name()]" if(ITS_HIP_TO) SSshuttle.centcom_message += "Biohazard cleanup incoming." if(MY_GOD_JC) SSshuttle.centcom_message += "Live explosive ordnance incoming. Exercise extreme caution." if(DELTA_CRATES) SSshuttle.centcom_message += "DELTA Locked crates incoming. Exercise extreme caution." /datum/round_event/shuttle_loan/tick() if(dispatched) if(SSshuttle.supply.mode != SHUTTLE_IDLE) endWhen = activeFor else endWhen = activeFor + 1 /datum/round_event/shuttle_loan/end() if(SSshuttle.shuttle_loan && SSshuttle.shuttle_loan.dispatched) //make sure the shuttle was dispatched in time SSshuttle.shuttle_loan = null var/list/empty_shuttle_turfs = list() var/list/area/shuttle/shuttle_areas = SSshuttle.supply.shuttle_areas for(var/place in shuttle_areas) var/area/shuttle/shuttle_area = place for(var/turf/open/floor/T in shuttle_area) if(is_blocked_turf(T)) continue empty_shuttle_turfs += T if(!empty_shuttle_turfs.len) return var/list/shuttle_spawns = list() switch(dispatch_type) if(HIJACK_SYNDIE) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops] pack.generate(pick_n_take(empty_shuttle_turfs)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate/ranged/infiltrator) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate/ranged/infiltrator) if(prob(75)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate/ranged/infiltrator) if(prob(50)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate/ranged/infiltrator) if(RUSKY_PARTY) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/service/party] pack.generate(pick_n_take(empty_shuttle_turfs)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian/ranged) //drops a mateba shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear/russian) if(prob(75)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) if(prob(50)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear/russian) if(SPIDER_GIFT) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops] pack.generate(pick_n_take(empty_shuttle_turfs)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider/nurse) if(prob(50)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider/hunter) var/turf/T = pick_n_take(empty_shuttle_turfs) new /obj/effect/decal/remains/human(T) new /obj/item/clothing/shoes/space_ninja(T) new /obj/item/clothing/mask/balaclava(T) for(var/i in 1 to 5) T = pick_n_take(empty_shuttle_turfs) new /obj/structure/spider/stickyweb(T) if(ANTIDOTE_NEEDED) var/obj/effect/mob_spawn/human/corpse/assistant/infected_assistant = pick(/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection, /obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection, /obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection) var/turf/T for(var/i=0, i<10, i++) if(prob(15)) shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle) else if(prob(15)) shuttle_spawns.Add(/obj/item/reagent_containers/syringe) else if(prob(25)) shuttle_spawns.Add(/obj/item/shard) T = pick_n_take(empty_shuttle_turfs) new infected_assistant(T) shuttle_spawns.Add(/obj/structure/closet/crate) shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle/pierrot_throat) shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle/magnitis) if(DEPARTMENT_RESUPPLY) var/list/crate_types = list( /datum/supply_pack/emergency/equipment, /datum/supply_pack/security/supplies, /datum/supply_pack/organic/food, /datum/supply_pack/emergency/weedcontrol, /datum/supply_pack/engineering/tools, /datum/supply_pack/engineering/engiequipment, /datum/supply_pack/science/robotics, /datum/supply_pack/science/plasma, /datum/supply_pack/medical/supplies ) for(var/crate in crate_types) var/datum/supply_pack/pack = SSshuttle.supply_packs[crate] pack.generate(pick_n_take(empty_shuttle_turfs)) for(var/i in 1 to 5) var/decal = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil) new decal(pick_n_take(empty_shuttle_turfs)) if(PIZZA_DELIVERY) var/naughtypizza = list(/obj/item/pizzabox/bomb,/obj/item/pizzabox/margherita/robo) //oh look another blaklist, 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) shuttle_spawns.Add(pick(prob(5) ? naughtypizza : nicepizza)) if(ITS_HIP_TO) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/hydroponics/beekeeping_fullkit] pack.generate(pick_n_take(empty_shuttle_turfs)) shuttle_spawns.Add(/obj/effect/mob_spawn/human/corpse/bee_terrorist) shuttle_spawns.Add(/obj/effect/mob_spawn/human/corpse/cargo_tech) shuttle_spawns.Add(/obj/effect/mob_spawn/human/corpse/cargo_tech) shuttle_spawns.Add(/obj/effect/mob_spawn/human/corpse/nanotrasensoldier) shuttle_spawns.Add(/obj/item/gun/ballistic/automatic/pistol/no_mag) shuttle_spawns.Add(/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag) shuttle_spawns.Add(/obj/item/honey_frame) shuttle_spawns.Add(/obj/item/honey_frame) shuttle_spawns.Add(/obj/item/honey_frame) shuttle_spawns.Add(/obj/structure/beebox/unwrenched) shuttle_spawns.Add(/obj/item/queen_bee/bought) shuttle_spawns.Add(/obj/structure/closet/crate/hydroponics) for(var/i in 1 to 8) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/bees/toxin) for(var/i in 1 to 5) var/decal = pick(/obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/insectguts) new decal(pick_n_take(empty_shuttle_turfs)) for(var/i in 1 to 10) var/casing = /obj/item/ammo_casing/spent new casing(pick_n_take(empty_shuttle_turfs)) if(MY_GOD_JC) shuttle_spawns.Add(/obj/machinery/syndicatebomb/shuttle_loan) if(prob(95)) shuttle_spawns.Add(/obj/item/paper/fluff/cargo/bomb) else shuttle_spawns.Add(/obj/item/paper/fluff/cargo/bomb/allyourbase) if(DELTA_CRATES) //Delta crates can stack on eacher, and are basicly a 1/3/5 bombs for(var/i in 1 to 7) //7 seems fair shuttle_spawns.Add(/obj/structure/closet/crate/secure/loot) for(var/i in 1 to 5) var/turf/T = pick_n_take(empty_shuttle_turfs) new /obj/structure/spider/stickyweb(T) new /obj/effect/decal/cleanable/ash(T) var/false_positive = 0 while(shuttle_spawns.len && empty_shuttle_turfs.len) var/turf/T = pick_n_take(empty_shuttle_turfs) if(T.contents.len && false_positive < 5) false_positive++ continue var/spawn_type = pick_n_take(shuttle_spawns) new spawn_type(T) //items that appear only in shuttle loan events /obj/item/storage/belt/fannypack/yellow/bee_terrorist/PopulateContents() new /obj/item/grenade/plastic/c4 (src) new /obj/item/reagent_containers/pill/cyanide(src) new /obj/item/grenade/chem_grenade/facid(src) /obj/item/paper/fluff/bee_objectives name = "Objectives of a Bee Liberation Front Operative" info = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
Objective #2. Escape alive. Failed." /obj/machinery/syndicatebomb/shuttle_loan/Initialize() . = ..() setAnchored(TRUE) timer_set = rand(480, 600) //once the supply shuttle docks (after 5 minutes travel time), players have between 3-5 minutes to defuse the bomb activate() update_icon() /obj/item/paper/fluff/cargo/bomb name = "hastly scribbled note" info = "GOOD LUCK!" /obj/item/paper/fluff/cargo/bomb/allyourbase info = "Somebody set us up the bomb!" #undef HIJACK_SYNDIE #undef RUSKY_PARTY #undef SPIDER_GIFT #undef DEPARTMENT_RESUPPLY #undef ANTIDOTE_NEEDED #undef PIZZA_DELIVERY #undef ITS_HIP_TO #undef MY_GOD_JC #undef DELTA_CRATES