local report = function(player,tile,...) if chat then chat.msg(...) else notify.event(player,tile,E.BROADCAST_REPORT,...) end log.normal(...) end local barbs = {[find.nation_type ("Barbarian")] = true; [find.nation_type ("Pirate")] = true;} local players, human = {} for player in players_iterate() do if not player.ai_controlled then human = player elseif player.is_alive and not barbs [player.nation] then players[player] = {less = 0; more = 0} end end for id, tech in (function (tech,id) tech = find.tech_type (id) return tech and id +1, tech end), nil, 0 do for player, t in pairs(players) do local h, p = human:knows_tech(tech), player:knows_tech(tech) if false then elseif h and not p then t.less = t.less +1 elseif p and not h then t.more = t.more +1 end end end local MF = math.floor report(human, nil, "Gold ours/theirs Tradable Techs") for player, t in pairs(players) do report(human, nil, "%3s %3s/%3s %s", MF(player:gold()), t.less, t.more, player.nation:name_translation()) end