Ha ha, I have no idea what I'm doing.

This commit is contained in:
Captain277
2021-09-12 11:39:24 -07:00
parent 2118e45afc
commit 4ee146cd37
20 changed files with 334 additions and 31 deletions

View File

@@ -127,8 +127,10 @@
// /turf signals // /turf signals
#define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) #define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps)
#define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" //from base of atom/has_gravity(): (atom/asker, list/forced_gravities) #define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" //from base of atom/has_gravity(): (atom/asker, list/forced_gravities)
#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" //from base of turf/New(): (turf/source, direction)
*/ */
#define COMSIG_TURF_MULTIZ_DEL "turf_multiz_del"
///from base of turf/multiz_turf_new: (turf/source, direction)
#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new"
// /atom/movable signals // /atom/movable signals
#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" //from base of atom/movable/Moved(): (/atom) #define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" //from base of atom/movable/Moved(): (/atom)

View File

@@ -16,3 +16,9 @@ GLOBAL_VAR(bible_icon_state)
GLOBAL_VAR(bible_item_state) GLOBAL_VAR(bible_item_state)
GLOBAL_VAR(holy_weapon_type) GLOBAL_VAR(holy_weapon_type)
GLOBAL_VAR(holy_armor_type) GLOBAL_VAR(holy_armor_type)
//Vore Port
GLOBAL_LIST_EMPTY(error_last_seen)
GLOBAL_LIST_EMPTY(error_cooldown)
GLOBAL_DATUM_INIT(destroyed_event, /decl/observ/destroyed, new())

View File

@@ -0,0 +1,84 @@
/datum/element/turf_z_transparency
var/show_bottom_level = FALSE
///This proc sets up the signals to handle updating viscontents when turfs above/below update. Handle plane and layer here too so that they don't cover other obs/turfs in Dream Maker
/datum/element/turf_z_transparency/Attach(datum/target, show_bottom_level = TRUE)
. = ..()
if(!isturf(target))
return ELEMENT_INCOMPATIBLE
var/turf/our_turf = target
src.show_bottom_level = show_bottom_level
our_turf.plane = OPENSPACE_PLANE
//our_turf.layer = OPENSPACE_LAYER
RegisterSignal(target, COMSIG_TURF_MULTIZ_DEL, .proc/on_multiz_turf_del, override = TRUE)
RegisterSignal(target, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_turf_new, override = TRUE)
update_multiz(our_turf, TRUE, TRUE)
/datum/element/turf_z_transparency/Detach(datum/source)
. = ..()
var/turf/our_turf = source
our_turf.vis_contents.len = 0
UnregisterSignal(our_turf, COMSIG_TURF_MULTIZ_DEL)
UnregisterSignal(our_turf, COMSIG_TURF_MULTIZ_NEW)
///Updates the viscontents or underlays below this tile.
/datum/element/turf_z_transparency/proc/update_multiz(turf/our_turf, prune_on_fail = FALSE, init = FALSE)
var/turf/below_turf = GetBelow(our_turf)
if(!below_turf)
our_turf.vis_contents.len = 0
if(!show_bottom_level(our_turf) && prune_on_fail) //If we cant show whats below, and we prune on fail, change the turf to plating as a fallback
our_turf.ChangeTurf(/turf/simulated/floor/plating)
return FALSE
else
return TRUE
if(init)
below_turf?.update_icon() // So the 'ceiling-less' overlay gets added.
our_turf.vis_contents += below_turf
if(is_blocked_turf(our_turf)) //Show girders below closed turfs
var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = TURF_LAYER-0.01)
girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR
our_turf.underlays += girder_underlay
var/mutable_appearance/plating_underlay = mutable_appearance('icons/turf/floors.dmi', "plating", layer = TURF_LAYER-0.02)
plating_underlay = RESET_ALPHA | RESET_COLOR
our_turf.underlays += plating_underlay
return TRUE
/datum/element/turf_z_transparency/proc/on_multiz_turf_del(turf/our_turf, turf/below_turf, dir)
if(dir != DOWN)
return
update_multiz(our_turf)
/datum/element/turf_z_transparency/proc/on_multiz_turf_new(turf/our_turf, turf/below_turf, dir)
if(dir != DOWN)
return
update_multiz(our_turf)
///Called when there is no real turf below this turf
/datum/element/turf_z_transparency/proc/show_bottom_level(turf/our_turf)
if(!show_bottom_level)
return FALSE
var/turf/path = get_base_turf_by_area(our_turf) || /turf/space
if(!ispath(path))
path = text2path(path)
if(!ispath(path))
warning("Z-level [our_turf] has invalid baseturf '[get_base_turf_by_area(our_turf)]' in area '[get_area(our_turf)]'")
path = /turf/space
var/do_plane = ispath(path, /turf/space) ? SPACE_PLANE : null
var/do_state = ispath(path, /turf/space) ? "white" : initial(path.icon_state)
var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), do_state, layer = TURF_LAYER-0.02, plane = do_plane)
underlay_appearance.appearance_flags = RESET_ALPHA | RESET_COLOR
our_turf.underlays += underlay_appearance
return TRUE

