mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 21:10:30 +01:00
0c342878e5
EXTREMELY MINOR MISCELLANEOUS CHANGES TEEHEE changes: - imageadd: "Adds +bolted, +welded, +lights overlays to several large machines for easier visual identification of whether or not clicking on that emitter will kill you or not, etc." - imageadd: "Modifies the base of the Shield Wall Generator sprite to better match that of the Emergency Shield Projector (and so they can use the same overlays mentioned above)." - imageadd: "Tweaks the Emitter's directional sprites slightly so that the base doesn't seem to change shape quite so drastically when rotated." - imageadd: "Ports very pretty space heater sprites made by Wallemations and vinylspiders from /tg/." - imageadd: "Adds unique sprites for Old and Heavy-Duty power cells." - balance: "Increases power draw and range of Emergency Shield Projectors." - balance: "Increases power draw of Shield Wall Generators." - balance: "Greatly reduces time for debugger to fix APCs corrupted by electrical storms." - balance: "Increases multi-z shield capacitor reserve charge and maximum throughput, so that high-strength shields can actually be run (at high power draw)." - balance: "Tweaks the INDRA power output formula to scale better with increasing temperature." - balance: "Slight adjustments to space heater efficiency formula with a friendly handwave to entropy." - balance: "Old power cells have a 5% chance to be defective and have slightly lower maxcharge than standard cells." - qol: "Adds extended examine hints to engineering objects." - qol: "Extends list of object types which INDRA core field will interact peacefully with." - qol: "Improved space heater UX (chat msgs changed to balloon alerts, audible feedback, etc.)" - code_imp: "Updates many code comments to use DMdocs." - code_imp: "Consolidates various shield generation machine sprites in scattered across multiple files into a single shield generator machines sprite file." - bugfix: "Fixes Emergency Shield Projector hard del issue." - bugfix: "Emergency Shield Projector now shuts down as intended if the area's APC gets completely drained." - bugfix: "Firing the gyrotron into the INDRA while no reactants are present will no longer generate heat." - bugfix: "Fixes INDRA runtime." - bugfix: "Fixes Power Monitoring app not displaying grid sensors when run from a modular computer held in-hand." Bolted/welded down Emitter: <img width="130" height="101" alt="Screenshot 2026-02-13 123842" src="https://github.com/user-attachments/assets/8357b5ea-77e6-46f7-b4a0-724aaa141cef" /> Modified shieldwall sprites (with old ones for comparison) <img width="667" height="103" alt="Screenshot 2026-02-13 111422" src="https://github.com/user-attachments/assets/2b1e849e-f955-49cb-b094-0bef098a754f" /> Shields actually useful for damage control now (though they'll blow through APC charge if you go as crazy as this): <img width="804" height="891" alt="Screenshot 2026-02-13 124245" src="https://github.com/user-attachments/assets/39268b42-5abe-4a3b-ba8a-a18bdc63873e" /> ### Asset Licenses The following assets that **have not** been created by myself are included in this PR: | Path | Original Author | License | | --- | --- | --- | | icons/obj/atmos.dmi (all "sheater*") | [Wallemations, VinylSpiders (/tg/station #93800)](https://github.com/tgstation/tgstation/pull/93800) | CC-BY-SA | --------- Signed-off-by: Batrachophreno <Batrochophreno@gmail.com> Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
80 lines
2.1 KiB
Plaintext
80 lines
2.1 KiB
Plaintext
/// Pre-check proc for passing things over the turf. Passes more advanced checks for AMs to turf/enter(...), otherwise handles ZAS.
|
|
/turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0)
|
|
if(!target)
|
|
return FALSE
|
|
|
|
if(mover?.movement_type & PHASING)
|
|
return TRUE
|
|
|
|
if(istype(mover)) // turf/Enter(...) will perform more advanced checks
|
|
return !density
|
|
|
|
else // Now, doing more detailed checks for air movement and air group formation
|
|
if(target.blocks_air||blocks_air)
|
|
return FALSE
|
|
|
|
for(var/obj/obstacle in src)
|
|
if(!obstacle.CanPass(mover, target, height, air_group))
|
|
return FALSE
|
|
if(target != src)
|
|
for(var/obj/obstacle in target)
|
|
if(!obstacle.CanPass(mover, src, height, air_group))
|
|
return FALSE
|
|
|
|
return TRUE
|
|
|
|
/// Convenience function for atoms to update turfs they occupy
|
|
/atom/movable/proc/update_nearby_tiles(need_rebuild)
|
|
for(var/turf/simulated/turf in locs)
|
|
SSair.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
|
|
* - AIR_BLOCKED - Blocked
|
|
* - ZONE_BLOCKED - Not blocked, but zone boundaries will not cross.
|
|
* - BLOCKED - Blocked, zone boundaries will not cross even if opened.
|
|
*/
|
|
/atom/proc/c_airblock(turf/other)
|
|
#ifdef ZASDBG
|
|
ASSERT(isturf(other))
|
|
#endif
|
|
return (AIR_BLOCKED*!CanPass(null, other, 0, 0))|(ZONE_BLOCKED*!CanPass(null, other, 1.5, 1))
|
|
|
|
|
|
/turf/c_airblock(turf/other)
|
|
#ifdef ZASDBG
|
|
ASSERT(isturf(other))
|
|
#endif
|
|
if(((blocks_air & AIR_BLOCKED) || (other.blocks_air & AIR_BLOCKED)))
|
|
return BLOCKED
|
|
|
|
//Z-level handling code. Always block if there isn't an open space.
|
|
#ifdef MULTIZAS
|
|
if(other.z != src.z)
|
|
if(other.z < src.z)
|
|
if(!isopenturf(src)) return BLOCKED
|
|
else
|
|
if(!isopenturf(other)) return BLOCKED
|
|
#endif
|
|
|
|
if(((blocks_air & ZONE_BLOCKED) || (other.blocks_air & ZONE_BLOCKED)))
|
|
if(z == other.z)
|
|
return ZONE_BLOCKED
|
|
else
|
|
return AIR_BLOCKED
|
|
|
|
var/result = 0
|
|
for(var/mm in contents)
|
|
var/atom/movable/M = mm
|
|
result |= M.c_airblock(other)
|
|
if(result == BLOCKED) return BLOCKED
|
|
return result
|
|
|
|
/atom/movable
|
|
var/atmos_canpass = CANPASS_ALWAYS
|