require 'config' eressea.read_game('1137.dat') local dead = {"cwz", "rama"} local function list_items(f) local items = {} for u in f.units do local r = u.region for name in u.items do local count = u:get_item(name) if not items[r.id] then items[r.id] = {} end if not items[r.id][name] then items[r.id][name] = count else items[r.id][name] = items[r.id][name] + count end end end return items end gifts = {} info = {} for _, no in ipairs(dead) do f = get_faction(no) gifts[f.id] = list_items(f) local allies = {} for fno, as in pairs(f.allies) do local f2 = get_faction(fno) if f2:get_ally(f, 'give') then allies[fno] = as end end info[f.id] = { ['name'] = f.name, ['race'] = f.race, ['allies'] = allies } end eressea.free_game() eressea.read_game('1138.dat') newf = {} for fid, rlist in pairs(gifts) do local name = "Erben von " .. info[fid].name local race = info[fid].race local f = faction.create(race, "noreply@eressea.de") f.name = name f.age = 10 f.lastturn = 1130 table.insert(newf, f) for rid, items in pairs(rlist) do local r = get_region_by_id(rid) local u = unit.create(f, r, 1) for name, count in pairs(items) do u:add_item(name, count) end end for fno, as in pairs(info[fid].allies) do local f2 = get_faction(fno) for _, s in ipairs(as) do f:set_ally(f2, s) end f2:set_ally(f, "give") end end eressea.write_game('1138.new.dat')