<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>111</ID>
      <Description>"[$LUA] Get Clockwork"</Description>
      <Options moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then
    return
end
function aOBScanModule(a, b)
    local c = getAddress(a)
    local d = getModuleSize(a) + c;
    local e = createMemScan()
    e.firstScan(soExactValue, vtByteArray, rtRounded, b, nil, c, d, "", fsmNotAligned, "", true, false, false, false,
        false)
    e.waitTillDone()
    local f = createFoundList(e)
    f.initialize()
    local g = createStringlist()
    local h = 0;
    while tonumber(f.Address[h], 16) ~= 0 do
        g.add(f.Address[h])
        h = h + 1
    end
    e.destroy()
    f.deinitialize()
    f.destroy()
    return g
end
local i = aOBScanModule(process, "8B 15 ?? ?? ?? ?? ?? ?? 89 15 ?? ?? ?? ?? 48 8D")
for h = 0, i.Count - 1 do
    if disassemble(i.String[h]):match('mov') then
        local j = disassemble(i.String[h]):match("%[(.-)%]")
        if readByte(j) then
            registerSymbol("Clockwork_" .. h, j)
            local k = AddressList.createMemoryRecord()
            k.appendToEntry(memrec)
            k.setDescription("Clockwork_" .. h)
            k.setType(vtDword)
            k.setAddress(j)
            local l = tonumber(i.String[h], 16)
            local m = l + getInstructionSize(l)
            local n = getNameFromAddress(m)
            local o = getInstructionSize(m)
            local p = string.upper(byteTableToHexString(readBytes(m, o, true)))
            synchronize(function()
                local q = AddressList.createMemoryRecord()
                q.appendToEntry(k)
                q.setDescription("[$LUA/ASM] Sync This Clock to System date")
                q.setType(11)
                q.Script =
                    '[ENABLE]\n{$lua}\nlocal function a(b)if b%4==0 and b%100~=0 or b%400==0 then return true end;return false end;local function c(b,d,e)local f={31,28,31,30,31,30,31,31,30,31,30,31}local g=0;for h=0,b-1 do g=g+(a(h)and 366 or 365)end;for i=1,d-1 do if i==2 and a(b)then g=g+29 else g=g+f[i]end end;g=g+e-1;return g end;local j=os.date("*t")local k=c(j.year,j.month,j.day)\n writeInteger("' ..
                        getNameFromAddress(j) .. '",k)\n self.Active=false;\n{$asm}\n [DISABLE]\n'
                local r = AddressList.createMemoryRecord()
                r.appendToEntry(k)
                r.setDescription("[$ASM] Disable increase of Clockwork_" .. h)
                r.setType(11)
                r.Script = "[ENABLE]\n" .. n .. ":\nNOP " .. o .. "\n[DISABLE]\n" .. n .. ":\ndb " .. p
            end)
            local s, t;
            for i = 1, 10 do
                l = getPreviousOpcode(l)
                s = disassemble(getPreviousOpcode(l))
                if s:match("cmp ax") then
                    local u = getNameFromAddress(s:match("^(.-) %-"))
                    local v = s:match("%- (.-) %-"):gsub("(%w)(%s)", "%1"):gsub("(%w%w)", "%1 ")
                    local w = string.upper(byteTableToHexString(assemble("cmp ax,FFFF", u, nil, false)))
                    t = "[ENABLE]\n" .. u .. ":\n" .. "db " .. w .. "\n[DISABLE]\n" .. u .. ":\ndb " .. v;
                    synchronize(function()
                        local x = AddressList.createMemoryRecord()
                        x.appendToEntry(k)
                        x.setDescription("[$ASM] Increase day time of Clockwork_" .. h)
                        x.setType(11)
                        x.Script = t
                    end)
                    break
                end
            end
        else
            error()
        end
    end
end
{$asm}
[DISABLE]
{$lua}
synchronize(function()
for a=0,memrec.Count-1 do if memrec.Child[a].Child[0]then for b=0,memrec.Child[a].Count-1 do if memrec.Child[a].Child[b].Script and memrec.Child[a].Child[b].Active then memrec.Child[a].Child[b].Active=false end end end end
while memrec.Child[0]do memrec.Child[i].delete()end
end)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>222</ID>
      <Description>"[$LUA] Get Players"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then
    return
