From 53f908e32b3644c0fd594bb13b4162e63319236b Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 7 Aug 2020 06:09:42 -0700 Subject: [PATCH] putnamos --- code/modules/power/supermatter/supermatter.dm | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 4385946e48..8e9b1d9233 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -349,10 +349,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(integrity < SUPERMATTER_DANGER_PERCENT) return SUPERMATTER_DANGER - if((integrity < SUPERMATTER_WARNING_PERCENT) || (air.temperature > CRITICAL_TEMPERATURE)) + if((integrity < SUPERMATTER_WARNING_PERCENT) || (air.return_temperature() > CRITICAL_TEMPERATURE)) return SUPERMATTER_WARNING - if(air.temperature > (CRITICAL_TEMPERATURE * 0.8)) + if(air.return_temperature() > (CRITICAL_TEMPERATURE * 0.8)) return SUPERMATTER_NOTIFY if(power > 5) @@ -513,7 +513,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //((((some value between 0.5 and 1 * temp - ((273.15 + 40) * some values between 1 and 10)) * some number between 0.25 and knock your socks off / 150) * 0.25 //Heat and mols account for each other, a lot of hot mols are more damaging then a few //Mols start to have a positive effect on damage after 350 - damage = max(damage + (max(clamp(removed.total_moles() / 200, 0.5, 1) * removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) + damage = max(damage + (max(clamp(removed.total_moles() / 200, 0.5, 1) * removed.return_temperature() - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) //Power only starts affecting damage when it is above 5000 damage = max(damage + (max(power - POWER_PENALTY_THRESHOLD, 0)/500) * DAMAGE_INCREASE_MULTIPLIER, 0) //Molar count only starts affecting damage when it is above 1800 @@ -523,7 +523,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //healing damage if(combined_gas < MOLE_PENALTY_THRESHOLD) //Only has a net positive effect when the temp is below 313.15, heals up to 2 damage. Psycologists increase this temp min by up to 45 - damage = max(damage + (min(removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD) + (45 * psyCoeff)), 0) / 150 ), 0) + damage = max(damage + (min(removed.return_temperature() - ((T0C + HEAT_PENALTY_THRESHOLD) + (45 * psyCoeff)), 0) / 150 ), 0) //caps damage rate @@ -531,9 +531,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //This means we can only deal 1.8 damage per function call damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage) - for(var/gasID in gases_we_care_about) - removed.assert_gas(gasID) - //calculating gas related values //Wanna know a secret? See that max() to zero? it's used for error checking. If we get a mol count in the negative, we'll get a divide by zero error combined_gas = max(removed.total_moles(), 0) @@ -546,7 +543,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Prevents huge bursts of gas/heat when a large amount of something is introduced //They range between 0 and 1 for(var/gasID in gases_we_care_about) - gas_comp[gasID] += clamp(max(removed.gases[gasID][MOLES]/combined_gas, 0) - gas_comp[gasID], -1, gas_change_rate) + gas_comp[gasID] += clamp(max(removed.get_moles(gasID)/combined_gas, 0) - gas_comp[gasID], -1, gas_change_rate) var/list/heat_mod = gases_we_care_about.Copy() var/list/transit_mod = gases_we_care_about.Copy() @@ -641,15 +638,17 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. //Power * 0.55 * (some value between 1.5 and 23) / 5 - removed.temperature += ((device_energy * dynamic_heat_modifier) / THERMAL_RELEASE_MODIFIER) + // so this is added ((device_energy * dynamic_heat_modifier) / THERMAL_RELEASE_MODIFIER) + // oh and //We can only emit so much heat, that being 57500 - removed.temperature = max(0, min(removed.temperature, 2500 * dynamic_heat_modifier)) + // so max() it all. + removed.set_temperature(max(0, min(removed.temperature + ((device_energy * dynamic_heat_modifier) / THERMAL_RELEASE_MODIFIER), 2500 * dynamic_heat_modifier))) //Calculate how much gas to release //Varies based on power and gas content - removed.gases[/datum/gas/plasma][MOLES] += max((device_energy * dynamic_heat_modifier) / PLASMA_RELEASE_MODIFIER, 0) + removed.adjust_moles(/datum/gas/plasma, max((device_energy * dynamic_heat_modifier) / PLASMA_RELEASE_MODIFIER, 0)) //Varies based on power, gas content, and heat - removed.gases[/datum/gas/oxygen][MOLES] += max(((device_energy + removed.temperature * dynamic_heat_modifier) - T0C) / OXYGEN_RELEASE_MODIFIER, 0) + removed.adjust_moles(/datum/gas/oxygen, max(((device_energy + removed.return_temperature() * dynamic_heat_modifier) - T0C) / OXYGEN_RELEASE_MODIFIER, 0)) if(produces_gas) env.merge(removed) @@ -758,7 +757,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) return 1 -/obj/machinery/power/supermatter_crystal/bullet_act(obj/projectile/Proj) +/obj/machinery/power/supermatter_crystal/bullet_act(obj/item/projectile/Proj) var/turf/L = loc if(!istype(L)) return FALSE