#define HIJACK_SYNDIE 1 #define RUSKY_PARTY 2 #define SPIDER_GIFT 3 #define DEPARTMENT_RESUPPLY 4 #define ANTIDOTE_NEEDED 5 #define PIZZA_DELIVERY 6 /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) /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() thanks_msg = "The cargo shuttle should return in 5 minutes." bonus_points = 0 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() /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()]" /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) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) if(prob(75)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) if(prob(50)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) 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) shuttle_spawns.Add(/obj/item/pizzabox/margherita) shuttle_spawns.Add(/obj/item/pizzabox/margherita) shuttle_spawns.Add(/obj/item/pizzabox/meat) shuttle_spawns.Add(/obj/item/pizzabox/meat) shuttle_spawns.Add(/obj/item/pizzabox/vegetable) if(prob(10)) shuttle_spawns.Add(/obj/item/pizzabox/bomb) else shuttle_spawns.Add(/obj/item/pizzabox/margherita) 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) #undef HIJACK_SYNDIE #undef RUSKY_PARTY #undef SPIDER_GIFT #undef DEPARTMENT_RESUPPLY #undef ANTIDOTE_NEEDED #undef PIZZA_DELIVERY