end
local a = aOBScanModuleUnique(process, "48 8D ? ? ? ? ? 4? 3B ? ? ? ? ? 73 ? 48")
if not a then
    return error()
else
    local b, c = a, 0;
    for d = 1, 10 do
        if disassemble(b):match("mov") then
            break
        end
        b = b + getInstructionSize(b)
        c = c + getInstructionSize(b)
        if d == 10 then
            return error()
        end
    end
    a = a + c;
end

local b = disassemble(a):match("%[(.-)%]")
registerSymbol("PlayersData", b)
if getAddress("PlayersData") and readInteger("PlayersData") then
    local c = readPointer("PlayersData")
    local d = readPointer(c)
    local e = 0;
    local f = 0;
    local g = createStringList()
    while readInteger(readPointer(c)) do
        local h;
        if readInteger(d + 0x0058) == 0 then
            h = 0x0070
        else
            h = 0x0058
        end
        local i;
        if readInteger(readPointer(d + 0x0008)) then
            i = readPointer(d + 0x0008)
        elseif readByte(d + 0x0008) ~= 0 then
            i = d + 0x0008
        else
            i = "NOT_SET"
        end
        local j;
        if readInteger(readPointer(d + 0x0030)) then
            j = readPointer(d + 0x0030)
        else
            j = d + 0x0030
        end
        synchronize(function()
            local k = AddressList.createMemoryRecord()
            k.setDescription("Player #" .. f)
            k.setAddress("PlayersData")
            k.setType(12)
            k.appendToEntry(memrec)
            k.DontSave = true;
            k.OffsetCount = 2;
            k.Offset[0] = 0x0000;
            k.Offset[1] = e;
            local l = AddressList.createMemoryRecord()
            l.setDescription("^Credit Value")
            l.setAddress("PlayersData")
            l.setType(2)
            l.Parent = k;
            l.DontSave = true;
            l.ShowAsSigned = true;
            l.OffsetCount = 2;
            l.Offset[0] = h;
            l.Offset[1] = e;
            local m = AddressList.createMemoryRecord()
            m.setDescription("^Company name")
            m.setAddress(i)
            m.setType(6)
            m.String.size = 32;
            m.Parent = k;
            m.DontSave = true;
            local m = AddressList.createMemoryRecord()
            m.setDescription("^Player name")
            m.setAddress(j)
            m.setType(6)
            m.String.size = 32;
            m.Parent = k;
            m.DontSave = true;
            if f ~= 0 then
                g.add('writeInteger(getAddress(readPointer(readPointer("PlayersData")+' .. e .. '))+' .. h .. ',0x0);')
            else
                g.add('[ENABLE]')
                g.add('{$lua}')
            end
        end)
        c = c + 8;
        e = e + 8;
        f = f + 1;
        d = readPointer(c)
    end
    g.add('beep();self.Active=false;')
    g.add('{$asm}')
    g.add('[DISABLE]')
    synchronize(function()
        local a = AddressList.createMemoryRecord()
        a.setDescription("[$Lua] Sabotage everyone except Player#0")
        a.setType(11)
        a.Script = g.Text;
        a.appendToEntry(memrec)
    end)
end

{$asm}
[DISABLE]
{$lua}
synchronize(function()
while memrec.Child[0]do memrec.Child[i].delete()end
end)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>333</ID>
      <Description>"[$LUA] Get Population data"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then
    return
end
local a = aOBScanModuleUnique(process, "48 8B 05 ? ? ? 00 48 8B 0C D8 8B 41 0C 48 83 C4 ?0 5B C3")
if not a then
    return error()