View File

@@ -0,0 +1,15 @@
// Observer Pattern Implementation: Destroyed
// Registration type: /datum
//
// Raised when: A /datum instance is destroyed.
//
// Arguments that the called proc should expect:
// /datum/destroyed_instance: The instance that was destroyed.
/decl/observ/destroyed
name = "Destroyed"
/datum/Destroy()
if(GLOB.destroyed_event)
GLOB.destroyed_event.raise_event(src)
. = ..()

View File

@@ -15,7 +15,7 @@
. = ..() . = ..()
if(new_partner) if(new_partner)
pair(new_partner) pair(new_partner)
/obj/effect/overmap/bluespace_rift/proc/pair(var/obj/effect/overmap/bluespace_rift/new_partner) /obj/effect/overmap/bluespace_rift/proc/pair(var/obj/effect/overmap/bluespace_rift/new_partner)
if(istype(new_partner)) if(istype(new_partner))
partner = new_partner partner = new_partner

View File

@@ -13,7 +13,7 @@
attack_verb = list("attacked", "bonked", "hit") attack_verb = list("attacked", "bonked", "hit")
var/min_name_len = 4 // Refuse if shuttle tag is shorter than this. var/min_name_len = 4 // Refuse if shuttle tag is shorter than this.
var/max_name_len = 32 // Refuse if shuttle tag is longer than this. var/max_name_len = 32 // Refuse if shuttle tag is longer than this.
var/max_area_turfs = 256 // Refuse if area has more than this many turfs. var/max_area_turfs = 140 // Refuse if area has more than this many turfs.
/obj/item/champagne/afterattack(var/atom/A, mob/user as mob, proximity) /obj/item/champagne/afterattack(var/atom/A, mob/user as mob, proximity)
if(!proximity) if(!proximity)

View File

@@ -19,7 +19,7 @@
. = ..() . = ..()
if(prob(50)) if(prob(50))
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(!isspace(T) && !istype(T, /turf/simulated/floor/carpet)) if(!istype(T, /turf/space) && !istype(T, /turf/simulated/floor/carpet))
playsound(T, pick(move_sounds), 50, 1) playsound(T, pick(move_sounds), 50, 1)
/obj/structure/ship_munition/disperser_charge/fire /obj/structure/ship_munition/disperser_charge/fire

View File

@@ -14,6 +14,7 @@
var/skybox_pixel_x //Shift from lower left corner of skybox var/skybox_pixel_x //Shift from lower left corner of skybox
var/skybox_pixel_y //Shift from lower left corner of skybox var/skybox_pixel_y //Shift from lower left corner of skybox
var/image/cached_skybox_image //Cachey var/image/cached_skybox_image //Cachey
var/image/real_appearance
//Overlay of how this object should look on other skyboxes //Overlay of how this object should look on other skyboxes
/obj/effect/overmap/proc/get_skybox_representation() /obj/effect/overmap/proc/get_skybox_representation()

View File

