From d765f2e8086e50be6987308187b0ea41915f2a5f Mon Sep 17 00:00:00 2001 From: skull132 Date: Sun, 16 Jul 2017 20:46:01 +0300 Subject: [PATCH] Fixes #3063, #3064 (#3069) Fixes #3063 Fixes #3064 Makes the asteroid area equivalent to the space area: cannot be powered with an APC, an APC cannot be placed there, and blueprints will allow you to create new areas there. Also tick checks a blueprint proc which caused the lag in the first place, just for future reference. --- code/_helpers/area_movement.dm | 4 --- code/game/objects/items/apc_frame.dm | 2 +- code/game/objects/items/blueprints.dm | 33 +++++++++---------- .../changelogs/skull132-construction_woes.yml | 6 ++++ 4 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 html/changelogs/skull132-construction_woes.yml diff --git a/code/_helpers/area_movement.dm b/code/_helpers/area_movement.dm index af2b1d3416a..7070d30db8f 100644 --- a/code/_helpers/area_movement.dm +++ b/code/_helpers/area_movement.dm @@ -50,8 +50,6 @@ var/list/source_turfs = src.build_ordered_turf_list(turf_to_leave) var/list/target_turfs = A.build_ordered_turf_list() - //log_debug("move_contents_to: source_turfs.len=[source_turfs.len],target_turfs.len=[target_turfs.len]") - ASSERT(source_turfs.len == target_turfs.len) for (var/i = 1 to source_turfs.len) @@ -82,8 +80,6 @@ . = list() - log_debug("copy_contents_to: source_turfs.len=[source_turfs.len],target_turfs.len=[target_turfs.len]") - ASSERT(source_turfs.len == target_turfs.len) var/baseturf diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 4b69e5db7c8..0b7a7e899b6 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -24,7 +24,7 @@ if (!istype(loc, /turf/simulated/floor)) usr << "APC cannot be placed on this spot." return - if (A.requires_power == 0 || istype(A, /area/space)) + if (A.requires_power == 0 || istype(A, /area/space) || istype(A, /area/mine/unexplored)) usr << "APC cannot be placed in this area." return if (A.get_apc()) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 15d4f64735b..61ebd77f2db 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -80,7 +80,7 @@ move an amendment to the drawing.

return A /obj/item/blueprints/proc/get_area_type(var/area/A = get_area()) - if(istype(A, /area/space)) + if(istype(A, /area/space) || istype(A, /area/mine/unexplored)) return AREA_SPACE var/list/SPECIALS = list( /area/shuttle, @@ -133,10 +133,7 @@ move an amendment to the drawing.

sorted_add_area(A) - spawn(5) - //ma = A.master ? "[A.master]" : "(null)" - //world << "DEBUG: create_area(5):
A.name=[A.name]
A.tag=[A.tag]
A.master=[ma]" - interact() + addtimer(CALLBACK(src, .proc/interact), 5) return @@ -156,7 +153,7 @@ move an amendment to the drawing.

if(length(str) > 50) usr << "Text too long." return - set_area_machinery_title(A,str,prevname) + INVOKE_ASYNC(src, .proc/set_area_machinery_title, A, str, prevname) A.name = str sortTim(all_areas, /proc/cmp_text_asc) usr << "You set the area '[prevname]' title to '[str]'." @@ -169,17 +166,19 @@ move an amendment to the drawing.

if (!oldtitle) // or replacetext goes to infinite loop return - for(var/obj/machinery/alarm/M in A) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/power/apc/M in A) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/atmospherics/unary/vent_scrubber/M in A) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/atmospherics/unary/vent_pump/M in A) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/door/M in A) - M.name = replacetext(M.name,oldtitle,title) - //TODO: much much more. Unnamed airlocks, cameras, etc. + var/static/list/types_to_rename = list( + /obj/machinery/alarm, + /obj/machinery/power/apc, + /obj/machinery/atmospherics/unary/vent_scrubber, + /obj/machinery/atmospherics/unary/vent_pump, + /obj/machinery/door + ) + + for(var/obj/machinery/M in A) + if (is_type_in_list(M, types_to_rename)) + M.name = replacetext(M.name, oldtitle, title) + + CHECK_TICK /obj/item/blueprints/proc/check_tile_is_border(var/turf/T2,var/dir) if (istype(T2, /turf/space)) diff --git a/html/changelogs/skull132-construction_woes.yml b/html/changelogs/skull132-construction_woes.yml new file mode 100644 index 00000000000..63ad569bf6a --- /dev/null +++ b/html/changelogs/skull132-construction_woes.yml @@ -0,0 +1,6 @@ +author: Skull132 +delete-after: true + +changes: + - bugfix: "Blueprints now work on the asteroid as they would work in space. They also no longer megalag the server to death." + - bugfix: "Attempting to power the entirety of the asteroid, and thus lagging the server to death, is no longer possible."