end
local b = disassemble(a):match("%[(.-)%]")
registerSymbol("PopulationData", b)
if getAddress("PopulationData") and readInteger("PopulationData") then
    local c = createStringList()
    local d = createStringList()
    local e = createStringList()
    local f = readPointer("PopulationData")
    local g = readPointer(f)
    local h = 0;
    local i = readInteger(g + 0x0000)
    repeat
        local j = readInteger(g + 0x0000)
        if j then
            if j &gt; i + 1000 or j&lt;i then
                break
            else
                if readInteger(g + 0x000C) ~= 0 then
                    local k;
                    if readInteger(readPointer(g + 0x0098)) then
                        k = readString(readPointer(g + 0x0098))
                    elseif readInteger(readPointer(g + 0x0770)) then
                        k = readString(readPointer(g + 0x0770))
                    elseif readInteger(readPointer(g + 0x0790)) then
                        k = readString(readPointer(g + 0x0790))
                    elseif readByte(g + 0x0098) ~= 0 then
                        k = readString(g + 0x0098)
                    elseif readByte(g + 0x0770) ~= 0 then
                        k = readString(g + 0x0770)
                    elseif readByte(g + 0x0790) ~= 0 then
                        k = readString(g + 0x0790)
                    end
                    synchronize(function()
                        local l = AddressList.createMemoryRecord()
                        l.setDescription(k)
                        l.setAddress("PopulationData")
                        l.setType(2)
                        l.appendToEntry(memrec)
                        l.DontSave = true;
                        l.OffsetCount = 2;
                        l.Offset[0] = 0x000C;
                        l.Offset[1] = h
                    end)
                    c.add('writeInteger(getAddress(readPointer(readPointer("PopulationData")+' .. h ..
                              '))+0x7C8,0x03E8740B);writeInteger(getAddress(readPointer(readPointer("PopulationData")+' ..
                              h .. '))+0x7C4,0x0);')
                    d.add('writeInteger(getAddress(readPointer(readPointer("PopulationData")+' .. h ..
                              '))+0x7C8,0x03E87400);')
                    e.add('writeInteger(getAddress(readPointer(readPointer("PopulationData")+' .. h ..
                              '))+0x7C4,0xFF000000);writeInteger(getAddress(readPointer(readPointer("PopulationData")+' ..
                              h .. '))+0x7C8,0x01D10000);')
                    i = j
                end
            end
        end
        f = f + 8;
        h = h + 8;
        g = readPointer(f)
    until false;
    synchronize(function()
        local m = AddressList.createMemoryRecord()
        m.setDescription("[$Lua] set Outstanding rating /w Exclusive rights to Player #0 Company")
        m.setType(11)
        m.appendToEntry(memrec)
        m.DontSave = true;
        m.Script = '[ENABLE]\n{$lua}\n' .. c.Text .. '\n beep();self.Active=false;\n{$asm}\n[DISABLE]\n'
        local m = AddressList.createMemoryRecord()
        m.setDescription("[$Lua] set Outstanding rating to Player #0 Company")
        m.setType(11)
        m.appendToEntry(memrec)
        m.DontSave = true;
        m.Script = '[ENABLE]\n{$lua}\n' .. d.Text .. '\n beep();self.Active=false;\n{$asm}\n[DISABLE]\n'
        local m = AddressList.createMemoryRecord()
        m.setDescription("[$Lua] Reset Exclusive rights to Player #0 Company")
        m.setType(11)
        m.appendToEntry(memrec)
        m.DontSave = true;
        m.Script = '[ENABLE]\n{$lua}\n' .. e.Text .. '\n beep();self.Active=false;\n{$asm}\n[DISABLE]\n'
        local m = AddressList.createMemoryRecord()
        m.setDescription("[$ASM] Disable Exclusive rights reset")
        m.setType(11)
        m.appendToEntry(memrec)
        m.DontSave = true;
        m.Script =
            '[ENABLE]\naobscanmodule(MoveOn,openttd.exe,** 11 2C 01 88 ?? C8 07 00 00)\nMoveOn:\ndb EB\n[DISABLE]\nMoveOn:\ndb 74'
    end)
end


{$asm}
[DISABLE]
{$lua}
synchronize(function()
while memrec.Child[0]do memrec.Child[i].delete()end
end)

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>444</ID>
      <Description>"[$LUA] Get Transport data (only for 14.1)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then
    return
end
local a = aOBScanModuleUnique(process, "48 8B 05 ? ? ? 00 48 8B 2C D0 0F")
if not a then
    return error()