@@ -1,4 +1,3 @@
//=================================================================================== //===================================================================================
//Overmap object representing zlevel(s) //Overmap object representing zlevel(s)
//=================================================================================== //===================================================================================
@@ -7,33 +6,45 @@
scannable = TRUE scannable = TRUE
scanner_desc = "!! No Data Available !!" scanner_desc = "!! No Data Available !!"
icon_state = "generic"
/// Name prior to being scanned if !known
var/unknown_name = "unknown sector"
/// Icon_state prior to being scanned if !known
var/unknown_state = "field"
var/list/map_z = list() var/list/map_z = list()
var/list/extra_z_levels // If you need to manually insist that these z-levels are part of this sector, for things like edge-of-map step trigger transitions rather than multi-z complexes var/list/extra_z_levels //if you need to manually insist that these z-levels are part of this sector, for things like edge-of-map step trigger transitions rather than multi-z complexes
var/list/initial_generic_waypoints // Store landmark_tag of landmarks that should be added to the actual lists below on init. var/list/initial_generic_waypoints //store landmark_tag of landmarks that should be added to the actual lists below on init.
var/list/initial_restricted_waypoints // For use with non-automatic landmarks (automatic ones add themselves). var/list/initial_restricted_waypoints //For use with non-automatic landmarks (automatic ones add themselves).
var/list/generic_waypoints = list() // Waypoints that any shuttle can use var/list/generic_waypoints = list() //waypoints that any shuttle can use
var/list/restricted_waypoints = list() // Waypoints for specific shuttles var/list/restricted_waypoints = list() //waypoints for specific shuttles
var/docking_codes var/docking_codes
var/start_x // Coordinates for self placing var/start_x //Coordinates for self placing
var/start_y // Will use random values if unset var/start_y //will use random values if unset
var/base = 0 // Starting sector, counts as station_levels var/base = 0 //starting sector, counts as station_levels
var/in_space = 1 // Can be accessed via lucky EVA var/in_space = 1 //can be accessed via lucky EVA
var/hide_from_reports = FALSE var/hide_from_reports = FALSE
var/has_distress_beacon var/has_distress_beacon
var/list/levels_for_distress
var/list/unowned_areas // areas we don't own despite them being present on our z
/obj/effect/overmap/visitable/Initialize(mapload) /obj/effect/overmap/visitable/Initialize()
. = ..() . = ..()
if(. == INITIALIZE_HINT_QDEL) if(. == INITIALIZE_HINT_QDEL)
return return
find_z_levels() // This populates map_z and assigns z levels to the ship. find_z_levels() // This populates map_z and assigns z levels to the ship.
register_z_levels() // This makes external calls to update global z level information. register_z_levels() // This makes external calls to update global z level information.
if(!GLOB.using_map.overmap_z)
build_overmap()
start_x = start_x || rand(OVERMAP_EDGE, GLOB.using_map.overmap_size - OVERMAP_EDGE) start_x = start_x || rand(OVERMAP_EDGE, GLOB.using_map.overmap_size - OVERMAP_EDGE)
start_y = start_y || rand(OVERMAP_EDGE, GLOB.using_map.overmap_size - OVERMAP_EDGE) start_y = start_y || rand(OVERMAP_EDGE, GLOB.using_map.overmap_size - OVERMAP_EDGE)
@@ -44,10 +55,29 @@
testing("Located sector \"[name]\" at [start_x],[start_y], containing Z [english_list(map_z)]") testing("Located sector \"[name]\" at [start_x],[start_y], containing Z [english_list(map_z)]")
LAZYADD(SSshuttle.sectors_to_initialize, src) // Queued for further init. Will populate the waypoint lists; waypoints not spawned yet will be added in as they spawn. LAZYADD(SSshuttle.sectors_to_initialize, src) //Queued for further init. Will populate the waypoint lists; waypoints not spawned yet will be added in as they spawn.
SSshuttle.process_init_queues() SSshuttle.process_init_queues()
// This is called later in the init order by SSshuttle to populate sector objects. Importantly for subtypes, shuttles will be created by then. if(known)
plane = PLANE_LIGHTING_ABOVE
for(var/obj/machinery/computer/ship/helm/H in global.machines)
H.get_known_sectors()
else
real_appearance = image(icon, src, icon_state)
real_appearance.override = TRUE
name = unknown_name
icon_state = unknown_state
color = null
desc = "Scan this to find out more information."
// You generally shouldn't destroy these.
/obj/effect/overmap/visitable/Destroy()
testing("Deleting [src] overmap sector at [x],[y]")
unregister_z_levels()
return ..()
//This is called later in the init order by SSshuttles to populate sector objects. Importantly for subtypes, shuttles will be created by then.
/obj/effect/overmap/visitable/proc/populate_sector_objects() /obj/effect/overmap/visitable/proc/populate_sector_objects()
/obj/effect/overmap/visitable/proc/get_areas() /obj/effect/overmap/visitable/proc/get_areas()
@@ -57,7 +87,7 @@
. += A . += A
/obj/effect/overmap/visitable/proc/find_z_levels() /obj/effect/overmap/visitable/proc/find_z_levels()
if(!LAZYLEN(map_z)) // If map_z is already populated use it as-is, otherwise start with connected z-levels. if(!LAZYLEN(map_z)) // If map_z is already populated use it as-is, otherwise start with connected z-levels.
map_z = GetConnectedZlevels(z) map_z = GetConnectedZlevels(z)
if(LAZYLEN(extra_z_levels)) if(LAZYLEN(extra_z_levels))
map_z |= extra_z_levels map_z |= extra_z_levels
@@ -69,10 +99,34 @@
GLOB.using_map.player_levels |= map_z GLOB.using_map.player_levels |= map_z
if(!in_space) if(!in_space)
GLOB.using_map.sealed_levels |= map_z GLOB.using_map.sealed_levels |= map_z
/* VOREStation Removal - We have a map system that does this already.
if(base) if(base)
GLOB.using_map.station_levels |= map_z global.using_map.station_levels |= map_z
GLOB.using_map.contact_levels |= map_z global.using_map.contact_levels |= map_z
GLOB.using_map.map_levels |= map_z global.using_map.map_levels |= map_z
*/
/obj/effect/overmap/visitable/proc/unregister_z_levels()
map_sectors -= map_z
GLOB.using_map.player_levels -= map_z
if(!in_space)
GLOB.using_map.sealed_levels -= map_z
/* VOREStation Removal - We have a map system that does this already.
if(base)
global.using_map.station_levels -= map_z
global.using_map.contact_levels -= map_z
global.using_map.map_levels -= map_z
*/
/obj/effect/overmap/visitable/get_scan_data()
if(!known)
known = TRUE
name = initial(name)
icon_state = initial(icon_state)
color = initial(color)
desc = initial(desc)
return ..()
/obj/effect/overmap/visitable/proc/get_space_zlevels() /obj/effect/overmap/visitable/proc/get_space_zlevels()
if(in_space) if(in_space)
@@ -80,12 +134,17 @@
else else
return list() return list()
// Helper for init. //Helper for init.
/obj/effect/overmap/visitable/proc/check_ownership(obj/object) /obj/effect/overmap/visitable/proc/check_ownership(obj/object)
if((object.z in map_z) && !(get_area(object) in SSshuttle.shuttle_areas)) var/area/A = get_area(object)
if(A in SSshuttle.shuttle_areas)
return 0
if(is_type_in_list(A, unowned_areas))
return 0
if(get_z(object) in map_z)
return 1 return 1
// If shuttle_name is false, will add to generic waypoints; otherwise will add to restricted. Does not do checks. //If shuttle_name is false, will add to generic waypoints; otherwise will add to restricted. Does not do checks.
/obj/effect/overmap/visitable/proc/add_landmark(obj/effect/shuttle_landmark/landmark, shuttle_name) /obj/effect/overmap/visitable/proc/add_landmark(obj/effect/shuttle_landmark/landmark, shuttle_name)
landmark.sector_set(src, shuttle_name) landmark.sector_set(src, shuttle_name)
if(shuttle_name) if(shuttle_name)
@@ -110,21 +169,24 @@
for(var/thing in restricted_waypoints[shuttle_name]) for(var/thing in restricted_waypoints[shuttle_name])
.[thing] = name .[thing] = name
/obj/effect/overmap/visitable/proc/generate_skybox() /obj/effect/overmap/visitable/proc/generate_skybox(zlevel)
return return
/obj/effect/overmap/visitable/proc/cleanup()
return FALSE
/obj/effect/overmap/visitable/MouseEntered(location, control, params) /obj/effect/overmap/visitable/MouseEntered(location, control, params)
openToolTip(user = usr, tip_src = src, params = params, title = name) openToolTip(user = usr, tip_src = src, params = params, title = name)
..() ..()
/obj/effect/overmap/visitable/MouseDown() /obj/effect/overmap/visitable/MouseDown()
closeToolTip(usr) // No reason not to, really closeToolTip(usr) //No reason not to, really
..() ..()
/obj/effect/overmap/visitable/MouseExited() /obj/effect/overmap/visitable/MouseExited()
closeToolTip(usr) // No reason not to, really closeToolTip(usr) //No reason not to, really
..() ..()
@@ -132,12 +194,46 @@
name = "generic sector" name = "generic sector"
desc = "Sector with some stuff in it." desc = "Sector with some stuff in it."
icon_state = "sector" icon_state = "sector"
anchored = 1 anchored = TRUE
// Because of the way these are spawned, they will potentially have their invisibility adjusted by the turfs they are mapped on // Because of the way these are spawned, they will potentially have their invisibility adjusted by the turfs they are mapped on
// prior to being moved to the overmap. This blocks that. Use set_invisibility to adjust invisibility as needed instead. // prior to being moved to the overmap. This blocks that. Use set_invisibility to adjust invisibility as needed instead.
/obj/effect/overmap/visitable/sector/hide() /obj/effect/overmap/visitable/sector/hide()
/obj/effect/overmap/visitable/proc/distress(mob/user)
if(has_distress_beacon)
return FALSE
has_distress_beacon = TRUE
admin_chat_message(message = "Overmap panic button hit on z[z] ([name]) by '[user?.ckey || "Unknown"]'", color = "#FF2222") //VOREStation Add
var/message = "This is an automated distress signal from a MIL-DTL-93352-compliant beacon transmitting on [PUB_FREQ*0.1]kHz. \
This beacon was launched from '[initial(name)]'. I can provide this additional information to rescuers: [get_distress_info()]. \
Per the Interplanetary Convention on Space SAR, those receiving this message must attempt rescue, \
or relay the message to those who can. This message will repeat one time in 5 minutes. Thank you for your urgent assistance."
if(!levels_for_distress)
levels_for_distress = list(1)
for(var/zlevel in levels_for_distress)
priority_announcement.Announce(message, new_title = "Automated Distress Signal", new_sound = 'sound/AI/sos.ogg', zlevel = zlevel)
var/image/I = image(icon, icon_state = "distress")
I.plane = PLANE_LIGHTING_ABOVE
I.appearance_flags = KEEP_APART|RESET_TRANSFORM|RESET_COLOR
add_overlay(I)
addtimer(CALLBACK(src, .proc/distress_update), 5 MINUTES)
return TRUE
/obj/effect/overmap/visitable/proc/get_distress_info()
return "\[X:[x], Y:[y]\]"
/obj/effect/overmap/visitable/proc/distress_update()
var/message = "This is the final message from the distress beacon launched from '[initial(name)]'. I can provide this additional information to rescuers: [get_distress_info()]. \
Please render assistance under your obligations per the Interplanetary Convention on Space SAR, or relay this message to a party who can. Thank you for your urgent assistance."
for(var/zlevel in levels_for_distress)
priority_announcement.Announce(message, new_title = "Automated Distress Signal", new_sound = 'sound/AI/sos.ogg', zlevel = zlevel)
/proc/build_overmap() /proc/build_overmap()
if(!GLOB.using_map.use_overmap) if(!GLOB.using_map.use_overmap)
return 1 return 1

