diff --git a/code/modules/events/drone_pod_vr.dm b/code/modules/events/drone_pod_vr.dm new file mode 100644 index 0000000000..45ce01684b --- /dev/null +++ b/code/modules/events/drone_pod_vr.dm @@ -0,0 +1,31 @@ +/datum/event/drone_pod_drop + announceWhen = 1 + var/turf/land_target = null + var/attempt_amount = 10 + +/datum/event/drone_pod_drop/setup() + startWhen = rand(8,15) + if(LAZYLEN(using_map.meteor_strike_areas)) + var/turf/potential_target = null + for(var/i=1, i <= attempt_amount, i++) + potential_target = pick(get_area_turfs(pick(using_map.meteor_strike_areas))) + if(potential_target.x < 7 || potential_target.x > world.maxx-7 || potential_target.y < 7 || potential_target.y > world.maxy-7) + continue + else + land_target = potential_target + break + + if(!land_target) + kill() + +/datum/event/meteor_strike/announce() + command_announcement.Announce("An unidentified drone pod has been detected landing near the surface facilty. Open and examine at your own risk.", "NanoTrasen Orbital Monitoring") + +/datum/event/drone_pod_drop/start() + if(istype(land_target, /turf/simulated/open)) + while(istype(land_target, /turf/simulated/open)) + land_target = GetBelow(land_target) + if(!land_target) + kill() + + new /datum/random_map/droppod/supply(null, land_target.x-2, land_target.y-2, land_target.z, supplied_drops = list(/obj/structure/ghost_pod/manual/lost_drone)) \ No newline at end of file diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index 6f5e8dada2..3cb0243e66 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -81,6 +81,7 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 30, list(ASSIGNMENT_SECURITY = 30), 1), //Evil grubs that drain station power slightly new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(ASSIGNMENT_SCIENTIST = 40), 1) ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index 029798c96d..ca516f15bb 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -102,6 +102,8 @@ spawnpoint_stayed = /datum/spawnpoint/cryo meteor_strike_areas = list(/area/tether/surfacebase/outside/outside3) + drop_pod_allowed_z = list(Z_LEVEL_SURFACE_HIGH) + unit_test_exempt_areas = list( /area/tether/surfacebase/outside/outside1, diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index fe0ef3972b..833f733e5c 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -59,6 +59,7 @@ var/list/all_maps = list() var/list/holomap_legend_x = list() var/list/holomap_legend_y = list() var/list/meteor_strike_areas // VOREStation Edit - Areas meteor strikes may choose to hit. + var/list/drop_pod_allowed_z // VOREStation Edit - Which z-levels to target with droppods? var/ai_shell_restricted = FALSE //VOREStation Addition - are there z-levels restricted? var/ai_shell_allowed_levels = list() //VOREStation Addition - which z-levels ARE we allowed to visit? diff --git a/vorestation.dme b/vorestation.dme index 1f4cc0a7cf..afaf1e4bff 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1851,6 +1851,7 @@ #include "code\modules\events\carp_migration.dm" #include "code\modules\events\comms_blackout.dm" #include "code\modules\events\communications_blackout.dm" +#include "code\modules\events\drone_pod_vr.dm" #include "code\modules\events\dust.dm" #include "code\modules\events\electrical_storm.dm" #include "code\modules\events\event.dm"