end
local b = disassemble(a):match("%[(.-)%]")
registerSymbol("VehiclesData", b)
if getAddress("VehiclesData") and readInteger("VehiclesData") then
    local c = readPointer("VehiclesData")
    if not c then return error() end
    local d = readPointer(c)
    if not d then return error() end
    local e = 0;
    local f = readInteger(d + 0x0058)
    repeat
        local g = readInteger(d + 0x0058)
        if g then
            if g &gt; f + 1000 or g&lt;f then
                break
            else
                if readInteger(d + 0x00F4) ~= 0 then
                    synchronize(function()
                        local h = AddressList.createMemoryRecord()
                        h.setDescription("Vehicle #" .. g)
                        h.setAddress("VehiclesData")
                        h.setType(12)
                        h.appendToEntry(memrec)
                        h.DontSave = true;
                        h.OffsetCount = 2;
                        h.Options = [[moManualExpandCollapse,moAlwaysHideChildren]]
                        h.Offset[0] = 0x0000;
                        h.Offset[1] = e;
                        local i = AddressList.createMemoryRecord()
                        i.setDescription("Value of #" .. g)
                        i.setAddress("VehiclesData")
                        i.setType(2)
                        i.appendToEntry(h)
                        i.ShowAsSigned = true;
                        i.DontSave = true;
                        i.OffsetCount = 2;
                        i.Offset[0] = 0x00A0;
                        i.Offset[1] = e;
                        local j = AddressList.createMemoryRecord()
                        j.setDescription("Last year profit of #" .. g)
                        j.setAddress("VehiclesData")
                        j.setType(2)
                        j.appendToEntry(h)
                        j.ShowAsSigned = true;
                        j.DontSave = true;
                        j.OffsetCount = 2;
                        j.Offset[0] = 0x0099;
                        j.Offset[1] = e;
                        local k = AddressList.createMemoryRecord()
                        k.setDescription("Current year profit of #" .. g)
                        k.setAddress("VehiclesData")
                        k.setType(2)
                        k.appendToEntry(h)
                        k.ShowAsSigned = true;
                        k.DontSave = true;
                        k.OffsetCount = 2;
                        k.Offset[0] = 0x0091;
                        k.Offset[1] = e;
                        local l = AddressList.createMemoryRecord()
                        l.setDescription("Build date of #" .. g)
                        l.setAddress("VehiclesData")
                        l.setType(2)
                        l.appendToEntry(h)
                        l.ShowAsSigned = true;
                        l.DontSave = true;
                        l.OffsetCount = 2;
                        l.Offset[0] = 0x00EC;
                        l.Offset[1] = e;
                        local m = AddressList.createMemoryRecord()
                        m.setDescription("Current age of #" .. g)
                        m.setAddress("VehiclesData")
                        m.setType(2)
                        m.appendToEntry(h)
                        m.ShowAsSigned = true;
                        m.DontSave = true;
                        m.OffsetCount = 2;
                        m.Offset[0] = 0x00F0;
                        m.Offset[1] = e;
                        local n = AddressList.createMemoryRecord()
                        n.setDescription("Retirement age of #" .. g)
                        n.setAddress("VehiclesData")
                        n.setType(2)
                        n.appendToEntry(h)
                        n.ShowAsSigned = true;
                        n.DontSave = true;
                        n.OffsetCount = 2;
                        n.Offset[0] = 0x00F8;
                        n.Offset[1] = e;
                        local o = AddressList.createMemoryRecord()
                        o.setDescription("Reliability of #" .. g)
                        o.setAddress("VehiclesData")
                        o.setType(1)
                        o.appendToEntry(h)
                        o.DontSave = true;
                        o.OffsetCount = 2;
                        o.Offset[0] = 0x0104;
                        o.Offset[1] = e
                    end)
                end
                f = g
            end
        end
        c = c + 8;
        e = e + 8;
        d = readPointer(c)
    until false
end

{$asm}
[DISABLE]
{$lua}
synchronize(function()
while memrec.Child[0]do memrec.Child[i].delete()end
end)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>445</ID>
      <Description>"[$LUA] Get Placed Buildings (only for 14.1)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then
    return
end
local a = aOBScanModuleUnique(process, "48 8B 05 ? ? ? 00 48 8B 2C C8 48 8B CE")
if not a then
    return