View File

@@ -0,0 +1,73 @@
/obj/structure/panic_button
name = "distress beacon trigger"
desc = "WARNING: Will deploy ship's distress beacon and request help. Misuse may result in fines and jail time."
description_info = "Using this device (smashing the glas on harm intent, and then pressing the button) will send a message to people on other z-levels requesting their aid. It may take them a while to come get you, as they'll need to prepare. You should only use this if you really need it."
icon = 'icons/obj/objects_vr.dmi'
icon_state = "panicbutton"
anchored = TRUE
var/glass = TRUE
var/launched = FALSE
// In case we're annihilated by a meteor
/obj/structure/panic_button/Destroy()
if(!launched)
launch()
return ..()
/obj/structure/panic_button/update_icon()
if(launched)
icon_state = "[initial(icon_state)]_launched"
else if(!glass)
icon_state = "[initial(icon_state)]_open"
else
icon_state = "[initial(icon_state)]"
/obj/structure/panic_button/attack_hand(mob/living/user)
if(!istype(user))
return ..()
if(user.incapacitated())
return
// Already launched
if(launched)
to_chat(user, "<span class='warning'>The button is already depressed; the beacon has been launched already.</span>")
// Glass present
else if(glass)
if(user.a_intent == INTENT_HARM)
visible_message("<span class='warning'>smashes the glass on [src]!</span>")
glass = FALSE
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg')
update_icon()
else
visible_message("<span class='notice'>pats [src] in a friendly manner.</span>")
to_chat(user, "<span class='warning'>If you're trying to break the glass, you'll have to hit it harder than that...</span>")
// Must be !glass and !launched
else
user.custom_emote("<span class='warning'>pushes the button on [src]!</span>")
launch(user)
playsound(src, get_sfx("button"))
update_icon()
/obj/structure/panic_button/proc/launch(mob/living/user)
if(launched)
return
launched = TRUE
var/obj/effect/overmap/visitable/S = get_overmap_sector(z)
if(!S)
visible_message("<span class='danger'>Distress button hit on z[z] but that's not an overmap sector...</span>")
return
S.distress(user)
//Kind of pricey, but this is a one-time thing that can't be reused, so I'm not too worried.
var/list/hear_z = GetConnectedZlevels(z) // multiz 'physical' connections only, not crazy overmap connections
var/mapsize = (world.maxx+world.maxy)*0.5
var/turf/us = get_turf(src)
for(var/hz in hear_z)
for(var/mob/M as anything in GLOB.players_by_zlevel[hz])
var/sound/SND = sound('sound/misc/emergency_beacon_launched.ogg') // Inside the loop because playsound_local modifies it for each person, so, need separate instances
var/turf/them = get_turf(M)
var/volume = max(0.20, 1-(get_dist(us,them) / mapsize*0.8))*100
M.playsound_local(get_turf(M), SND, vol = volume)

