diff --git a/scripts/run-turn.lua b/scripts/run-turn.lua new file mode 100644 index 000000000..615d9eeab --- /dev/null +++ b/scripts/run-turn.lua @@ -0,0 +1,2 @@ +require "setup" +run_turn() diff --git a/scripts/setup.lua b/scripts/setup.lua new file mode 100644 index 000000000..116ee94d4 --- /dev/null +++ b/scripts/setup.lua @@ -0,0 +1,15 @@ +local srcpath = config.source_dir +local respath = srcpath .. '/res' +local paths = { + 'scripts/?.lua', + 'core/scripts/?.lua', + 'lunit/?.lua' +} + +for idx, path in pairs(paths) do + package.path = srcpath .. '/' .. path .. ';' .. package.path +end + +read_xml() + +require "init" diff --git a/scripts/tools/build.lua b/scripts/tools/build.lua new file mode 100644 index 000000000..1e8c6f5d5 --- /dev/null +++ b/scripts/tools/build.lua @@ -0,0 +1,100 @@ +function new_faction(email, race, lang, r) + f = faction.create(email, race, lang) + u = unit.create(f, r, 10) + u:add_item("log", 5); + u:add_item("horse", 2); + u:add_item("silver", 1000); + u:add_item("adamantium", 1); +end + +function get_homes(f) + homes={} + for u in f.units do + table.insert(homes, u.region) + end + return homes +end + +if eressea~=nil then + eressea.free_game() + eressea.read_game("game4.dat") + homes = get_homes(get_faction("xin8")) +else + -- running in the lua interpreter, not eressea. fake it. + new_faction = print + eressea = { ['write_game'] = function(s) print("writing " .. s) end } + homes = { "Andune", "Bedap", "Curtis", "Dovre" } +end + +local f=assert(io.open("factions", "r")) +line=f:read("*line") +players = {} +emails = {} +patrons = {} +nplayers = 0 +while line~=nil do + fields = {} + line:gsub("([^\t]*)\t*", function(c) table.insert(fields, c) end) + line=f:read("*line") + email = fields[1] + if fields[2]=='yes' then + table.insert(patrons, email) + else + table.insert(emails, email) + end + if fields[3]=='German' then lang='de' else lang='en' end + race=string.gsub(fields[4], "/.*", ''):lower() + players[email] = { ['lang'] = lang, ['race'] = race } + nplayers = nplayers + 1 +end + +for k, r in ipairs(homes) do + print(k, r) +end +npatrons = #patrons +print(#homes .. " regions.") +print(nplayers .. " players.") +print(npatrons .. " patrons.") + +maxfactions = 20 +selected = {} +if maxfactions > nplayers then maxfactions = nplayers end +while maxfactions > 0 do + if npatrons > 0 then + email = patrons[npatrons] + patrons[npatrons] = nil + npatrons = npatrons - 1 + else + local np = #emails + local i = math.random(np) + email = emails[i] + emails[i] = emails[np] + emails[np] = nil + end + local player = players[email] + player.email = email + table.insert(selected, player) + maxfactions = maxfactions - 1 +end + +-- random shuffle +for j=1,#selected do + k = math.random(j) + if k ~= j then + local temp = selected[j] + selected[j] = selected[k] + selected[k] = temp + end +end + +print('## players') +for k, player in ipairs(selected) do + local r = homes[1 + k % #homes] + new_faction(player.email, player.race, player.lang, r) + print(player.email) +end +eressea.write_game("game4.dat") +print("## no faction") +for i, email in ipairs(emails) do + print(email) +end diff --git a/scripts/tools/oceanfill.lua b/scripts/tools/oceanfill.lua new file mode 100644 index 000000000..8025897f6 --- /dev/null +++ b/scripts/tools/oceanfill.lua @@ -0,0 +1,11 @@ +p = plane.get(0) +w, h = p:size() +print(p, w, h) +for x=0,w-1 do + for y=0,h-1 do + r = get_region(x,y) + if r==nil then + r = region.create(x, y, "ocean") + end + end +end diff --git a/scripts/tools/reimburse.lua b/scripts/tools/reimburse.lua new file mode 100644 index 000000000..9877f0649 --- /dev/null +++ b/scripts/tools/reimburse.lua @@ -0,0 +1,37 @@ +require "config" + +function main() + for f in factions() do + if f.race=="demon" then + for u in f.units do + u.building.size = 2 + u.building.name = u.region.name .. " Keep" + u.name = "Lord " .. u.region.name + end + else + u = f.units() + u:add_item("money", 1000-u:get_item("money")) + u:add_item("adamantium", 1-u:get_item("adamantium")) + end + end + for r in regions() do for u in r.units do + print(u) + things = "" + comma = "" + for i in u.items do + things = things .. comma .. u:get_item(i) .. " " .. i + comma = ", " + end + print(' - ' .. things) + end end +end + +if eressea==nil then + print("this script is part of eressea") +else + config.read() + eressea.read_game('0.dat') + main() + eressea.write_game('0.dat') + print('done') +end diff --git a/scripts/tools/reports.lua b/scripts/tools/reports.lua new file mode 100644 index 000000000..127d9fc46 --- /dev/null +++ b/scripts/tools/reports.lua @@ -0,0 +1,4 @@ +read_xml() +eressea.read_game('0.dat') +init_reports() +write_reports()