set terminal:width to 40. set terminal:height to 8. print "Determining maxima.". list resources in reslist. for res in reslist { if (res:name = "electriccharge") { set maxec to max(1,res:capacity). print "EC: " + maxec. } else if (res:name = "oxygen") { set maxox to max(1,res:capacity). print "O2: " + maxox. } else if (res:name = "hydrogen") { set maxhy to max(1,res:capacity). print "H2: " + maxhy. } else if (res:name = "water") { set maxwa to max(1,res:capacity). print "H2O: " + maxwa. } else if (res:name = "karbonite") { set maxkr to max(1,res:capacity). print "KAR: " + maxkr. } } set cellpart to ship:partstagged("fuelcell")[0]. set cellmod to cellpart:getmodule("moduleresourceconverter"). set elekpart to ship:partstagged("elektron")[0]. set elekmod to elekpart:getmodule("moduleresourceconverter"). set puripart to ship:partstagged("purifier")[0]. set purimod to puripart:getmodule("moduleresourceconverter"). set kelepart to ship:partstagged("karbelec")[0]. set kelemod to kelepart:getmodule("moduleresourceconverter"). //We turn everything off at startup time to get into a known state set fuelcell to 0. set elektron to 0. set purifier to 0. set karbelec to 0. cellmod:doaction("stop fuel cell",True). elekmod:doaction("stop water electrolizer",True). purimod:doaction("stop water purifier",True). kelemod:doaction("shutdown generator",True). until false{ set ecpro to ship:electriccharge / maxec. set oxpro to ship:oxygen / maxox. set hypro to ship:hydrogen / maxhy. set wapro to ship:water / maxwa. set krpro to ship:karbonite / maxkr. if (fuelcell = 0 and ecpro < 0.1 and oxpro > 0.2) { set fuelcell to 1. cellmod:doaction("start fuel cell",True). print "Fuel cell ON: " + round(SHIP:HYDROGEN,0) + " H2 remaining.". } else if (fuelcell = 1 and (ecpro > 0.2 or oxpro < 0.1)) { set fuelcell to 0. cellmod:doaction("stop fuel cell",True). print "Fuel cell OFF: " + round(SHIP:HYDROGEN,0) + " H2 remaining.". } if (elektron = 0 and ecpro > 0.9 and wapro > 0.21 and hypro < 0.9 and oxpro < 0.9) { set elektron to 1. elekmod:doaction("start water electrolizer",True). print "Elektron ON". } else if (elektron = 1 and (ecpro < 0.8 or hypro > 0.95 or oxpro > 0.95 or wapro < 0.2)) { set elektron to 0. elekmod:doaction("stop water electrolizer",True). print "Elektron OFF". } if (purifier = 0 and (ecpro > 0.9 and ship:wastewater > 0.1 and wapro < 0.85)) { set purifier to 1. purimod:doaction("start water purifier",True). print "Purifier ON". } else if (purifier = 1 and (ecpro < 0.8 or ship:wastewater < 0.1 or wapro > 0.9)) { set purifier to 0. purimod:doaction("stop water purifier",True). print "Purifier OFF". } if (karbelec = 0 and ecpro < 0.9 and krpro > 0.99) { set karbelec to 1. kelemod:doaction("start generator",True). print "Karbelectric ON:". } else if (karbelec= 1 and (ecpro > 0.95 or krpro < 0.95)) { set karbelec to 0. kelemod:doaction("shutdown generator",True). print "Karbelectric OFF: ". } wait 1. }