View File

@@ -261,6 +261,12 @@
/obj/effect/overmap/visitable/ship/proc/get_landed_info() /obj/effect/overmap/visitable/ship/proc/get_landed_info()
return "This ship cannot land." return "This ship cannot land."
/obj/effect/overmap/visitable/ship/get_distress_info()
var/turf/T = get_turf(src) // Usually we're on the turf, but sometimes we might be landed or something.
var/x_to_use = T?.x || "UNK"
var/y_to_use = T?.y || "UNK"
return "\[X:[x_to_use], Y:[y_to_use], VEL:[get_speed() * 1000], HDG:[get_heading_degrees()]\]"
#undef MOVING #undef MOVING
#undef SANITIZE_SPEED #undef SANITIZE_SPEED
#undef CHANGE_SPEED_BY #undef CHANGE_SPEED_BY

View File

@@ -50,7 +50,7 @@ var/global/list/map_sectors = list()
else else
. = ..() . = ..()
/turf/unsimulated/map/Initialize(mapload) /turf/unsimulated/map/Initialize()
. = ..() . = ..()
name = "[x]-[y]" name = "[x]-[y]"
var/list/numbers = list() var/list/numbers = list()
@@ -77,6 +77,7 @@ var/global/list/map_sectors = list()
if(x == GLOB.using_map.overmap_size) if(x == GLOB.using_map.overmap_size)
I.pixel_x = 5*i + 2 I.pixel_x = 5*i + 2
add_overlay(I) add_overlay(I)
AddElement(/datum/element/turf_z_transparency)
/turf/unsimulated/map/Entered(var/atom/movable/O, var/atom/oldloc) /turf/unsimulated/map/Entered(var/atom/movable/O, var/atom/oldloc)
..() ..()

