mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
LINDA -> MILLA (#25328)
* LINDA -> MILLA * Tiles now change their atmos mode properly. * Fixed a bug that made walls generate supercold air when deconstructed/destroyed. * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> * Begone, var! * MILLA -> milla * Lint. * More lint. * Prevent negative/NaN atmos from spreading. * Made fires start more reliably. * Undef what the rest should not see. * Enums are nice. * Match LINDA better. * Debugging verbs. * Debug verb fixes. * Labelled more lavaland stuff with ATMOS_MODE_LAVALAND * Block superconductivity on a couple more things for Lavaland. * Updated milla.dll * Lavaland map fixes. * Missed a spot. * Begone, var! (again) * Add libmilla_ci.so for continuous integration tests. * Install/contributing instructions for MILLA. * Directional plasmaglass windows on shuttles shouldn't stop protecting from heat after moving. * Banish bad naming. * Better naming and debug stats for SSair. * Apply suggestions from code review Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> * Magic numbers and formatting. * Don't screw up the temperature during reactions. * Efficiency and readability. * Fix hotspots. * Removed redundant safety (MILLA will already output an error) * Optimizations. * oops * TGS build script update. * Change API of gas_mixture and how you get one from a turf. * Get in there. * so many vars * MILLA binary updates. * Lint * Made MT cost more honest. * Gave MILLA a read-only mode. * More read-only vs synchronized mode work. * Even more. * Synchronize disposals. * Updated a bunch of stuff to use SSair.synchronize or GM.synchronize. * MILLA <3 Tracy * lint * cargo fmt * more lint * Test needed MILLA sync. * Silence atmos machinery that's behaving as intended, but continue objecting to other potential failures to synchronize. * Push new MILLA DLL * Build MILLA * Update PR instructions for MILLA. * Add some fancy plasmaglass windows to the Lifebringers' ship. * The golems remembered that they should insulate *all* their engines. * First round of TM bugfixes. * Build MILLA * fix two lavaland ruin turf types * bunch more maps * fixes milla ci and makes the interesting turf verb better * Solid turfs can no longer conduct heat (for now...) * Made indoor tiles in beach and winter biodomes not lavaland air. * Re-added random IT teleport, adjusted warning message * Fixed a tinted window on Lavaland to be a plasglass window instead. * Made firelocks and holofans heatproof * Made RPD auto-wrench pipes if you have a wrench in your offhand. * Runtime fixes. * Made visuals update more reliably. * Lint * Update .github/CONTRIBUTING.md Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> * Build MILLA * The Syndicate have installed tiny fans on their research base. * The syndicate have figured out how to make plastitanium windows heatproof. * This is getting out of hand. Now there are two of them. * Un-break the auto-wrenching that I broke before committing. * Build MILLA * Build MILLA * Massive MILLA refactor, assorted bugfixes. * Build MILLA * Explicit typing. * Less sleeping/blocking. * Build MILLA * Yes, yes, this part can sleep. * Build MILLA * SSair reporting improvements. * Build MILLA * Please do not dock twice and splat yourself. * Build MILLA * Pls to not make SM go nuts. * Build MILLA * Build MILLA * Added stricter lower bounds on plasmafire, fixing perpetually-burning SM. * Build MILLA * Lint * Temporary logging, begone. * Build MILLA * Prevent hotspot strobing. * Add in radiate_to_spess behavior. * Build MILLA * progress * Compiling is good. * bugfixes * Progress. * Ruins update. * This one exists. * Fixup temporary hotspots to last longer than one tick. * Add/fix comments. * Cut the slash. * Fix test. * No sleep for you. * Build MILLA * Prevent nested MILLA safety from runtiming. * Build MILLA * Runtime fix. * Build MILLA * Fix canisters not updating icon when gas contents change. * Build MILLA * Build MILLA * Fixed an issue that made mechs very cold on environment air. * Build MILLA * oops * Build MILLA * Walls can make loud noises again. * Build MILLA * Fixes a rare runtime. * Build MILLA * Update .github/DOWNLOADING.md Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> * Review suggestions * Lint * Build MILLA * bound_mixtures now only contains mixtures that can be written * Build MILLA * Apply suggestions from code review Co-authored-by: Matt <116982774+Burzah@users.noreply.github.com> Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> * Build MILLA * Restore the original async behavior of pyro anomalies. * Build MILLA * Build MILLA * Make the safety assertion in /datum/milla_safe safer. * Build MILLA --------- Signed-off-by: Charlie Nolan <funnyman3595@gmail.com> Co-authored-by: FunnyMan3595 (Charlie Nolan) <funnyman@google.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com> Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Co-authored-by: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> Co-authored-by: warriorstar-orion <orion@snowfrost.garden> Co-authored-by: GDN <Roanrichards1@Gmail.com>
This commit is contained in:
co-authored by
Burzah
GDN
AffectedArc07
FunnyMan3595
paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com>
warriorstar-orion
GDN
parent
56b4da8ffc
commit
d3584b1d1c
@@ -448,7 +448,23 @@
|
||||
if(!canMove())
|
||||
return -1
|
||||
|
||||
var/obj/docking_port/stationary/S0 = get_docked()
|
||||
var/datum/milla_safe/docking_port_dock/milla = new()
|
||||
milla.invoke_async(src, S1, force, transit)
|
||||
|
||||
/datum/milla_safe/docking_port_dock
|
||||
|
||||
/datum/milla_safe/docking_port_dock/on_run(obj/docking_port/mobile/mobile_port, obj/docking_port/stationary/S1, force, transit)
|
||||
// Re-check that it's OK to dock.
|
||||
if(S1.get_docked() == mobile_port)
|
||||
mobile_port.remove_ripples()
|
||||
return
|
||||
if(!force)
|
||||
if(!mobile_port.check_dock(S1))
|
||||
return
|
||||
if(!mobile_port.canMove())
|
||||
return
|
||||
|
||||
var/obj/docking_port/stationary/S0 = mobile_port.get_docked()
|
||||
var/turf_type = /turf/space
|
||||
var/area_type = /area/space
|
||||
if(S0)
|
||||
@@ -458,18 +474,18 @@
|
||||
area_type = S0.area_type
|
||||
|
||||
//close and lock the dock's airlocks
|
||||
closePortDoors(S0)
|
||||
mobile_port.closePortDoors(S0)
|
||||
|
||||
var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance)
|
||||
var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
|
||||
var/list/L0 = mobile_port.return_ordered_turfs(mobile_port.x, mobile_port.y, mobile_port.z, mobile_port.dir, mobile_port.areaInstance)
|
||||
var/list/L1 = mobile_port.return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
|
||||
|
||||
var/rotation = dir2angle(S1.dir)-dir2angle(dir)
|
||||
var/rotation = dir2angle(S1.dir) - dir2angle(mobile_port.dir)
|
||||
if((rotation % 90) != 0)
|
||||
rotation += (rotation % 90) //diagonal rotations not allowed, round up
|
||||
rotation = SIMPLIFY_DEGREES(rotation)
|
||||
|
||||
//remove area surrounding docking port
|
||||
if(length(areaInstance.contents))
|
||||
if(length(mobile_port.areaInstance.contents))
|
||||
var/area/A0 = locate("[area_type]")
|
||||
if(!A0)
|
||||
A0 = new area_type(null)
|
||||
@@ -477,10 +493,10 @@
|
||||
A0.contents += T0
|
||||
|
||||
// Removes ripples
|
||||
remove_ripples()
|
||||
mobile_port.remove_ripples()
|
||||
|
||||
//move or squish anything in the way ship at destination
|
||||
if(lance_docking && is_station_level(S1.z))
|
||||
if(mobile_port.lance_docking && is_station_level(S1.z))
|
||||
var/list/L2 = list()
|
||||
switch(S1.dir)
|
||||
if(NORTH)
|
||||
@@ -491,8 +507,8 @@
|
||||
L2 = block(locate(S1.x+36, S1.y-9, S1.z), locate(255, S1.y+9, S1.z))
|
||||
if(WEST)
|
||||
L2 = block(locate(1, S1.y-9, S1.z), locate(S1.x-36, S1.y+9, S1.z))
|
||||
shuttle_smash(L2, S1)
|
||||
roadkill(L0, L1, S1.dir)
|
||||
mobile_port.shuttle_smash(L2, S1)
|
||||
mobile_port.roadkill(L0, L1, S1.dir)
|
||||
|
||||
for(var/i in 1 to length(L0))
|
||||
var/turf/T0 = L0[i]
|
||||
@@ -502,61 +518,54 @@
|
||||
if(!T1)
|
||||
continue
|
||||
|
||||
areaInstance.contents += T1
|
||||
mobile_port.areaInstance.contents += T1
|
||||
|
||||
var/should_transit = !is_turf_blacklisted_for_transit(T0)
|
||||
var/should_transit = !mobile_port.is_turf_blacklisted_for_transit(T0)
|
||||
if(should_transit) // Only move over stuff if the transfer actually happened
|
||||
T0.copyTurf(T1)
|
||||
|
||||
//copy over air
|
||||
if(issimulatedturf(T1))
|
||||
var/turf/simulated/Ts1 = T1
|
||||
Ts1.copy_air_with_tile(T0)
|
||||
get_turf_air(T1).copy_from(get_turf_air(T0))
|
||||
|
||||
//move mobile to new location
|
||||
for(var/atom/movable/AM in T0)
|
||||
if(AM.loc != T0) //fix for multi-tile objects
|
||||
continue
|
||||
AM.onShuttleMove(T0, T1, rotation, last_caller)
|
||||
AM.onShuttleMove(T0, T1, rotation, mobile_port.last_caller)
|
||||
|
||||
if(rotation)
|
||||
T1.shuttleRotate(rotation)
|
||||
|
||||
// Always do this stuff as it ensures that the destination turfs still behave properly with the rest of the shuttle transit
|
||||
//atmos and lighting stuff
|
||||
SSair.remove_from_active(T1)
|
||||
T1.CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(T1,1)
|
||||
|
||||
//lighting stuff
|
||||
T1.lighting_build_overlay()
|
||||
T1.recalculate_atmos_connectivity()
|
||||
|
||||
if(!should_transit)
|
||||
continue // Don't want to actually change the skipped turf
|
||||
T0.ChangeTurf(turf_type, keep_icon = FALSE)
|
||||
T0.recalculate_atmos_connectivity()
|
||||
|
||||
SSair.remove_from_active(T0)
|
||||
T0.CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(T0,1)
|
||||
|
||||
areaInstance.moving = transit
|
||||
mobile_port.areaInstance.moving = transit
|
||||
for(var/A1 in L1)
|
||||
var/turf/T1 = A1
|
||||
T1.postDock(S1)
|
||||
for(var/atom/movable/M in T1)
|
||||
M.postDock(S1)
|
||||
|
||||
loc = S1.loc
|
||||
dir = S1.dir
|
||||
mobile_port.loc = S1.loc
|
||||
mobile_port.dir = S1.dir
|
||||
|
||||
//update mining and labor shuttle ash storm audio
|
||||
if(id in list("mining", "laborcamp"))
|
||||
if(mobile_port.id in list("mining", "laborcamp"))
|
||||
var/mining_zlevel = level_name_to_num(MINING)
|
||||
var/datum/weather/ash_storm/W = SSweather.get_weather(mining_zlevel, /area/lavaland/surface/outdoors)
|
||||
if(W)
|
||||
W.update_eligible_areas()
|
||||
W.update_audio()
|
||||
|
||||
unlockPortDoors(S1)
|
||||
mobile_port.unlockPortDoors(S1)
|
||||
|
||||
/obj/docking_port/mobile/proc/is_turf_blacklisted_for_transit(turf/T)
|
||||
var/static/list/blacklisted_turf_types = typecacheof(list(/turf/space, /turf/simulated/floor/chasm, /turf/simulated/floor/lava, /turf/simulated/floor/plating/asteroid))
|
||||
|
||||
Reference in New Issue
Block a user