mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-27 15:01:04 +01:00
Horizon mapping cleanup and bugfixes (#21450)
Fixes https://github.com/Aurorastation/Aurora.3/issues/21289 Fixes https://github.com/Aurorastation/Aurora.3/issues/15779 Handles a lot of mapping cleanup, container definitions for the Horizon, and several bugfixes found along the way. changes: - code_imp: "Added set definitions for several Horizon-specific containers." - code_imp: "Updated 'full' material stacks on the Horizon from sneaky var-edited singles to properly defined full stacks" - code_imp: "Cleaned up all Air Alarms, Fire Alarms, and APCs on the Horizon that were directional children with their dir var edited." - code_imp: "Cleaned up all Power Cables on the Horizon that had d1 or d2 var edited instead of just icon_state." - code_imp: "Adjusted pixel shifts for 'south' (north-facing) Air Alarms, Fire Alarms, APCs, and Extinguisher Cabinets to address layering issues when standing vs. leaning." - code_imp: "Minor refactor of shuttle/* Air Alarms and APCs to reduce excess children; req_one_access perms now assigned based on /area/horizon/shuttle/*." - qol: "Adds feedback hint for uses remaining to Emag cards." - qol: "Added Tip about the shift-click behavior of the 'up-hint'/'Look Up' button." - bugfix: "See-through turfs (like lattices/catwalks over open space) can now be Looked Up through from below." - bugfix: "Fixed the shift-click behavior of 'up-hint'/'Look Up' button, allowing you to see nearby turfs that can be Looked Up through." - bugfix: "Maintenance Panels located on the floor have had their layering issues fixed." - bugfix: "Borg eye emissive effects MAYBE no longer visible through higher z-levels." - bugfix: "Added missing leanable component to window/shuttle obj type."
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/**
|
||||
Screen objects
|
||||
Todo: improve/re-implement
|
||||
|
||||
@@ -11,8 +11,10 @@
|
||||
icon = 'icons/mob/screen/generic.dmi'
|
||||
plane = HUD_PLANE
|
||||
layer = HUD_BASE_LAYER
|
||||
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
|
||||
var/datum/hud/hud = null // A reference to the owner HUD, if any.
|
||||
/// A reference to the object in the slot. Grabs or items, generally.
|
||||
var/obj/master = null
|
||||
/// A reference to the owner HUD, if any.
|
||||
var/datum/hud/hud = null
|
||||
appearance_flags = NO_CLIENT_COLOR
|
||||
|
||||
/atom/movable/screen/Initialize(mapload, ...)
|
||||
@@ -27,7 +29,7 @@
|
||||
hud = null
|
||||
. = ..()
|
||||
|
||||
///Screen elements are always on top of the players screen and don't move so yes they are adjacent
|
||||
/// Screen elements are always on top of the players screen and don't move so yes they are adjacent
|
||||
/atom/movable/screen/Adjacent(atom/neighbor, atom/target, atom/movable/mover)
|
||||
return TRUE
|
||||
|
||||
@@ -49,8 +51,10 @@
|
||||
maptext_width = 480
|
||||
|
||||
/atom/movable/screen/inventory
|
||||
var/slot_id //The identifier for the slot. It has nothing to do with ID cards.
|
||||
var/list/object_overlays = list() // Required for inventory/screen overlays.
|
||||
/// The identifier for the slot. It has nothing to do with ID cards.
|
||||
var/slot_id
|
||||
/// Required for inventory/screen overlays.
|
||||
var/list/object_overlays = list()
|
||||
var/color_changed = FALSE
|
||||
|
||||
/atom/movable/screen/inventory/MouseEntered()
|
||||
@@ -294,6 +298,7 @@
|
||||
if(!usr)
|
||||
return TRUE
|
||||
var/list/modifiers = params2list(params)
|
||||
var/client/viewer_client = usr?.client
|
||||
switch(name)
|
||||
if("toggle")
|
||||
if(usr.hud_used.inventory_shown)
|
||||
@@ -344,20 +349,21 @@
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(H.last_special + 50 > world.time)
|
||||
to_chat(usr, "You cannot do that again so quickly.")
|
||||
return
|
||||
H.last_special = world.time
|
||||
to_chat(usr, SPAN_NOTICE("You take look around to see if there are any holes in the roof around."))
|
||||
for(var/turf/T in view(usr.client.view + 3, usr)) // slightly extra to account for moving while looking for openness
|
||||
for(var/turf/T in view(viewer_client.view, usr))
|
||||
if(T.density)
|
||||
continue
|
||||
var/turf/above_turf = GET_TURF_ABOVE(T)
|
||||
if(!isopenspace(above_turf))
|
||||
if(!isopenturf(above_turf))
|
||||
continue
|
||||
var/image/up_image = image(icon = 'icons/mob/screen/generic.dmi', icon_state = "arrow_up", loc = T)
|
||||
up_image.plane = LIGHTING_LAYER + 1
|
||||
up_image.layer = LIGHTING_LAYER + 1
|
||||
usr << up_image
|
||||
QDEL_IN(up_image, 12)
|
||||
var/image/point_up = image(icon = 'icons/mob/screen/generic.dmi', icon_state = "arrow_up", loc = T)
|
||||
point_up.plane = DEFAULT_PLANE
|
||||
point_up.layer = POINTER_LAYER
|
||||
viewer_client?.images += point_up
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_image_from_client), point_up, viewer_client), 3 SECONDS)
|
||||
return
|
||||
|
||||
if(!isliving(usr))
|
||||
@@ -367,7 +373,7 @@
|
||||
var/turf/T = GET_TURF_ABOVE(T1)
|
||||
if (!T)
|
||||
to_chat(user, SPAN_NOTICE("There is nothing above you!"))
|
||||
else if (T.is_hole)
|
||||
else if (isopenturf(T))
|
||||
user.look_up_open_space(T1)
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("You see a ceiling staring back at you."))
|
||||
@@ -466,7 +472,7 @@
|
||||
name = "mov_intent"
|
||||
screen_loc = ui_movi
|
||||
|
||||
//This updates the run/walk button on the hud
|
||||
/// This updates the run/walk button on the hud.
|
||||
/atom/movable/screen/movement_intent/proc/update_move_icon(var/mob/living/user)
|
||||
if(!user.client)
|
||||
return
|
||||
@@ -547,7 +553,7 @@
|
||||
|
||||
#undef BLACKLIST_SPECIES_RUNNING
|
||||
|
||||
// Hand slots are special to handle the handcuffs overlay
|
||||
/// Hand slots are special to handle the handcuffs overlay
|
||||
/atom/movable/screen/inventory/hand
|
||||
var/image/handcuff_overlay
|
||||
var/image/disabled_hand_overlay
|
||||
|
||||
@@ -57,7 +57,8 @@ GLOBAL_LIST_EMPTY(tips_by_category)
|
||||
"Role-playing isn't easy, the wiki contains resources to help.",
|
||||
"Trash piles are bounties of interesting loot, but you can also hide in them, just drag your sprite onto the pile.",
|
||||
"Switching to another weapon is always faster than reloading.",
|
||||
"Remember to turn off your VPN before you try and connect."
|
||||
"Remember to turn off your VPN before you try and connect.",
|
||||
"You can shift-click the 'up-hint' button (that shows you whether or not the turf above you can be Looked Up through) to see ALL nearby turfs that you can Look Up through."
|
||||
)
|
||||
|
||||
/*
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
telecrystal_cost = 1
|
||||
bluecrystal_cost = 1
|
||||
path = /obj/item/card/emag
|
||||
desc = "It's a card that can be used to override, booby-trap, manipulate, take over, and otherwise do nefarious things to a wide variety of objects. Has ten uses."
|
||||
|
||||
/datum/uplink_item/item/tools/personal_shield
|
||||
name = "Personal Shield"
|
||||
|
||||
@@ -307,65 +307,32 @@ pixel_x = 10;
|
||||
req_access = null
|
||||
highpower = 1
|
||||
|
||||
/obj/machinery/alarm/shuttle/intrepid
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_INTREPID)
|
||||
|
||||
/obj/machinery/alarm/shuttle/intrepid/north
|
||||
/obj/machinery/alarm/shuttle/north
|
||||
PRESET_NORTH
|
||||
|
||||
/obj/machinery/alarm/shuttle/intrepid/east
|
||||
/obj/machinery/alarm/shuttle/east
|
||||
PRESET_EAST
|
||||
|
||||
/obj/machinery/alarm/shuttle/intrepid/west
|
||||
/obj/machinery/alarm/shuttle/west
|
||||
PRESET_WEST
|
||||
|
||||
/obj/machinery/alarm/shuttle/intrepid/south
|
||||
/obj/machinery/alarm/shuttle/south
|
||||
PRESET_SOUTH
|
||||
|
||||
/obj/machinery/alarm/shuttle/spark
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_SPARK)
|
||||
/// Assigns req_one_access perms associated with the area of the shuttle its mapped in.
|
||||
/obj/machinery/alarm/shuttle/Initialize()
|
||||
. = ..()
|
||||
var/area = get_area(src)
|
||||
|
||||
/obj/machinery/alarm/shuttle/spark/north
|
||||
PRESET_NORTH
|
||||
if(istype(area, /area/horizon/shuttle/intrepid))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_INTREPID)
|
||||
if(istype(area, /area/horizon/shuttle/quark))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_QUARK)
|
||||
if(istype(area, /area/horizon/shuttle/mining))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_SPARK)
|
||||
if(istype(area, /area/horizon/shuttle/canary))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_CANARY)
|
||||
|
||||
/obj/machinery/alarm/shuttle/spark/east
|
||||
PRESET_EAST
|
||||
|
||||
/obj/machinery/alarm/shuttle/spark/west
|
||||
PRESET_WEST
|
||||
|
||||
/obj/machinery/alarm/shuttle/spark/south
|
||||
PRESET_SOUTH
|
||||
|
||||
/obj/machinery/alarm/shuttle/quark
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_QUARK)
|
||||
|
||||
/obj/machinery/alarm/shuttle/quark/north
|
||||
PRESET_NORTH
|
||||
|
||||
/obj/machinery/alarm/shuttle/quark/east
|
||||
PRESET_EAST
|
||||
|
||||
/obj/machinery/alarm/shuttle/quark/west
|
||||
PRESET_WEST
|
||||
|
||||
/obj/machinery/alarm/shuttle/quark/south
|
||||
PRESET_SOUTH
|
||||
|
||||
/obj/machinery/alarm/shuttle/canary
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS, ACCESS_CANARY)
|
||||
|
||||
/obj/machinery/alarm/shuttle/canary/north
|
||||
PRESET_NORTH
|
||||
|
||||
/obj/machinery/alarm/shuttle/canary/east
|
||||
PRESET_EAST
|
||||
|
||||
/obj/machinery/alarm/shuttle/canary/west
|
||||
PRESET_WEST
|
||||
|
||||
/obj/machinery/alarm/shuttle/canary/south
|
||||
PRESET_SOUTH
|
||||
|
||||
/obj/machinery/alarm/server/Initialize()
|
||||
. = ..()
|
||||
@@ -433,7 +400,7 @@ pixel_x = 10;
|
||||
|
||||
/obj/machinery/alarm/set_pixel_offsets()
|
||||
pixel_x = ((src.dir & (NORTH|SOUTH)) ? 0 : (src.dir == EAST ? 10 : -10))
|
||||
pixel_y = ((src.dir & (NORTH|SOUTH)) ? (src.dir == NORTH ? 21 : -6) : 0)
|
||||
pixel_y = ((src.dir & (NORTH|SOUTH)) ? (src.dir == NORTH ? 21 : -4) : 0)
|
||||
|
||||
/obj/machinery/alarm/proc/first_run()
|
||||
alarm_area = get_area(src)
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
/obj/machinery/firealarm/set_pixel_offsets()
|
||||
// Overwrite the mapped in values.
|
||||
pixel_x = ((dir & (NORTH|SOUTH)) ? 0 : (dir == EAST ? 22 : -22))
|
||||
pixel_y = ((dir & (NORTH|SOUTH)) ? (dir == NORTH ? 32 : -17) : 0)
|
||||
pixel_y = ((dir & (NORTH|SOUTH)) ? (dir == NORTH ? 32 : -19) : 0)
|
||||
|
||||
// Convenience subtypes for mappers.
|
||||
/obj/machinery/firealarm/north
|
||||
@@ -293,7 +293,7 @@
|
||||
|
||||
/obj/machinery/firealarm/south
|
||||
dir = SOUTH
|
||||
pixel_y = -17
|
||||
pixel_y = -19
|
||||
|
||||
/*
|
||||
FIRE ALARM CIRCUIT
|
||||
|
||||
@@ -86,6 +86,10 @@
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
var/uses = 10
|
||||
|
||||
/obj/item/card/emag/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += SPAN_NOTICE("\The [src] has [uses] use\s left.")
|
||||
|
||||
/obj/item/card/emag_broken
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage."
|
||||
name = "broken cryptographic sequencer"
|
||||
|
||||
@@ -54,3 +54,29 @@
|
||||
new /obj/item/gun/projectile/peac/unloaded(src)
|
||||
for(var/i = 1 to 4)
|
||||
new /obj/item/ammo_casing/peac(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/station/lessthanlethals
|
||||
name = "Less than Lethal Ammunitions"
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/station/lessthanlethals/fill()
|
||||
for(var/i = 1 to 15)
|
||||
new /obj/item/ammo_magazine/c45m/rubber(src)
|
||||
for(var/i = 1 to 8)
|
||||
new /obj/item/ammo_magazine/mc9mmt/rubber(src)
|
||||
for(var/i = 1 to 4)
|
||||
new /obj/item/storage/box/shells/beanbags(src)
|
||||
new /obj/item/storage/box/shells/flashshells(src)
|
||||
new /obj/item/storage/box/shells/stunshells(src)
|
||||
new /obj/item/storage/box/shells/trackingslugs(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/station/lethals
|
||||
name = "Lethal Ammunitions"
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/station/lethals/fill()
|
||||
for(var/i = 1 to 8)
|
||||
new /obj/item/ammo_magazine/c45m(src)
|
||||
for(var/i = 1 to 6)
|
||||
new /obj/item/ammo_magazine/mc9mmt(src)
|
||||
new /obj/item/ammo_magazine/a556/carbine/polymer(src)
|
||||
for(var/i = 1 to 2)
|
||||
new /obj/item/storage/box/shells/buckshot(src)
|
||||
|
||||
@@ -13,39 +13,62 @@
|
||||
// Standard Refrigerator
|
||||
/obj/structure/closet/secure_closet/refrigerator/standard/fill()
|
||||
// 5 Cartons of Milk
|
||||
for(var/i = 0, i < 5, i++)
|
||||
for(var/i = 0 to 5)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/milk(src)
|
||||
// 2 Cartons of Soy Milk
|
||||
for(var/i = 0, i < 2, i++)
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/soymilk(src)
|
||||
// 1 Egg Box
|
||||
for(var/i = 0, i < 2, i++)
|
||||
for(var/i = 0 to 1)
|
||||
new /obj/item/storage/box/fancy/egg_box(src)
|
||||
// 1 Stick of Butter
|
||||
for(var/i = 0, i < 1, i++)
|
||||
for(var/i = 0 to 1)
|
||||
new /obj/item/reagent_containers/food/snacks/spreads/butter(src)
|
||||
// 4 Random Condiments
|
||||
for(var/i = 0, i < 4, i++)
|
||||
for(var/i = 0 to 4)
|
||||
new /obj/random/condiment(src)
|
||||
// 2 Random Kitchen Staples
|
||||
for(var/i = 0, i < 2, i++)
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/random/kitchen_staples(src)
|
||||
|
||||
// Cafe Refrigerator
|
||||
/obj/structure/closet/secure_closet/refrigerator/cafe/fill()
|
||||
// 6 Cartons of Milk
|
||||
for(var/i = 0, i < 6, i++)
|
||||
for(var/i = 0 to 6)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/milk(src)
|
||||
// 3 Egg Boxes
|
||||
// 3 Bags of Flour
|
||||
for(var/i = 0, i < 3, i++)
|
||||
for(var/i = 0 to 3)
|
||||
new /obj/item/storage/box/fancy/egg_box(src)
|
||||
new /obj/item/reagent_containers/food/condiment/flour(src)
|
||||
// 2 Cartons of Soymilk and 2 Bags of Sugar
|
||||
for(var/i = 0, i < 2, i++)
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/soymilk(src)
|
||||
new /obj/item/reagent_containers/food/condiment/sugar(src)
|
||||
|
||||
// Horizon Kitchen fridge variants
|
||||
/obj/structure/closet/secure_closet/refrigerator/station/main
|
||||
name = "refrigerator"
|
||||
|
||||
/obj/structure/closet/secure_closet/refrigerator/station/main/fill()
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/item/storage/box/fancy/egg_box(src)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/milk(src)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/soymilk(src)
|
||||
new /obj/item/reagent_containers/food/drinks/carton/cream(src)
|
||||
new /obj/item/reagent_containers/food/condiment/soysauce(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/refrigerator/station/alt
|
||||
name = "refrigerator"
|
||||
|
||||
/obj/structure/closet/secure_closet/refrigerator/station/alt/fill()
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/item/reagent_containers/food/condiment/flour(src)
|
||||
new /obj/item/reagent_containers/food/condiment/rice(src)
|
||||
new /obj/item/storage/box/large/produce/adhomai(src)
|
||||
new /obj/item/storage/box/large/produce/moghes(src)
|
||||
new /obj/item/storage/box/large/produce/nralakk(src)
|
||||
|
||||
//
|
||||
// Freezers
|
||||
//
|
||||
@@ -133,10 +156,8 @@
|
||||
|
||||
// Standard Kitchen Cabinet
|
||||
/obj/structure/closet/secure_closet/kitchen_cabinet/standard/fill()
|
||||
for(var/i = 0, i < 2, i++)
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/item/reagent_containers/food/condiment/flour(src)
|
||||
new /obj/item/reagent_containers/food/condiment/sugar(src)
|
||||
new /obj/item/reagent_containers/food/condiment/shaker/spacespice(src)
|
||||
|
||||
//
|
||||
// Miscellaneous
|
||||
|
||||
@@ -104,3 +104,10 @@
|
||||
locked = TRUE
|
||||
secure = TRUE
|
||||
req_access = list(ACCESS_MEDICAL_EQUIP)
|
||||
|
||||
/obj/structure/closet/walllocker/medical/secure/donor_blood
|
||||
name = "O- Blood Locker"
|
||||
|
||||
/obj/structure/closet/walllocker/medical/secure/donor_blood/fill()
|
||||
for(var/i = 0 to 3)
|
||||
new /obj/item/reagent_containers/blood/OMinus(src)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
/obj/structure/extinguisher_cabinet/south
|
||||
dir = SOUTH
|
||||
pixel_y = -23
|
||||
pixel_y = -26
|
||||
|
||||
/obj/structure/extinguisher_cabinet/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
/obj/structure/extinguisher_cabinet/set_pixel_offsets()
|
||||
pixel_x = dir & (NORTH|SOUTH) ? 0 : (dir == EAST ? 21 : 4)
|
||||
pixel_y = dir & (NORTH|SOUTH) ? (dir == NORTH ? 24 : -23) : 4
|
||||
pixel_y = dir & (NORTH|SOUTH) ? (dir == NORTH ? 24 : -26) : 4
|
||||
|
||||
/obj/structure/extinguisher_cabinet/attackby(obj/item/attacking_item, mob/user)
|
||||
if(isrobot(user))
|
||||
|
||||
@@ -50,16 +50,18 @@ ABSTRACT_TYPE(/obj/structure/engineer_maintenance)
|
||||
|
||||
/obj/structure/engineer_maintenance/Initialize(mapload)
|
||||
. = ..()
|
||||
name = panel_location == PANEL_LOCATION_FLOOR ? "maintenance panel" : "large maintenance panel" // floor panels are smaller than the wall mounted ones
|
||||
// Floor panels are smaller and should be layered beneath dropped objects other structures.
|
||||
if(panel_location == PANEL_LOCATION_FLOOR)
|
||||
name = "maintenance_panel"
|
||||
layer = EXPOSED_WIRE_TERMINAL_LAYER
|
||||
else
|
||||
name = "large maintenance panel"
|
||||
icon_number = pick(icon_numbers_and_descriptions)
|
||||
detailed_desc = icon_numbers_and_descriptions[icon_number]
|
||||
for(var/tool_type in panel_tools)
|
||||
var/atom/tool = tool_type
|
||||
panel_tool_names += initial(tool.name)
|
||||
|
||||
var/turf/target_turf = panel_location == PANEL_LOCATION_FLOOR ? get_turf(src) : get_step(src, NORTH)
|
||||
RegisterSignal(target_turf, COMSIG_ATOM_DECONSTRUCTED, PROC_REF(remove_self))
|
||||
|
||||
/obj/structure/engineer_maintenance/proc/remove_self()
|
||||
SIGNAL_HANDLER
|
||||
qdel(src)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "lattice"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
opacity = FALSE
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
layer = ABOVE_TILE_LAYER
|
||||
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
|
||||
@@ -27,6 +28,11 @@
|
||||
. += "Add a <b>metal floor tile</b> to build a floor on top of the lattice."
|
||||
. += "Lattices can be made by applying <b>metal rods</b> to a space tile."
|
||||
|
||||
/obj/structure/lattice/disassembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(name == "lattice")
|
||||
. += "Lattices can be broken back down into metal rods with a <b>welder</b>."
|
||||
|
||||
/obj/structure/lattice/Initialize()
|
||||
. = ..()
|
||||
for(var/obj/structure/lattice/LAT in loc)
|
||||
|
||||
@@ -571,6 +571,10 @@
|
||||
layer = FULL_WINDOW_LAYER
|
||||
rad_resistance_modifier = 4
|
||||
|
||||
/obj/structure/window/shuttle/mouse_drop_receive(atom/dropping, mob/user, params)
|
||||
//Adds the component only once. We do it here & not in Initialize() because there are tons of walls & we don't want to add to their init times
|
||||
LoadComponent(/datum/component/leanable, dropping)
|
||||
|
||||
/obj/structure/window/shuttle/legion
|
||||
name = "reinforced cockpit window"
|
||||
icon = 'icons/obj/smooth/shuttle_window_legion.dmi'
|
||||
|
||||
@@ -138,9 +138,9 @@
|
||||
footsound = T.footstep_sound
|
||||
|
||||
if (client)
|
||||
var/turf/B = GET_TURF_ABOVE(T)
|
||||
var/turf/T1 = GET_TURF_ABOVE(T)
|
||||
if(up_hint)
|
||||
up_hint.icon_state = "uphint[(B ? !!B.is_hole : 0)]"
|
||||
up_hint.icon_state = "uphint[(T1 ? !!isopenturf(T1) : 0)]"
|
||||
|
||||
if (!stat && !lying)
|
||||
if ((x == last_x && y == last_y) || !footsound)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
return
|
||||
var/eye_plane = src.plane
|
||||
if(lights_on && layer == MOB_LAYER) // in case you're hiding. so eyes don't go through tables.
|
||||
eye_plane = EFFECTS_ABOVE_LIGHTING_PLANE //make them glow in the dark if the lamp is on
|
||||
eye_plane = MOB_EMISSIVE_LAYER //make them glow in the dark if the lamp is on
|
||||
var/eyeprefix = module_sprites[icontype][ROBOT_EYES]
|
||||
if(speed == -2) // For combat drones with the mobility module.
|
||||
cached_eye_overlays = list(
|
||||
|
||||
+28
-78
@@ -1468,7 +1468,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
|
||||
/obj/machinery/power/apc/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/critical
|
||||
is_critical = TRUE
|
||||
@@ -1487,7 +1487,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
|
||||
/obj/machinery/power/apc/critical/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/low
|
||||
cell_type = /obj/item/cell
|
||||
@@ -1506,7 +1506,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
|
||||
/obj/machinery/power/apc/low/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/high
|
||||
cell_type = /obj/item/cell/high
|
||||
@@ -1525,7 +1525,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
|
||||
/obj/machinery/power/apc/high/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/isolation
|
||||
cell_type = /obj/item/cell
|
||||
@@ -1546,7 +1546,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
|
||||
/obj/machinery/power/apc/isolation/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/vault
|
||||
cell_type = /obj/item/cell
|
||||
@@ -1566,91 +1566,41 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
|
||||
/obj/machinery/power/apc/vault/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/shuttle/intrepid
|
||||
/obj/machinery/power/apc/shuttle
|
||||
cell_type = /obj/item/cell/high
|
||||
req_access = null
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_INTREPID)
|
||||
|
||||
/obj/machinery/power/apc/shuttle/intrepid/north
|
||||
/obj/machinery/power/apc/shuttle/north
|
||||
dir = NORTH
|
||||
pixel_y = 22
|
||||
|
||||
/obj/machinery/power/apc/shuttle/intrepid/east
|
||||
/obj/machinery/power/apc/shuttle/east
|
||||
dir = EAST
|
||||
pixel_x = 12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/intrepid/west
|
||||
/obj/machinery/power/apc/shuttle/west
|
||||
dir = WEST
|
||||
pixel_x = -12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/intrepid/south
|
||||
/obj/machinery/power/apc/shuttle/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/shuttle/canary
|
||||
cell_type = /obj/item/cell/high
|
||||
req_access = null
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_CANARY)
|
||||
/// Assigns req_one_access perms associated with the area of the shuttle its mapped in.
|
||||
/obj/machinery/power/apc/shuttle/Initialize()
|
||||
. = ..()
|
||||
var/area = get_area(src)
|
||||
|
||||
/obj/machinery/power/apc/shuttle/canary/north
|
||||
dir = NORTH
|
||||
pixel_y = 22
|
||||
|
||||
/obj/machinery/power/apc/shuttle/canary/east
|
||||
dir = EAST
|
||||
pixel_x = 12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/canary/west
|
||||
dir = WEST
|
||||
pixel_x = -12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/canary/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
|
||||
ABSTRACT_TYPE(/obj/machinery/power/apc/shuttle/quark)
|
||||
cell_type = /obj/item/cell/high
|
||||
req_access = null
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_QUARK)
|
||||
|
||||
/obj/machinery/power/apc/shuttle/quark/north
|
||||
dir = NORTH
|
||||
pixel_y = 22
|
||||
|
||||
/obj/machinery/power/apc/shuttle/quark/east
|
||||
dir = EAST
|
||||
pixel_x = 12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/quark/west
|
||||
dir = WEST
|
||||
pixel_x = -12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/quark/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
|
||||
/obj/machinery/power/apc/shuttle/spark
|
||||
cell_type = /obj/item/cell/high
|
||||
req_access = null
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_SPARK)
|
||||
|
||||
/obj/machinery/power/apc/shuttle/spark/north
|
||||
dir = NORTH
|
||||
pixel_y = 22
|
||||
|
||||
/obj/machinery/power/apc/shuttle/spark/east
|
||||
dir = EAST
|
||||
pixel_x = 12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/spark/west
|
||||
dir = WEST
|
||||
pixel_x = -12
|
||||
|
||||
/obj/machinery/power/apc/shuttle/spark/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
if(istype(area, /area/horizon/shuttle/intrepid))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_INTREPID)
|
||||
if(istype(area, /area/horizon/shuttle/quark))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_QUARK)
|
||||
if(istype(area, /area/horizon/shuttle/mining))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_SPARK)
|
||||
if(istype(area, /area/horizon/shuttle/canary))
|
||||
req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_CANARY)
|
||||
|
||||
// Construction site APC, starts turned off
|
||||
/obj/machinery/power/apc/high/inactive
|
||||
@@ -1679,7 +1629,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc/shuttle/quark)
|
||||
|
||||
/obj/machinery/power/apc/super/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/super/critical
|
||||
is_critical = TRUE
|
||||
@@ -1698,7 +1648,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc/shuttle/quark)
|
||||
|
||||
/obj/machinery/power/apc/super/critical/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/hyper
|
||||
cell_type = /obj/item/cell/hyper
|
||||
@@ -1717,7 +1667,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc/shuttle/quark)
|
||||
|
||||
/obj/machinery/power/apc/hyper/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
/obj/machinery/power/apc/empty
|
||||
start_charge = 0
|
||||
@@ -1736,7 +1686,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc/shuttle/quark)
|
||||
|
||||
/obj/machinery/power/apc/empty/south
|
||||
dir = SOUTH
|
||||
pixel_y = -4
|
||||
pixel_y = -8
|
||||
|
||||
#undef UPDATE_CELL_IN
|
||||
#undef UPDATE_OPENED1
|
||||
|
||||
@@ -444,5 +444,45 @@
|
||||
|
||||
return test_status
|
||||
|
||||
// At present, only fire alarms have NSEW as immediate children, whereas APCs and Air Alarms also have them as sub-children.
|
||||
// In the future, areas should have additional vars to populate APC data automatically, allowing them to have directional
|
||||
// immediate children too for mapping testing.
|
||||
/datum/unit_test/map_test/no_panel_dir_var_edits
|
||||
name = "MAP: Check for Fire Alarm dir var edits"
|
||||
|
||||
/datum/unit_test/map_test/no_panel_dir_var_edits/start_test()
|
||||
var/test_status = UNIT_TEST_PASSED
|
||||
var/checks = 0
|
||||
var/failed_checks = 0
|
||||
var/firealarm_increment
|
||||
var/turf/T
|
||||
|
||||
for(var/obj/machinery/firealarm/F in world)
|
||||
T = get_turf(F)
|
||||
firealarm_increment = 0
|
||||
if(istype(F, /obj/machinery/firealarm/north))
|
||||
if(F.dir != NORTH)
|
||||
firealarm_increment++
|
||||
if(istype(F, /obj/machinery/firealarm/south))
|
||||
if(F.dir != SOUTH)
|
||||
firealarm_increment++
|
||||
if(istype(F, /obj/machinery/firealarm/east))
|
||||
if(F.dir != EAST)
|
||||
firealarm_increment++
|
||||
if(istype(F, /obj/machinery/firealarm/west))
|
||||
if(F.dir != WEST)
|
||||
firealarm_increment++
|
||||
checks++
|
||||
if(firealarm_increment > 1)
|
||||
failed_checks++
|
||||
TEST_FAIL("Manually var edited [F] at ([F.x],[F.y],[F.z]) in [T.loc].")
|
||||
|
||||
if(failed_checks)
|
||||
TEST_FAIL("\[[failed_checks] / [checks]\] Some fire alarms had their dir var manually edited instead of using a preset variant. Please also check new APCs and air alarms in the area.")
|
||||
else
|
||||
TEST_PASS("All \[[checks]\] fire alarms mapped properly.")
|
||||
|
||||
return test_status
|
||||
|
||||
#undef SUCCESS
|
||||
#undef FAILURE
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Your name.
|
||||
author: Batrachophrenoboocosmomachia
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
|
||||
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- code_imp: "Added set definitions for several Horizon-specific containers."
|
||||
- code_imp: "Updated 'full' material stacks on the Horizon from sneaky var-edited singles to properly defined full stacks"
|
||||
- code_imp: "Cleaned up all Air Alarms, Fire Alarms, and APCs on the Horizon that were directional children with their dir var edited."
|
||||
- code_imp: "Cleaned up all Power Cables on the Horizon that had d1 or d2 var edited instead of just icon_state."
|
||||
- code_imp: "Adjusted pixel shifts for 'south' (north-facing) Air Alarms, Fire Alarms, APCs, and Extinguisher Cabinets to address layering issues when standing vs. leaning."
|
||||
- code_imp: "Minor refactor of shuttle/* Air Alarms and APCs to reduce excess children; req_one_access perms now assigned based on /area/horizon/shuttle/*."
|
||||
- qol: "Adds feedback hint for uses remaining to Emag cards."
|
||||
- qol: "Added Tip about the shift-click behavior of the 'up-hint'/'Look Up' button."
|
||||
- bugfix: "See-through turfs (like lattices/catwalks over open space) can now be Looked Up through from below."
|
||||
- bugfix: "Fixed the shift-click behavior of 'up-hint'/'Look Up' button, allowing you to see nearby turfs that can be Looked Up through."
|
||||
- bugfix: "Maintenance Panels located on the floor have had their layering issues fixed."
|
||||
- bugfix: "Borg eye emissive effects MAYBE no longer visible through higher z-levels."
|
||||
- bugfix: "Added missing leanable component to window/shuttle obj type."
|
||||
- bugfix: "Add missing APC to D1 maintenance area."
|
||||
+4773
-5373
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user