View File

@@ -251,6 +251,14 @@
Z_LEVEL_UNDERDARK Z_LEVEL_UNDERDARK
) )
levels_for_distress = list(
Z_LEVEL_OFFMAP1,
Z_LEVEL_BEACH,
Z_LEVEL_AEROSTAT,
Z_LEVEL_DEBRISFIELD,
Z_LEVEL_FUELDEPOT
)
//Port of Triumph Overmap Visitable Effects //Port of Triumph Overmap Visitable Effects
/obj/effect/overmap/visitable/sector/debrisfield /obj/effect/overmap/visitable/sector/debrisfield
name = "Debris Field" name = "Debris Field"

BIN
sound/AI/sos.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -333,6 +333,7 @@
#include "code\datums\elements\_element.dm" #include "code\datums\elements\_element.dm"
#include "code\datums\elements\conflict_checking.dm" #include "code\datums\elements\conflict_checking.dm"
#include "code\datums\elements\persistence.dm" #include "code\datums\elements\persistence.dm"
#include "code\datums\elements\turf_transparency.dm"
#include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\construction_datum.dm"
#include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm" #include "code\datums\helper_datums\getrev.dm"
@@ -354,6 +355,7 @@
#include "code\datums\looping_sounds\weather_sounds.dm" #include "code\datums\looping_sounds\weather_sounds.dm"
#include "code\datums\observation\_debug.dm" #include "code\datums\observation\_debug.dm"
#include "code\datums\observation\_defines.dm" #include "code\datums\observation\_defines.dm"
#include "code\datums\observation\destroyed.dm"
#include "code\datums\observation\observation.dm" #include "code\datums\observation\observation.dm"
#include "code\datums\observation\shuttle_added.dm" #include "code\datums\observation\shuttle_added.dm"
#include "code\datums\observation\shuttle_moved.dm" #include "code\datums\observation\shuttle_moved.dm"
@@ -2958,24 +2960,33 @@
#include "code\modules\organs\subtypes\vox_vr.dm" #include "code\modules\organs\subtypes\vox_vr.dm"
#include "code\modules\organs\subtypes\xenochimera.dm" #include "code\modules\organs\subtypes\xenochimera.dm"
#include "code\modules\organs\subtypes\xenos.dm" #include "code\modules\organs\subtypes\xenos.dm"
#include "code\modules\overmap\abductor_vr.dm"
#include "code\modules\overmap\bluespace_rift.dm" #include "code\modules\overmap\bluespace_rift.dm"
#include "code\modules\overmap\champagne.dm" #include "code\modules\overmap\champagne.dm"
#include "code\modules\overmap\helpers.dm" #include "code\modules\overmap\helpers.dm"
#include "code\modules\overmap\overmap_object.dm" #include "code\modules\overmap\overmap_object.dm"
#include "code\modules\overmap\overmap_planet.dm"
#include "code\modules\overmap\overmap_shuttle.dm" #include "code\modules\overmap\overmap_shuttle.dm"
#include "code\modules\overmap\sectors.dm" #include "code\modules\overmap\sectors.dm"
#include "code\modules\overmap\spacetravel.dm" #include "code\modules\overmap\spacetravel.dm"
#include "code\modules\overmap\turfs.dm" #include "code\modules\overmap\turfs.dm"
#include "code\modules\overmap\disperser\disperser.dm"
#include "code\modules\overmap\disperser\disperser_charge.dm"
#include "code\modules\overmap\disperser\disperser_circuit.dm"
#include "code\modules\overmap\disperser\disperser_console.dm"
#include "code\modules\overmap\disperser\disperser_fire.dm"
#include "code\modules\overmap\events\event_handler.dm" #include "code\modules\overmap\events\event_handler.dm"
#include "code\modules\overmap\events\generation.dm" #include "code\modules\overmap\events\generation.dm"
#include "code\modules\overmap\events\overmap_event.dm" #include "code\modules\overmap\events\overmap_event.dm"
#include "code\modules\overmap\ships\landable.dm" #include "code\modules\overmap\ships\landable.dm"
#include "code\modules\overmap\ships\panicbutton.dm"
#include "code\modules\overmap\ships\ship.dm" #include "code\modules\overmap\ships\ship.dm"
#include "code\modules\overmap\ships\computers\computer_shims.dm" #include "code\modules\overmap\ships\computers\computer_shims.dm"
#include "code\modules\overmap\ships\computers\engine_control.dm" #include "code\modules\overmap\ships\computers\engine_control.dm"
#include "code\modules\overmap\ships\computers\helm.dm" #include "code\modules\overmap\ships\computers\helm.dm"
#include "code\modules\overmap\ships\computers\sensors.dm" #include "code\modules\overmap\ships\computers\sensors.dm"
#include "code\modules\overmap\ships\computers\ship.dm" #include "code\modules\overmap\ships\computers\ship.dm"
#include "code\modules\overmap\ships\computers\ship_vr.dm"
#include "code\modules\overmap\ships\computers\shuttle.dm" #include "code\modules\overmap\ships\computers\shuttle.dm"
#include "code\modules\overmap\ships\engines\engine.dm" #include "code\modules\overmap\ships\engines\engine.dm"
#include "code\modules\overmap\ships\engines\gas_thruster.dm" #include "code\modules\overmap\ships\engines\gas_thruster.dm"