anchor.diff:  		else
   			pluoxiumbonus = 0
   
  +		if (h2ocomp >= 0.35 && h2ocomp <= 0.45) //heat protection from h2o only works when it's between 35 and 45%
  +			h2obonus = 1
  +		else
  +			h2obonus = 0
  +
  +		switch(h2ocomp)
  +			if (-INFINITY to 0.05) //non h2o delamination fix
  +				h2omalus = 1
  +			if(0.05 to 0.45) //the engine will stop producing power from 5% to 45% h2o (slow down the o2 and plasma generation too)
  +				h2omalus = 0.05
  +			if (0.45 to INFINITY)
  +				h2omalus = 2  //when gas comp is above 0.45 the engine will start to freak out
  +
  +		switch(h2ocomp)  //variability in the h2o penalty calculation depending on the %
  +			if(-INFINITY to 0.30)
  +				h2ofixed = 1
  +			if(0.30 to 0.50)
  +				h2ofixed = 0.5
  +			if(0.5 to INFINITY)
  +				h2ofixed = 2
  +
   		//No less then zero, and no greater then one, we use this to do explosions and heat to power transfer
  -		gasmix_power_ratio = min(max(plasmacomp + o2comp + co2comp + tritiumcomp + bzcomp - pluoxiumcomp - n2comp, 0), 1)
  -		//Minimum value of 1.5, maximum value of 15
  -		dynamic_heat_modifier = max((plasmacomp * PLASMA_HEAT_PENALTY) + (o2comp * OXYGEN_HEAT_PENALTY) + (co2comp * CO2_HEAT_PENALTY) + (tritiumcomp * TRITIUM_HEAT_PENALTY) + ((pluoxiumcomp * PLUOXIUM_HEAT_PENALTY) * pluoxiumbonus) + (n2comp * NITROGEN_HEAT_PENALTY) + (bzcomp * BZ_HEAT_PENALTY), 0.5)
  -		//Value between 6 and 1
  -		dynamic_heat_resistance = max((n2ocomp * N2O_HEAT_RESISTANCE) + ((pluoxiumcomp * PLUOXIUM_HEAT_RESISTANCE) * pluoxiumbonus), 1)
  +		gasmix_power_ratio = min(max(((plasmacomp + o2comp + co2comp + h2ocomp + tritiumcomp + bzcomp - pluoxiumcomp - n2comp) * h2omalus), 0), 1)
  +		//Minimum value of 1.5, maximum value of 23
  +		dynamic_heat_modifier += plasmacomp * PLASMA_HEAT_PENALTY
  +		dynamic_heat_modifier += o2comp * OXYGEN_HEAT_PENALTY
  +		dynamic_heat_modifier += co2comp * CO2_HEAT_PENALTY
  +		dynamic_heat_modifier += tritiumcomp * TRITIUM_HEAT_PENALTY
  +		dynamic_heat_modifier += (pluoxiumcomp * PLUOXIUM_HEAT_PENALTY) * pluoxiumbonus
  +		dynamic_heat_modifier += n2comp * NITROGEN_HEAT_PENALTY
  +		dynamic_heat_modifier += bzcomp * BZ_HEAT_PENALTY
  +		dynamic_heat_modifier *= h2omalus
  +		dynamic_heat_modifier += (h2ocomp * H2O_HEAT_PENALTY) * h2ofixed
  +		dynamic_heat_modifier = max(dynamic_heat_modifier, 0.5)
  +		//Value between 1 and 10
  +		dynamic_heat_resistance = max((n2ocomp * N2O_HEAT_RESISTANCE) + ((h2ocomp * H2O_HEAT_RESISTANCE) * h2obonus) + ((pluoxiumcomp * PLUOXIUM_HEAT_RESISTANCE) * pluoxiumbonus), 1)
   		//Value between 30 and -5, used to determine radiation output as it concerns things like collecters
  -		power_transmission_bonus = (plasmacomp * gas_trans["PL"]) + (o2comp * gas_trans["O2"]) + (bzcomp * gas_trans["BZ"]) + (tritiumcomp * gas_trans["TRIT"]) + ((pluoxiumcomp * gas_trans["PLX"]) * pluoxiumbonus)
  +		power_transmission_bonus += plasmacomp * gas_trans["PL"]
  +		power_transmission_bonus += o2comp * gas_trans["O2"]
  +		power_transmission_bonus += (h2ocomp * gas_trans["WV"])*h2obonus
  +		power_transmission_bonus += bzcomp * gas_trans["BZ"]
  +		power_transmission_bonus += tritiumcomp * gas_trans["TRIT"]
  +		power_transmission_bonus += (pluoxiumcomp * gas_trans["PLX"]) * pluoxiumbonus
  +		power_transmission_bonus *= h2omalus
   
   		//more moles of gases are harder to heat than fewer, so let's scale heat damage around them
   		mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25)
  
positive.code: 	var/tritiumcomp = 0
  	var/bzcomp = 0
  	var/pluoxiumcomp = 0
  
  	var/pluoxiumbonus = 0
  
  	var/combined_gas = 0
  	var/gasmix_power_ratio = 0
  
negative.code: 			//This means we can only deal 1.8 damage per function call
  			damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
  
  		removed.assert_gases(/datum/gas/oxygen, /datum/gas/water_vapor, /datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/nitrogen, /datum/gas/pluoxium, /datum/gas/tritium, /datum/gas/bz)
  		//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)
  