Merge pull request #12576 from farie82/revert-12566-aggressive-LINDA

Revert "Makes LINDA Aggressive"
This commit is contained in:
Crazy Lemon
2019-10-13 01:41:44 -07:00
committed by GitHub
4 changed files with 90 additions and 105 deletions
+31 -36
View File
@@ -49,7 +49,6 @@
var/icy = 0
var/icyoverlay
var/obj/effect/hotspot/active_hotspot
var/atmos_cooldown = 0
var/planetary_atmos = FALSE //air will revert to its initial mix over time
var/temperature_archived //USED ONLY FOR SOLIDS
@@ -146,10 +145,8 @@
var/remove = 1 //set by non simulated turfs who are sharing with this turf
atmos_cooldown++
var/planet_atmos = planetary_atmos
if(planet_atmos)
if (planet_atmos)
atmos_adjacent_turfs_amount++
for(var/direction in cardinal)
@@ -173,22 +170,22 @@
excited_group.merge_groups(enemy_simulated.excited_group) //combine groups
share_air(enemy_simulated) //share
else
if((recently_active == 1 && enemy_simulated.recently_active == 1) || air.compare(enemy_simulated.air))
if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air))
excited_group.add_turf(enemy_simulated) //add enemy to our group
share_air(enemy_simulated) //share
else
if(enemy_simulated.excited_group)
if((recently_active == 1 && enemy_simulated.recently_active == 1) || air.compare(enemy_simulated.air))
if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air))
enemy_simulated.excited_group.add_turf(src) //join self to enemy group
share_air(enemy_simulated) //share
else
if((recently_active == 1 && enemy_simulated.recently_active == 1) || air.compare(enemy_simulated.air))
if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air))
var/datum/excited_group/EG = new //generate new group
EG.add_turf(src)
EG.add_turf(enemy_simulated)
share_air(enemy_simulated) //share
else
if(air.compare(enemy_simulated.air)) //compare if
if(!air.compare(enemy_simulated.air)) //compare if
SSair.add_to_active(enemy_simulated) //excite enemy
if(excited_group)
excited_group.add_turf(enemy_simulated) //add enemy to group
@@ -201,7 +198,7 @@
/******************* GROUP HANDLING FINISH *********************************************************************/
else
if(air.check_turf(enemy_tile, atmos_adjacent_turfs_amount))
if(!air.check_turf(enemy_tile, atmos_adjacent_turfs_amount))
var/difference = air.mimic(enemy_tile,atmos_adjacent_turfs_amount)
if(difference)
if(difference > 0)
@@ -237,8 +234,6 @@
if(consider_superconductivity(starting = 1))
remove = 0
if(atmos_cooldown > EXCITED_GROUP_DISMANTLE_CYCLES*2)
SSair.remove_from_active(src)
if(!excited_group && remove == 1)
SSair.remove_from_active(src)
@@ -301,10 +296,6 @@
/turf/simulated/proc/last_share_check()
if(air.last_share > MINIMUM_AIR_TO_SUSPEND)
excited_group.reset_cooldowns()
atmos_cooldown = 0
else if(air.last_share > MINIMUM_MOLES_DELTA_TO_MOVE)
excited_group.dismantle_cooldown = 0
atmos_cooldown = 0
/turf/proc/high_pressure_movements()
var/atom/movable/M
@@ -337,7 +328,6 @@
/datum/excited_group
var/list/turf_list = list()
var/breakdown_cooldown = 0
var/dismantle_cooldown = 0
/datum/excited_group/New()
if(SSair)
@@ -365,33 +355,38 @@
/datum/excited_group/proc/reset_cooldowns()
breakdown_cooldown = 0
dismantle_cooldown = 0
/datum/excited_group/proc/self_breakdown()
var/datum/gas_mixture/A = new
var/datum/gas/sleeping_agent/S = new
A.trace_gases += S
for(var/turf/simulated/T in turf_list)
A.oxygen += T.air.oxygen
A.carbon_dioxide+= T.air.carbon_dioxide
A.nitrogen += T.air.nitrogen
A.toxins += T.air.toxins
//make local for sanic speed
var/list/turf_list = src.turf_list
var/turflen = turf_list.len
if(T.air.trace_gases.len)
for(var/datum/gas/N in T.air.trace_gases)
S.moles += N.moles
for(var/turf/simulated/T in turf_list)
A.merge(T.air)
T.air.oxygen = A.oxygen/turf_list.len
T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len
T.air.nitrogen = A.nitrogen/turf_list.len
T.air.toxins = A.toxins/turf_list.len
A.oxygen = A.oxygen /turflen
A.carbon_dioxide= A.carbon_dioxide /turflen
A.nitrogen = A.nitrogen /turflen
A.toxins = A.toxins /turflen
if(A.trace_gases.len)
for(var/datum/gas/G in A.trace_gases)
G.moles = G.moles / turflen
if(S.moles > 0)
if(T.air.trace_gases.len)
for(var/datum/gas/G in T.air.trace_gases)
G.moles = S.moles/turf_list.len
else
var/datum/gas/sleeping_agent/G = new
G.moles = S.moles/turf_list.len
T.air.trace_gases += G
for(var/turf/simulated/T in turf_list)
T.air.copy_from(A)
T.atmos_cooldown = 0
T.update_visuals()
breakdown_cooldown = 0
/datum/excited_group/proc/dismantle()
for(var/turf/simulated/T in turf_list)
@@ -510,11 +505,11 @@ turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space
var/turf/enemy_tile = get_step(src, direction)
if(istype(enemy_tile, /turf/simulated))
var/turf/simulated/enemy_simulated = enemy_tile
if(air.compare(enemy_simulated.air))
if(!air.compare(enemy_simulated.air))
excited = 1
SSair.active_turfs |= src
break
else
if(air.check_turf_total(enemy_tile))
if(!air.check_turf_total(enemy_tile))
excited = 1
SSair.active_turfs |= src
SSair.active_turfs |= src
+3 -5
View File
@@ -25,13 +25,11 @@
#define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) //Amount of air to take a from a tile
//EXCITED GROUPS
#define EXCITED_GROUP_BREAKDOWN_CYCLES 4 //number of FULL air controller ticks before an excited group breaks down (averages gas contents across turfs)
#define EXCITED_GROUP_DISMANTLE_CYCLES 16 //number of FULL air controller ticks before an excited group dismantles and removes its turfs from active
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.1 //Ratio of air that must move to/from a tile to reset group processing
#define MINIMUM_AIR_RATIO_TO_MOVE 0.001 //Minimum ratio of air that must move to/from a tile
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.005 //Minimum ratio of air that must move to/from a tile to suspend group processing
#define MINIMUM_AIR_TO_SUSPEND (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Minimum amount of air that has to move before a group processing can be suspended
#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_MOVE) //Either this must be active
#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Either this must be active
#define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously)
#define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012
#define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 4 //Minimum temperature difference before group processing is suspended
#define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 0.5 //Minimum temperature difference before the gas temperatures are just set to be equal
#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION (T20C+10)
+2 -3
View File
@@ -249,10 +249,9 @@ SUBSYSTEM_DEF(air)
var/datum/excited_group/EG = currentrun[currentrun.len]
currentrun.len--
EG.breakdown_cooldown++
EG.dismantle_cooldown++
if(EG.breakdown_cooldown >= EXCITED_GROUP_BREAKDOWN_CYCLES)
if(EG.breakdown_cooldown == 10)
EG.self_breakdown()
else if(EG.dismantle_cooldown >= EXCITED_GROUP_DISMANTLE_CYCLES)
else if(EG.breakdown_cooldown >= 20)
EG.dismantle()
if(MC_TICK_CHECK)
return
+54 -61
View File
@@ -368,20 +368,20 @@ What are the archived variables for?
var/delta_temperature = (temperature_archived - model.temperature)
if(((abs(delta_oxygen) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_MOVE)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_MOVE)) \
|| ((abs(delta_nitrogen) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_MOVE)) \
|| ((abs(delta_toxins) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_MOVE)))
return TRUE
if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
return 0
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
return TRUE
return 0
for(var/gas in trace_gases)
var/datum/gas/trace_gas = gas
if(trace_gas.moles_archived > MINIMUM_MOLES_DELTA_TO_MOVE*4)
return TRUE
if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
return 0
return FALSE
return 1
/datum/gas_mixture/proc/check_turf_total(turf/model) //I want this proc to die a painful death
var/delta_oxygen = (oxygen - model.oxygen)
@@ -391,20 +391,20 @@ What are the archived variables for?
var/delta_temperature = (temperature - model.temperature)
if(((abs(delta_oxygen) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_oxygen) >= oxygen*MINIMUM_AIR_RATIO_TO_MOVE)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_carbon_dioxide) >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_MOVE)) \
|| ((abs(delta_nitrogen) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_nitrogen) >= nitrogen*MINIMUM_AIR_RATIO_TO_MOVE)) \
|| ((abs(delta_toxins) > MINIMUM_MOLES_DELTA_TO_MOVE) && (abs(delta_toxins) >= toxins*MINIMUM_AIR_RATIO_TO_MOVE)))
return TRUE
if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND)))
return 0
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
return TRUE
return 0
for(var/gas in trace_gases)
var/datum/gas/trace_gas = gas
if(trace_gas.moles > MINIMUM_MOLES_DELTA_TO_MOVE*4)
return TRUE
if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND*4)
return 0
return FALSE
return 1
/datum/gas_mixture/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4)
if(!sharer) return 0
@@ -638,53 +638,46 @@ What are the archived variables for?
sharer.temperature += heat/sharer.heat_capacity
/datum/gas_mixture/compare(datum/gas_mixture/sample)
var/delta = abs(oxygen - sample.oxygen)
if(delta > MINIMUM_MOLES_DELTA_TO_MOVE && delta > oxygen * MINIMUM_AIR_RATIO_TO_MOVE)
return TRUE
if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \
((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen)))
return 0
if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \
((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen)))
return 0
if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \
((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide)))
return 0
if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \
((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins)))
return 0
delta = abs(nitrogen - sample.nitrogen)
if(delta > MINIMUM_MOLES_DELTA_TO_MOVE && delta > nitrogen * MINIMUM_AIR_RATIO_TO_MOVE)
return TRUE
delta = abs(carbon_dioxide - sample.carbon_dioxide)
if(delta > MINIMUM_MOLES_DELTA_TO_MOVE && delta > carbon_dioxide * MINIMUM_AIR_RATIO_TO_MOVE)
return TRUE
delta = abs(toxins - sample.toxins)
if(delta > MINIMUM_MOLES_DELTA_TO_MOVE && delta > toxins * MINIMUM_AIR_RATIO_TO_MOVE)
return TRUE
if(total_moles() > MINIMUM_MOLES_DELTA_TO_MOVE)
var/temp = temperature
var/sample_temp = sample.temperature
var/temperature_delta = abs(temp - sample_temp)
if(temperature_delta > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
return TRUE
for(var/gas in trace_gases)
var/datum/gas/trace_gas = gas
var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases
if(corresponding)
delta = abs(trace_gas.moles - corresponding.moles)
if(delta > MINIMUM_MOLES_DELTA_TO_MOVE && delta > trace_gas.moles * MINIMUM_AIR_RATIO_TO_MOVE)
return TRUE
else
if(trace_gas.moles > MINIMUM_MOLES_DELTA_TO_MOVE)
return TRUE
if(total_moles() > MINIMUM_AIR_TO_SUSPEND)
if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \
((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature)))
return 0
for(var/gas in sample.trace_gases)
var/datum/gas/trace_gas = gas
var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
if(corresponding)
delta = abs(trace_gas.moles - corresponding.moles)
if(delta > MINIMUM_MOLES_DELTA_TO_MOVE && delta > trace_gas.moles * MINIMUM_AIR_RATIO_TO_MOVE)
return TRUE
else
if(trace_gas.moles > MINIMUM_MOLES_DELTA_TO_MOVE)
return TRUE
if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND)
var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
if(corresponding)
if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \
((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles)))
return 0
else
return 0
return FALSE
for(var/gas in trace_gases)
var/datum/gas/trace_gas = gas
if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND)
var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases
if(corresponding)
if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \
((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles)))
return 0
else
return 0
return 1
@@ -714,4 +707,4 @@ get_true_breath_pressure(pp) --> gas_pp = pp/breath_pp*total_moles()
10/20*5 = 2.5
10 = 2.5/5*20
*/
*/