//Normal map defs #define Z_LEVEL_SURFACE_LOW 1 #define Z_LEVEL_SURFACE_MID 2 #define Z_LEVEL_SURFACE_HIGH 3 #define Z_LEVEL_TRANSIT 4 #define Z_LEVEL_SPACE_LOW 5 #define Z_LEVEL_SPACE_MID 6 #define Z_LEVEL_SPACE_HIGH 7 #define Z_LEVEL_SURFACE_MINE 8 #define Z_LEVEL_SOLARS 9 #define Z_LEVEL_MISC 10 #define Z_LEVEL_UNDERDARK 11 #define Z_LEVEL_PLAINS 12 #define Z_LEVEL_OFFMAP1 13 #define Z_LEVEL_OFFMAP2 14 #define Z_LEVEL_ROGUEMINE_1 15 #define Z_LEVEL_ROGUEMINE_2 16 #define Z_LEVEL_ROGUEMINE_3 17 #define Z_LEVEL_ROGUEMINE_4 18 #define Z_LEVEL_BEACH 19 #define Z_LEVEL_BEACH_CAVE 20 #define Z_LEVEL_AEROSTAT 21 #define Z_LEVEL_AEROSTAT_SURFACE 22 #define Z_LEVEL_DEBRISFIELD 23 #define Z_LEVEL_GUTTERSITE 24 #define Z_LEVEL_FUELDEPOT 25 #define Z_LEVEL_GATEWAY 26 //Camera networks #define NETWORK_TETHER "Tether" #define NETWORK_TCOMMS "Telecommunications" //Using different from Polaris one for better name #define NETWORK_OUTSIDE "Outside" #define NETWORK_EXPLORATION "Exploration" #define NETWORK_XENOBIO "Xenobiology" /datum/map/tether/New() ..() var/choice = pickweight(list( "title" = 10, "tether" = 50, "tether_night" = 50, "tether2_night" = 50, "tether2_dog" = 1, "tether2_love" = 1 )) if(choice) lobby_screens = list(choice) /datum/map/tether name = "Virgo" full_name = "NSB Adephagia" path = "tether" use_overmap = TRUE overmap_z = Z_LEVEL_MISC overmap_size = 35 overmap_event_areas = 34 usable_email_tlds = list("virgo.nt") zlevel_datum_type = /datum/map_z_level/tether lobby_icon = 'icons/misc/title_vr.dmi' lobby_screens = list("tether2_night") id_hud_icons = 'icons/mob/hud_jobs_vr.dmi' holomap_smoosh = list(list( Z_LEVEL_SURFACE_LOW, Z_LEVEL_SURFACE_MID, Z_LEVEL_SURFACE_HIGH, Z_LEVEL_SPACE_LOW, Z_LEVEL_SPACE_MID, Z_LEVEL_SPACE_HIGH)) station_name = "NSB Adephagia" station_short = "Tether" dock_name = "Virgo-3B Colony" dock_type = "surface" boss_name = "Central Command" boss_short = "CentCom" company_name = "NanoTrasen" company_short = "NT" starsys_name = "Virgo-Erigone" shuttle_docked_message = "The scheduled Orange Line tram to the %dock_name% has arrived. It will depart in approximately %ETD%." shuttle_leaving_dock = "The Orange Line tram has left the station. Estimate %ETA% until the tram arrives at %dock_name%." shuttle_called_message = "A scheduled crew transfer to the %dock_name% is occuring. The tram will be arriving shortly. Those departing should proceed to the Orange Line tram station within %ETA%." shuttle_recall_message = "The scheduled crew transfer has been cancelled." shuttle_name = "Automated Tram" emergency_shuttle_docked_message = "The evacuation tram has arrived at the tram station. You have approximately %ETD% to board the tram." emergency_shuttle_leaving_dock = "The emergency tram has left the station. Estimate %ETA% until the tram arrives at %dock_name%." emergency_shuttle_called_message = "An emergency evacuation has begun, and an off-schedule tram has been called. It will arrive at the tram station in approximately %ETA%." emergency_shuttle_recall_message = "The evacuation tram has been recalled." station_networks = list( NETWORK_CARGO, NETWORK_CIRCUITS, NETWORK_CIVILIAN, NETWORK_COMMAND, NETWORK_ENGINE, NETWORK_ENGINEERING, NETWORK_EXPLORATION, //NETWORK_DEFAULT, //Is this even used for anything? Robots show up here, but they show up in ROBOTS network too, NETWORK_MEDICAL, NETWORK_MINE, NETWORK_OUTSIDE, NETWORK_RESEARCH, NETWORK_RESEARCH_OUTPOST, NETWORK_ROBOTS, NETWORK_SECURITY, NETWORK_TCOMMS, NETWORK_TETHER ) secondary_networks = list( NETWORK_ERT, NETWORK_MERCENARY, NETWORK_THUNDER, NETWORK_COMMUNICATORS, NETWORK_ALARM_ATMOS, NETWORK_ALARM_POWER, NETWORK_ALARM_FIRE, NETWORK_TALON_HELMETS, NETWORK_TALON_SHIP ) bot_patrolling = FALSE allowed_spawns = list("Tram Station","Gateway","Cryogenic Storage","Cyborg Storage","ITV Talon Cryo") spawnpoint_died = /datum/spawnpoint/tram spawnpoint_left = /datum/spawnpoint/tram spawnpoint_stayed = /datum/spawnpoint/cryo meteor_strike_areas = list(/area/tether/surfacebase/outside/outside3) default_skybox = /datum/skybox_settings/tether unit_test_exempt_areas = list( /area/tether/surfacebase/outside/outside1, /area/tether/elevator, /area/vacant/vacant_site, /area/vacant/vacant_site/east, /area/crew_quarters/sleep/Dorm_1/holo, /area/crew_quarters/sleep/Dorm_3/holo, /area/crew_quarters/sleep/Dorm_5/holo, /area/crew_quarters/sleep/Dorm_7/holo, /area/looking_glass/lg_1, /area/rnd/miscellaneous_lab ) //TFF 5/4/20 - Mining Ops move, airlock path change unit_test_exempt_from_atmos = list( /area/engineering/atmos_intake, // Outside, /area/rnd/external, // Outside, /area/tether/surfacebase/emergency_storage/rnd, /area/tether/surfacebase/emergency_storage/atrium, /area/tether/surfacebase/lowernortheva, // it airlock /area/tether/surfacebase/lowernortheva/external, //it outside /area/tether/surfacebase/security/gasstorage) //it maint lateload_z_levels = list( list("Tether - Misc","Tether - Underdark","Tether - Plains"), //Stock Tether lateload maps list("Offmap Ship - Talon Z1","Offmap Ship - Talon Z2"), list("Asteroid Belt 1","Asteroid Belt 2","Asteroid Belt 3","Asteroid Belt 4"), list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"), list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface"), list("Debris Field - Z1 Space"), list("Gutter Site - Z1 Space"), list("Fuel Depot - Z1 Space") ) lateload_single_pick = list( list("Snow Outpost"), list("Carp Farm"), list("Snow Field"), list("Listening Post") ) ai_shell_restricted = TRUE ai_shell_allowed_levels = list( Z_LEVEL_SURFACE_LOW, Z_LEVEL_SURFACE_MID, Z_LEVEL_SURFACE_HIGH, Z_LEVEL_TRANSIT, Z_LEVEL_SPACE_LOW, Z_LEVEL_SPACE_MID, Z_LEVEL_SPACE_HIGH, Z_LEVEL_SURFACE_MINE, Z_LEVEL_SOLARS, Z_LEVEL_MISC, Z_LEVEL_BEACH ) belter_docked_z = list(Z_LEVEL_SPACE_HIGH) belter_transit_z = list(Z_LEVEL_MISC) belter_belt_z = list(Z_LEVEL_ROGUEMINE_1, Z_LEVEL_ROGUEMINE_2, Z_LEVEL_ROGUEMINE_3, Z_LEVEL_ROGUEMINE_4) //TFF 16/4/20 - mining outpost shuttle defines mining_station_z = list(Z_LEVEL_SPACE_HIGH) mining_outpost_z = list(Z_LEVEL_SURFACE_MINE) lateload_single_pick = null //Nothing right now. planet_datums_to_make = list(/datum/planet/virgo3b, /datum/planet/virgo4) /datum/map/tether/perform_map_generation() new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SURFACE_MINE, world.maxx, world.maxy) // Create the mining Z-level. new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_SURFACE_MINE, 64, 64) // Create the mining ore distribution map. new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SOLARS, world.maxx, world.maxy) // Create the mining Z-level. new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_SOLARS, 64, 64) // Create the mining ore distribution map. return 1 /datum/skybox_settings/tether icon_state = "space5" use_stars = FALSE /datum/planet/virgo3b expected_z_levels = list( Z_LEVEL_SURFACE_LOW, Z_LEVEL_SURFACE_MID, Z_LEVEL_SURFACE_HIGH, Z_LEVEL_SURFACE_MINE, Z_LEVEL_SOLARS, Z_LEVEL_PLAINS ) /datum/planet/virgo4 expected_z_levels = list( Z_LEVEL_BEACH ) // Overmap represetation of tether /obj/effect/overmap/visitable/sector/virgo3b name = "Virgo 3B" desc = "Full of phoron, and home to the NSB Adephagia, where you can dock and refuel your craft." scanner_desc = @{"[i]Registration[/i]: NSB Adephagia [i]Class[/i]: Installation [i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF [b]Notice[/b]: NanoTrasen Base, authorized personnel only"} base = 1 icon_state = "globe" color = "#d35b5b" initial_generic_waypoints = list( "tether_dockarm_d1a1", //Bottom left, "tether_dockarm_d1a2", //Top left, "tether_dockarm_d1a3", //Left on inside, "tether_dockarm_d2a1", //Bottom right, "tether_dockarm_d2a2", //Top right, "tether_dockarm_d1l", //End of left arm, "tether_dockarm_d2l", //End of right arm, "tether_space_SE", //station1, bottom right of space, "tether_space_NE", //station1, top right of space, "tether_space_SW", //station3, bottom left of space, "tether_excursion_hangar", //Excursion shuttle hangar, "tether_medivac_dock", //Medical shuttle dock, "tourbus_dock" //Surface large hangar ) //Despite not being in the multi-z complex, these levels are part of the overmap sector extra_z_levels = list( Z_LEVEL_SURFACE_MINE, Z_LEVEL_SOLARS, Z_LEVEL_PLAINS, Z_LEVEL_UNDERDARK ) /obj/effect/overmap/visitable/sector/virgo3b/Crossed(var/atom/movable/AM) . = ..() announce_atc(AM,going = FALSE) /obj/effect/overmap/visitable/sector/virgo3b/Uncrossed(var/atom/movable/AM) . = ..() announce_atc(AM,going = TRUE) /obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels() return list(Z_LEVEL_SPACE_LOW, Z_LEVEL_SPACE_MID, Z_LEVEL_SPACE_HIGH) /obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE) var/message = "Sensor contact for vessel '[AM.name]' has [going ? "left" : "entered"] ATC control area." //For landables, we need to see if their shuttle is cloaked if(istype(AM, /obj/effect/overmap/visitable/ship/landable)) var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle] if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked atc.msg(message) //For ships, it's safe to assume they're big enough to not be sneaky else if(istype(AM, /obj/effect/overmap/visitable/ship)) atc.msg(message) // For making the 6-in-1 holomap, we calculate some offsets #define TETHER_MAP_SIZE 140 // Width and height of compiled in tether z levels. #define TETHER_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns #define TETHER_HOLOMAP_MARGIN_X ((HOLOMAP_ICON_SIZE - (2*TETHER_MAP_SIZE) - TETHER_HOLOMAP_CENTER_GUTTER) / 2) // 80 #define TETHER_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (3*TETHER_MAP_SIZE)) / 2) // 30 // We have a bunch of stuff common to the station z levels /datum/map_z_level/tether/station flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_XENOARCH_EXEMPT holomap_legend_x = 220 holomap_legend_y = 160 /datum/map_z_level/tether/station/surface_low z = Z_LEVEL_SURFACE_LOW name = "Surface 1" flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_SEALED|MAP_LEVEL_XENOARCH_EXEMPT base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b holomap_offset_x = TETHER_HOLOMAP_MARGIN_X holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*0 /datum/map_z_level/tether/station/surface_mid z = Z_LEVEL_SURFACE_MID name = "Surface 2" flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_SEALED|MAP_LEVEL_XENOARCH_EXEMPT base_turf = /turf/simulated/open holomap_offset_x = TETHER_HOLOMAP_MARGIN_X holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*1 /datum/map_z_level/tether/station/surface_high z = Z_LEVEL_SURFACE_HIGH name = "Surface 3" flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_SEALED|MAP_LEVEL_XENOARCH_EXEMPT base_turf = /turf/simulated/open holomap_offset_x = TETHER_HOLOMAP_MARGIN_X holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*2 /datum/map_z_level/tether/transit z = Z_LEVEL_TRANSIT name = "Transit" flags = MAP_LEVEL_STATION|MAP_LEVEL_SEALED|MAP_LEVEL_PLAYER|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT /datum/map_z_level/tether/station/space_low z = Z_LEVEL_SPACE_LOW name = "Asteroid 1" base_turf = /turf/space transit_chance = 33 holomap_offset_x = HOLOMAP_ICON_SIZE - TETHER_HOLOMAP_MARGIN_X - TETHER_MAP_SIZE holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*0 /datum/map_z_level/tether/station/space_mid z = Z_LEVEL_SPACE_MID name = "Asteroid 2" base_turf = /turf/simulated/open transit_chance = 33 holomap_offset_x = HOLOMAP_ICON_SIZE - TETHER_HOLOMAP_MARGIN_X - TETHER_MAP_SIZE holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*1 /datum/map_z_level/tether/station/space_high z = Z_LEVEL_SPACE_HIGH name = "Asteroid 3" base_turf = /turf/simulated/open transit_chance = 33 holomap_offset_x = HOLOMAP_ICON_SIZE - TETHER_HOLOMAP_MARGIN_X - TETHER_MAP_SIZE holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*2 /datum/map_z_level/tether/mine z = Z_LEVEL_SURFACE_MINE name = "Mining Outpost" flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b /datum/map_z_level/tether/solars z = Z_LEVEL_SOLARS name = "Solar Field" flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b