From ff8b57b8c016522970be6753b3917fc408428770 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 27 Nov 2014 23:31:40 -0500 Subject: [PATCH 1/2] Fixes #7144 --- code/modules/paperwork/paper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ef1b7bd7a1..dc4058be39 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -227,7 +227,7 @@ t = replacetext(t, "\[/grid\]", "") t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") - t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[logo\]", "") t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! From b84bb4ff23bae9509240a889cc6f0ce56a6fee0c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 25 Nov 2014 18:10:19 -0500 Subject: [PATCH 2/2] Fixes bubble/hull shield generators not updating air zones, update_nearby_tiles() cleanup. --- code/ZAS/Atom.dm | 14 ++++++++++++-- code/game/machinery/doors/door.dm | 6 +++--- code/game/machinery/doors/windowdoor.dm | 12 ++---------- code/game/objects/effects/effect_system.dm | 9 --------- code/game/objects/structures.dm | 5 ++++- code/game/objects/structures/inflatable.dm | 8 +------- code/game/objects/structures/mineral_doors.dm | 6 ------ code/game/objects/structures/windoor_assembly.dm | 8 -------- code/game/objects/structures/window.dm | 9 --------- code/modules/shieldgen/emergency_shield.dm | 12 +----------- code/modules/shieldgen/energy_field.dm | 12 ++++++++++++ code/modules/shieldgen/sheldwallgen.dm | 7 ++++++- 12 files changed, 41 insertions(+), 67 deletions(-) diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm index 1a2ad9cb02..6f75f4ea29 100644 --- a/code/ZAS/Atom.dm +++ b/code/ZAS/Atom.dm @@ -2,7 +2,7 @@ /atom/var/pressure_resistance = ONE_ATMOSPHERE -atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) +/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) //Purpose: Determines if the object (or airflow) can pass this atom. //Called by: Movement, airflow. //Inputs: The moving atom (optional), target turf, "height" and air group @@ -30,6 +30,16 @@ atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) return 1 +//Convenience function for atoms to update turfs they occupy +/atom/movable/proc/update_nearby_tiles(need_rebuild) + if(!air_master) + return 0 + + for(var/turf/simulated/turf in locs) + air_master.mark_for_update(turf) + + return 1 + //Basically another way of calling CanPass(null, other, 0, 0) and CanPass(null, other, 1.5, 1). //Returns: // 0 - Not blocked @@ -63,4 +73,4 @@ turf/c_airblock(turf/other) for(var/atom/movable/M in contents) result |= M.c_airblock(other) if(result == BLOCKED) return BLOCKED - return result \ No newline at end of file + return result diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index ceb04ad56b..2bb07d59ee 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -274,7 +274,7 @@ /obj/machinery/door/proc/requiresID() return 1 -/obj/machinery/door/proc/update_nearby_tiles(need_rebuild) +/obj/machinery/door/update_nearby_tiles(need_rebuild) if(!air_master) return 0 @@ -298,7 +298,7 @@ return /obj/machinery/door/Move(new_loc, new_dir) - update_nearby_tiles() + //update_nearby_tiles() . = ..() if(width > 1) if(dir in list(EAST, WEST)) @@ -311,4 +311,4 @@ update_nearby_tiles() /obj/machinery/door/morgue - icon = 'icons/obj/doors/doormorgue.dmi' \ No newline at end of file + icon = 'icons/obj/doors/doormorgue.dmi' diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 89a36e8dc0..cebfe6947e 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -13,18 +13,9 @@ explosion_resistance = 5 air_properties_vary_with_direction = 1 - -/obj/machinery/door/window/update_nearby_tiles(need_rebuild) - if(!air_master) - return 0 - - air_master.mark_for_update(get_turf(src)) - - return 1 - /obj/machinery/door/window/New() ..() - + update_nearby_tiles() if (src.req_access && src.req_access.len) src.icon_state = "[src.icon_state]" src.base_state = src.icon_state @@ -33,6 +24,7 @@ /obj/machinery/door/window/Del() density = 0 playsound(src, "shatter", 70, 1) + update_nearby_tiles() ..() /obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index ee82396788..161eca5bcb 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -695,15 +695,6 @@ steam.start() -- spawns the effect if(air_group) return 0 return !density - - proc/update_nearby_tiles(need_rebuild) - if(!air_master) - return 0 - - air_master.mark_for_update(get_turf(src)) - - return 1 - /datum/effect/effect/system/reagents_explosion var/amount // TNT equivalent var/flashing = 0 // does explosion creates flash effect? diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index bed3cb9de0..944056b5ae 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -61,6 +61,9 @@ if(climbable) verbs += /obj/structure/proc/climb_on +/obj/structure/Del() + ..() + /obj/structure/proc/climb_on() set name = "Climb structure" @@ -175,4 +178,4 @@ if (issilicon(user)) user << "You need hands for this." return 0 - return 1 \ No newline at end of file + return 1 diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 8b586c9461..c656a5ce91 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -34,12 +34,6 @@ update_nearby_tiles() ..() - proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code - if(!air_master) - return 0 - air_master.mark_for_update(get_turf(src)) - return 1 - CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -302,4 +296,4 @@ new /obj/item/inflatable(src) new /obj/item/inflatable(src) new /obj/item/inflatable(src) - new /obj/item/inflatable(src) \ No newline at end of file + new /obj/item/inflatable(src) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index aa07d1621a..1f10d87932 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -157,12 +157,6 @@ CheckHardness() return - proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code - if(!air_master) - return 0 - air_master.mark_for_update(get_turf(src)) - return 1 - /obj/structure/mineral_door/iron mineralType = "metal" hardness = 3 diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 915bbbf684..9e1b47a0b1 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -295,11 +295,3 @@ obj/structure/windoor_assembly/Del() update_icon() return - -/obj/structure/windoor_assembly/proc/update_nearby_tiles(need_rebuild) - if(!air_master) - return 0 - - air_master.mark_for_update(loc) - - return 1 diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index f41d8ff841..710edd4205 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -322,15 +322,6 @@ dir = ini_dir update_nearby_tiles(need_rebuild=1) - -//This proc has to do with airgroups and atmos, it has nothing to do with smoothwindows, that's update_nearby_tiles(). -/obj/structure/window/proc/update_nearby_tiles(need_rebuild) - if(!air_master) - return 0 - air_master.mark_for_update(get_turf(src)) - - return 1 - //checks if this window is full-tile one /obj/structure/window/proc/is_fulltile() if(dir & (dir - 1)) diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 6eb33e7124..8ecb5fb3b1 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -27,16 +27,6 @@ if(!height || air_group) return 0 else return ..() -//Looks like copy/pasted code... I doubt 'need_rebuild' is even used here - Nodrak -/obj/machinery/shield/proc/update_nearby_tiles(need_rebuild) - if(!air_master) - return 0 - - air_master.mark_for_update(get_turf(src)) - - return 1 - - /obj/machinery/shield/attackby(obj/item/weapon/W as obj, mob/user as mob) if(!istype(W)) return @@ -357,4 +347,4 @@ src.icon_state = malfunction ? "shieldonbr":"shieldon" else src.icon_state = malfunction ? "shieldoffbr":"shieldoff" - return \ No newline at end of file + return diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm index 06dd2bdade..7558c19ad6 100644 --- a/code/modules/shieldgen/energy_field.dm +++ b/code/modules/shieldgen/energy_field.dm @@ -13,6 +13,14 @@ var/strength = 0 var/ticks_recovering = 10 +/obj/effect/energy_field/New() + ..() + update_nearby_tiles() + +/obj/effect/energy_field/Del() + update_nearby_tiles() + ..() + /obj/effect/energy_field/ex_act(var/severity) Stress(0.5 + severity) @@ -44,12 +52,16 @@ strength = 0 //if we take too much damage, drop out - the generator will bring us back up if we have enough power + var/old_density = density if(strength >= 1) invisibility = 0 density = 1 else if(strength < 1) invisibility = 101 density = 0 + + if (density != old_density) + update_nearby_tiles() /obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) //Purpose: Determines if the object (or airflow) can pass this atom. diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm index 0c084abdef..1afe2c49f1 100644 --- a/code/modules/shieldgen/sheldwallgen.dm +++ b/code/modules/shieldgen/sheldwallgen.dm @@ -242,6 +242,7 @@ /obj/machinery/shieldwall/New(var/obj/machinery/shieldwallgen/A, var/obj/machinery/shieldwallgen/B) ..() + update_nearby_tiles() src.gen_primary = A src.gen_secondary = B if(A && B && A.active && B.active) @@ -253,6 +254,10 @@ else del(src) //need at least two generator posts +/obj/machinery/shieldwall/Del() + update_nearby_tiles() + ..() + /obj/machinery/shieldwall/attack_hand(mob/user as mob) return @@ -321,4 +326,4 @@ if (istype(mover, /obj/item/projectile)) return prob(10) else - return !src.density \ No newline at end of file + return !src.density