[solved] Detecting liquid usage in steam engine

Place to get help with not working mods / modding interface.
Post Reply
SeelenJaegerTee
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 14, 2016 7:38 pm
Contact:

[solved] Detecting liquid usage in steam engine

Post by SeelenJaegerTee »

My mod introduces wastewater that can either be cleaned in a wastewater treatment plant or dumped into the environment via an outlet.
Dumping it into the environment causes massive polution.

However it is easy to cheat the system and simply use the wastewater for power generation.
Is there a way to detect if a steam engine uses the waste-water so that i can make it corrode and release pollution via a script?
Last edited by SeelenJaegerTee on Thu Aug 25, 2016 5:26 pm, edited 1 time in total.

User avatar
Klonan
Factorio Staff
Factorio Staff
Posts: 5151
Joined: Sun Jan 11, 2015 2:09 pm
Contact:

Re: Detecting liquid usage in steam engine

Post by Klonan »

I do something similar in my diesel generator mod, this is the relevant code:

Code: Select all

local fluidTypeToTemperature =
{
    ["petroleum-gas"] =
    {
        min = 79.6,
        set = 80
    },
    ["light-oil"] =
    {
        min = 99.6,
        set = 100
    },
    ["diesel-fuel"] =
    {
        min = 99.6,
        set = 100
    },
    ["heavy-oil"] =
    {
        min = 59.6,
        set = 60
    }
}

function check_generators()
if global.archived_petroleum_generator == nil then
    global.archived_petroleum_generator = {}
end
  if global.petroleum_generator ~= nil then
    for k,gen in pairs(global.petroleum_generator) do
      if gen.valid then
        if gen.fluidbox[1] ~= nil then 
          local pot = gen.fluidbox[1]
          local p = gen.position
          local lookup = fluidTypeToTemperature[pot.type]
          if lookup ~= nil then
          pot["temperature"] = lookup.set
          else pot["temperature"] = 15
          end
          if math.floor(gen.fluidbox[1]["temperature"] + 0.01) == pot["temperature"] then
            table.insert(global.archived_petroleum_generator, gen)
            table.remove(global.petroleum_generator, k)
            --game.players[1].print{"Generator was archived  "..#global.archived_petroleum_generator.."  "..#global.petroleum_generator}
          end
          
          gen.fluidbox[1] = pot

          else
          if global.archived_petroleum_generator == nil then
            global.archived_petroleum_generator = {}
          end
          table.insert(global.archived_petroleum_generator, gen)
          table.remove(global.petroleum_generator, k)
          --game.players[1].print{"empty pot was archived  "..#global.archived_petroleum_generator.."  "..#global.petroleum_generator}
        end

      else table.remove(global.petroleum_generator, k)
      --game.players[1].print{"Generator was removed from index  "..#global.archived_petroleum_generator.."  "..#global.petroleum_generator}
      end
    end
  end
end

SeelenJaegerTee
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 14, 2016 7:38 pm
Contact:

Re: Detecting liquid usage in steam engine

Post by SeelenJaegerTee »

Klonan wrote:I do something similar in my diesel generator mod, this is the relevant code:
Did it. Thank you very much.

Post Reply

Return to “Modding help”