end
local b = disassemble(a):match("%[(.-)%]")
registerSymbol("PlacedBuildingsData", b)
if getAddress("PlacedBuildingsData") and readInteger("PlacedBuildingsData") then
    local c = readPointer("PlacedBuildingsData")
    local d = readPointer(c)
    local e = 0;
    local f = readInteger(d + 0x0008)
    repeat
        local g;
        if readInteger(readPointer(d + 0x0050)) then
            g = readString(readPointer(d + 0x0050))
        elseif readInteger(readPointer(d + 0x0028)) then
            g = readString(readPointer(d + 0x0028))
        elseif readByte(d + 0x0050) ~= 0 then
            g = readString(d + 0x0050)
        elseif readByte(d + 0x0028) ~= 0 then
            g = readString(d + 0x0028)
        end
        local h = readInteger(d + 0x0008)
        if h then
            if h &gt; f + 1000 or h&lt;f then
                break
            else
                if g~=nil then
                synchronize(function()
                    local i = AddressList.createMemoryRecord()
                    i.setDescription(g .. " Building #" .. h)
                    i.setAddress("PlacedBuildingsData")
                    i.setType(12)
                    i.appendToEntry(memrec)
                    i.DontSave = true;
                    i.OffsetCount = 2;
                    i.Options = [[moManualExpandCollapse,moAlwaysHideChildren]]
                    i.Offset[0] = 0x0000;
                    i.Offset[1] = e;
                    local j = AddressList.createMemoryRecord()
                    j.setDescription("Reserved value (Passengers) #" .. h)
                    j.setAddress("PlacedBuildingsData")
                    j.setType(2)
                    j.appendToEntry(i)
                    j.ShowAsSigned = true;
                    j.DontSave = true;
                    j.OffsetCount = 2;
                    j.Offset[0] = 0x01B8;
                    j.Offset[1] = e;
                    local k = AddressList.createMemoryRecord()
                    k.setDescription("Reserved value (Coal) #" .. h)
                    k.setAddress("PlacedBuildingsData")
                    k.setType(2)
                    k.appendToEntry(i)
                    k.ShowAsSigned = true;
                    k.DontSave = true;
                    k.OffsetCount = 2;
                    k.Offset[0] = 0x0200;
                    k.Offset[1] = e;
                    local l = AddressList.createMemoryRecord()
                    l.setDescription("Reserved value (Mail) #" .. h)
                    l.setAddress("PlacedBuildingsData")
                    l.setType(2)
                    l.appendToEntry(i)
                    l.ShowAsSigned = true;
                    l.DontSave = true;
                    l.OffsetCount = 2;
                    l.Offset[0] = 0x0248;
                    l.Offset[1] = e;
                    local m = AddressList.createMemoryRecord()
                    m.setDescription("Reserved value (Oil) #" .. h)
                    m.setAddress("PlacedBuildingsData")
                    m.setType(2)
                    m.appendToEntry(i)
                    m.ShowAsSigned = true;
                    m.DontSave = true;
                    m.OffsetCount = 2;
                    m.Offset[0] = 0x0290;
                    m.Offset[1] = e;
                    local n = AddressList.createMemoryRecord()
                    n.setDescription("Reserved value (livestock) #" .. h)
                    n.setAddress("PlacedBuildingsData")
                    n.setType(2)
                    n.appendToEntry(i)
                    n.ShowAsSigned = true;
                    n.DontSave = true;
                    n.OffsetCount = 2;
                    n.Offset[0] = 0x02D8;
                    n.Offset[1] = e;
                    local o = AddressList.createMemoryRecord()
                    o.setDescription("Reserved value (goods) #" .. h)
                    o.setAddress("PlacedBuildingsData")
                    o.setType(2)
                    o.appendToEntry(i)
                    o.ShowAsSigned = true;
                    o.DontSave = true;
                    o.OffsetCount = 2;
                    o.Offset[0] = 0x0320;
                    o.Offset[1] = e;
                    local p = AddressList.createMemoryRecord()
                    p.setDescription("Reserved value (grain) #" .. h)
                    p.setAddress("PlacedBuildingsData")
                    p.setType(2)
                    p.appendToEntry(i)
                    p.ShowAsSigned = true;
                    p.DontSave = true;
                    p.OffsetCount = 2;
                    p.Offset[0] = 0x0368;
                    p.Offset[1] = e;
                    local q = AddressList.createMemoryRecord()
                    q.setDescription("Reserved value (wood) #" .. h)
                    q.setAddress("PlacedBuildingsData")
                    q.setType(2)
                    q.appendToEntry(i)
                    q.ShowAsSigned = true;
                    q.DontSave = true;
                    q.OffsetCount = 2;
                    q.Offset[0] = 0x03B0;
                    q.Offset[1] = e;
                    local r = AddressList.createMemoryRecord()
                    r.setDescription("Reserved value (iron) #" .. h)
                    r.setAddress("PlacedBuildingsData")
                    r.setType(2)
                    r.appendToEntry(i)
                    r.ShowAsSigned = true;
                    r.DontSave = true;
                    r.OffsetCount = 2;
                    r.Offset[0] = 0x03F8;
                    r.Offset[1] = e;
                    local s = AddressList.createMemoryRecord()
                    s.setDescription("Reserved value (steel) #" .. h)
                    s.setAddress("PlacedBuildingsData")
                    s.setType(2)
                    s.appendToEntry(i)
                    s.ShowAsSigned = true;
                    s.DontSave = true;
                    s.OffsetCount = 2;
                    s.Offset[0] = 0x0440;
                    s.Offset[1] = e;
                    local t = AddressList.createMemoryRecord()
                    t.setDescription("Reserved value (valuables) #" .. h)
                    t.setAddress("PlacedBuildingsData")
                    t.setType(2)
                    t.appendToEntry(i)
                    t.ShowAsSigned = true;
                    t.DontSave = true;
                    t.OffsetCount = 2;
                    t.Offset[0] = 0x0488;
                    t.Offset[1] = e
                end)
                end
                f = h
            end
        end
        c = c + 8;
        e = e + 8;
        d = readPointer(c)
    until false
