diff --git a/src/eressea/default.lua b/src/scripts/default.lua similarity index 100% rename from src/eressea/default.lua rename to src/scripts/default.lua diff --git a/src/scripts/wdw-run.lua b/src/scripts/wdw-run.lua new file mode 100644 index 000000000..e2c804904 --- /dev/null +++ b/src/scripts/wdw-run.lua @@ -0,0 +1,56 @@ +function list_empty(list) + -- trickfunktion, die rausfindet, ob es schon eine partei gibt. + local _foo, _state, var_1 = list() + local begin = _foo(_state, var_1) + return begin == nil +end + +function run_wdw() + -- load 'wdw-start', if it exists. otherwise, load the latest turn, + -- and make a backup called 'wdw-start'. + local file = "wdw-start" + local alliance, position, faction + if list_empty(factions) then + if read_game(file)~=0 then + local turnfile = "" .. get_turn() + if read_game(turnfile)~=0 then + print("could not read game") + return -1 + end + if write_game(file)~=0 then + print("could not write game") + return -1 + end + end + end + + -- run the alliances setup + if list_empty(alliances) then + dofile("wdw-setup.lua") + end + -- -- run the turn (not yet) + -- read_orders(orders) + -- process_orders() + + -- siegbedingungen ausgeben + dofile("wdw-standings.lua") + if 1 == 1 then + return -1 + end + + -- write out the initial reports (no need to run a turn) + write_passwords() + write_reports() + + + -- write the resulting file to 'wdw-setup' + if write_game("wdw-setup")~=0 then + print("could not write game") + return -1 + end +end + + +-- +-- main body of the script +run_wdw() diff --git a/src/scripts/wdw-setup.lua b/src/scripts/wdw-setup.lua new file mode 100644 index 000000000..668550f0f --- /dev/null +++ b/src/scripts/wdw-setup.lua @@ -0,0 +1,204 @@ +positions = {} + +function init_positions() + -- init starting positions for the alliances here. + positions = { + [11] = get_region(0, 1), + [12] = get_region(0, 2), + [13] = get_region(0, 3), + [14] = get_region(0, 4), + [15] = get_region(0, 5), + [17] = get_region(0, 6), + [18] = get_region(0, 7), + [19] = get_region(0, 8) + } +end + +function get_position(aid) +-- return the position at which alliance 'aid' will start. + local pos = positions[aid] + + -- hack, because i have no coordinates yet: + if pos.terrain ~= "ocean" then + return pos + else + -- find a region. let's use the region number 'aid' in the list, + -- so everyone gets their own + print("cannot place alliance " .. aid .. " at " .. pos.x .. ", " .. pos.y) + for pos in regions() do + if pos.terrain ~= "ocean" then + if aid==0 then + return pos + else + aid = aid-1 + end + end + end + end +end + +gems = { "opal", "diamond", "zaphire", "topaz", "beryl", "agate", "garnet", "emerald" } + +function get_gem(id) + return gems[math.mod(id, 8)+1] +end + +ano = 0 -- counting active alliance +numalliances = 8 -- number of alliances +lastalliance = nil + +function make_faction(position, alliance, number, email, race) + local skillno = 27 -- es gibt 27 skills in der liste + local units = (1+skillno)*6 / number -- jede allianz kriegt 168 leute + local money = units * 5 * 10 -- jede allianz kriegt 8400 silber + + local f = add_faction(email, race, "de") + if f == nil then + print("could not create " .. email .. " " .. race) + return + end + + + print("\n" .. email .. " (" .. itoa36(f.id) .. ")") + f.alliance = alliance + local u = add_unit(f, position) + -- erster ist der, der die extras kriegt: + u.number = 1 + local units = units - 1 + u:add_item("money", money) + if lastalliance==nil or alliance.id ~= lastalliance.id then + ano=ano+1 + lastalliance = alliance + u:add_item(get_gem(ano), numalliances-1) + u:add_item(get_gem(ano+1), 2) + u:add_item(get_gem(ano+2), 2) + end + + local sk + for sk in skills do + u = add_unit(f, position) + + -- anzahl personen berechnen + local number = math.floor(units / skillno) + units = units - number + skillno = skillno - 1 + u.number = number + + local skill = skills[sk] + u:set_skill(skill, 3) + + print("- " .. number .. " x " .. skill) + end +end + +-- skills that will be given to new units +skills = { + "sk_roadwork", + "sk_alchemy", + "sk_crossbow", + "sk_mining", + "sk_bow", + "sk_building", + "sk_trade", + "sk_forestry", + "sk_catapult", + "sk_herbalism", + "sk_training", + "sk_riding", + "sk_armorer", + "sk_shipcraft", + "sk_melee", + "sk_sailing", + "sk_polearm", + "sk_espionage", + "sk_quarrying", + "sk_tactics", + "sk_stealth", + "sk_entertainment", + "sk_weaponsmithing", + "sk_cartmaking", + "sk_perception", + "sk_taxation", + "sk_stamina" +} + +function wdw_setup() + -- initialize starting equipment for new players + add_equipment("magicskillboost", 1) + + init_positions() + + -- Initialize Wächter des Phoenix + alliance = add_alliance(11, "Wächter des Phoenix") + position = get_position(11) + faction = make_faction(position, alliance, 4, "durgan@web.de", "Elfen") + faction = make_faction(position, alliance, 4, "Daniel@gedankenwelt.net", "Trolle") + faction = make_faction(position, alliance, 4, "rostnicht@web.de", "Dämonen") + faction = make_faction(position, alliance, 4, "16419@uni-lueneburg.de", "Insekten") + + -- Initialize Refinius + alliance = add_alliance(12, "Refinius") + position = get_position(12) + faction = make_faction(position, alliance, 5, "wanderameisen@dunklerpfad.de", "Meermenschen") + faction = make_faction(position, alliance, 5, "ElunasErben@dunklerpfad.de", "Elfen") + faction = make_faction(position, alliance, 5, "miles.tegson@gmx.net", "Zwerge") + faction = make_faction(position, alliance, 5, "shannera@shannera.de", "Dämonen") + faction = make_faction(position, alliance, 5, "langhaarigerBombenleger@firemail.de", "Trolle") + + -- Initialize Stählerner Bund von Parinor + alliance = add_alliance(13, "Stählerner Bund von Parinor") + position = get_position(13) + faction = make_faction(position, alliance, 5, "ta@sts-gbr.de", "Dämonen") + faction = make_faction(position, alliance, 5, "klausnet@gmx.de", "Elfen") + faction = make_faction(position, alliance, 5, "r.jerger@gmx.de", "Trolle") + faction = make_faction(position, alliance, 5, "christianemmler@t-online.de", "Insekten") + faction = make_faction(position, alliance, 5, "DieCherusker@gmx.de", "Orks") + + -- Initialize Ethâra´s Zirkel des Chaos + alliance = add_alliance(14, "Ethâra´s Zirkel des Chaos") + position = get_position(14) + faction = make_faction(position, alliance, 4, "craban@web.de", "Elfen") + faction = make_faction(position, alliance, 4, "saressa@celtic-visions.net", "Zwerge") + faction = make_faction(position, alliance, 4, "krachon@gmx.de", "Orks") + faction = make_faction(position, alliance, 4, "andreas.westhoff@physik3.gwdg.de", "Meermenschen") + + -- Initialize Janustempler + alliance = add_alliance(15, "Janustempler") + position = get_position(15) + faction = make_faction(position, alliance, 4, "alex.goelkel@t-online.de", "Meermenschen") + faction = make_faction(position, alliance, 4, "matthias.lendholt@gmx.de", "Elfen") + faction = make_faction(position, alliance, 4, "Uwe.Kopf@onlinehome.de", "Orks") + faction = make_faction(position, alliance, 4, "Jan.Thaler@gmx.de", "Dämonen") + + -- Initialize Kiddies + alliance = add_alliance(17, "Kiddies") + position = get_position(17) + faction = make_faction(position, alliance, 5, "henning.ewald@t-online.de", "Orks") + faction = make_faction(position, alliance, 5, "red@gmx.de", "Meermenschen") + faction = make_faction(position, alliance, 5, "Morgon@Morgon.de", "Zwerge") + faction = make_faction(position, alliance, 5, "hadmar.lang@wu-wien.ac.at", "Elfen") + faction = make_faction(position, alliance, 5, "vinyambar@burningchaos.org", "Dämonen") + + -- Initialize Airbe Druad + alliance = add_alliance(18, "Airbe Druad") + position = get_position(18) + faction = make_faction(position, alliance, 6, "t.lam@gmx.at", "Elfen") + faction = make_faction(position, alliance, 6, "Post_der_Trolle@gmx.de", "Dämonen") + faction = make_faction(position, alliance, 6, "Mann.Martin@t-online.de", "Meermenschen") + faction = make_faction(position, alliance, 6, "thaeberli@freesurf.ch", "Orks") + faction = make_faction(position, alliance, 6, "sonja@tzi.de", "Trolle") + faction = make_faction(position, alliance, 6, "lothar.juerss@gmx.at", "Zwerge") + + -- Initialize Matula + alliance = add_alliance(19, "Matula") + position = get_position(19) + faction = make_faction(position, alliance, 4, "mserrano@tiscali.de", "Elfen") + faction = make_faction(position, alliance, 4, "kerki@aol.com", "Dämonen") + faction = make_faction(position, alliance, 4, "Roddiwi@aol.com", "Orks") + faction = make_faction(position, alliance, 4, "bauschan@aol.com", "Trolle") +end + + +-- +-- main body of the script +wdw_setup() diff --git a/src/scripts/wdw-standings.lua b/src/scripts/wdw-standings.lua new file mode 100644 index 000000000..502eeba5b --- /dev/null +++ b/src/scripts/wdw-standings.lua @@ -0,0 +1,43 @@ +conditions = { pyramid="Pyramide", gems="Handel", phoenix="Phönix" } + +function log(file, line) + print(line) + file:write(line .. "\n") +end + +function write_standings() + print(reportpath .. "/victory.txt") + local file = io.open(reportpath .. "/victory.txt", "w") + + log(file, "** Allianzen **") + local alliance + for alliance in alliances() do + local faction + log(file, alliance.id .. ": " .. alliance.name) + for faction in alliance.factions do + log(file, "- " .. faction.name .." (" .. faction.id .. ")") + end + log (file, "") + end + + log(file, "** Erfüllte Siegbedingungen **") + local condition + for condition in conditions do + local none = true + log(file, conditions[condition]) + for alliance in alliances() do + if victorycondition(alliance, condition)==1 then + log(file, " - " .. alliance.name .. " (" .. alliance.id .. ")") + none = false + end + end + if none then + log(file, " - Niemand") + end + end + + file:close() +end + +-- main body of script +write_standings()