end

{$asm}
[DISABLE]
{$lua}
synchronize(function()
while memrec.Child[0]do memrec.Child[i].delete()end
end)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>17944</ID>
      <Description>"[$LUA] Get World Industry Buildings (only for 14.1)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then
    return
end
local a = aOBScanModuleUnique(process, "48 8B ?? ?? ?? ?? 00 4A 8B ?? ?? 4C 8? ?? ?? ?? ?? ?? ?? E8")
if not a then
    return
end
local b = disassemble(a):match("%[(.-)%]")
registerSymbol("IndustryData", b)
if getAddress("IndustryData") and readInteger("IndustryData") then
    local c = readPointer("IndustryData")
    local d = readPointer(c)
    local e = 0;
    local f = readInteger(d + 0x0)
    while true do
        local g = readInteger(d + 0x0)
        if g then
            if g &gt; f + 1000 or g&lt;f then
                break
            else
                local h;
                if readInteger(readPointer(d + 0x01A0)) then
                    h = readString(readPointer(d + 0x01A0))
                elseif readInteger(readPointer(d + 0x0180)) then
                    h = readString(readPointer(d + 0x0180))
                elseif readByte(d + 0x01A0) ~= 0 then
                    h = readString(d + 0x01A0)
                end
                if h == nil then
                    h = "Undiscovered"
                end
                synchronize(function()
                    local i = AddressList.createMemoryRecord()
                    i.setDescription(h .. " Production Type #" .. g)
                    i.setAddress("IndustryData")
                    i.setType(0)
                    i.appendToEntry(memrec)
                    i.DontSave = true;
                    i.OffsetCount = 2;
                    i.Offset[0] = 0x0020;
                    i.Offset[1] = e;
                    i.DropDownList.Text = [[
255:[ CLOSE DOWN ]
0: [ PASSENGERS ]
1: [ COAL ]
2: [ MAIL ]
3: [ OIL ]
4: [ LIVESTOCK ]
5: [ GOODS ]
6: [ GRAIN ]
7: [ WOOD ]
8: [ IRON ]
9: [ STEEL ]
10: [ VALUABLES ]
11: [ RESERVED ]
]]
                    i.DropDownDescriptionOnly = true;
                    i.DisplayAsDropDownListItem = true;
                    i.DropDownReadOnly = true
                end)
                f = g
            end
        end
        c = c + 8;
        e = e + 8;
        d = readPointer(c)
    end
end

{$asm}
[DISABLE]
{$lua}
synchronize(function()
while memrec.Child[0]do memrec.Child[i].delete()end
end)
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
