diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 000000000..26bf60cb0 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,75 @@ +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll with GitHub Pages dependencies preinstalled + +on: + # Runs on pushes targeting the default branch + push: + branches: ["stm-web"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + # Build job + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Get latest CMake and ninja + uses: lukka/get-cmake@latest + - name: Update APT + run: sudo apt update + - name: Install dependencies + run: | + sudo apt install libutf8proc-dev libexpat1-dev liblua5.2-dev lua5.2 luarocks libtolua-dev libncurses5-dev libsqlite3-dev libiniparser-dev libcjson-dev libbsd-dev cppcheck shellcheck clang-tools iwyu + luarocks install lunitx --local + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: true + - name: Build and Test + uses: threeal/cmake-action@v1.1.0 + with: + build-dir: ${{ runner.workspace }}/server/build + args: "-DCMAKE_BUILD_TYPE=Debug" + run-test: true + + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Create demos + run: | + cd stm-jekyll + bash scripts/create_demos.sh + - name: Build with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./stm-jekyll + destination: ./_site + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/demo/eressea.ini b/demo/eressea.ini new file mode 100644 index 000000000..899493ca8 --- /dev/null +++ b/demo/eressea.ini @@ -0,0 +1,12 @@ +[game] +name = Eressea +id = 2 +email = eressea-server@kn-bremen.de +verbose = 0 +locales = de,en + +[lua] +install = .. +paths = scripts +maxnmrs = 20 +rules = e2 diff --git a/demo/run_demo b/demo/run_demo new file mode 100755 index 000000000..379f1492d --- /dev/null +++ b/demo/run_demo @@ -0,0 +1,21 @@ +#!/bin/bash +set -ex + +eval $(luarocks path) +ROOT=$(git rev-parse --show-toplevel) +export LUA_PATH="$ROOT/scripts/?.lua;$LUA_PATH" +BUILD=$ROOT/build + +if [ ! -e $BUILD ]; then + echo "cannot find build directory $BUILD in $ROOT. did you run cmake-init?" + exit +fi + +RUN_ERESSEA="$BUILD/eressea/eressea" + +cd $ROOT/demo +rm -rf reports orders.txt score score.alliances datum turn +$RUN_ERESSEA -v1 ../scripts/run-demo.lua +$RUN_ERESSEA --version + +cd $OLDWPD diff --git a/res/core/messages.xml b/res/core/messages.xml index 58ed96880..dfeeb5162 100644 --- a/res/core/messages.xml +++ b/res/core/messages.xml @@ -5447,6 +5447,7 @@ + diff --git a/res/translations/messages.de.po b/res/translations/messages.de.po index 00e56c6d7..884795662 100644 --- a/res/translations/messages.de.po +++ b/res/translations/messages.de.po @@ -2416,7 +2416,7 @@ msgid "confusion_effect_0" msgstr "\"$unit($mage) stimmt einen seltsamen Gesang an. Ein plötzlicher Tumult entsteht, der sich jedoch schnell wieder legt.\"" msgid "pest" -msgstr "\"Hier wütete die Pest, und $int($dead) $resource($peasants,$dead) $if($eq($dead,1), \"starb\", \"starben\").\"" +msgstr "\"Hier wütete die Pest, und $int($dead) $resource($peasants,$dead) $if($eq($dead,1), \"starb\", \"starben\") ($int($round)).\"" msgid "wormhole_exit" msgstr "\"$unit($unit) reist durch ein Wurmloch nach $region($region).\"" diff --git a/scripts/demo/demo.lua b/scripts/demo/demo.lua new file mode 100644 index 000000000..33025386c --- /dev/null +++ b/scripts/demo/demo.lua @@ -0,0 +1,788 @@ +-- local lunit = require('lunit') + +function rules_tame() + eressea.settings.set("rules.food.flags", "4") -- 4: food is free + eressea.settings.set("rules.ship.damage.nocrewocean", "0") + eressea.settings.set("rules.ship.damage.nocrew", "0") + eressea.settings.set("rules.ship.drifting", "0") + eressea.settings.set("rules.ship.storms", "0") +end + +function rules_wild() + eressea.settings.set("NewbieImmunity", "0") + eressea.settings.set("rules.food.flags", "0") -- 0: default + eressea.settings.set("rules.ship.damage.nocrewocean", "1") + eressea.settings.set("rules.ship.damage.nocrew", "1") + eressea.settings.set("rules.ship.drifting", "1") + eressea.settings.set("rules.ship.storms", "1") +end + +local function max_aura(mskill) + return math.modf(math.pow(mskill, 2.1)/1.2+1) +end + +local function printf(s, ...) + return io.write(s:format(...)) +end + +function get_plane_bounds(dist) + if dist == nil then dist = 2000 end + local bounds = {x = -2^32, xmin = 2^32, y = -2^32,ymin = 2^32} + for r in regions() do + if r.x > bounds.x then bounds.x = r.x end + if r.y < bounds.xmin then bounds.xmin = r.x end + if r.y > bounds.y then bounds.y = r.y end + if r.y < bounds.ymin then bounds.ymin = r.y end + end + if bounds.x < bounds.xmin then + bounds.x = 0 + bounds.xmin = 0 + bounds.y = 0 + bounds.ymin = 0 + bounds.xoff = 0 + bounds.yoff = 0 + else + bounds.x = bounds.x + bounds.y = bounds.y + bounds.xmin = bounds.xmin + bounds.ymin = bounds.ymin + bounds.xoff = bounds.xmin - dist + bounds.yoff = 0 + end + return bounds +end + +function write_md(filename, title, description, long_description, crs) + file = io.open("reports/" .. filename, "w") + file:write("---\n") + file:write("name: " .. title .. "\n") + file:write("description: " .. description .."\n") + file:write("crs:\n") + for _, v in ipairs(crs) do + file:write(" - " .. v .. "\n") + end + file:write("date: " .. os.date("%Y-%m-%d") .. "\n") + file:write("---\n") + file:write(long_description) + file:write("\n") +end + + +local demo_bounds = {} + +function get_demo_region(x, y) + if demo_bounds == nil or demo_bounds.x == nil then error("bounds not initialized") end + return get_region(demo_bounds.xoff + x, demo_bounds.yoff + y) +end + +function create_eressea_map() + demo_bounds = get_plane_bounds() + + local points = { + {0, 0}, {1 ,0}, {2, 0}, + {4, 0}, {6, 0}, + {8, 0}, {9, 0}, {10, 0}, + {12, 0}, {13, 0}, {14, 0}, + {16, 0}, {17, 0}, {18, 0}, + {20, 0}, {21, 0}, {22, 0}, + {24, 0}, {26, 0}, + + {0, 1}, + {4, 1}, {5, 1}, + {8, 1}, + {14, 1}, + {18, 1}, + {20, 1}, + {24, 1}, {26, 1}, + + {0,2}, {1,2}, {2, 2}, + {4, 2}, {5, 2}, {6, 2}, + {8, 2}, {9, 2}, {10, 2}, + {13, 2}, + {17, 2}, + {20, 2}, {21, 2}, {22, 2}, + {24, 2}, {25, 2}, {26, 2}, + + {0,3}, + {4, 3}, {6, 3}, + {8, 3}, + {12, 3}, + {16, 3}, + {20, 3}, + {24, 3}, {26, 3}, + + {0,4}, {1,4}, {2, 4}, + {4, 4}, {5, 4}, {6, 4}, + {8, 4}, {9, 4}, {10, 4}, + {12, 4}, {13, 4}, {14, 4}, + {16, 4}, {17, 4}, {18, 4}, + {20, 4}, {21, 4}, {22, 4}, + {24, 4}, {25, 4} + } + local map = {} + local xmax, ymax = 0, 0 + local types = { 'plain', 'swamp', 'highland', 'desert', 'volcano', 'glacier' } + local ntypes = 5 + for _, p in ipairs(points) do + local x, y = p[1], p[2] + if map[x] == nil then + map[x] = {} + end + map[x][y] = 1 + xmax = math.max(xmax, x) + ymax = math.max(ymax, y) + end + for x = -5, 2*xmax+5 do + local x2 = math.modf(x/2) + if x < 0 then x2 = math.modf(x-1/2) end + if map[x2] == nil then map[x2] = {} end + for y = -5, 2*ymax+5 do + local y2 = math.modf(y/2) + if y < 0 then y2 = math.modf(y-1/2) end + local type = 'ocean' + if map[x2][y2] == 1 then + type = types[math.random(ntypes)] + -- elseif (x2 < -1 or y2 < -1 or x2 > xmax+1 or y2 > ymax+1) and math.random(7) == 1 then + elseif x == -5 or y == -5 or x == 2*xmax+5 or y == 2*ymax+5 then + type = 'firewall' + end + r = region.create(demo_bounds.xoff + x, demo_bounds.yoff + y, type) + end + end +end + +-- types = { 'plain', 'swamp', 'highland', 'volcano', 'glacier' } +habitable = { ['plain'] = true, ['swamp'] = true, ['highland'] = true, ['volcano'] = true, ['glacier'] =true } + +local function create_unit(f, r, n, name) + local u = unit.create(f,r,n) + u.name = name + u.id = atoi36(name) + return u +end + + +local function magiclines(s) + if s:sub(-1)~="\n" then s=s.."\n" end + return s:gmatch("(.-)\n") +end + +local function add_orders(u, orders) + for line in magiclines(orders) do + u:add_order(line) + end +end + +local function add_order(id, orders) + local u = get_unit(atoi36(id)) + add_orders(u, orders) +end + +local function dump(o) + if type(o) == 'table' then + local s = '{ ' + for k,v in pairs(o) do + if type(k) ~= 'number' then k = '"'..k..'"' end + s = s .. '['..k..'] = ' .. dump(v) .. ',' + end + return s .. '} ' + else + return tostring(o) + end +end + +local demo_units = { ['factions'] = {}, ['numbers'] = {}, ['units'] = {}} + +function create_demo_faction(race, email, lang, name, id) + local f = faction.create(race, email, lang) + if name ~= NULL then + f.name = name + end + if id ~= NULL then + f.id = atoi36(id) + end + + table.insert(demo_units['factions'], f) + demo_units['numbers'][f]= 0 + demo_units['units'][f] = {} + + return f +end + +function write_demo_reports() + init_reports() + local fs = {} + for k, f in pairs(demo_units['factions']) do + write_report(f) + table.insert(fs, f) + end + return fs +end + +function create_demo_unit(f, r, number, name, id, skills, items, orders) + if f == NULL then + f = demo_units['factions'][1] + end + if r == NULL then + error("no region") + end + if number == NULL then number = 1 end + local u = unit.create(f, r, number) + if u == NULL then + error("unit " .. f .. "-" .. r .. "-"..number) + end + if name ~= NULL then + u.name = name + end + if id ~= NULL then + u.id = atoi36(id) + end + if skills ~= NULL then + for skill, level in pairs(skills) do + u:set_skill(skill, level) + end + end + if items ~= NULL then + for item, amount in pairs(items) do + u:add_item(item, amount) + end + end + if orders ~= NULL then + for _,o in ipairs(orders) do + u:add_order(o) + end + end + + demo_units['numbers'][f] = demo_units['numbers'][f] + 1 + local i = demo_units['numbers'][f] + demo_units['units'][f][i] = u + u.hp = u.hp_max * u.number + return u +end + +function demo_module_starters() + local r0 = get_demo_region(24, 0) + local f0 = demo_units['factions'][1] + local friends = demo_units['factions'][2] + local foes = demo_units['factions'][3] + + u0 = create_demo_unit(f0, r0, 1, 'Einer', 'demo') + v0 = create_demo_unit(friends, r0, 1, 'Ein Freundy', 'nice', {}, { money = 1000 }) + x0 = create_demo_unit(foes, r0, 1, 'Ein Andery', 'foe', {}, { money = 1000 }) + + u0:add_order("HELFE nice ALLES") + v0:add_order("HELFE demo ALLES") + + u0:add_item("money", 100) + v0:add_item("money", 100) + x0:add_item("money", 100) + + for r in regions() do + r.age = 100 + if (habitable[r.terrain] and r.x < 40) or r.terrain == 'fog' then + local u = unit.create(f0, r) + u:add_item("money", 30) + u:clear_orders() + u:add_order("ARBEITE") + end + end +end + +function demo_module_paula(f0) + local r0 = get_demo_region(24, 0) + r0.terrain = 'highland' + r0.name = 'Piratenbucht' + + local sh = ship.create(r0, "trireme") + sh.size = 190 + sh.name = "Paulas Wellenkreuzer" + local p = create_demo_unit(f0, r0, 1, 'Piratenpaula', 'pla', { ["sailing"] = 20, ['tactics'] = 10, ['melee'] = 2 }, { ['money'] = 1000}, { 'ROUTE sw sw sw o o o o o o o o o o o o o o ', 'KÄMPFE HINTEN'}) + local pc = create_demo_unit(f0, r0, 70, 'Paulas Crew', 'pla', { ['sailing'] = 14, ['shipcraft'] = 6, ['melee'] = 15 }, {log= 100, sword = 100}, { 'MACHE SCHIFF ' .. itoa36(sh.id) }) + sh.owner = p + p.ship = sh + pc.ship = sh + return p +end + +function demo_module_paula2(p) + local r1 = p.region + local serpent = unit.create(get_monsters(), r1, 1, "seaserpent") + serpent:add_order("ATTACKIERE " .. itoa36(p.id) ) +end + +function demo_module_piratenbucht() + local r0 = get_demo_region(24, 0) + local bc = building.create(r0, "castle", 250) + bc.name = 'Paulas Schloss' + + ------- LIGHTHOUSE + local bl = building.create(r0, "lighthouse", 1000) + bl.name = 'Der große bunte Leuchtturm' + -- function create_demo_unit(f, r, number, name, id, skills, items, orders) + local p= create_demo_unit(null, r0, 1, 'Peer Weitsicht', 'peer', { perception=20}, {money=1000} ) + p.building = bl + + local bt = building.create(r0, "inn", 10) + bt.name = 'Zum Rostigen Anker' + + ------- INN + local heal = create_demo_unit(null, r0, 20, "Verwundete", "vwd", {stamina=10}, {money = 220}) + heal.hp = heal.number * math.floor(heal.hp_max *.72 -1) + for i = 2, 20 do + heal:add_order("BETRETE GEBÄUDE " .. itoa36(bt.id)) + heal:add_order("GIB TEMP vw" .. i .. " 1 PERSONEN") + heal:add_order("GIB TEMP vw" .. i .. " 14 Silber") + heal:add_order("MACHE TEMP vw" .. i) + heal:add_order("BENENNE EINHEIT Verwundete") + heal:add_order("ARBEITE") + + if i%2 == 0 then + heal:add_order("BETRETE GEBÄUDE " .. itoa36(bt.id)) + end + heal:add_order("ENDE") + end + + + local teach = create_demo_unit(null, r0, 1, "Lehrer", "leer", {mining = 1, perception = 1, sailing = 1 }, {money = 100}) + teach:add_order("LEHRE stu0 stu1 stu2 stu3 stu4 stu5 stu6 stu7 stu8 stu9") + + for i = 0, 9 do + local stud = create_demo_unit(null, r0, 1, "Schüler", "stu" .. i) + if teach:eff_skill('mining') > teach:get_skill('mining') then + stud:add_order("LERNE Bergbau") + elseif teach:eff_skill('perception') > teach:get_skill('perception') then + stud:add_order("LERNE Wahrnehmung") + elseif teach:eff_skill('sailing') > teach:get_skill('sailing') then + stud:add_order("LERNE Segeln") + end + end +end + +function demo_module_mages() + local r0 = get_demo_region(24, 0) + local r1 = get_demo_region(0, 8) + local r2 = get_demo_region(8, 8) + + local schools = { 'cerddor', 'draig', 'gwyrrd', 'illaun', 'tybied'} + -- FIXME + schools = { 'draig' } + local school = schools[math.random(#schools)] + local mage = create_demo_unit(null, r0, 1, "Mort der Magier", "mort", null, { money=6950 }, {"LERNE Magie " .. school} ) + local mage2, mage3 = create_demo_unit(null, r1, 1, 'Zoé die Zauberin', 'zoe', { }, { money=11700 }, {"LERNE Magie " .. school} ) + local mage3 = create_demo_unit(null, r2, 1, 'Momo', 'momo', { }, { money=6950 }, {"LERNE Magie " .. school} ) + mage.magic = school + mage:set_skill('magic', 15) + mage2.magic = school + mage2:set_skill('magic', 20) + mage3.magic = school + mage3:set_skill('magic', 15) + +end + +function try_cerddor(mage1, mage2, mage3) + local r = get_demo_region(48, 0) + create_demo_unit(demo_units['factions'][3], r) + mage1:add_order("ZAUBERE STUFE 2 Regentanz") + mage2:add_order("ZAUBERE Aushorchen foe 48 0" ) +end + +function try_draig(mage1, mage2, mage3) + create_demo_unit(demo_units['factions'][3], mage1.region, 1, 'Ziel', 'wart') + mage1:add_order("ZAUBERE 'Verwünschung' wart") + mage1:add_order("ZAUBERE 'Gabe des Chaos'") + mage1:add_order("ZAUBERE 'Kleines Blutopfer'") +-- mage1:add_order("ZAUBERE STUFE 1 'Traumsenden' nice Träumchen") + + get_demo_region(0,5):set_resource("grave", 1000) + mage2:add_order("ZAUBERE REGION 0 5 STUFE 10 'Mächte des Todes'") + mage2:add_order("ZAUBERE STUFE 10 'Mächte des Todes'") + + -- Schattendämonen, Schattenmeister +end + + +function try_gwyrrd(mage1, mage2, mage3) + local s1, u1 = create_ship(mage2.region, mage2.faction, 'boat') + local s2, u2 = create_ship(mage2.region, mage2.faction, 'boat') + + print("xxxxx", mage2.region, s1.name, s1.id, s1.region) + + u1:add_order("NACH so o o o o o o o ") + u2:add_order("NACH so o o o o o o o ") + mage2:add_item("rop", 1) + mage2:add_order("ZAUBERE STUFE 1 Sturmelementar " .. itoa36(s1.id) .. " " .. itoa36(s2.id)) + + -- TODO Steinkreis, Ents +end + +function try_illaun(mage1, mage2, mage3) + local r = get_demo_region(2, 0) + create_demo_unit(demo_units['factions'][2], r, 1, 'Ziel', 'read') + create_demo_unit(demo_units['factions'][2], r, 1, 'Versteckt', null, { stealth = 100 }) + + mage1:add_order("ZAUBERE REGION 2 0 'Traumlesen' read") + mage1:add_order("ZAUBERE STUFE 1 'Traumsenden' nice Träumchen") + + mage2:add_order("ZAUBERE 'Vertrauten rufen'") + create_demo_unit(demo_units['factions'][2], mage2.region, 1, 'Hier', 'hid0', {stamina =5}, {money = 100}) + mage2:add_order("ZAUBERE 'Traumdeuten' hid0") + + create_demo_unit(null, mage3.region, 1, 'Lehrer', 'leer', {stamina = 20}, {}, {"LEHRE schl"}) + create_demo_unit(null, mage3.region, 1, 'Schüler', 'schl', {stamina = 10}, {}, {"LERNE Ausdauer"}) + mage3:add_order("ZAUBERE 'Schöne Träume'") +end + +function try_tybied(mage1, mage2, mage3) + create_demo_unit(mage2.faction, mage2.region, 1, 'Astralreisender', 'ast', { perception = 20 }, { money = 100}) + + mage2:add_order("ZAUBERE STUFE 4 'Astraler Weg' ast") + + create_demo_unit(mage1.faction, mage1.region, 1, 'Hirntöterspäher', 'hirn', { perception = 20 }, { money = 100}) + mage1:add_order("ZAUBERE STUFE 5 'Störe Astrale Integrität'") + local r = get_astral(mage1.region) + create_demo_unit(mage1.faction, r, 1, "Astral Gestrandete", 'ast2', {perception=20}) + for i=1,100 do + unit.create(get_monsters(), r, 10, "braineater") + end + unit.create(get_monsters(), get_astral(mage2.region), 10, "braineater") + +end + +function is_astral(r) + if r == nil then return nil end + return r.terrain == 'fog' or r.terrain == 'thickfog' +end + +function get_astral(r) + if is_astral(r) then return r:get_astral() else return nil end +end + +function demo_module_mages2() + local r0 = get_demo_region(24, 0) + + local mage1 = get_unit(atoi36('mort')) + local mage2 = get_unit(atoi36('zoe')) + local mage3 = get_unit(atoi36('momo')) + mage1.aura = max_aura(mage1:eff_skill('magic')) + mage2.aura = max_aura(mage2:eff_skill('magic')) + mage3.aura = max_aura(mage3:eff_skill('magic')) + mage1:clear_orders() + mage2:clear_orders() + mage3:clear_orders() + + if mage1.magic == 'cerddor' then + try_cerddor(mage1, mage2, mage3) + elseif mage1.magic == 'draig' then + try_draig(mage1, mage2, mage3) + elseif mage1.magic == 'gwyrrd' then + try_gwyrrd(mage1, mage2, mage3) + elseif mage1.magic == 'illaun' then + try_illaun(mage1, mage2, mage3) + elseif mage1.magic == 'tybied' then + try_tybied(mage1, mage2, mage3) + end +end + +function print_stats() + print('factions') + for k,f in pairs(demo_units['factions']) do + print(k, f, demo_units['numbers'][f]) + end + for _,f in pairs(demo_units['factions']) do + for _, u in pairs(demo_units['units'][f]) do + print (u.name, u.id, u.number, f.id) + end + end +end + +function spawn_monsters(rounds) + eressea.settings.set("monsters.spawn.min_age", "0") + eressea.settings.set("monsters.spawn.chance", "1") + for i = 1, rounds do + spawn_dragons() + spawn_undead() + spawn_braineaters(1) + process_orders() + end +end + +function create_demo() + print("---- DEMO ----") + rules_wild() + rng.active() + local races = { 'aquarian', 'cat', 'demon', 'dwarf', 'elf', 'goblin', 'halfling', 'human', 'insect', 'orc'} + local f0 = create_demo_faction(races[math.random(#races)], "demo@example.com", "de", 'Paulas Crew', 'demo') + local friends = create_demo_faction(races[math.random(#races)], "friend@example.com", "de", 'Freunde', 'nice') + local foes = create_demo_faction(races[math.random(#races)], "foe@example.com", "de", 'Andere', 'foe') + + create_eressea_map(f0) + f0.age = 100 + friends.age = 100 + foes.age = 100 + + local plusage = 1 + set_turn(998-plusage) + spawn_monsters(plusage) + + demo_module_starters() + local p=demo_module_paula(f0) + demo_module_piratenbucht() + + demo_module_mages() + -- TODO + -- Almosen + -- Parteitarnung + -- Beklauen + -- Spione + -- Fehler + -- Traumschlösschen + + -- STARTER + -- LERNE Magie (ohne Gebiet) + + print_stats() + + process_orders() + + demo_module_paula2(p) + demo_module_mages2() + + local f1 = write_demo_reports() + + + process_orders() + + local f2 = write_demo_reports() + + local reports = {} + for _, f in pairs(f1) do + table.insert(reports, "999-" .. itoa36(f.id) .. ".cr") + end + for _, f in pairs(f2) do + table.insert(reports, "1000-" .. itoa36(f.id) .. ".cr") + end + + write_md("eressea.md", "Eressea Example", "An extensive example", + "An example with all sorts of stuff that could go on in an Eressea game", + reports) + + rules_tame() +end + +function create_battle(r1, f1, f2) + local a2 = unit.create(f2, r1, 1000) + local a1 = unit.create(f1, r1, 1000) + local h1 = unit.create(f1, r1, 1000) + local h2 = unit.create(f2, r1, 1000) + + a1:set_skill("stamina", 10) + a2:set_skill("stamina", 10) + h1:set_skill("stamina", 10) + h2:set_skill("stamina", 10) + + a1.hp = a1.hp_max * a1.number + a2.hp = a2.hp_max * a1.number + h1.hp = h1.hp_max * a1.number + h2.hp = h2.hp_max * a1.number + + a1:set_skill("melee", 20) + a2:set_skill("melee", 20) + h1:set_skill("bow", 20) + h2:set_skill("crossbow", 20) + + a1:add_item("sword", 1000) + a1:add_item("shield", 1000) + a1:add_item("plate", 1000) + a2:add_item("sword", 1000) + a2:add_item("shield", 1000) + a2:add_item("plate", 1000) + h1:add_item("bow", 1000) + h2:add_item("crossbow", 1000) + h1:add_item("shield", 1000) + h2:add_item("shield", 1000) + a1:add_order("KÄMPFE AGGRESSIV") + a2:add_order("KÄMPFE AGGRESSIV") + h1:add_order("KÄMPFE HINTEN") + h2:add_order("KÄMPFE HINTEN") + + a1:add_item("money", 100 * a1.number) + a2:add_item("money", 100 * a2.number) + h1:add_item("money", 100 * h1.number) + h2:add_item("money", 100 * h2.number) + + a1:add_order("ATTACKIERE " .. itoa36(h2.id)) + h1:add_order("ATTACKIERE " .. itoa36(h2.id)) + a1.guard = true + + local mage = unit.create(f1, r1, 1) + mage.magic = 'gwyrrd' + mage:set_skill('magic', 10) + mage.aura = 1000 + mage:add_spell('eternal_walls') + mage:add_spell('hail') + mage:add_order('LERNE Magie Gwyrrd') + mage:add_order('KAMPFZAUBER STUFE 8 Hagel') + mage:add_order('KÄMPFE HINTEN') + mage:add_order('ATTACKIERE ' .. itoa36(h2.id)) + + return a1, a2, mage +end + +function create_ship(r, f, stype) + local s = ship.create(r, stype) + local u = nil + if f ~= nil then + u = unit.create(f, r, 3) + u:set_skill("sailing", 50) + s.owner = u + u.ship = s + end + return s, u +end + +local minsize = { ['academy'] = 25, ['harbour'] = 10, ['caravan'] = 25, ['magictower'] = 50, ['dam'] = 50, ['tunnel'] = 100, ['stonecircle'] = 100 } + +function create_building(r, btype) + local b = building.create(r, btype) + if minsize[btype] ~= nil then + b.size = minsize[btype] + else + b.size = 10 + end + return b +end + +local example_bounds = {} + +function init_example_bounds() + example_bounds = get_plane_bounds() +end + +function get_example_region(x, y) + if example_bounds.x == nil then error("bounds not initialized") end + return get_region(example_bounds.xoff + x, example_bounds.yoff + y) +end + +local function create_region(x, y, terrain) + if example_bounds.x == nil then error("bounds not initialized") end + + local r1 = region.create(example_bounds.xoff + x, example_bounds.yoff + y, terrain) + + if r1:get_terrain_flag(B_LAND) and not r1:get_terrain_flag(B_FORBIDDEN) then + r1:set_flag(F_MALLORN, false) -- no mallorn + if r1.terrain ~= 'plain' then + r1.peasants = 200 + make_trees(r1, 10) + r1:set_resource("money", 1000) + r1:set_resource("horse", 30) + else + r1.peasants = 2000 + make_trees(r1, 100) + r1:set_resource("money", 10000) + r1:set_resource("horse", 20000) + end + end + return r1 +end + +function make_trees(r, t) + r:set_resource("tree", t) + r:set_resource("seed", t/10) + r:set_resource("sapling", t/10) +end + +function create_example() + print("---- EXAMPLE ----") + set_turn(333) + rules_wild() + rng.active() + init_example_bounds() + + local r0 = create_region(0, 0, 'plain') + local rs = create_region(1, 0, 'swamp') + local rm = create_region(0, 1, 'mountain') + local rh = create_region(-1, 1, 'highland') + local rd = create_region(-1, 0, 'desert') + local rg = create_region(0, -1, 'glacier') + local rv = create_region(1, -1, 'volcano') + local ri = create_region(2, 0, 'iceberg') + local ro = create_region(1, 1, 'ocean') + local rf = create_region(3, 0, 'firewall') + local rw = create_region(4, 0, 'wall1') + local rc = create_region(5, 0, 'corridor1') + local rl = create_region(0, 2, 'plain') + make_trees(rl, 600) + + local f = faction.create('human', "fex@eressea.de", "de") + f.id = 146 + -- viewers + for r in regions() do + if r:get_terrain_flag(B_LAND) and not r:get_terrain_flag(B_FORBIDDEN) then + local u = unit.create(f, r, 1) + u:clear_orders() + u:add_order("KÄMPFE NICHT") + end + end + + for x = -2, 2 do + for y = -2, 3 do + local r = get_example_region(x, y) + if r == nil then + create_region(x, y, 'ocean') + end + end + end + + for _, btype in ipairs { 'lighthouse', 'mine', 'quarry', 'sawmill', 'smithy', 'stables', 'harbour', 'caravan', 'academy', 'magictower', 'dam', 'tunnel', 'inn', 'monument', 'stonecircle' } do + create_building(r0, btype) + end + + local f2 = faction.create('human', "war@eressea.de", "de") + local a1, a2, mage = create_battle(r0, f, f2) + + for _, stype in ipairs { 'boat', 'longboat', 'dragonship', 'caravel', 'trireme', 'galleon' } do + create_ship(rl, f, stype) + end + + local s, u = create_ship(rl, f, 'caravel') + s.coast = 3 + u:add_order("NACH o nw sw") + + s, u = create_ship(rl, f, 'caravel') + s.damage = 30 + s = create_ship(rl, nil, 'caravel') + s.coast = 2 + + local light = create_building(rs, 'lighthouse') + light.size = 10 + u = unit.create(f, light.region, 1) + u:add_item("money", 1000) + u:set_skill("perception", 10) + u.building = light + u:add_order("BOTSCHAFT REGION 'Hey, Welt'") + + process_orders() + + init_reports() + write_report(f) + write_report(f2) + write_md("example.md", "Demo 001", "A more complex CR", "An example with different types of terrains, ships, lighthouses, and a battle.", { "334-42.cr" }) +end + +function create_start() + --[[ + Elfen bekommen Feenstiefel + Zwerge bekommen eine Axt, ein Kettenhemd und 30 Lerntage Hiebwaffen + Orks bekommen T4 in allen Waffentalenten + Katzen bekommen einen RdU + Goblins bekommen eine Starteinheit die 10 und nicht nur eine Person gross ist, ausserdem einen RdU. + Insekten bekommen neun Nestwärmetränke, genug um einen Winter lang zu rekrutieren. + Meermenschen bekommen ein Boot und 30 Lerntage Segeln + Menschen bekommen eine Befestigung (Damals bestand diese nur aus 2 Steinen) + Halblinge bekommen einen Wagen, zwei Pferde, fünf Luxusgüter jeder sorte und T1 Reiten. + Trolle bekommen 10 Steine und Wahrnehmung T3. + Dämonen bekommen T15 Ausdauer. + --]] +end + +return { create_demo = create_demo, create_example = create_example } diff --git a/scripts/demo/init.lua b/scripts/demo/init.lua new file mode 100644 index 000000000..c4390c48a --- /dev/null +++ b/scripts/demo/init.lua @@ -0,0 +1,3 @@ +demo = require 'demo.demo' + +return demo diff --git a/scripts/run-demo.lua b/scripts/run-demo.lua new file mode 100644 index 000000000..35ae33bd0 --- /dev/null +++ b/scripts/run-demo.lua @@ -0,0 +1,53 @@ +-- Basic test without loading XML Config. Test care about needed settings. +-- Tests are under scripts/test/ and all files must be in scripts/test/init.lua + +math.randomseed(rng.random()) + +path = 'scripts' +if config.install then + path = config.install .. '/' .. path +end +package.path = package.path .. ';' .. path .. '/?.lua;' .. path .. '/?/init.lua' + +config.rules = 'e2' + +require 'eressea' +require 'eressea.path' +require 'eressea.xmlconf' -- read xml data + + +local rules = {} +if config.rules then + rules = require('eressea.' .. config.rules) + eressea.log.info('loaded ' .. #rules .. ' modules for ' .. config.rules) +else + eressea.log.warning('no rule modules loaded, specify a game in eressea.ini or with -r') +end + +eressea.settings.set("nmr.timeout", "0") +-- eressea.settings.set("NewbieImmunity", "0") + +demo = require 'demo' + +-- turn_begin() +-- callbacks(rules, 'init') +local ok, result = xpcall(demo.create_demo, debug.traceback) +if not ok then + print(result) +end + +ok, result = xpcall(demo.create_example, debug.traceback) +if not ok then + print(result) +end +--turn_process() +-- callbacks(rules, 'update') + -- turn_end() -- ageing, etc. +print("done") + +local file = 'demo_report.dat' +if eressea.write_game(file)~=0 then + eressea.log.error("could not write game") + return -1 +end +return 0 diff --git a/src/bind_faction.c b/src/bind_faction.c index f6222176d..77f209d09 100644 --- a/src/bind_faction.c +++ b/src/bind_faction.c @@ -31,6 +31,7 @@ #include #include // for bool #include // for puts +#include struct allies; @@ -284,6 +285,21 @@ static int tolua_faction_get_messages(lua_State * L) return 0; } +static int tolua_faction_free_messages(lua_State * L) +{ + faction *f = (faction *)tolua_tousertype(L, 1, NULL); + while (f && f->battles) { + struct bmsg *bm = f->battles; + f->battles = bm->next; + if (bm->msgs) { + free_messagelist(bm->msgs->begin); + } + } + free_units(); + + return 0; +} + static int tolua_faction_count_msg_type(lua_State *L) { faction *f = (faction *)tolua_tousertype(L, 1, NULL); const char *str = tolua_tostring(L, 2, NULL); @@ -683,6 +699,7 @@ void tolua_faction_open(lua_State * L) /* tech debt hack, siehe https://paper.dropbox.com/doc/Weihnachten-2015-5tOx5r1xsgGDBpb0gILrv#:h=Probleme-mit-Tests-(Nachtrag-0 */ tolua_function(L, "count_msg_type", tolua_faction_count_msg_type); tolua_variable(L, "messages", tolua_faction_get_messages, NULL); + tolua_function(L, "free_messages", tolua_faction_free_messages); tolua_function(L, "debug_messages", tolua_faction_debug_messages); tolua_function(L, "get_key", tolua_faction_getkey); diff --git a/src/bind_region.c b/src/bind_region.c index 5cfef2bd4..3ca359007 100644 --- a/src/bind_region.c +++ b/src/bind_region.c @@ -324,6 +324,15 @@ static int tolua_region_get_flag(lua_State * L) return 1; } +static int tolua_region_get_terrain_flag(lua_State * L) +{ + region *self = (region *)tolua_tousertype(L, 1, NULL); + int bit = (int)tolua_tonumber(L, 2, 0); + + lua_pushinteger(L, (self->terrain->flags & (1 << bit))); + return 1; +} + static int tolua_region_set_flag(lua_State * L) { region *self = (region *)tolua_tousertype(L, 1, NULL); @@ -413,7 +422,10 @@ static int tolua_region_set_resource(lua_State * L) { region *r = (region *)tolua_tousertype(L, 1, NULL); const char *type = tolua_tostring(L, 2, NULL); - int result, value = (int)tolua_tonumber(L, 3, 0); + int result, + value = (int)tolua_tonumber(L, 3, 0), + level = (int)tolua_tonumber(L, 4, 0), + divisor = (int)tolua_tonumber(L, 5, 0); const resource_type *rtype; result = special_resource(type); @@ -429,12 +441,27 @@ static int tolua_region_set_resource(lua_State * L) default: rtype = rt_find(type); if (rtype != NULL) { + if (level > 0) + region_setresource_level(r, rtype, value, level, divisor); + else region_setresource(r, rtype, value); } } return 0; } +static int tolua_region_add_road(lua_State * L) +{ + region *r = (region *)tolua_tousertype(L, 1, NULL); + direction_t dir = (direction_t)tolua_tonumber(L, 2, 0); + int size = tolua_tonumber(L, 3, 50); + if (dir >= 0 && dir < MAXDIRECTIONS) { + rsetroad(r, dir, size); + return 1; + } + return 0; +} + static int tolua_region_destroy(lua_State * L) { region *self = (region *)tolua_tousertype(L, 1, NULL); @@ -811,8 +838,10 @@ void tolua_region_open(lua_State * L) tolua_region_reorder_units); tolua_function(L, "get_resource", tolua_region_get_resource); tolua_function(L, "set_resource", tolua_region_set_resource); + tolua_function(L, "add_road", tolua_region_add_road); tolua_function(L, "get_flag", tolua_region_get_flag); tolua_function(L, "set_flag", tolua_region_set_flag); + tolua_function(L, "get_terrain_flag", tolua_region_get_terrain_flag); tolua_function(L, "next", tolua_region_get_next); tolua_variable(L, "adj", tolua_region_get_adj, NULL); diff --git a/src/bindings.c b/src/bindings.c index 11cb57299..70c52f367 100755 --- a/src/bindings.c +++ b/src/bindings.c @@ -26,6 +26,7 @@ #include "kernel/item.h" #include "kernel/messages.h" #include "kernel/plane.h" +#include "kernel/pool.h" #include "kernel/region.h" #include "kernel/save.h" #include "kernel/ship.h" @@ -336,6 +337,19 @@ static int tolua_remove_empty_units(lua_State * L) return 0; } +static int tolua_clear_reservations(lua_State *L) +{ + region *r; + unit *u; + UNUSED_ARG(L); + for (r = regions; r; r = r->next) { + for (u = r->units; u; u = u->next) { + clear_reservations(u); + } + } + return 0; +} + static int tolua_get_nmrs(lua_State * L) { int result = -1; @@ -856,6 +870,18 @@ static int lua_rng_default(lua_State *L) { return 0; } +static int lua_rng_reset(lua_State *L) { + UNUSED_ARG(L); + random_source_reset(); + return 0; +} + +static int tolua_set_debug(lua_State * L) +{ + debug = (int)tolua_tonumber(L, 1, 0); + return 0; +} + static int tolua_parse_orders(lua_State* L) { const char* input = tolua_tostring(L, 1, NULL); @@ -907,6 +933,7 @@ int tolua_bindings_open(lua_State * L, const dictionary *inifile) tolua_beginmodule(L, "rng"); { tolua_function(L, "inject", lua_rng_default); + tolua_function(L, "active", lua_rng_reset); tolua_function(L, "random", tolua_random); } tolua_endmodule(L); @@ -995,6 +1022,8 @@ int tolua_bindings_open(lua_State * L, const dictionary *inifile) tolua_function(L, "translate", &tolua_translate); tolua_function(L, "spells", tolua_get_spells); tolua_function(L, "equip_newunits", tolua_equip_newunits); + tolua_function(L, "clear_reservations", tolua_clear_reservations); + tolua_function(L, "set_debug", tolua_set_debug); } tolua_endmodule(L); return 1; } diff --git a/src/kernel/config.c b/src/kernel/config.c index 85faca2d3..446ee2240 100644 --- a/src/kernel/config.c +++ b/src/kernel/config.c @@ -65,6 +65,7 @@ #include #endif struct settings global; +int debug = 0; int findoption(const char *s, const struct locale *lang) { diff --git a/src/kernel/config.h b/src/kernel/config.h index 4c002c789..c3a2dcd02 100644 --- a/src/kernel/config.h +++ b/src/kernel/config.h @@ -100,6 +100,7 @@ extern "C" { void free_config(void); void free_ids(void); + extern int debug; struct params; diff --git a/src/kernel/pool.c b/src/kernel/pool.c index ba3ab060b..e28046d39 100644 --- a/src/kernel/pool.c +++ b/src/kernel/pool.c @@ -133,6 +133,18 @@ int set_resvalue(unit * u, const item_type * itype, int value) return res->value; } +void +clear_reservations(unit * u) +{ + struct reservation **pres = &u->reservations; + + while (*pres) { + struct reservation *res = *pres; + *pres = res->next; + free(res); + } +} + int get_pooled(const unit * u, const resource_type * rtype, int mode, int count) diff --git a/src/kernel/pool.h b/src/kernel/pool.h index 22f2f1a7f..5ac637bc2 100644 --- a/src/kernel/pool.h +++ b/src/kernel/pool.h @@ -36,6 +36,7 @@ extern "C" { int get_resource(const struct unit *u, const struct resource_type *res); int change_resource(struct unit *u, const struct resource_type *res, int change); + void clear_reservations(struct unit *u); int get_reservation(const struct unit *u, const struct item_type *res); int change_reservation(struct unit *u, const struct item_type *res, diff --git a/src/kernel/region.c b/src/kernel/region.c index 808164338..a90e5e10d 100644 --- a/src/kernel/region.c +++ b/src/kernel/region.c @@ -839,11 +839,19 @@ void free_land(land_region * lr) free(lr); } -void region_setresource(region * r, const struct resource_type *rtype, int value) +void region_setresource(region * r, const struct resource_type *rtype, int value) { + region_setresource_level(r, rtype, value, -1, -1); +} + +void region_setresource_level(region * r, const struct resource_type *rtype, int value, int level, int divisor) { rawmaterial *rm = rm_get(r, rtype); if (rm) { - rm->amount = value; + if (level > 0) { + set_resource(rm, level, value, divisor); + } else { + rm->amount = value; + } } else { if (rtype == get_resourcetype(R_SILVER)) diff --git a/src/kernel/region.h b/src/kernel/region.h index 7104c0f57..2df08661e 100644 --- a/src/kernel/region.h +++ b/src/kernel/region.h @@ -261,6 +261,8 @@ int region_getresource(const struct region *r, const struct resource_type *rtype); void region_setresource(struct region *r, const struct resource_type *rtype, int value); +void region_setresource_level(struct region *r, const struct resource_type *rtype, + int value, int level, int divisor); int owner_change(const region * r); bool is_mourning(const region * r, int in_turn); const struct item_type *r_luxury(const struct region *r); diff --git a/src/laws.c b/src/laws.c index 5c8aeb1ac..40c7c8116 100644 --- a/src/laws.c +++ b/src/laws.c @@ -784,7 +784,7 @@ void immigration(void) int peasants = rpeasants(r); bool mourn = is_mourning(r, turn); int income = peasant_wage(r, mourn) - maintenance_cost(NULL) + 1; - if (income >= 0 && r->land && (peasants < repopulate) && region_production(r) >(peasants + 30) * 2) { + if (income >= 0 && r->land && (peasants < repopulate) && region_maxworkers(r, max_production(r)) >(peasants + 30) * 2) { int badunit = 0; unit *u; for (u = r->units; u; u = u->next) { diff --git a/src/randenc.c b/src/randenc.c index bbed3dcb9..fadd45dfa 100644 --- a/src/randenc.c +++ b/src/randenc.c @@ -17,6 +17,7 @@ /* kernel includes */ #include "kernel/building.h" +#include "kernel/calendar.h" #include "kernel/config.h" #include "kernel/curse.h" #include "kernel/equipment.h" @@ -545,8 +546,8 @@ void plagues(region * r) } if (dead > 0) { - ADDMSG(&r->msgs, msg_message("pest", "peasants dead", - get_resourcetype(R_PEASANT), dead)); + ADDMSG(&r->msgs, msg_message("pest", "peasants dead round", + get_resourcetype(R_PEASANT), dead, turn)); deathcounts(r, dead); rsetpeasants(r, peasants - dead); } diff --git a/stm-jekyll/404.html b/stm-jekyll/404.html new file mode 100644 index 000000000..c472b4ea0 --- /dev/null +++ b/stm-jekyll/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/stm-jekyll/Gemfile b/stm-jekyll/Gemfile new file mode 100644 index 000000000..6d1aab309 --- /dev/null +++ b/stm-jekyll/Gemfile @@ -0,0 +1,40 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 4.3.2" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.5" +# gem "architect", "~> 0.2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +gem "github-pages", group: :jekyll_plugins +#gem "jekyll-theme-architect" + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", ">= 1", "< 3" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] + +gem "webrick" diff --git a/stm-jekyll/_config.yml b/stm-jekyll/_config.yml new file mode 100644 index 000000000..a1c641b50 --- /dev/null +++ b/stm-jekyll/_config.yml @@ -0,0 +1,54 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Eressea stm +email: stm@example.com +description: >- # this means to ignore newlines until "baseurl:" + Experiments around Eressea +baseurl: "/server" # the subpath of your site, e.g. /blog +url: "http://stm2.github.io" # the base hostname & protocol for your site, e.g. http://example.com +github_username: stm2 +repository: stm2/server + +# Build settings +markdown: kramdown +#theme: minima +remote_theme: pages-themes/architect@v0.2.0 +#remote_theme: pages-themes/dinky@v0.2.0 +#remote_theme: pages-themes/tactile@v0.2.0 +#show_downloads: true +plugins: +- jekyll-remote-theme # add this line to the plugins list if you already have one + +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +exclude: + - Gemfile + - Gemfile.lock + - node_modules + - vendor/bundle/ + - vendor/cache/ + - vendor/gems/ + - vendor/ruby/ + - scripts + +collections: + demos: + output: true + sort_by: description diff --git a/stm-jekyll/_data/crs/1234-bLa.cr b/stm-jekyll/_data/crs/1234-bLa.cr new file mode 100644 index 000000000..e08f94aa3 --- /dev/null +++ b/stm-jekyll/_data/crs/1234-bLa.cr @@ -0,0 +1,382 @@ +VERSION 69 +"UTF-8";charset +"de";locale +1;noskillpoints +1659958813;date +"eressea";Spiel +"Java-Tools";Konfiguration +"Hex";Koordinaten +36;Basis +1;Umlaute +0;curTempID +1234;Runde +2;Zeitalter +"eressea-server@kn-bremen.de";mailto +"ERESSEA 2 BEFEHLE";mailcmd +15022;reportowner +"27.1.2-2-g5645d9678";Build +2500;max_units +COORDTRANS 15022 +0 0;translation +PARTEI 15022 +"de";locale +599;Optionen +"Orks";Typ +70;Rekrutierungskosten +1;Anzahl Personen +1;age +"gray";Magiegebiet +"Partei bLa";Parteiname +"max.mustermann@example.com";email +OPTIONEN +1;REPORT +1;COMPUTER +1;ZUGVORLAGE +0;SILBERPOOL +1;STATISTIK +0;DEBUG +1;ZIPPED +0;ZEITUNG +0;MATERIALPOOL +1;ADRESSEN +0;BZIP2 +0;PUNKTE +0;TALENTVERSCHIEBUNGEN +MESSAGE 971112208 +198804487;type +"Deine Partei hat letzte Runde keinen Zug abgegeben!";rendered +MESSAGE 1063819696 +771334452;type +"Einheit 5ac0 (5ac0) verdient in Rilmodciget (0, 0) 10 Silber.";rendered +246672;unit +0 0 0;region +10;amount +10;wanted +0;mode +MESSAGE 761101056 +1784377885;type +"Das Passwort für diese Partei lautet keinpasswort";rendered +"keinpasswort";value +MESSAGE 751019600 +1593006007;type +"Deine Partei ist noch die nächsten 6 Wochen immun gegen Angriffe.";rendered +6;turns +REGION -1 0 +6231171415;id +"Ozean";Terrain +"neighbour";visibility +REGION 0 -1 +943437574;id +"Ozean";Terrain +"neighbour";visibility +REGION 0 0 +1102578064;id +"Gusras";Name +"Wald";Terrain +"";Beschr +500;Baeume +100;Schoesslinge +4004;Bauern +51;Pferde +83960;Silber +4198;Unterh +100;Rekruten +11;Lohn +1;aktiveRegion +RESOURCE 347593380 +"Bauern";type +4004;number +1234;Runde +RESOURCE 6035652 +"Bäume";type +500;number +1234;Runde +RESOURCE 1352714618 +"Schößlinge";type +100;number +1234;Runde +RESOURCE 210060480 +"Silber";type +83960;number +1234;Runde +RESOURCE 200695649 +"Pferde";type +51;number +1234;Runde +PREISE +8;Balsam +25;Gewürz +-7;Juwel +20;Myrrhe +12;Öl +24;Seide +20;Weihrauch +EINHEIT 246672 +"Einheit 5ac0";Name +15022;Partei +1;Anzahl +"Orks";Typ +0;Kampfstatus +32500;weight +COMMANDS +"; Befehle, die mit Semicolon beginnen, sind Kommentare." +"; Die Standardeinstellungen von Magellan sorgen dafür, dass sie vor dem " +"; Versand an den Server entfernt werden. Magellan sorgt auch dafür, dass zu lange Zeilen wie diese hier umgebrochen werden und auf dem Server keine Probleme machen." +"; Wir nutzen die Kommentare hier, um dir die Befehle zu erklären." +"; " +"; Wir wollen eine schöne, passende Nummer (id) für unsere Partei sichern." +"; IDs Bestehen aus einer Kombination von 4 Zahlen oder Buchstaben." +"; Die IDs für Parteien, Einheiten, Gebäuden und Schiffen kommen jeweils" +"; aus einem eigenen Pool." +"NUMMER PARTEI demo" +"; Es ist also möglich dieser Einheit die gleiche Nummer wie die der Partei" +"; zu geben" +"NUMMER EINHEIT demo" +"; Zurück zur Partei. Wir wollen unserer Partei einen guten Namen und eine" +"; hübsche Beschreibung geben. Eressea spielt man mit anderen zusammen." +"; Schöne Beschreibungen erhöhen den Spielspaß für alle und vermindern die " +"; Wahrscheinlichkeit von seinen Nachbarn früh abgeschlachtet zu werden. " +"; Wirklich wahr." +"BENENNE PARTEI \"Die DEMOkraten\"" +"BANNER \"Wir glauben an demokratische Werte. Sie sind der beste Weg für ein gutes Zusammenleben. Wenn ihr das auch denkt, schreibt uns doch eine Nachricht an demo@example.com!\"" +"BENENNE EINHEIT \"Erster DEMOrKRAT\"" +"BESCHREIBE EINHEIT \"Tritt für Gewaltenteilung ein. Also zumindest für Gewalt. Und Teilung.\"" +"; " +"; Wir ändern noch rasch den Kampfstatus. Im Moment ist das streng genommen" +"; nicht nötig, aber so vergessen wir es später nicht. Für Kundschafter und" +"; andere Unbewaffnete ist FLIEHE eine gute Wahl: für den Fall, dass wir" +"; von unliebsamen Nachbarn oder Monstern angegriffen werden, können wir uns" +"; noch nicht wirksam verteidigen. Stattdessen vergrößern wir unsere Chancen" +"; zu überleben UND verlieren außerdem unseren Bewegungsbefehl nicht." +"; Win-Win!" +"KÄMPFE FLIEHE" +";" +"; Der Rest der Befehle dieser Einheit besteht nur aus Übergaben an" +"; TEMP-Einheiten und der Erzeugung von TEMP-Einheiten." +"; Gelogen! Wir sichern uns noch schnell Silber, um wenigstens die nächsten" +"; 4 Runden überleben zu können." +"RESERVIERE 40 Silber" +";" +"; Überhaupt Silber. Wir haben 2500 und so bald stehen keine Einnahmen ins" +"; Haus. Wir sind schließlich keine Halblinge, die ab Runde zwei fette" +"; Einnahmen haben, weil die Bauern sie sooo lustig finden und ihnen" +"; freiwillig Geld in den ... Ich schweife ab. " +"; Was können wir tun?" +"; 2500 Silber, also rekrutieren wir 35 Orks zu je 70 Silber, richtig?" +"; Falsch natürlich, das führt in die sichere Katastrophe: Wir brauchen ja" +"; auch 10 Silber Unterhalt pro Runde." +"; Unsere ersten Einnahmen stehen frühestens in Runde 3 an: " +"; Runde 1: Einheit 1 lernt Waffenbau" +"; Runde 2: Einheit 1 macht Holz zu Speeren, Einheit 2 lernt Treiben" +"; Runde 3: Einheit 2 schappt sich die Speere und treibt. Bis dahin haben" +"; sie wahrscheinlich nur je eine Talentstufe gelernt, dazu kommt unser " +"; Rassenbonus von +1 auf Steuereintreiben." +"; Macht also 40 Silber pro Runde." +"; Effizienter ist es wahrscheinlich Folgendes: Wir lassen eine Person " +"; Steuereintreiben lernen. Die benutzen wir in der nächsten Runde als" +"; Lehrer für unsere ersten 10 Treiber." +"; Durch diesen Trick sparen wir das Unterhaltssilber für die 10 Treiber in" +"; der ersten Runde beim gleichen Ergebnis. Vielleicht ist es auch" +"; sinnvoller, sie dann gleich noch eine Runde lernen zu lassen. Auf diese" +"; Weise werden sie wahrscheinlich Stufe 2 erreichen und können dann gleich" +"; 60 Silber pro Runde machen. Bis dahin braucht jede Person also 30 Silber" +"; Unterhalt. Genaues Rechnen lohnt sich. Ist es sinnvoll, die" +"; Steuereintreiber trotzdem schon diese Runde zu rekrutieren und etwas;" +"; anderes lernen zu lassen?" +";" +"; Wir übergeben das Rekrutierungssilber plus drei Runden Unterhalt. Das ist" +"; nicht unbedingt nötig, weil die Einheit sich das Silber auch aus dem " +"; Silberpool nimmt." +"; Aufgrund der Übersichtlichkeit ist es aber eine gute Praxis." +"; Orks sind billig, wir können also wenigsten viel mehr Einheiten " +"; rekrutieren als zum Beispiel Elfen. Bäh!" +"; 1 Treiberlehrer" +"GIB TEMP de00 100 Silber" +"; 3 oder 4 Waffenbauer" +"GIB TEMP de01 400 Silber" +"; 1 Tarner" +"GIB TEMP de02 100 Silber" +"; 1 Wahrnehmer" +"GIB TEMP de03 100 Silber" +"; Unsere Späher bekommen neben dem Rekrutierungssilber noch 50 Silber," +"; um als Kundschafter 5 Runden durch die Lande ziehen zu können. Plus 120" +"; Silber, um einen weiteren Kundschafter in der Nachbarregion rekrutieren" +"; zu können." +"GIB TEMP de04 240 Silber" +"GIB TEMP de05 240 Silber" +"; weitere Einheiten" +"GIB TEMP de06 100 Silber" +"GIB TEMP de07 100 Silber" +"GIB TEMP de08 200 Silber" +"; Dies ist der letzte Befehl. Wir übergeben alles, was wir noch haben, an" +"; unser Depot." +"; Wir behalten nur reservierte Gegenstände. Das ist eine gute Angewohnheit," +"; um nicht aufgrund von Denkfehlern überladen zu werden." +"GIB TEMP de02 ALLES" +"; Aha! Wir haben selber noch keinen langen Befehl bekommen. Nun, da wir" +"; schon einen Talentvorsprung haben, können wir als Ausbilder für unsere" +"; zukünftigen Treiber / Krieger dienen." +"; Die Frage ist nur, ob wir Hieb- oder Stangenwaffen lernen" +"LERNE AUTO Hiebwaffen" +"; Das war's! Wir könnten noch Pferdedresseure (super wichtig für;" +"; Steintransport und den Krieg), Segler und Schiffbauer (schließlich haben" +"; wir 4 Ozeanregionen) anstellen." +"; Hätten wir keinen Malus auf Magie, würden wir wahrscheinlich auch 1 oder" +"; 4 Magier ausbilden. Aber die brauchen bei uns drei Wochen und 500 Silber," +"; bis sie auch nur Stufe 1 erreicht haben. Wir warten lieber. Das hat" +"; wenigstens den Vorteil, dass wir uns noch länger Zeit lassen können, ein" +"; Magiegebiet zu wählen." +";" +"; Wir belassen es dabei. Wir haben schon 14 Personen und jede weitere" +"; verlangsamt unseren Start, da wir weniger Steuereintreiber einsetzen" +"; können. Dafür bleiben uns jetzt noch etwa 950 Silber." +"; " +"; Allzu oft fragt man sich: Was habe ich mir letzte Runde wohl dabei" +"; gedacht? //-Kommentare erscheinen nächste Woche im Report und sind" +"; deshalb ein guter Weg, um Pläne über mehrere Wochen nicht zu vergessen." +"// Plan für Woche 1235:" +"// 10 Steuereintreiber rekrutieren und lehren lassen" +"// Speere bauen" +"// Plan für Woche 1236:" +"// Treiber lernen, mehr Speere" +"// Plan für Woche 1237:" +"// Profit!" +"; Vielleicht ist das noch nicht der beste Plan. Es lohnt sich, gerade in" +"; den ersten Runden alles Schritt für Schritt vorauszudenken. Wie genau" +"; sieht die Situation nächte Woche aus?" +"; Wie in 2, 3 oder 10 Wochen? Wir wollen dann nicht merken, dass wir etwas" +"; Wichtiges versäumt haben!" +";" +"; Die Befehle MACHE TEMP, ENDE zur Erzeugung von TEMP-Einheiten, sowie den" +"; Befehl NÄCHSTER am Ende unserer Befehle fügt Magellan netterweise " +"; selbständig hinzu. Achte darauf, dass du vor dem Absenden das richtige" +"; Passwort einträgst." +"MACHE TEMP de00" +"; Unser zukunftüger Lehrer" +"BENENNE EINHEIT \"DEMOrkratieverwalter\"" +"; Haben wir an das Silber zum Rekrutieren gedacht? Haben wir." +"; Magellan würde auch eine Warnung in der Offene-Probleme-Ansicht geben," +"; falls wir es vergessen." +"REKRUTIERE 1" +"; Durch LERNE AUTO müssen wir nicht von Hand Lehrer auf Schüler verteilen." +"; Wir können theoretisch nächste Runde nur 8 Steuereintreiber rekrutieren" +"; und mit LERNE AUTO Steuereintreiben lernen lassen (jedoch nicht einfach" +"; LERNE Steuereintreiben!)" +"; Die 2 \"fehlenden\" Schüler nutzt unser Lehrer dann, um selber zu lernen." +"LERNE AUTO Steuereintreiben" +"ENDE" +"MACHE TEMP de01" +"// Runde 1235: mit T3 6 Speere pro Runde bauen" +"BENENNE EINHEIT \"Kunsthandwerker\"" +"REKRUTIERE 4" +"LERNE AUTO Waffenbau" +"ENDE" +"MACHE TEMP de02" +"; Eine Depoteinheit, die alle unsere nicht benötigten Gegenstände bekommt" +"; und Tarnung lernt. Auf diese Weise verringern wir die Informationen, die" +"; feindliche Späher über unsere Partei bekommen." +"; Gleichzeitig haben Einheiten mit Tarnung eine bessere Fluchtchance, falls" +"; wir überfallen werden." +"; Vor dem Beklautwerden schützt dies leider nicht, weil blöde Goblindiebe" +"; aus dem Silberpool klauen." +"BENENNE EINHEIT \"DEpot\"" +"REKRUTIERE 1" +"; Tarnung und Wahrnehmung sind mit die wichtigsten Talente. Deshalb lohnt" +"; es sich wahrscheinlich, sie ab Runde 1 zu lernen!" +"LERNE AUTO Tarnung" +"ENDE" +"MACHE TEMP de03" +"; Wir lernen auch Wahrnehmung ab Runde 1. Wir möchten ja nicht von Goblins" +"; und Katzen totgeklaut werden!" +"BENENNE EINHEIT \"Wächter der Demokratie\"" +"REKRUTIERE 1" +"LERNE AUTO Wahrnehmung" +"ENDE" +"MACHE TEMP de04" +"; Wir wollen uns so früh wie möglich unsere Umgebung anschauen. " +"; Der Berg im Osten scheint uns besonders interessant. Dahinter wird es" +"; hoffentlich weitere Regionen geben, also wollen wir dort nächste Runde" +"; einen zweiten Botschafter rekrutieren." +"BENENNE EINHEIT \"Botschafter der DEMOkratie\"" +"BESCHREIBE EINHEIT \"Der Botschafter trägt fröhliche schwarz-rot-goldene Klamotten\"" +"REKRUTIERE 1" +"NACH o" +"ENDE" +"MACHE TEMP de05" +"; Die nächsten 2 Botschafter schicken wir nach Südosten" +"BENENNE EINHEIT \"Botschafter der DEMOkratie\"" +"BESCHREIBE EINHEIT \"Der Botschafter trägt fröhliche schwarz-rot-goldene Klamotten\"" +"REKRUTIERE 1" +"NACH so" +"ENDE" +"MACHE TEMP de06" +"; Das ist wichtig. Für die meisten Völker ist Unterhaltung das bessere" +"; Talent, um die Wirtschaft aufzubauen. Wir haben aber -2 auf Unterhaltung," +"; also kostet es uns 6 Wochen, überhaupt funktionsfähige Unterhalter" +"; auszubilden. Steuereintreiber brauchen thoeretisch nur eine Woche:" +"; eine für Steuereintreiben, das Waffentalent bringen sie schon mit. Nur " +"; brauchen sie dann noch eine Waffe." +"; Am Anfang werden das Speere sein. Holz ist super knapp in Eressea. In " +"; der Region gibt es 500 Bäume und 100 Schößlinge. Also ist unser Plan," +"; schnell Eisen zu finden, damit ein Sägewerk zu bauen, so dass wir daraus" +"; 1200 Holz machen können. Das reicht für bis zu 1200 Treiber und Krieger," +"; um uns Respekt zu verschaffen. Die Produktion dauert aber. Hoffentlich" +"; sind wir bis dahin nicht von einem aggressiven Insekten- oder einem" +"; boomenden Halblingsvolk überrannt worden!" +"; Schritt 1 ist: Eisen finden für das Sägewerk." +"; Vielleicht gibt es Eisen oder Stein in unserer Startregion. Sonst müssen" +"; wir den Berg ausbeuten und hoffen, dass sich dort noch kein Z ... kein Zw" +"; ... Boah, das kommt mir schwer über die Lippen ... Keiner unserer" +"; vertikal benachteiligten Zeitgenossen breit gemacht hat." +"; Mittel- und langfristig sollten wir nicht auf Stangenwaffen, sondern auf" +"; Hiebwaffen setzen." +"; Die sind fast immer besser bei gleichen Ressourcen und wir können unser" +"; Holz für Gebäude, Schiffe und Wagen benutzen." +"BENENNE EINHEIT \"Kumpel\"" +"REKRUTIERE 1" +"LERNE AUTO Bergbau" +"ENDE" +"MACHE TEMP de07" +"; Steine sind auch wichtig für Handelsposten (okay, am Anfang eher nicht" +"; für uns), Burgen zur Verteidiung und Sägewerke, Bergwerke und" +"; Steinbrüche." +"BENENNE EINHEIT \"Kumpel\"" +"REKRUTIERE 1" +"LERNE AUTO Steinbau" +"ENDE" +"MACHE TEMP de08" +"; Wir rekrutieren auch noch ein paar Holzfäller, damit unsere Waffenbauer" +"; auch in Zukunft was zu tun haben." +"BENENNE EINHEIT \"Landschaftspfleger\"" +"REKRUTIERE 2" +"LERNE AUTO Holzfällen" +"ENDE" +TALENTE +300 4;Armbrustschießen +300 4;Bogenschießen +300 4;Katapultbedienung +300 4;Hiebwaffen +300 4;Stangenwaffen +GEGENSTAENDE +10;Holz +2500;Silber +4;Stein +REGION 1 -1 +6811631996;id +"Gytsosuncun";Name +"Wüste";Terrain +"neighbour";visibility +REGION 1 0 +5061153169;id +"Tanpeldoddod";Name +"Berge";Terrain +"neighbour";visibility +REGION -1 1 +233888444;id +"Ozean";Terrain +"neighbour";visibility +REGION 0 1 +6874843160;id +"Ozean";Terrain +"neighbour";visibility +TRANSLATION diff --git a/stm-jekyll/_data/crs/1234-bLa.md b/stm-jekyll/_data/crs/1234-bLa.md new file mode 100644 index 000000000..abfe922f7 --- /dev/null +++ b/stm-jekyll/_data/crs/1234-bLa.md @@ -0,0 +1,308 @@ +--- +name: Ork Zug 0 +description: Erste Züge mit Orks +crs: + - 1234-bLa.cr +date: 22-09-01 +list: true +--- +Dies ist ein Beispiel für einen ersten Zug mit unserer Orkpartei. Natürlich müsstest du im Ernstfall statt keinpasswort dein tatsächliches Passwort eintragen. Die ersten Zeilen bekommst du nie zu gesicht, wenn du deine Befehle mit Magellan schreibst und verschickst: + + ERESSEA bLa "keinpasswort" + LOCALE de + REGION 0,0 ; Gusras + ; ECheck Lohn 11 + EINHEIT 5ac0; Einheit 5ac0 [1,2500$] + +Hier beginnen also die Befehle für unsere erste (und derzeit einzige Einheit): + +``` +; Befehle, die mit Semicolon beginnen, sind Kommentare.
+; Die Standardeinstellungen von Magellan sorgen dafür, dass sie vor dem Versand +; an den Server entfernt werden. Magellan sorgt auch dafür, dass zu lange Zeilen wie diese hier umgebrochen werden und auf dem Server keine Probleme machen. +; Wir nutzen die Kommentare hier, um dir die Befehle zu erklären. +``` + +Wir wollen eine schöne, passende Nummer (ID) für unsere Partei sichern. +IDs Bestehen aus einer Kombination von 4 Zahlen oder Buchstaben. +Die IDs für Parteien, Einheiten, Gebäuden und Schiffen kommen jeweils aus einem eigenen Pool. + + NUMMER PARTEI demo + +Es ist also möglich dieser Einheit die gleiche Nummer wie die der Partei zu geben. + + NUMMER EINHEIT demo + +Zurück zur Partei. Wir wollen unserer Partei einen guten Namen und eine hübsche Beschreibung geben. Eressea spielt man mit anderen zusammen. Schöne Beschreibungen erhöhen den Spielspaß für alle und vermindern die Wahrscheinlichkeit von seinen Nachbarn früh abgeschlachtet zu werden.
+Wirklich wahr. +``` +BENENNE PARTEI "Die DEMORKraten" +BANNER "Wir glauben an demorkratische Werte. Sie sind der beste Weg für ein gutes Zusammenleben. Wenn ihr das auch denkt, schreibt uns doch eine Nachricht an demo@example.com!" +BENENNE EINHEIT "Erster Demorkrat" +BESCHREIBE EINHEIT "Tritt für Gewaltenteilung ein. Also zumindest für Gewalt. Und Teilung." +``` +Wir ändern noch rasch den Kampfstatus. Im Moment ist das streng genommen +nicht nötig, aber so vergessen wir es später nicht. Für Kundschafter und +andere Unbewaffnete ist FLIEHE eine gute Wahl: für den Fall, dass wir +von unliebsamen Nachbarn oder Monstern angegriffen werden, können wir uns +noch nicht wirksam verteidigen. Stattdessen vergrößern wir unsere Chancen +zu überleben UND verlieren außerdem unseren Bewegungsbefehl nicht.
+Win-Win! + + KÄMPFE FLIEHE + +Der Rest der Befehle dieser Einheit besteht nur aus Übergaben an +TEMP-Einheiten und der Erzeugung von TEMP-Einheiten. + +Gelogen! Wir sichern uns noch schnell Silber, um wenigstens die nächsten +4 Runden überleben zu können. + + RESERVIERE 40 Silber + +Überhaupt Silber. Wir haben 2500 und so bald stehen keine Einnahmen ins +Haus. Wir sind schließlich keine Halblinge, die ab Runde zwei fette +Einnahmen haben, weil die Bauern sie sooo lustig finden und ihnen +freiwillig Geld in den ... Ich schweife ab. + +Was können wir tun? + +2500 Silber, also rekrutieren wir 35 Orks zu je 70 Silber, richtig? +Falsch natürlich, das führt in die sichere Katastrophe: Wir brauchen ja +auch 10 Silber Unterhalt pro Runde. + +Unsere ersten Einnahmen stehen frühestens in Runde 3 an: + + - Runde 1: Einheit 1 lernt Waffenbau + - Runde 2: Einheit 1 macht Holz zu Speeren, Einheit 2 lernt Treiben + - Runde 3: Einheit 2 schappt sich die Speere und treibt. + +Bis dahin haben sie wahrscheinlich nur je eine Talentstufe gelernt, dazu kommt unser +Rassenbonus von +1 auf Steuereintreiben. +Macht also 40 Silber pro Runde. + +Effizienter ist wahrscheinlich Folgendes: Wir lassen eine Person +Steuereintreiben lernen. Die benutzen wir in der nächsten Runde als +Lehrer für unsere ersten 10 Treiber. + +Durch diesen Trick sparen wir das Unterhaltssilber für die 10 Treiber in +der ersten Runde beim gleichen Ergebnis. Vielleicht ist es auch +sinnvoller, sie dann gleich noch eine Runde lernen zu lassen. Auf diese +Weise werden sie wahrscheinlich Stufe 2 erreichen und können dann gleich +60 Silber pro Runde machen. Bis dahin braucht jede Person also 30 Silber +Unterhalt. Genaues Rechnen lohnt sich. Ist es sinnvoll, die +Steuereintreiber trotzdem schon diese Runde zu rekrutieren und etwas +anderes lernen zu lassen? + +Wir übergeben das Rekrutierungssilber plus drei Runden Unterhalt. Das ist +nicht unbedingt nötig, weil die Einheit sich das Silber auch aus dem +Silberpool nimmt. +Aufgrund der Übersichtlichkeit ist es aber eine gute Praxis. + +Orks sind billig, wir können also wenigsten viel mehr Einheiten +rekrutieren als zum Beispiel Elfen. Bäh! +``` +; 1 Treiberlehrer +GIB TEMP de00 100 Silber +; 3 oder 4 Waffenbauer +GIB TEMP de01 400 Silber +; 1 Tarner +GIB TEMP de02 100 Silber +; 1 Wahrnehmer +GIB TEMP de03 100 Silber +``` +Unsere Späher bekommen neben dem Rekrutierungssilber noch 50 Silber, +um als Kundschafter 5 Runden durch die Lande ziehen zu können. Plus 120 +Silber, um einen weiteren Kundschafter in der Nachbarregion rekrutieren +zu können. +``` +GIB TEMP de04 240 Silber +GIB TEMP de05 240 Silber +; weitere Einheiten +GIB TEMP de06 100 Silber +GIB TEMP de07 100 Silber +GIB TEMP de08 200 Silber +``` +Dies ist der letzte Befehl. Wir übergeben alles, was wir noch haben, an unser Depot. +Wir behalten nur reservierte Gegenstände. Das ist eine gute Angewohnheit, +um nicht aufgrund von Denkfehlern überladen zu werden. +``` +GIB TEMP de02 ALLES +``` +Aha! Wir haben selber noch keinen langen Befehl bekommen. Nun, da wir +schon einen Talentvorsprung haben, können wir als Ausbilder für unsere +zukünftigen Treiber / Krieger dienen. +Die Frage ist nur, ob wir Hieb- oder Stangenwaffen lernen +``` +LERNE AUTO Hiebwaffen +``` +Das war's! Wir könnten noch Pferdedresseure (super wichtig für + Steintransport und den Krieg), Segler und Schiffbauer (schließlich haben +wir 4 Ozeanregionen) anstellen. + +Hätten wir keinen Malus auf Magie, würden wir wahrscheinlich auch 1 oder +4 Magier ausbilden. Aber die brauchen bei uns drei Wochen und 500 Silber, +bis sie auch nur Stufe 1 erreicht haben. Wir warten lieber. Das hat +wenigstens den Vorteil, dass wir uns noch länger Zeit lassen können, ein +Magiegebiet zu wählen. + +Wir belassen es dabei. Wir haben schon 14 Personen und jede weitere +verlangsamt unseren Start, da wir weniger Steuereintreiber einsetzen +können. Dafür bleiben uns jetzt noch etwa 950 Silber. + +Allzu oft fragt man sich: Was habe ich mir letzte Runde wohl dabei +gedacht? //-Kommentare erscheinen nächste Woche im Report und sind +deshalb ein guter Weg, um Pläne über mehrere Wochen nicht zu vergessen. +``` +// Plan für Woche 1235: +// 10 Steuereintreiber rekrutieren und lehren lassen +// Speere bauen +// Plan für Woche 1236: +// Treiber lernen, mehr Speere +// Plan für Woche 1237: +// Profit! +``` +Vielleicht ist das noch nicht der beste Plan. Es lohnt sich, gerade in +den ersten Runden alles Schritt für Schritt vorauszudenken. Wie genau +sieht die Situation nächte Woche aus? +Wie in zwei, drei oder zehn Wochen? Wir wollen dann nicht merken, dass wir etwas +Wichtiges versäumt haben! + +Die Befehle MACHE TEMP und ENDE zur Erzeugung von TEMP-Einheiten +fügt Magellan automatisch hinzu, wenn wir dort eine TEMP-Einheit anlegen. +``` +MACHE TEMP de00 +; Unser zukünftiger Lehrer +BENENNE EINHEIT "DEMOrkratieverwalter" +``` +Haben wir an das Silber zum Rekrutieren gedacht? Haben wir. +Magellan würde auch eine Warnung in der Offene-Probleme-Ansicht geben, +falls wir es vergessen. +``` +REKRUTIERE 1 +``` +Durch LERNE AUTO müssen wir nicht von Hand Lehrer auf Schüler verteilen. +Wir können theoretisch nächste Runde nur 8 Steuereintreiber rekrutieren +und mit LERNE AUTO Steuereintreiben lernen lassen (jedoch nicht einfach +LERNE Steuereintreiben!) +Die 2 "fehlenden" Schüler nutzt unser Lehrer dann, um selber zu lernen. +``` +LERNE AUTO Steuereintreiben +ENDE +``` + +Die nächste Einheit werden unsere Speerbauer. +``` +MACHE TEMP de01 +// Runde 1235: mit T3 6 Speere pro Runde bauen +BENENNE EINHEIT "Kunsthandwerker" +REKRUTIERE 4 +LERNE AUTO Waffenbau +ENDE +``` + +Eine Depoteinheit, die alle unsere nicht benötigten Gegenstände bekommt +und Tarnung lernt. Auf diese Weise verringern wir die Informationen, die +feindliche Späher über unsere Partei bekommen. +Gleichzeitig haben Einheiten mit Tarnung eine bessere Fluchtchance, falls +wir überfallen werden. +Vor dem Beklautwerden schützt dies leider nicht, weil blöde Goblindiebe +aus dem Silberpool klauen. + +Tarnung und Wahrnehmung sind mit die wichtigsten Talente. Deshalb lohnt +es sich wahrscheinlich, sie ab Runde 1 zu lernen! +``` +MACHE TEMP de02 +BENENNE EINHEIT "DEpot" +REKRUTIERE 1 +LERNE AUTO Tarnung +ENDE +``` +Wir lernen auch Wahrnehmung ab Runde 1. Wir möchten ja nicht von Goblins +und Katzen totgeklaut werden! +``` +MACHE TEMP de03 +BENENNE EINHEIT "Wächter der Demokratie" +REKRUTIERE 1 +LERNE AUTO Wahrnehmung +ENDE +``` +Wir wollen uns so früh wie möglich unsere Umgebung anschauen. +Der Berg im Osten scheint uns besonders interessant. Dahinter wird es +hoffentlich weitere Regionen geben, also wollen wir dort nächste Runde +einen zweiten Botschafter rekrutieren. +``` +MACHE TEMP de04 +BENENNE EINHEIT "Botschafter der DEMOkratie" +BESCHREIBE EINHEIT "Der Botschafter trägt fröhliche schwarz-rot-goldene Klamotten" +REKRUTIERE 1 +NACH o +ENDE +``` +Die nächsten 2 Botschafter schicken wir nach Südosten. +``` +MACHE TEMP de05 +BENENNE EINHEIT "Botschafter der DEMOkratie" +BESCHREIBE EINHEIT "Der Botschafter trägt fröhliche schwarz-rot-goldene Klamotten" +REKRUTIERE 1 +NACH so +ENDE +``` +Das ist wichtig. Für die meisten Völker ist Unterhaltung das bessere +Talent, um die Wirtschaft aufzubauen. Wir haben aber -2 auf Unterhaltung, +also kostet es uns 6 Wochen, überhaupt funktionsfähige Unterhalter +auszubilden. Steuereintreiber brauchen thoeretisch nur eine Woche: +eine für Steuereintreiben, das Waffentalent bringen sie schon mit. Nur +brauchen sie dann noch eine Waffe. + +Am Anfang werden das Speere sein. Holz ist super knapp in Eressea. In +der Region gibt es 500 Bäume und 100 Schößlinge. Also ist unser Plan, +schnell Eisen zu finden, damit ein Sägewerk zu bauen, so dass wir daraus +1200 Holz machen können. Das reicht für bis zu 1200 Treiber und Krieger, +um uns Respekt zu verschaffen. Die Produktion dauert aber und der Betrieb eines. +Sägewerks ist teuer. Hoffentlich sind wir bis dahin nicht von einem aggressiven +Insekten- oder einem boomenden Halblingsvolk überrannt worden! + +Schritt 1 ist: Eisen finden für das Sägewerk. +Vielleicht gibt es Eisen oder Stein in unserer Startregion. Sonst müssen +wir den Berg ausbeuten und hoffen, dass sich dort noch kein Z ... kein Zw +... Boah, das kommt mir schwer über die Lippen ... Keiner unserer +vertikal benachteiligten Zeitgenossen breit gemacht hat. +Mittel- und langfristig sollten wir nicht auf Stangenwaffen, sondern auf +Hiebwaffen setzen. + +Die sind fast immer besser bei gleichen Ressourcen und wir können unser +Holz für Gebäude, Schiffe und Wagen benutzen. +``` +MACHE TEMP de06 +BENENNE EINHEIT "Kumpel" +REKRUTIERE 1 +LERNE AUTO Bergbau +ENDE +``` +Steine sind auch wichtig für Handelsposten (okay, am Anfang eher nicht +für uns), Burgen zur Verteidiung und Sägewerke, Bergwerke und +Steinbrüche. +``` +MACHE TEMP de07 +BENENNE EINHEIT "Kumpel" +REKRUTIERE 1 +LERNE AUTO Steinbau +ENDE +``` +Wir rekrutieren auch noch ein paar Holzfäller, damit unsere Waffenbauer +auch in Zukunft was zu tun haben. +``` +MACHE TEMP de08 +BENENNE EINHEIT "Landschaftspfleger" +REKRUTIERE 2 +LERNE AUTO Holzfällen +ENDE +``` + +Den Befehl NÄCHSTER am Ende unserer Befehle fügt Magellan netterweise +selbständig hinzu. Achte darauf, dass du vor dem Absenden das richtige +Passwort einträgst. + +``` +NÄCHSTER +``` diff --git a/stm-jekyll/_data/crs/basic.cr b/stm-jekyll/_data/crs/basic.cr new file mode 100644 index 000000000..17df74030 --- /dev/null +++ b/stm-jekyll/_data/crs/basic.cr @@ -0,0 +1,923 @@ +VERSION 69 +"UTF-8";charset +"de";locale +1;noskillpoints +1662562185;date +"Eressea";Spiel +"Standard";Konfiguration +"Hex";Koordinaten +2500;max_units +36;Basis +334;Runde +2;Zeitalter +"27.4.0-04cdd9268";Build +"eressea-server@kn-bremen.de";mailto +"ERESSEA 2 BEFEHLE";mailcmd +PARTEI 146 +"de";locale +1;age +599;Optionen +"Menschen";Typ +75;Rekrutierungskosten +2021;Anzahl Personen +"gray";Magiegebiet +0;Anzahl Immigranten +32;Max. Immigranten +29;max_heroes +"Partei z5w4";Parteiname +"fex@eressea.de";email +OPTIONEN +1;AUSWERTUNG +1;COMPUTER +1;ZUGVORLAGE +1;STATISTIK +0;DEBUG +1;ZIPPED +0;ZEITUNG +1;ADRESSEN +0;BZIP2 +0;PUNKTE +0;SHOWSKCHANGE +MESSAGE 1159990032 +198804487;type +"errors";section +"Deine Partei hat letzte Runde keinen Zug abgegeben!";rendered +MESSAGE 1161290096 +107552268;type +"economy";section +"Einheit rgoi (rgoi) bezahlt den Unterhalt von Leuchtturm (b5im).";rendered +1281330;unit +520366;building +MESSAGE 1161306256 +2026874001;type +"movement";section +"Die Karavelle 1n6o (1n6o) segelt von Cikanpat (-2005,2) nach Cikanpat (-2005,2).";rendered +76704;ship +-2005 2 0;from +-2005 2 0;to +MESSAGE 1161338640 +829394366;type +"events";section +"Einheit 8w39 (8w39) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +414837;unit +-2005 2 0;region +MESSAGE 1161345424 +829394366;type +"events";section +"Einheit 14Lf (14Lf) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +52611;unit +-2005 2 0;region +MESSAGE 1161343696 +829394366;type +"events";section +"Einheit mrv4 (mrv4) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +1062544;unit +-2005 2 0;region +MESSAGE 1161339408 +829394366;type +"events";section +"Einheit pmb6 (pmb6) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +1195314;unit +-2005 2 0;region +MESSAGE 1161332560 +829394366;type +"events";section +"Einheit qt2q (qt2q) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +1250738;unit +-2005 2 0;region +MESSAGE 1161344464 +829394366;type +"events";section +"Einheit 67tv (67tv) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +290083;unit +-2005 2 0;region +MESSAGE 1161338320 +829394366;type +"events";section +"Einheit 47zq (47zq) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +196982;unit +-2005 2 0;region +MESSAGE 1161336496 +829394366;type +"events";section +"Einheit ryhp (ryhp) in Cikanpat (-2005,2) wird durch unzureichende Nahrung geschwächt.";rendered +1304413;unit +-2005 2 0;region +BATTLE -2005 0 +MESSAGE 1161164368 +26679501;type +"battle";section +"Der Kampf wurde ausgelöst von Partei z5w4 (42).";rendered +"Partei z5w4 (42)";factions +MESSAGE 1161110016 +1801908756;type +"battle";section +"Heer 0: Partei z5w4 (42)";rendered +0;index +"Partei z5w4 (42)";name +146;faction +MESSAGE 1161263440 +1803906635;type +"battle";section +"Kämpft gegen: Heer 1 (ym2e)";rendered +"Kämpft gegen: Heer 1 (ym2e)";string +MESSAGE 1161179072 +1803906635;type +"battle";section +"Attacke gegen: Heer 1(ym2e)";rendered +"Attacke gegen: Heer 1(ym2e)";string +MESSAGE 1161252784 +1684814935;type +"battle";section +"... in der 1. Kampflinie:";rendered +1;row +MESSAGE 1160987680 +2144337409;type +"battle";section +" * Einheit xpb2 (xpb2), 1000 Menschen, aggressiv, bewacht die Region, Talente: Hiebwaffen 20, Ausdauer 10, hat: 100000 Silber, 1000 Plattenpanzer, 1000 Schilde, 1000 Schwerter.";rendered +" * Einheit xpb2 (xpb2), 1000 Menschen, aggressiv, bewacht die Region, Talente: Hiebwaffen 20, Ausdauer 10, hat: 100000 Silber, 1000 Plattenpanzer, 1000 Schilde, 1000 Schwerter.";string +1572446;unit +MESSAGE 1161297776 +1684814935;type +"battle";section +"... in der 2. Kampflinie:";rendered +2;row +MESSAGE 1161163888 +2144337409;type +"battle";section +" * Einheit jfg3 (jfg3), 1 Mensch, hinten, Talente: Magie Gwyrrd 10. Aura 1000/105, Zauber: Mauern der Ewigkeit, Hagel, Kampfzauber: keiner, Hagel(8), keiner.";rendered +" * Einheit jfg3 (jfg3), 1 Mensch, hinten, Talente: Magie Gwyrrd 10. Aura 1000/105, Zauber: Mauern der Ewigkeit, Hagel, Kampfzauber: keiner, Hagel(8), keiner.";string +906483;unit +MESSAGE 1161295728 +2144337409;type +"battle";section +" * Einheit c1sr (c1sr), 1000 Menschen, hinten, Talente: Bogenschießen 20, Ausdauer 10, hat: 1000 Bögen, 100000 Silber, 1000 Schilde.";rendered +" * Einheit c1sr (c1sr), 1000 Menschen, hinten, Talente: Bogenschießen 20, Ausdauer 10, hat: 1000 Bögen, 100000 Silber, 1000 Schilde.";string +562203;unit +MESSAGE 1161251056 +1801908756;type +"battle";section +"Heer 1: Partei ym2e (ym2e)";rendered +1;index +"Partei ym2e (ym2e)";name +1614902;faction +MESSAGE 1161153232 +1803906635;type +"battle";section +"Kämpft gegen: Heer 0 (42)";rendered +"Kämpft gegen: Heer 0 (42)";string +MESSAGE 1161150192 +1684814935;type +"battle";section +"... in der 1. Kampflinie:";rendered +1;row +MESSAGE 1161254352 +2144337409;type +"battle";section +" - Einheit 2aLf (2aLf), 1000 Menschen, aggressiv, hat: 1000 Plattenpanzer, 1000 Schilde, 1000 Schwerter.";rendered +" - Einheit 2aLf (2aLf), 1000 Menschen, aggressiv, hat: 1000 Plattenpanzer, 1000 Schilde, 1000 Schwerter.";string +107043;unit +MESSAGE 1161261840 +1684814935;type +"battle";section +"... in der 2. Kampflinie:";rendered +2;row +MESSAGE 1161271696 +2144337409;type +"battle";section +" - Einheit ycr7 (ycr7), 1000 Menschen, hinten, hat: 1000 Armbrüste, 1000 Schilde.";rendered +" - Einheit ycr7 (ycr7), 1000 Menschen, hinten, hat: 1000 Armbrüste, 1000 Schilde.";string +1602835;unit +MESSAGE 1161266608 +564544796;type +"battle";section +"Einheiten vor der 1. Runde:";rendered +1;turn +MESSAGE 1161142832 +1803906635;type +"battle";section +"Heer 0(42): 1000+1001, Heer 1(ym2e): 1000+1000";rendered +"Heer 0(42): 1000+1001, Heer 1(ym2e): 1000+1000";string +MESSAGE 1161265648 +450463848;type +"battle";section +"Einheit jfg3 (jfg3) zaubert Hagel: 0 Krieger wurden getötet.";rendered +906483;mage +"Hagel";spell +0;dead +MESSAGE 1161155472 +564544796;type +"battle";section +"Einheiten vor der 2. Runde:";rendered +2;turn +MESSAGE 1161257904 +1803906635;type +"battle";section +"Heer 0(42): 1000+1000, Heer 1(ym2e): 1000+1000";rendered +"Heer 0(42): 1000+1000, Heer 1(ym2e): 1000+1000";string +MESSAGE 1161147056 +450463848;type +"battle";section +"Einheit jfg3 (jfg3) zaubert Hagel: 0 Krieger wurden getötet.";rendered +906483;mage +"Hagel";spell +0;dead +MESSAGE 1161147984 +564544796;type +"battle";section +"Einheiten vor der 3. Runde:";rendered +3;turn +MESSAGE 1161147408 +1803906635;type +"battle";section +"Heer 0(42): 1000+998, Heer 1(ym2e): 1000+999";rendered +"Heer 0(42): 1000+998, Heer 1(ym2e): 1000+999";string +MESSAGE 1161288464 +450463848;type +"battle";section +"Einheit jfg3 (jfg3) zaubert Hagel: 0 Krieger wurden getötet.";rendered +906483;mage +"Hagel";spell +0;dead +MESSAGE 1161271376 +564544796;type +"battle";section +"Einheiten vor der 4. Runde:";rendered +4;turn +MESSAGE 1161264272 +1803906635;type +"battle";section +"Heer 0(42): 1000+998, Heer 1(ym2e): 1000+999";rendered +"Heer 0(42): 1000+998, Heer 1(ym2e): 1000+999";string +MESSAGE 1161300928 +450463848;type +"battle";section +"Einheit jfg3 (jfg3) zaubert Hagel: 0 Krieger wurden getötet.";rendered +906483;mage +"Hagel";spell +0;dead +MESSAGE 1161148608 +564544796;type +"battle";section +"Einheiten vor der 5. Runde:";rendered +5;turn +MESSAGE 1161282320 +1803906635;type +"battle";section +"Heer 0(42): 999+994, Heer 1(ym2e): 999+999";rendered +"Heer 0(42): 999+994, Heer 1(ym2e): 999+999";string +MESSAGE 1161292880 +564544796;type +"battle";section +"Einheiten vor der 6. Runde:";rendered +6;turn +MESSAGE 1161274768 +1803906635;type +"battle";section +"Heer 0(42): 998+993, Heer 1(ym2e): 999+997";rendered +"Heer 0(42): 998+993, Heer 1(ym2e): 999+997";string +MESSAGE 1161298064 +1436762363;type +"battle";section +"Einheit jfg3 (jfg3) erzielte 408 Treffer und tötete 0 Gegner.";rendered +906483;unit +408;hits +0;kills +MESSAGE 1161177824 +1436762363;type +"battle";section +"Einheit c1sr (c1sr) erzielte 3009 Treffer und tötete 2 Gegner.";rendered +562203;unit +3009;hits +2;kills +MESSAGE 1161177920 +1436762363;type +"battle";section +"Einheit xpb2 (xpb2) erzielte 1282 Treffer und tötete 1 Gegner.";rendered +1572446;unit +1282;hits +1;kills +MESSAGE 1161165488 +804883071;type +"battle";section +"Einheit jfg3 (jfg3) verlor 1 Personen.";rendered +906483;unit +1;fallen +0;alive +0;run +MESSAGE 1161165632 +804883071;type +"battle";section +"Einheit c1sr (c1sr) verlor 2 Personen, 998 überlebten.";rendered +562203;unit +2;fallen +998;alive +0;run +MESSAGE 1161268992 +804883071;type +"battle";section +"Einheit xpb2 (xpb2) verlor 2 Personen, 998 überlebten.";rendered +1572446;unit +2;fallen +998;alive +0;run +MESSAGE 1161147600 +804883071;type +"battle";section +"Einheit 2aLf (2aLf) verlor 1 Personen, 999 überlebten.";rendered +107043;unit +1;fallen +999;alive +0;run +MESSAGE 1161157072 +804883071;type +"battle";section +"Einheit ycr7 (ycr7) verlor 2 Personen, 998 überlebten.";rendered +1602835;unit +2;fallen +998;alive +0;run +MESSAGE 1161269696 +1109807897;type +"battle";section +"Heer 0(42): 5 Tote, 0 Geflohene, 1996 Überlebende.";rendered +0;index +"42";abbrev +5;dead +0;fled +1996;survived +MESSAGE 1161269808 +1109807897;type +"battle";section +"Heer 1(ym2e): 3 Tote, 0 Geflohene, 1997 Überlebende.";rendered +1;index +"ym2e";abbrev +3;dead +0;fled +1997;survived +PARTEI 1614902 +"Partei ym2e";Parteiname +"war@eressea.de";email +"de";locale +REGION -2005 0 +902447216;id +"Cibifar";Name +"Wald";Terrain +3194;Bauern +28;Pferde +44633;Silber +2231;Unterh +79;Rekruten +11;Lohn +530;Baeume +132;Schoesslinge +RESOURCE 347593380 +"Bauern";type +3194;number +RESOURCE 6035652 +"Bäume";type +530;number +RESOURCE 1352714618 +"Schößlinge";type +132;number +RESOURCE 210060480 +"Silber";type +44633;number +RESOURCE 200695649 +"Pferde";type +28;number +PREISE +16;Balsam +30;Gewürz +14;Juwel +10;Myrrhe +3;Öl +18;Seide +-4;Weihrauch +BURG 1424840 +"Leuchtturm";Typ +"Leuchtturm";Name +10;Groesse +BURG 506518 +"Bergwerk";Typ +"Bergwerk";Name +10;Groesse +BURG 1517972 +"Steinbruch";Typ +"Steinbruch";Name +10;Groesse +BURG 175017 +"Sägewerk";Typ +"Sägewerk";Name +10;Groesse +BURG 495482 +"Schmiede";Typ +"Schmiede";Name +10;Groesse +BURG 183712 +"Pferdezucht";Typ +"Pferdezucht";Name +10;Groesse +BURG 1315433 +"Hafen";Typ +"Hafen";Name +10;Groesse +BURG 1325565 +"Karawanserei";Typ +"Karawanserei";Name +25;Groesse +BURG 1607047 +"Akademie";Typ +"Akademie";Name +25;Groesse +BURG 467014 +"Magierturm";Typ +"Magierturm";Name +50;Groesse +BURG 474450 +"Damm";Typ +"Damm";Name +50;Groesse +BURG 539977 +"Tunnel";Typ +"Tunnel";Name +100;Groesse +BURG 744762 +"Taverne";Typ +"Taverne";Name +10;Groesse +BURG 107320 +"Monument";Typ +"Monument";Name +10;Groesse +BURG 706182 +"Steinkreis";Typ +"Steinkreis";Name +100;Groesse +EINHEIT 107043 +"Einheit 2aLf";Name +1614902;Partei +999;Anzahl +"Menschen";Typ +GEGENSTAENDE +1000;Plattenpanzer +1000;Schild +999;Schwert +EINHEIT 1572446 +"Einheit xpb2";Name +146;Partei +998;Anzahl +"Menschen";Typ +1;bewacht +0;Kampfstatus +1688019;weight +"erschöpft";hp +COMMANDS +TALENTE +6287400 20;Hiebwaffen +1646700 10;Ausdauer +GEGENSTAENDE +90019;Silber +1000;Plattenpanzer +1000;Schild +1000;Schwert +EINHEIT 562203 +"Einheit c1sr";Name +146;Partei +998;Anzahl +"Menschen";Typ +2;Kampfstatus +1287719;weight +"erschöpft";hp +COMMANDS +TALENTE +6287400 20;Bogenschießen +1646700 10;Ausdauer +GEGENSTAENDE +999;Bogen +90019;Silber +998;Schild +EINHEIT 1602835 +"Einheit ycr7";Name +1614902;Partei +998;Anzahl +"Menschen";Typ +GEGENSTAENDE +1000;Armbrust +999;Schild +REGION -2004 0 +1484905474;id +"Sivel";Name +"Sumpf";Terrain +1001;Bauern +0;Pferde +15990;Silber +799;Unterh +25;Rekruten +11;Lohn +RESOURCE 347593380 +"Bauern";type +1001;number +RESOURCE 210060480 +"Silber";type +15990;number +PREISE +4;Balsam +25;Gewürz +35;Juwel +25;Myrrhe +6;Öl +30;Seide +-4;Weihrauch +MESSAGE 1161297936 +2110306401;type +"events";section +"Eine Botschaft von Einheit rgoi (rgoi): 'Hey, Welt'";rendered +1281330;unit +"Hey, Welt";message +BURG 520366 +"Leuchtturm";Typ +"Leuchtturm";Name +10;Groesse +1281330;Besitzer +146;Partei +EINHEIT 1281330 +"Einheit rgoi";Name +146;Partei +1;Anzahl +"Menschen";Typ +520366;Burg +0;Kampfstatus +1890;weight +COMMANDS +TALENTE +1650 10;Wahrnehmung +GEGENSTAENDE +890;Silber +REGION -2005 1 +865548838;id +"Pybul";Name +"Berge";Terrain +"lighthouse";visibility +396;Bauern +61;Baeume +15;Schoesslinge +RESOURCE 347593380 +"Bauern";type +396;number +RESOURCE 6035652 +"Bäume";type +61;number +RESOURCE 1352714618 +"Schößlinge";type +15;number +REGION -2006 1 +954557752;id +"Gisudar";Name +"Hochland";Terrain +"lighthouse";visibility +654;Bauern +276;Baeume +69;Schoesslinge +RESOURCE 347593380 +"Bauern";type +654;number +RESOURCE 6035652 +"Bäume";type +276;number +RESOURCE 1352714618 +"Schößlinge";type +69;number +REGION -2006 0 +2045147174;id +"Centoditol";Name +"Wüste";Terrain +"lighthouse";visibility +212;Bauern +RESOURCE 347593380 +"Bauern";type +212;number +REGION -2005 -1 +1123815743;id +"Vusderet";Name +"Gletscher";Terrain +"lighthouse";visibility +100;Bauern +RESOURCE 347593380 +"Bauern";type +100;number +REGION -2004 -1 +25927232;id +"Covus";Name +"Vulkan";Terrain +"lighthouse";visibility +256;Bauern +RESOURCE 347593380 +"Bauern";type +256;number +REGION -2003 0 +982597860;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2004 1 +1018146291;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2002 0 +1556493036;id +"Feuerwand";Terrain +"lighthouse";visibility +REGION -2001 0 +247421501;id +"Fofyvol";Name +"Wand";Terrain +"neighbour";visibility +REGION -2005 2 +1680959050;id +"Cikanpat";Name +"Wald";Terrain +6185;Bauern +33;Pferde +73390;Silber +3669;Unterh +154;Rekruten +11;Lohn +600;Baeume +60;Schoesslinge +RESOURCE 347593380 +"Bauern";type +6185;number +RESOURCE 6035652 +"Bäume";type +600;number +RESOURCE 1352714618 +"Schößlinge";type +60;number +RESOURCE 210060480 +"Silber";type +73390;number +RESOURCE 200695649 +"Pferde";type +33;number +PREISE +16;Balsam +20;Gewürz +21;Juwel +5;Myrrhe +-3;Öl +12;Seide +16;Weihrauch +SCHIFF 288573 +"Boot 66nx";Name +"Boot";Typ +1;Anzahl +5;Groesse +414837;Kapitaen +146;Partei +5000;capacity +3000;cargo +2;speed +SCHIFF 1501987 +"Langboot w6xv";Name +"Langboot";Typ +1;Anzahl +50;Groesse +52611;Kapitaen +146;Partei +50000;capacity +3000;cargo +3;speed +SCHIFF 372828 +"Drachenschiff 7zoc";Name +"Drachenschiff";Typ +1;Anzahl +100;Groesse +1062544;Kapitaen +146;Partei +100000;capacity +3000;cargo +7;speed +SCHIFF 250584 +"Karavelle 5dco";Name +"Karavelle";Typ +1;Anzahl +250;Groesse +1195314;Kapitaen +146;Partei +300000;capacity +3000;cargo +5;speed +SCHIFF 159291 +"Trireme 3ewr";Name +"Trireme";Typ +1;Anzahl +200;Groesse +1250738;Kapitaen +146;Partei +200000;capacity +3000;cargo +7;speed +SCHIFF 342270 +"Galeone 7c3i";Name +"Galeone";Typ +1;Anzahl +2000;Groesse +290083;Kapitaen +146;Partei +2000000;capacity +3000;cargo +5;speed +SCHIFF 76704 +"Karavelle 1n6o";Name +"Karavelle";Typ +1;Anzahl +250;Groesse +1304413;Kapitaen +146;Partei +300000;capacity +3000;cargo +5;speed +1;Kueste +SCHIFF 1579169 +"Karavelle xuht";Name +"Karavelle";Typ +1;Anzahl +250;Groesse +1;Schaden +196982;Kapitaen +146;Partei +299640;capacity +3000;cargo +5;speed +EINHEIT 414837 +"Einheit 8w39";Name +146;Partei +3;Anzahl +"Menschen";Typ +288573;Schiff +0;Kampfstatus +3000;weight +"verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 52611 +"Einheit 14Lf";Name +146;Partei +3;Anzahl +"Menschen";Typ +1501987;Schiff +0;Kampfstatus +3000;weight +"schwer verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 1062544 +"Einheit mrv4";Name +146;Partei +3;Anzahl +"Menschen";Typ +372828;Schiff +0;Kampfstatus +3000;weight +"verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 1195314 +"Einheit pmb6";Name +146;Partei +3;Anzahl +"Menschen";Typ +250584;Schiff +0;Kampfstatus +3000;weight +"schwer verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 1250738 +"Einheit qt2q";Name +146;Partei +3;Anzahl +"Menschen";Typ +159291;Schiff +0;Kampfstatus +3000;weight +"schwer verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 290083 +"Einheit 67tv";Name +146;Partei +3;Anzahl +"Menschen";Typ +342270;Schiff +0;Kampfstatus +3000;weight +"schwer verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 1304413 +"Einheit ryhp";Name +146;Partei +3;Anzahl +"Menschen";Typ +76704;Schiff +0;Kampfstatus +3000;weight +"verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +EINHEIT 196982 +"Einheit 47zq";Name +146;Partei +3;Anzahl +"Menschen";Typ +1579169;Schiff +0;Kampfstatus +3000;weight +"verwundet";hp +1;hunger +COMMANDS +TALENTE +114750 50;Segeln +REGION -2007 0 +92343649;id +"Ozean";Terrain +"neighbour";visibility +REGION -2007 1 +1305882742;id +"Ozean";Terrain +"neighbour";visibility +REGION -2007 2 +952010265;id +"Ozean";Terrain +"neighbour";visibility +REGION -2007 3 +2027527060;id +"Ozean";Terrain +"neighbour";visibility +REGION -2006 -1 +1272043483;id +"Ozean";Terrain +"neighbour";visibility +REGION -2006 2 +197236711;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2006 3 +603012119;id +"Ozean";Terrain +"neighbour";visibility +REGION -2005 -2 +1272009082;id +"Ozean";Terrain +"neighbour";visibility +REGION -2005 3 +291808065;id +"Ozean";Terrain +"travel";visibility +DURCHSCHIFFUNG +"Karavelle 1n6o (1n6o)" +REGION -2004 -2 +499209852;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2004 2 +1860190997;id +"Ozean";Terrain +"travel";visibility +DURCHSCHIFFUNG +"Karavelle 1n6o (1n6o)" +REGION -2004 3 +92520394;id +"Ozean";Terrain +"neighbour";visibility +REGION -2003 -2 +700530123;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2003 -1 +1502968275;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2003 1 +184973115;id +"Ozean";Terrain +"lighthouse";visibility +REGION -2003 2 +2030168754;id +"Ozean";Terrain +"neighbour";visibility diff --git a/stm-jekyll/_data/crs/basic.md b/stm-jekyll/_data/crs/basic.md new file mode 100644 index 000000000..358823f26 --- /dev/null +++ b/stm-jekyll/_data/crs/basic.md @@ -0,0 +1,10 @@ +--- +name: Basis +description: A very basic CR +crs: + - basic.cr +date: 22-09-01 +list: true +--- +Ein Computerreport, so *einfach* wie möglich. + diff --git a/stm-jekyll/_data/crs/eressea.md b/stm-jekyll/_data/crs/eressea.md new file mode 100644 index 000000000..47356f022 --- /dev/null +++ b/stm-jekyll/_data/crs/eressea.md @@ -0,0 +1,13 @@ +--- +name: Eressea Example +description: An extensive example +crs: + - 999-demo.cr + - 999-nice.cr + - 999-foe.cr + - 1000-demo.cr + - 1000-nice.cr + - 1000-foe.cr +date: 2023-08-30 +--- +An example with all sorts of stuff that could go on in an Eressea game diff --git a/stm-jekyll/_data/crs/example.md b/stm-jekyll/_data/crs/example.md new file mode 100644 index 000000000..e6a358251 --- /dev/null +++ b/stm-jekyll/_data/crs/example.md @@ -0,0 +1,8 @@ +--- +name: Demo 001 +description: A more complex CR +crs: + - 334-42.cr +date: 2023-08-30 +--- +An example with different types of terrains, ships, lighthouses, and a battle. diff --git a/stm-jekyll/_data/navigation.yml b/stm-jekyll/_data/navigation.yml new file mode 100644 index 000000000..60af19930 --- /dev/null +++ b/stm-jekyll/_data/navigation.yml @@ -0,0 +1,5 @@ +docs: + - title: Home + url: / + - title: Eressea Demo-Reporte + url: /demos/ diff --git a/stm-jekyll/_demos/crstuff.js b/stm-jekyll/_demos/crstuff.js new file mode 100644 index 000000000..6a936b01f --- /dev/null +++ b/stm-jekyll/_demos/crstuff.js @@ -0,0 +1,28 @@ +window.onload = function(){ + let element = document.getElementById("details"); + element.innerHTML ="Klicke auf eine Region für mehr Details."; +} +function showTooltip(evt, tooltip) { + if (tooltip) { + let element = document.getElementById("tooltip"); + element.innerHTML = tooltip; + element.style.display = "block"; + element.style.left = evt.pageX + 10 + 'px'; + element.style.top = evt.pageY + 10 + 'px'; + } +} +function showDescription(e, id) { + e.preventDefault(); + if (id) { + let element = document.getElementById("details"); + let desc = document.getElementById(id).children[1].innerHTML; + element.innerHTML = desc; + element.style.display = "block"; + } + return false; +} + +function hideTooltip() { + var element = document.getElementById("tooltip"); + element.style.display = "none"; +} diff --git a/stm-jekyll/_includes/head-custom.html b/stm-jekyll/_includes/head-custom.html new file mode 100644 index 000000000..b42cca932 --- /dev/null +++ b/stm-jekyll/_includes/head-custom.html @@ -0,0 +1,8 @@ + +{% for javascript in page.custom-javascript-list %} + +{% endfor %} + +{% for css in page.custom-css-list %} + +{% endfor %} diff --git a/stm-jekyll/_layouts/crsvg.html b/stm-jekyll/_layouts/crsvg.html new file mode 100644 index 000000000..8e371c75c --- /dev/null +++ b/stm-jekyll/_layouts/crsvg.html @@ -0,0 +1,69 @@ + + + + + + + + + + + +{% seo %} + + {% include head-custom.html %} + + + +
+
+ +

-{{ site.title | default: site.github.repository_name }}

+
+

{{ site.description | default: site.github.project_tagline }}

+ {% if site.github.is_project_page %} + View project on GitHub + {% endif %} + {% if site.github.is_user_page %} + Follow me on GitHub + {% endif %} +
+
+ +
+
+
+ {{ content }} +
+ + +
+
+ + + diff --git a/stm-jekyll/_posts/2022-08-30-welcome-to-jekyll.markdown b/stm-jekyll/_posts/2022-08-30-welcome-to-jekyll.markdown new file mode 100644 index 000000000..9c0bbc2d2 --- /dev/null +++ b/stm-jekyll/_posts/2022-08-30-welcome-to-jekyll.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: 2022-08-30 14:34:20 +0200 +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: https://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/stm-jekyll/about.md b/stm-jekyll/about.md new file mode 100644 index 000000000..8b4e0b28c --- /dev/null +++ b/stm-jekyll/about.md @@ -0,0 +1,18 @@ +--- +layout: page +title: About +permalink: /about/ +--- + +This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/) + +You can find the source code for Minima at GitHub: +[jekyll][jekyll-organization] / +[minima](https://github.com/jekyll/minima) + +You can find the source code for Jekyll at GitHub: +[jekyll][jekyll-organization] / +[jekyll](https://github.com/jekyll/jekyll) + + +[jekyll-organization]: https://github.com/jekyll diff --git a/stm-jekyll/demos.md b/stm-jekyll/demos.md new file mode 100644 index 000000000..853e212fb --- /dev/null +++ b/stm-jekyll/demos.md @@ -0,0 +1,25 @@ +--- +title: Eressea Demo-Reporte +--- +{% for demo in site.demos %} +{% if demo.list %} +## [{{ demo.name }}]({{ site.baseurl }}{{ demo.url }}) + + {% if demo.crs.size == 1 %} +CR: + {% endif -%} + {% if demo.crs.size > 1 -%} +CRs: + {% endif -%} + {% for cr in demo.crs limit:1 -%} +[{{ cr }}]({{ site.baseurl }}/demos/{{ cr | replace: ".cr", ".html" }}) +(download) + {% endfor -%} + {% for cr in demo.crs offset:continue -%} +, [{{ cr }}]({{ site.baseurl }}/demos/{{ cr | replace: ".cr", ".html" }}) +(download) + {% endfor %} +{% if demo.description %}{{ demo.description }}{% endif %} + +{% endif -%} +{% endfor %} diff --git a/stm-jekyll/images/active.svg b/stm-jekyll/images/active.svg new file mode 100644 index 000000000..596bf6ec8 --- /dev/null +++ b/stm-jekyll/images/active.svg @@ -0,0 +1,96 @@ + + + + diff --git a/stm-jekyll/images/akademie der kuenste.svg b/stm-jekyll/images/akademie der kuenste.svg new file mode 100644 index 000000000..7accb3e3b --- /dev/null +++ b/stm-jekyll/images/akademie der kuenste.svg @@ -0,0 +1,37 @@ + + + + diff --git a/stm-jekyll/images/akademie.svg b/stm-jekyll/images/akademie.svg new file mode 100644 index 000000000..45d0212ff --- /dev/null +++ b/stm-jekyll/images/akademie.svg @@ -0,0 +1,26 @@ + + + + diff --git a/stm-jekyll/images/aktiver vulkan.svg b/stm-jekyll/images/aktiver vulkan.svg new file mode 100644 index 000000000..507578ea5 --- /dev/null +++ b/stm-jekyll/images/aktiver vulkan.svg @@ -0,0 +1,298 @@ + + + + diff --git a/stm-jekyll/images/barke0.svg b/stm-jekyll/images/barke0.svg new file mode 100644 index 000000000..c52939b5a --- /dev/null +++ b/stm-jekyll/images/barke0.svg @@ -0,0 +1,60 @@ + + + + diff --git a/stm-jekyll/images/barke1.svg b/stm-jekyll/images/barke1.svg new file mode 100644 index 000000000..96cce66fe --- /dev/null +++ b/stm-jekyll/images/barke1.svg @@ -0,0 +1,60 @@ + + + + diff --git a/stm-jekyll/images/barke2.svg b/stm-jekyll/images/barke2.svg new file mode 100644 index 000000000..635a307d6 --- /dev/null +++ b/stm-jekyll/images/barke2.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/barke3.svg b/stm-jekyll/images/barke3.svg new file mode 100644 index 000000000..8dbbc5493 --- /dev/null +++ b/stm-jekyll/images/barke3.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/barke4.svg b/stm-jekyll/images/barke4.svg new file mode 100644 index 000000000..c0e5739e4 --- /dev/null +++ b/stm-jekyll/images/barke4.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/images/barke5.svg b/stm-jekyll/images/barke5.svg new file mode 100644 index 000000000..88888737e --- /dev/null +++ b/stm-jekyll/images/barke5.svg @@ -0,0 +1,60 @@ + + + + diff --git a/stm-jekyll/images/barke6.svg b/stm-jekyll/images/barke6.svg new file mode 100644 index 000000000..ae0ba1e77 --- /dev/null +++ b/stm-jekyll/images/barke6.svg @@ -0,0 +1,54 @@ + + + + diff --git a/stm-jekyll/images/befestigung.svg b/stm-jekyll/images/befestigung.svg new file mode 100644 index 000000000..762bb7165 --- /dev/null +++ b/stm-jekyll/images/befestigung.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/berge.svg b/stm-jekyll/images/berge.svg new file mode 100644 index 000000000..637344aec --- /dev/null +++ b/stm-jekyll/images/berge.svg @@ -0,0 +1,280 @@ + + + + diff --git a/stm-jekyll/images/bergwerk.svg b/stm-jekyll/images/bergwerk.svg new file mode 100644 index 000000000..b601368ad --- /dev/null +++ b/stm-jekyll/images/bergwerk.svg @@ -0,0 +1,41 @@ + + + + diff --git a/stm-jekyll/images/boat0.svg b/stm-jekyll/images/boat0.svg new file mode 100644 index 000000000..7f8dcfb08 --- /dev/null +++ b/stm-jekyll/images/boat0.svg @@ -0,0 +1,49 @@ + + + + diff --git a/stm-jekyll/images/boat1.svg b/stm-jekyll/images/boat1.svg new file mode 100644 index 000000000..cfd2039e1 --- /dev/null +++ b/stm-jekyll/images/boat1.svg @@ -0,0 +1,43 @@ + + + + diff --git a/stm-jekyll/images/boat2.svg b/stm-jekyll/images/boat2.svg new file mode 100644 index 000000000..4efe8f8f1 --- /dev/null +++ b/stm-jekyll/images/boat2.svg @@ -0,0 +1,40 @@ + + + + diff --git a/stm-jekyll/images/boat3.svg b/stm-jekyll/images/boat3.svg new file mode 100644 index 000000000..4a1dd02a5 --- /dev/null +++ b/stm-jekyll/images/boat3.svg @@ -0,0 +1,35 @@ + + + + diff --git a/stm-jekyll/images/boat4.svg b/stm-jekyll/images/boat4.svg new file mode 100644 index 000000000..ea67e6983 --- /dev/null +++ b/stm-jekyll/images/boat4.svg @@ -0,0 +1,35 @@ + + + + diff --git a/stm-jekyll/images/boat5.svg b/stm-jekyll/images/boat5.svg new file mode 100644 index 000000000..4e70b4ddb --- /dev/null +++ b/stm-jekyll/images/boat5.svg @@ -0,0 +1,36 @@ + + + + diff --git a/stm-jekyll/images/boat6.svg b/stm-jekyll/images/boat6.svg new file mode 100644 index 000000000..a3a916e25 --- /dev/null +++ b/stm-jekyll/images/boat6.svg @@ -0,0 +1,28 @@ + + + + diff --git a/stm-jekyll/images/boot0.svg b/stm-jekyll/images/boot0.svg new file mode 100644 index 000000000..7f8dcfb08 --- /dev/null +++ b/stm-jekyll/images/boot0.svg @@ -0,0 +1,49 @@ + + + + diff --git a/stm-jekyll/images/boot1.svg b/stm-jekyll/images/boot1.svg new file mode 100644 index 000000000..cfd2039e1 --- /dev/null +++ b/stm-jekyll/images/boot1.svg @@ -0,0 +1,43 @@ + + + + diff --git a/stm-jekyll/images/boot2.svg b/stm-jekyll/images/boot2.svg new file mode 100644 index 000000000..4efe8f8f1 --- /dev/null +++ b/stm-jekyll/images/boot2.svg @@ -0,0 +1,40 @@ + + + + diff --git a/stm-jekyll/images/boot3.svg b/stm-jekyll/images/boot3.svg new file mode 100644 index 000000000..2d05c820f --- /dev/null +++ b/stm-jekyll/images/boot3.svg @@ -0,0 +1,35 @@ + + + + diff --git a/stm-jekyll/images/boot4.svg b/stm-jekyll/images/boot4.svg new file mode 100644 index 000000000..7021b1134 --- /dev/null +++ b/stm-jekyll/images/boot4.svg @@ -0,0 +1,35 @@ + + + + diff --git a/stm-jekyll/images/boot5.svg b/stm-jekyll/images/boot5.svg new file mode 100644 index 000000000..1c7e642c3 --- /dev/null +++ b/stm-jekyll/images/boot5.svg @@ -0,0 +1,36 @@ + + + + diff --git a/stm-jekyll/images/boot6.svg b/stm-jekyll/images/boot6.svg new file mode 100644 index 000000000..322f36f95 --- /dev/null +++ b/stm-jekyll/images/boot6.svg @@ -0,0 +1,28 @@ + + + + diff --git a/stm-jekyll/images/burg.svg b/stm-jekyll/images/burg.svg new file mode 100644 index 000000000..74fb86436 --- /dev/null +++ b/stm-jekyll/images/burg.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/damm.svg b/stm-jekyll/images/damm.svg new file mode 100644 index 000000000..0d07e0e40 --- /dev/null +++ b/stm-jekyll/images/damm.svg @@ -0,0 +1,35 @@ + + + + diff --git a/stm-jekyll/images/dichter nebel.svg b/stm-jekyll/images/dichter nebel.svg new file mode 100644 index 000000000..3568ecab3 --- /dev/null +++ b/stm-jekyll/images/dichter nebel.svg @@ -0,0 +1,165 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff0.svg b/stm-jekyll/images/drachenschiff0.svg new file mode 100644 index 000000000..463e73f12 --- /dev/null +++ b/stm-jekyll/images/drachenschiff0.svg @@ -0,0 +1,63 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff1.svg b/stm-jekyll/images/drachenschiff1.svg new file mode 100644 index 000000000..2e45f2c0f --- /dev/null +++ b/stm-jekyll/images/drachenschiff1.svg @@ -0,0 +1,61 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff2.svg b/stm-jekyll/images/drachenschiff2.svg new file mode 100644 index 000000000..116827d98 --- /dev/null +++ b/stm-jekyll/images/drachenschiff2.svg @@ -0,0 +1,56 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff3.svg b/stm-jekyll/images/drachenschiff3.svg new file mode 100644 index 000000000..b9f580e11 --- /dev/null +++ b/stm-jekyll/images/drachenschiff3.svg @@ -0,0 +1,46 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff4.svg b/stm-jekyll/images/drachenschiff4.svg new file mode 100644 index 000000000..69c7abe9e --- /dev/null +++ b/stm-jekyll/images/drachenschiff4.svg @@ -0,0 +1,59 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff5.svg b/stm-jekyll/images/drachenschiff5.svg new file mode 100644 index 000000000..b42901986 --- /dev/null +++ b/stm-jekyll/images/drachenschiff5.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/images/drachenschiff6.svg b/stm-jekyll/images/drachenschiff6.svg new file mode 100644 index 000000000..b2b0361dd --- /dev/null +++ b/stm-jekyll/images/drachenschiff6.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/dragonship0.svg b/stm-jekyll/images/dragonship0.svg new file mode 100644 index 000000000..a1d5b9306 --- /dev/null +++ b/stm-jekyll/images/dragonship0.svg @@ -0,0 +1,63 @@ + + + + diff --git a/stm-jekyll/images/dragonship1.svg b/stm-jekyll/images/dragonship1.svg new file mode 100644 index 000000000..2e45f2c0f --- /dev/null +++ b/stm-jekyll/images/dragonship1.svg @@ -0,0 +1,61 @@ + + + + diff --git a/stm-jekyll/images/dragonship2.svg b/stm-jekyll/images/dragonship2.svg new file mode 100644 index 000000000..116827d98 --- /dev/null +++ b/stm-jekyll/images/dragonship2.svg @@ -0,0 +1,56 @@ + + + + diff --git a/stm-jekyll/images/dragonship3.svg b/stm-jekyll/images/dragonship3.svg new file mode 100644 index 000000000..4e3602968 --- /dev/null +++ b/stm-jekyll/images/dragonship3.svg @@ -0,0 +1,46 @@ + + + + diff --git a/stm-jekyll/images/dragonship4.svg b/stm-jekyll/images/dragonship4.svg new file mode 100644 index 000000000..070c895a7 --- /dev/null +++ b/stm-jekyll/images/dragonship4.svg @@ -0,0 +1,59 @@ + + + + diff --git a/stm-jekyll/images/dragonship5.svg b/stm-jekyll/images/dragonship5.svg new file mode 100644 index 000000000..8b7c15d6f --- /dev/null +++ b/stm-jekyll/images/dragonship5.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/images/dragonship6.svg b/stm-jekyll/images/dragonship6.svg new file mode 100644 index 000000000..b26c746ab --- /dev/null +++ b/stm-jekyll/images/dragonship6.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/ebene.svg b/stm-jekyll/images/ebene.svg new file mode 100644 index 000000000..425827b2f --- /dev/null +++ b/stm-jekyll/images/ebene.svg @@ -0,0 +1,265 @@ + + + + diff --git a/stm-jekyll/images/einbaum0.svg b/stm-jekyll/images/einbaum0.svg new file mode 100644 index 000000000..8ab564a50 --- /dev/null +++ b/stm-jekyll/images/einbaum0.svg @@ -0,0 +1,65 @@ + + + + diff --git a/stm-jekyll/images/einbaum1.svg b/stm-jekyll/images/einbaum1.svg new file mode 100644 index 000000000..d48bfe381 --- /dev/null +++ b/stm-jekyll/images/einbaum1.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/einbaum2.svg b/stm-jekyll/images/einbaum2.svg new file mode 100644 index 000000000..9c78db636 --- /dev/null +++ b/stm-jekyll/images/einbaum2.svg @@ -0,0 +1,51 @@ + + + + diff --git a/stm-jekyll/images/einbaum3.svg b/stm-jekyll/images/einbaum3.svg new file mode 100644 index 000000000..3aa44db2b --- /dev/null +++ b/stm-jekyll/images/einbaum3.svg @@ -0,0 +1,41 @@ + + + + diff --git a/stm-jekyll/images/einbaum4.svg b/stm-jekyll/images/einbaum4.svg new file mode 100644 index 000000000..33b6c6d2f --- /dev/null +++ b/stm-jekyll/images/einbaum4.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/einbaum5.svg b/stm-jekyll/images/einbaum5.svg new file mode 100644 index 000000000..3338a60af --- /dev/null +++ b/stm-jekyll/images/einbaum5.svg @@ -0,0 +1,51 @@ + + + + diff --git a/stm-jekyll/images/einbaum6.svg b/stm-jekyll/images/einbaum6.svg new file mode 100644 index 000000000..505c338ca --- /dev/null +++ b/stm-jekyll/images/einbaum6.svg @@ -0,0 +1,45 @@ + + + + diff --git a/stm-jekyll/images/eisberg.svg b/stm-jekyll/images/eisberg.svg new file mode 100644 index 000000000..6bec21b85 --- /dev/null +++ b/stm-jekyll/images/eisberg.svg @@ -0,0 +1,332 @@ + + + + diff --git a/stm-jekyll/images/eisscholle.svg b/stm-jekyll/images/eisscholle.svg new file mode 100644 index 000000000..8f20dcb3f --- /dev/null +++ b/stm-jekyll/images/eisscholle.svg @@ -0,0 +1,287 @@ + + + + diff --git a/stm-jekyll/images/eisscholle2.svg b/stm-jekyll/images/eisscholle2.svg new file mode 100644 index 000000000..9fe0d5bbc --- /dev/null +++ b/stm-jekyll/images/eisscholle2.svg @@ -0,0 +1,258 @@ + + + + diff --git a/stm-jekyll/images/festung.svg b/stm-jekyll/images/festung.svg new file mode 100644 index 000000000..fee4c0fb1 --- /dev/null +++ b/stm-jekyll/images/festung.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/feuerwand.svg b/stm-jekyll/images/feuerwand.svg new file mode 100644 index 000000000..76fd3055b --- /dev/null +++ b/stm-jekyll/images/feuerwand.svg @@ -0,0 +1,226 @@ + + + + diff --git a/stm-jekyll/images/feuerwand0.svg b/stm-jekyll/images/feuerwand0.svg new file mode 100644 index 000000000..8ced269da --- /dev/null +++ b/stm-jekyll/images/feuerwand0.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/feuerwand1.svg b/stm-jekyll/images/feuerwand1.svg new file mode 100644 index 000000000..479f43b5d --- /dev/null +++ b/stm-jekyll/images/feuerwand1.svg @@ -0,0 +1,58 @@ + + + + diff --git a/stm-jekyll/images/feuerwand2.svg b/stm-jekyll/images/feuerwand2.svg new file mode 100644 index 000000000..139f68f22 --- /dev/null +++ b/stm-jekyll/images/feuerwand2.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/feuerwand3.svg b/stm-jekyll/images/feuerwand3.svg new file mode 100644 index 000000000..a99432b47 --- /dev/null +++ b/stm-jekyll/images/feuerwand3.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/feuerwand4.svg b/stm-jekyll/images/feuerwand4.svg new file mode 100644 index 000000000..be82606ed --- /dev/null +++ b/stm-jekyll/images/feuerwand4.svg @@ -0,0 +1,59 @@ + + + + diff --git a/stm-jekyll/images/feuerwand5.svg b/stm-jekyll/images/feuerwand5.svg new file mode 100644 index 000000000..3f2f637a5 --- /dev/null +++ b/stm-jekyll/images/feuerwand5.svg @@ -0,0 +1,32 @@ + + + + diff --git a/stm-jekyll/images/floss0.svg b/stm-jekyll/images/floss0.svg new file mode 100644 index 000000000..8a5a8bd23 --- /dev/null +++ b/stm-jekyll/images/floss0.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/floss1.svg b/stm-jekyll/images/floss1.svg new file mode 100644 index 000000000..c2128a7f6 --- /dev/null +++ b/stm-jekyll/images/floss1.svg @@ -0,0 +1,37 @@ + + + + diff --git a/stm-jekyll/images/floss2.svg b/stm-jekyll/images/floss2.svg new file mode 100644 index 000000000..1e6c8d8cd --- /dev/null +++ b/stm-jekyll/images/floss2.svg @@ -0,0 +1,33 @@ + + + + diff --git a/stm-jekyll/images/floss3.svg b/stm-jekyll/images/floss3.svg new file mode 100644 index 000000000..ca60be7eb --- /dev/null +++ b/stm-jekyll/images/floss3.svg @@ -0,0 +1,34 @@ + + + + diff --git a/stm-jekyll/images/floss4.svg b/stm-jekyll/images/floss4.svg new file mode 100644 index 000000000..6f066abbe --- /dev/null +++ b/stm-jekyll/images/floss4.svg @@ -0,0 +1,40 @@ + + + + diff --git a/stm-jekyll/images/floss5.svg b/stm-jekyll/images/floss5.svg new file mode 100644 index 000000000..4dbafb1f4 --- /dev/null +++ b/stm-jekyll/images/floss5.svg @@ -0,0 +1,41 @@ + + + + diff --git a/stm-jekyll/images/floss6.svg b/stm-jekyll/images/floss6.svg new file mode 100644 index 000000000..ac3e07c90 --- /dev/null +++ b/stm-jekyll/images/floss6.svg @@ -0,0 +1,38 @@ + + + + diff --git a/stm-jekyll/images/fregatte0.svg b/stm-jekyll/images/fregatte0.svg new file mode 100644 index 000000000..74e4661e2 --- /dev/null +++ b/stm-jekyll/images/fregatte0.svg @@ -0,0 +1,69 @@ + + + + diff --git a/stm-jekyll/images/fregatte1.svg b/stm-jekyll/images/fregatte1.svg new file mode 100644 index 000000000..9294deb12 --- /dev/null +++ b/stm-jekyll/images/fregatte1.svg @@ -0,0 +1,71 @@ + + + + diff --git a/stm-jekyll/images/fregatte2.svg b/stm-jekyll/images/fregatte2.svg new file mode 100644 index 000000000..cadec8747 --- /dev/null +++ b/stm-jekyll/images/fregatte2.svg @@ -0,0 +1,68 @@ + + + + diff --git a/stm-jekyll/images/fregatte3.svg b/stm-jekyll/images/fregatte3.svg new file mode 100644 index 000000000..6221f3d10 --- /dev/null +++ b/stm-jekyll/images/fregatte3.svg @@ -0,0 +1,62 @@ + + + + diff --git a/stm-jekyll/images/fregatte4.svg b/stm-jekyll/images/fregatte4.svg new file mode 100644 index 000000000..eecc27812 --- /dev/null +++ b/stm-jekyll/images/fregatte4.svg @@ -0,0 +1,77 @@ + + + + diff --git a/stm-jekyll/images/fregatte5.svg b/stm-jekyll/images/fregatte5.svg new file mode 100644 index 000000000..3ec9b3a0c --- /dev/null +++ b/stm-jekyll/images/fregatte5.svg @@ -0,0 +1,74 @@ + + + + diff --git a/stm-jekyll/images/fregatte6.svg b/stm-jekyll/images/fregatte6.svg new file mode 100644 index 000000000..e80117a0d --- /dev/null +++ b/stm-jekyll/images/fregatte6.svg @@ -0,0 +1,52 @@ + + + + diff --git a/stm-jekyll/images/galeone0.svg b/stm-jekyll/images/galeone0.svg new file mode 100644 index 000000000..1374ea71e --- /dev/null +++ b/stm-jekyll/images/galeone0.svg @@ -0,0 +1,74 @@ + + + + diff --git a/stm-jekyll/images/galeone1.svg b/stm-jekyll/images/galeone1.svg new file mode 100644 index 000000000..09ce9e7d7 --- /dev/null +++ b/stm-jekyll/images/galeone1.svg @@ -0,0 +1,62 @@ + + + + diff --git a/stm-jekyll/images/galeone2.svg b/stm-jekyll/images/galeone2.svg new file mode 100644 index 000000000..53e2d5f5f --- /dev/null +++ b/stm-jekyll/images/galeone2.svg @@ -0,0 +1,54 @@ + + + + diff --git a/stm-jekyll/images/galeone3.svg b/stm-jekyll/images/galeone3.svg new file mode 100644 index 000000000..4997c43c7 --- /dev/null +++ b/stm-jekyll/images/galeone3.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/galeone4.svg b/stm-jekyll/images/galeone4.svg new file mode 100644 index 000000000..76e77d93d --- /dev/null +++ b/stm-jekyll/images/galeone4.svg @@ -0,0 +1,63 @@ + + + + diff --git a/stm-jekyll/images/galeone5.svg b/stm-jekyll/images/galeone5.svg new file mode 100644 index 000000000..a06c6f914 --- /dev/null +++ b/stm-jekyll/images/galeone5.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/images/galeone6.svg b/stm-jekyll/images/galeone6.svg new file mode 100644 index 000000000..beab8ea98 --- /dev/null +++ b/stm-jekyll/images/galeone6.svg @@ -0,0 +1,49 @@ + + + + diff --git a/stm-jekyll/images/gang.svg b/stm-jekyll/images/gang.svg new file mode 100644 index 000000000..072788937 --- /dev/null +++ b/stm-jekyll/images/gang.svg @@ -0,0 +1,340 @@ + + + + diff --git a/stm-jekyll/images/gebirge.svg b/stm-jekyll/images/gebirge.svg new file mode 100644 index 000000000..bf1982aa8 --- /dev/null +++ b/stm-jekyll/images/gebirge.svg @@ -0,0 +1,280 @@ + + + + diff --git a/stm-jekyll/images/geruest.svg b/stm-jekyll/images/geruest.svg new file mode 100644 index 000000000..a27035e54 --- /dev/null +++ b/stm-jekyll/images/geruest.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/gesegneter steinkreis.svg b/stm-jekyll/images/gesegneter steinkreis.svg new file mode 100644 index 000000000..4cd33ba7a --- /dev/null +++ b/stm-jekyll/images/gesegneter steinkreis.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/gletscher.svg b/stm-jekyll/images/gletscher.svg new file mode 100644 index 000000000..01e3f30d8 --- /dev/null +++ b/stm-jekyll/images/gletscher.svg @@ -0,0 +1,249 @@ + + + + diff --git a/stm-jekyll/images/grundmauern.svg b/stm-jekyll/images/grundmauern.svg new file mode 100644 index 000000000..3b09a9e65 --- /dev/null +++ b/stm-jekyll/images/grundmauern.svg @@ -0,0 +1,31 @@ + + + + diff --git a/stm-jekyll/images/hafen.svg b/stm-jekyll/images/hafen.svg new file mode 100644 index 000000000..27cc6dfe8 --- /dev/null +++ b/stm-jekyll/images/hafen.svg @@ -0,0 +1,44 @@ + + + + diff --git a/stm-jekyll/images/halle.svg b/stm-jekyll/images/halle.svg new file mode 100644 index 000000000..0ee83b81b --- /dev/null +++ b/stm-jekyll/images/halle.svg @@ -0,0 +1,340 @@ + + + + diff --git a/stm-jekyll/images/handelsposten.svg b/stm-jekyll/images/handelsposten.svg new file mode 100644 index 000000000..8fa464864 --- /dev/null +++ b/stm-jekyll/images/handelsposten.svg @@ -0,0 +1,31 @@ + + + + diff --git a/stm-jekyll/images/hochland.svg b/stm-jekyll/images/hochland.svg new file mode 100644 index 000000000..dddb6105f --- /dev/null +++ b/stm-jekyll/images/hochland.svg @@ -0,0 +1,289 @@ + + + + diff --git a/stm-jekyll/images/irrlichter0.svg b/stm-jekyll/images/irrlichter0.svg new file mode 100644 index 000000000..1e66d2fc4 --- /dev/null +++ b/stm-jekyll/images/irrlichter0.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/irrlichter1.svg b/stm-jekyll/images/irrlichter1.svg new file mode 100644 index 000000000..7e18c433c --- /dev/null +++ b/stm-jekyll/images/irrlichter1.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/irrlichter2.svg b/stm-jekyll/images/irrlichter2.svg new file mode 100644 index 000000000..b18c7c5e5 --- /dev/null +++ b/stm-jekyll/images/irrlichter2.svg @@ -0,0 +1,26 @@ + + + + diff --git a/stm-jekyll/images/irrlichter3.svg b/stm-jekyll/images/irrlichter3.svg new file mode 100644 index 000000000..010263e61 --- /dev/null +++ b/stm-jekyll/images/irrlichter3.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/irrlichter4.svg b/stm-jekyll/images/irrlichter4.svg new file mode 100644 index 000000000..01554aa2a --- /dev/null +++ b/stm-jekyll/images/irrlichter4.svg @@ -0,0 +1,31 @@ + + + + diff --git a/stm-jekyll/images/irrlichter5.svg b/stm-jekyll/images/irrlichter5.svg new file mode 100644 index 000000000..2d9b55059 --- /dev/null +++ b/stm-jekyll/images/irrlichter5.svg @@ -0,0 +1,26 @@ + + + + diff --git a/stm-jekyll/images/karavelle0.svg b/stm-jekyll/images/karavelle0.svg new file mode 100644 index 000000000..00c2d6c6f --- /dev/null +++ b/stm-jekyll/images/karavelle0.svg @@ -0,0 +1,67 @@ + + + + diff --git a/stm-jekyll/images/karavelle1.svg b/stm-jekyll/images/karavelle1.svg new file mode 100644 index 000000000..c68d473dc --- /dev/null +++ b/stm-jekyll/images/karavelle1.svg @@ -0,0 +1,47 @@ + + + + diff --git a/stm-jekyll/images/karavelle2.svg b/stm-jekyll/images/karavelle2.svg new file mode 100644 index 000000000..8bf18d7ee --- /dev/null +++ b/stm-jekyll/images/karavelle2.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/karavelle3.svg b/stm-jekyll/images/karavelle3.svg new file mode 100644 index 000000000..a1f174216 --- /dev/null +++ b/stm-jekyll/images/karavelle3.svg @@ -0,0 +1,43 @@ + + + + diff --git a/stm-jekyll/images/karavelle30.svg b/stm-jekyll/images/karavelle30.svg new file mode 100644 index 000000000..12a6d4c1e --- /dev/null +++ b/stm-jekyll/images/karavelle30.svg @@ -0,0 +1,68 @@ + + + + diff --git a/stm-jekyll/images/karavelle4.svg b/stm-jekyll/images/karavelle4.svg new file mode 100644 index 000000000..cf27a815f --- /dev/null +++ b/stm-jekyll/images/karavelle4.svg @@ -0,0 +1,52 @@ + + + + diff --git a/stm-jekyll/images/karavelle5.svg b/stm-jekyll/images/karavelle5.svg new file mode 100644 index 000000000..481dac9b8 --- /dev/null +++ b/stm-jekyll/images/karavelle5.svg @@ -0,0 +1,53 @@ + + + + diff --git a/stm-jekyll/images/karavelle6.svg b/stm-jekyll/images/karavelle6.svg new file mode 100644 index 000000000..4aefa4444 --- /dev/null +++ b/stm-jekyll/images/karavelle6.svg @@ -0,0 +1,39 @@ + + + + diff --git a/stm-jekyll/images/karawane0.svg b/stm-jekyll/images/karawane0.svg new file mode 100644 index 000000000..3c39c76e7 --- /dev/null +++ b/stm-jekyll/images/karawane0.svg @@ -0,0 +1,45 @@ + + + + diff --git a/stm-jekyll/images/karawanserei.svg b/stm-jekyll/images/karawanserei.svg new file mode 100644 index 000000000..5f387d8fe --- /dev/null +++ b/stm-jekyll/images/karawanserei.svg @@ -0,0 +1,29 @@ + + + + diff --git a/stm-jekyll/images/katamaran0.svg b/stm-jekyll/images/katamaran0.svg new file mode 100644 index 000000000..08b666b72 --- /dev/null +++ b/stm-jekyll/images/katamaran0.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/katamaran1.svg b/stm-jekyll/images/katamaran1.svg new file mode 100644 index 000000000..31f23d84a --- /dev/null +++ b/stm-jekyll/images/katamaran1.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/katamaran2.svg b/stm-jekyll/images/katamaran2.svg new file mode 100644 index 000000000..99ba28de2 --- /dev/null +++ b/stm-jekyll/images/katamaran2.svg @@ -0,0 +1,39 @@ + + + + diff --git a/stm-jekyll/images/katamaran3.svg b/stm-jekyll/images/katamaran3.svg new file mode 100644 index 000000000..21273a3d8 --- /dev/null +++ b/stm-jekyll/images/katamaran3.svg @@ -0,0 +1,36 @@ + + + + diff --git a/stm-jekyll/images/katamaran4.svg b/stm-jekyll/images/katamaran4.svg new file mode 100644 index 000000000..fd65172fd --- /dev/null +++ b/stm-jekyll/images/katamaran4.svg @@ -0,0 +1,47 @@ + + + + diff --git a/stm-jekyll/images/katamaran5.svg b/stm-jekyll/images/katamaran5.svg new file mode 100644 index 000000000..a414c06e5 --- /dev/null +++ b/stm-jekyll/images/katamaran5.svg @@ -0,0 +1,47 @@ + + + + diff --git a/stm-jekyll/images/katamaran6.svg b/stm-jekyll/images/katamaran6.svg new file mode 100644 index 000000000..abbd2b89a --- /dev/null +++ b/stm-jekyll/images/katamaran6.svg @@ -0,0 +1,41 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke0.svg b/stm-jekyll/images/koenigsbarke0.svg new file mode 100644 index 000000000..329db81d7 --- /dev/null +++ b/stm-jekyll/images/koenigsbarke0.svg @@ -0,0 +1,60 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke1.svg b/stm-jekyll/images/koenigsbarke1.svg new file mode 100644 index 000000000..458ba49ad --- /dev/null +++ b/stm-jekyll/images/koenigsbarke1.svg @@ -0,0 +1,60 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke2.svg b/stm-jekyll/images/koenigsbarke2.svg new file mode 100644 index 000000000..037210ad6 --- /dev/null +++ b/stm-jekyll/images/koenigsbarke2.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke3.svg b/stm-jekyll/images/koenigsbarke3.svg new file mode 100644 index 000000000..1663782f6 --- /dev/null +++ b/stm-jekyll/images/koenigsbarke3.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke4.svg b/stm-jekyll/images/koenigsbarke4.svg new file mode 100644 index 000000000..116424be5 --- /dev/null +++ b/stm-jekyll/images/koenigsbarke4.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke5.svg b/stm-jekyll/images/koenigsbarke5.svg new file mode 100644 index 000000000..d2fe14ef1 --- /dev/null +++ b/stm-jekyll/images/koenigsbarke5.svg @@ -0,0 +1,60 @@ + + + + diff --git a/stm-jekyll/images/koenigsbarke6.svg b/stm-jekyll/images/koenigsbarke6.svg new file mode 100644 index 000000000..9bb256e85 --- /dev/null +++ b/stm-jekyll/images/koenigsbarke6.svg @@ -0,0 +1,54 @@ + + + + diff --git a/stm-jekyll/images/kogge0.svg b/stm-jekyll/images/kogge0.svg new file mode 100644 index 000000000..c4174cc25 --- /dev/null +++ b/stm-jekyll/images/kogge0.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/images/kogge1.svg b/stm-jekyll/images/kogge1.svg new file mode 100644 index 000000000..346b21793 --- /dev/null +++ b/stm-jekyll/images/kogge1.svg @@ -0,0 +1,61 @@ + + + + diff --git a/stm-jekyll/images/kogge2.svg b/stm-jekyll/images/kogge2.svg new file mode 100644 index 000000000..b619a342d --- /dev/null +++ b/stm-jekyll/images/kogge2.svg @@ -0,0 +1,58 @@ + + + + diff --git a/stm-jekyll/images/kogge3.svg b/stm-jekyll/images/kogge3.svg new file mode 100644 index 000000000..3b922ef11 --- /dev/null +++ b/stm-jekyll/images/kogge3.svg @@ -0,0 +1,57 @@ + + + + diff --git a/stm-jekyll/images/kogge4.svg b/stm-jekyll/images/kogge4.svg new file mode 100644 index 000000000..4fd8be1ee --- /dev/null +++ b/stm-jekyll/images/kogge4.svg @@ -0,0 +1,70 @@ + + + + diff --git a/stm-jekyll/images/kogge5.svg b/stm-jekyll/images/kogge5.svg new file mode 100644 index 000000000..6fa9fd234 --- /dev/null +++ b/stm-jekyll/images/kogge5.svg @@ -0,0 +1,66 @@ + + + + diff --git a/stm-jekyll/images/kogge6.svg b/stm-jekyll/images/kogge6.svg new file mode 100644 index 000000000..46663981a --- /dev/null +++ b/stm-jekyll/images/kogge6.svg @@ -0,0 +1,55 @@ + + + + diff --git a/stm-jekyll/images/korallenriff.svg b/stm-jekyll/images/korallenriff.svg new file mode 100644 index 000000000..081f193b8 --- /dev/null +++ b/stm-jekyll/images/korallenriff.svg @@ -0,0 +1,333 @@ + + + + diff --git a/stm-jekyll/images/kutter0.svg b/stm-jekyll/images/kutter0.svg new file mode 100644 index 000000000..2b689b30c --- /dev/null +++ b/stm-jekyll/images/kutter0.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/kutter1.svg b/stm-jekyll/images/kutter1.svg new file mode 100644 index 000000000..39c5baf9d --- /dev/null +++ b/stm-jekyll/images/kutter1.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/kutter2.svg b/stm-jekyll/images/kutter2.svg new file mode 100644 index 000000000..ebbfd4982 --- /dev/null +++ b/stm-jekyll/images/kutter2.svg @@ -0,0 +1,44 @@ + + + + diff --git a/stm-jekyll/images/kutter3.svg b/stm-jekyll/images/kutter3.svg new file mode 100644 index 000000000..c3ad19ef5 --- /dev/null +++ b/stm-jekyll/images/kutter3.svg @@ -0,0 +1,39 @@ + + + + diff --git a/stm-jekyll/images/kutter4.svg b/stm-jekyll/images/kutter4.svg new file mode 100644 index 000000000..cc2c80f5a --- /dev/null +++ b/stm-jekyll/images/kutter4.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/kutter5.svg b/stm-jekyll/images/kutter5.svg new file mode 100644 index 000000000..5badace33 --- /dev/null +++ b/stm-jekyll/images/kutter5.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/kutter6.svg b/stm-jekyll/images/kutter6.svg new file mode 100644 index 000000000..2b2fba17a --- /dev/null +++ b/stm-jekyll/images/kutter6.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/langboot0.svg b/stm-jekyll/images/langboot0.svg new file mode 100644 index 000000000..687ad98c0 --- /dev/null +++ b/stm-jekyll/images/langboot0.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/langboot1.svg b/stm-jekyll/images/langboot1.svg new file mode 100644 index 000000000..f8dc67252 --- /dev/null +++ b/stm-jekyll/images/langboot1.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/langboot2.svg b/stm-jekyll/images/langboot2.svg new file mode 100644 index 000000000..332a1ea76 --- /dev/null +++ b/stm-jekyll/images/langboot2.svg @@ -0,0 +1,44 @@ + + + + diff --git a/stm-jekyll/images/langboot3.svg b/stm-jekyll/images/langboot3.svg new file mode 100644 index 000000000..47b49fe8c --- /dev/null +++ b/stm-jekyll/images/langboot3.svg @@ -0,0 +1,39 @@ + + + + diff --git a/stm-jekyll/images/langboot4.svg b/stm-jekyll/images/langboot4.svg new file mode 100644 index 000000000..ed17dbf00 --- /dev/null +++ b/stm-jekyll/images/langboot4.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/langboot5.svg b/stm-jekyll/images/langboot5.svg new file mode 100644 index 000000000..5badace33 --- /dev/null +++ b/stm-jekyll/images/langboot5.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/langboot6.svg b/stm-jekyll/images/langboot6.svg new file mode 100644 index 000000000..c0a38d525 --- /dev/null +++ b/stm-jekyll/images/langboot6.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/leere.svg b/stm-jekyll/images/leere.svg new file mode 100644 index 000000000..42aae266f --- /dev/null +++ b/stm-jekyll/images/leere.svg @@ -0,0 +1,237 @@ + + + + diff --git a/stm-jekyll/images/leuchtturm.svg b/stm-jekyll/images/leuchtturm.svg new file mode 100644 index 000000000..abdf31234 --- /dev/null +++ b/stm-jekyll/images/leuchtturm.svg @@ -0,0 +1,32 @@ + + + + diff --git a/stm-jekyll/images/longboat0.svg b/stm-jekyll/images/longboat0.svg new file mode 100644 index 000000000..5323dce5d --- /dev/null +++ b/stm-jekyll/images/longboat0.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/longboat1.svg b/stm-jekyll/images/longboat1.svg new file mode 100644 index 000000000..b2b3f4e53 --- /dev/null +++ b/stm-jekyll/images/longboat1.svg @@ -0,0 +1,48 @@ + + + + diff --git a/stm-jekyll/images/longboat2.svg b/stm-jekyll/images/longboat2.svg new file mode 100644 index 000000000..332a1ea76 --- /dev/null +++ b/stm-jekyll/images/longboat2.svg @@ -0,0 +1,44 @@ + + + + diff --git a/stm-jekyll/images/longboat3.svg b/stm-jekyll/images/longboat3.svg new file mode 100644 index 000000000..1d85cf3a1 --- /dev/null +++ b/stm-jekyll/images/longboat3.svg @@ -0,0 +1,39 @@ + + + + diff --git a/stm-jekyll/images/longboat4.svg b/stm-jekyll/images/longboat4.svg new file mode 100644 index 000000000..cc2c80f5a --- /dev/null +++ b/stm-jekyll/images/longboat4.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/longboat5.svg b/stm-jekyll/images/longboat5.svg new file mode 100644 index 000000000..5badace33 --- /dev/null +++ b/stm-jekyll/images/longboat5.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/longboat6.svg b/stm-jekyll/images/longboat6.svg new file mode 100644 index 000000000..2b2fba17a --- /dev/null +++ b/stm-jekyll/images/longboat6.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/magierturm.svg b/stm-jekyll/images/magierturm.svg new file mode 100644 index 000000000..2842df283 --- /dev/null +++ b/stm-jekyll/images/magierturm.svg @@ -0,0 +1,40 @@ + + + + diff --git a/stm-jekyll/images/mahlstrom.svg b/stm-jekyll/images/mahlstrom.svg new file mode 100644 index 000000000..bf8cb4738 --- /dev/null +++ b/stm-jekyll/images/mahlstrom.svg @@ -0,0 +1,297 @@ + + + + diff --git a/stm-jekyll/images/markt.svg b/stm-jekyll/images/markt.svg new file mode 100644 index 000000000..aea1ad4ba --- /dev/null +++ b/stm-jekyll/images/markt.svg @@ -0,0 +1,37 @@ + + + + diff --git a/stm-jekyll/images/marktplatz.svg b/stm-jekyll/images/marktplatz.svg new file mode 100644 index 000000000..0c2712ce5 --- /dev/null +++ b/stm-jekyll/images/marktplatz.svg @@ -0,0 +1,37 @@ + + + + diff --git a/stm-jekyll/images/monument.svg b/stm-jekyll/images/monument.svg new file mode 100644 index 000000000..c742c0641 --- /dev/null +++ b/stm-jekyll/images/monument.svg @@ -0,0 +1,32 @@ + + + + diff --git a/stm-jekyll/images/nebel.svg b/stm-jekyll/images/nebel.svg new file mode 100644 index 000000000..da3da53df --- /dev/null +++ b/stm-jekyll/images/nebel.svg @@ -0,0 +1,70 @@ + + + + diff --git a/stm-jekyll/images/notype.svg b/stm-jekyll/images/notype.svg new file mode 100644 index 000000000..a15c6013c --- /dev/null +++ b/stm-jekyll/images/notype.svg @@ -0,0 +1,9 @@ + + + + diff --git a/stm-jekyll/images/ozean.svg b/stm-jekyll/images/ozean.svg new file mode 100644 index 000000000..6c62e11ea --- /dev/null +++ b/stm-jekyll/images/ozean.svg @@ -0,0 +1,299 @@ + + + + diff --git a/stm-jekyll/images/packeis.svg b/stm-jekyll/images/packeis.svg new file mode 100644 index 000000000..8d21ee602 --- /dev/null +++ b/stm-jekyll/images/packeis.svg @@ -0,0 +1,348 @@ + + + + diff --git a/stm-jekyll/images/pfeil0.svg b/stm-jekyll/images/pfeil0.svg new file mode 100644 index 000000000..084ffa46c --- /dev/null +++ b/stm-jekyll/images/pfeil0.svg @@ -0,0 +1,86 @@ + + + + diff --git a/stm-jekyll/images/pfeil1.svg b/stm-jekyll/images/pfeil1.svg new file mode 100644 index 000000000..2dbb805b3 --- /dev/null +++ b/stm-jekyll/images/pfeil1.svg @@ -0,0 +1,85 @@ + + + + diff --git a/stm-jekyll/images/pfeil2.svg b/stm-jekyll/images/pfeil2.svg new file mode 100644 index 000000000..2bf14ce3a --- /dev/null +++ b/stm-jekyll/images/pfeil2.svg @@ -0,0 +1,124 @@ + + + + diff --git a/stm-jekyll/images/pfeil3.svg b/stm-jekyll/images/pfeil3.svg new file mode 100644 index 000000000..8ee45a490 --- /dev/null +++ b/stm-jekyll/images/pfeil3.svg @@ -0,0 +1,86 @@ + + + + diff --git a/stm-jekyll/images/pfeil4.svg b/stm-jekyll/images/pfeil4.svg new file mode 100644 index 000000000..b3b9bd13f --- /dev/null +++ b/stm-jekyll/images/pfeil4.svg @@ -0,0 +1,84 @@ + + + + diff --git a/stm-jekyll/images/pfeil5.svg b/stm-jekyll/images/pfeil5.svg new file mode 100644 index 000000000..ae7908fbd --- /dev/null +++ b/stm-jekyll/images/pfeil5.svg @@ -0,0 +1,126 @@ + + + + diff --git a/stm-jekyll/images/pferdezucht.svg b/stm-jekyll/images/pferdezucht.svg new file mode 100644 index 000000000..abff5e378 --- /dev/null +++ b/stm-jekyll/images/pferdezucht.svg @@ -0,0 +1,36 @@ + + + + diff --git a/stm-jekyll/images/portal.svg b/stm-jekyll/images/portal.svg new file mode 100644 index 000000000..f7f7c9f7a --- /dev/null +++ b/stm-jekyll/images/portal.svg @@ -0,0 +1,47 @@ + + + + diff --git a/stm-jekyll/images/regenwald.svg b/stm-jekyll/images/regenwald.svg new file mode 100644 index 000000000..1c00d1fbc --- /dev/null +++ b/stm-jekyll/images/regenwald.svg @@ -0,0 +1,304 @@ + + + + diff --git a/stm-jekyll/images/saegewerk.svg b/stm-jekyll/images/saegewerk.svg new file mode 100644 index 000000000..61c65455b --- /dev/null +++ b/stm-jekyll/images/saegewerk.svg @@ -0,0 +1,36 @@ + + + + diff --git a/stm-jekyll/images/schemen.svg b/stm-jekyll/images/schemen.svg new file mode 100644 index 000000000..279bf96ff --- /dev/null +++ b/stm-jekyll/images/schemen.svg @@ -0,0 +1,9 @@ + + + + diff --git a/stm-jekyll/images/schiff0.svg b/stm-jekyll/images/schiff0.svg new file mode 100644 index 000000000..d8d269706 --- /dev/null +++ b/stm-jekyll/images/schiff0.svg @@ -0,0 +1,29 @@ + + + + diff --git a/stm-jekyll/images/schiff1.svg b/stm-jekyll/images/schiff1.svg new file mode 100644 index 000000000..6d79c185e --- /dev/null +++ b/stm-jekyll/images/schiff1.svg @@ -0,0 +1,29 @@ + + + + diff --git a/stm-jekyll/images/schiff2.svg b/stm-jekyll/images/schiff2.svg new file mode 100644 index 000000000..6c7f9f14b --- /dev/null +++ b/stm-jekyll/images/schiff2.svg @@ -0,0 +1,27 @@ + + + + diff --git a/stm-jekyll/images/schiff3.svg b/stm-jekyll/images/schiff3.svg new file mode 100644 index 000000000..9bdf0a724 --- /dev/null +++ b/stm-jekyll/images/schiff3.svg @@ -0,0 +1,25 @@ + + + + diff --git a/stm-jekyll/images/schiff4.svg b/stm-jekyll/images/schiff4.svg new file mode 100644 index 000000000..81a853fd5 --- /dev/null +++ b/stm-jekyll/images/schiff4.svg @@ -0,0 +1,27 @@ + + + + diff --git a/stm-jekyll/images/schiff5.svg b/stm-jekyll/images/schiff5.svg new file mode 100644 index 000000000..894944a6a --- /dev/null +++ b/stm-jekyll/images/schiff5.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/schiff6.svg b/stm-jekyll/images/schiff6.svg new file mode 100644 index 000000000..41174440a --- /dev/null +++ b/stm-jekyll/images/schiff6.svg @@ -0,0 +1,27 @@ + + + + diff --git a/stm-jekyll/images/schloss.svg b/stm-jekyll/images/schloss.svg new file mode 100644 index 000000000..9469de3dc --- /dev/null +++ b/stm-jekyll/images/schloss.svg @@ -0,0 +1,43 @@ + + + + diff --git a/stm-jekyll/images/schmiede.svg b/stm-jekyll/images/schmiede.svg new file mode 100644 index 000000000..afe736f7e --- /dev/null +++ b/stm-jekyll/images/schmiede.svg @@ -0,0 +1,31 @@ + + + + diff --git a/stm-jekyll/images/schoner0.svg b/stm-jekyll/images/schoner0.svg new file mode 100644 index 000000000..dc97e87e7 --- /dev/null +++ b/stm-jekyll/images/schoner0.svg @@ -0,0 +1,73 @@ + + + + diff --git a/stm-jekyll/images/schoner1.svg b/stm-jekyll/images/schoner1.svg new file mode 100644 index 000000000..2f52b2def --- /dev/null +++ b/stm-jekyll/images/schoner1.svg @@ -0,0 +1,67 @@ + + + + diff --git a/stm-jekyll/images/schoner2.svg b/stm-jekyll/images/schoner2.svg new file mode 100644 index 000000000..8b64e7d86 --- /dev/null +++ b/stm-jekyll/images/schoner2.svg @@ -0,0 +1,59 @@ + + + + diff --git a/stm-jekyll/images/schoner3.svg b/stm-jekyll/images/schoner3.svg new file mode 100644 index 000000000..50dd62d33 --- /dev/null +++ b/stm-jekyll/images/schoner3.svg @@ -0,0 +1,50 @@ + + + + diff --git a/stm-jekyll/images/schoner4.svg b/stm-jekyll/images/schoner4.svg new file mode 100644 index 000000000..c5eb345eb --- /dev/null +++ b/stm-jekyll/images/schoner4.svg @@ -0,0 +1,65 @@ + + + + diff --git a/stm-jekyll/images/schoner5.svg b/stm-jekyll/images/schoner5.svg new file mode 100644 index 000000000..f14ca1773 --- /dev/null +++ b/stm-jekyll/images/schoner5.svg @@ -0,0 +1,68 @@ + + + + diff --git a/stm-jekyll/images/schoner6.svg b/stm-jekyll/images/schoner6.svg new file mode 100644 index 000000000..0531d06d7 --- /dev/null +++ b/stm-jekyll/images/schoner6.svg @@ -0,0 +1,52 @@ + + + + diff --git a/stm-jekyll/images/selected.svg b/stm-jekyll/images/selected.svg new file mode 100644 index 000000000..04e2f40d7 --- /dev/null +++ b/stm-jekyll/images/selected.svg @@ -0,0 +1,84 @@ + + + + diff --git a/stm-jekyll/images/steinbruch.svg b/stm-jekyll/images/steinbruch.svg new file mode 100644 index 000000000..e84e7f7ed --- /dev/null +++ b/stm-jekyll/images/steinbruch.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/steinkreis.svg b/stm-jekyll/images/steinkreis.svg new file mode 100644 index 000000000..6505dec72 --- /dev/null +++ b/stm-jekyll/images/steinkreis.svg @@ -0,0 +1,47 @@ + + + + diff --git a/stm-jekyll/images/sumpf.svg b/stm-jekyll/images/sumpf.svg new file mode 100644 index 000000000..ad38c1f5e --- /dev/null +++ b/stm-jekyll/images/sumpf.svg @@ -0,0 +1,312 @@ + + + + diff --git a/stm-jekyll/images/taverne.svg b/stm-jekyll/images/taverne.svg new file mode 100644 index 000000000..7762bc57e --- /dev/null +++ b/stm-jekyll/images/taverne.svg @@ -0,0 +1,44 @@ + + + + diff --git a/stm-jekyll/images/trireme0.svg b/stm-jekyll/images/trireme0.svg new file mode 100644 index 000000000..7807583bc --- /dev/null +++ b/stm-jekyll/images/trireme0.svg @@ -0,0 +1,77 @@ + + + + diff --git a/stm-jekyll/images/trireme1.svg b/stm-jekyll/images/trireme1.svg new file mode 100644 index 000000000..e61910872 --- /dev/null +++ b/stm-jekyll/images/trireme1.svg @@ -0,0 +1,68 @@ + + + + diff --git a/stm-jekyll/images/trireme2.svg b/stm-jekyll/images/trireme2.svg new file mode 100644 index 000000000..9697fbce1 --- /dev/null +++ b/stm-jekyll/images/trireme2.svg @@ -0,0 +1,53 @@ + + + + diff --git a/stm-jekyll/images/trireme3.svg b/stm-jekyll/images/trireme3.svg new file mode 100644 index 000000000..73d1a5159 --- /dev/null +++ b/stm-jekyll/images/trireme3.svg @@ -0,0 +1,59 @@ + + + + diff --git a/stm-jekyll/images/trireme4.svg b/stm-jekyll/images/trireme4.svg new file mode 100644 index 000000000..70eee7e43 --- /dev/null +++ b/stm-jekyll/images/trireme4.svg @@ -0,0 +1,72 @@ + + + + diff --git a/stm-jekyll/images/trireme5.svg b/stm-jekyll/images/trireme5.svg new file mode 100644 index 000000000..25d2ef16d --- /dev/null +++ b/stm-jekyll/images/trireme5.svg @@ -0,0 +1,69 @@ + + + + diff --git a/stm-jekyll/images/trireme6.svg b/stm-jekyll/images/trireme6.svg new file mode 100644 index 000000000..62066ca42 --- /dev/null +++ b/stm-jekyll/images/trireme6.svg @@ -0,0 +1,58 @@ + + + + diff --git a/stm-jekyll/images/tundra.svg b/stm-jekyll/images/tundra.svg new file mode 100644 index 000000000..fd0a444a5 --- /dev/null +++ b/stm-jekyll/images/tundra.svg @@ -0,0 +1,167 @@ + + + + diff --git a/stm-jekyll/images/tunnel.svg b/stm-jekyll/images/tunnel.svg new file mode 100644 index 000000000..8251b6842 --- /dev/null +++ b/stm-jekyll/images/tunnel.svg @@ -0,0 +1,42 @@ + + + + diff --git a/stm-jekyll/images/turm.svg b/stm-jekyll/images/turm.svg new file mode 100644 index 000000000..8db198e01 --- /dev/null +++ b/stm-jekyll/images/turm.svg @@ -0,0 +1,29 @@ + + + + diff --git a/stm-jekyll/images/uebergang.svg b/stm-jekyll/images/uebergang.svg new file mode 100644 index 000000000..da6ce3e4e --- /dev/null +++ b/stm-jekyll/images/uebergang.svg @@ -0,0 +1,91 @@ + + + + diff --git a/stm-jekyll/images/unbekannt.svg b/stm-jekyll/images/unbekannt.svg new file mode 100644 index 000000000..a15c6013c --- /dev/null +++ b/stm-jekyll/images/unbekannt.svg @@ -0,0 +1,9 @@ + + + + diff --git a/stm-jekyll/images/vulkan.svg b/stm-jekyll/images/vulkan.svg new file mode 100644 index 000000000..19d367ed6 --- /dev/null +++ b/stm-jekyll/images/vulkan.svg @@ -0,0 +1,363 @@ + + + + diff --git a/stm-jekyll/images/wachstube.svg b/stm-jekyll/images/wachstube.svg new file mode 100644 index 000000000..12b74d6ff --- /dev/null +++ b/stm-jekyll/images/wachstube.svg @@ -0,0 +1,30 @@ + + + + diff --git a/stm-jekyll/images/wachturm.svg b/stm-jekyll/images/wachturm.svg new file mode 100644 index 000000000..84870a678 --- /dev/null +++ b/stm-jekyll/images/wachturm.svg @@ -0,0 +1,37 @@ + + + + diff --git a/stm-jekyll/images/wald.svg b/stm-jekyll/images/wald.svg new file mode 100644 index 000000000..5d4e5f03e --- /dev/null +++ b/stm-jekyll/images/wald.svg @@ -0,0 +1,365 @@ + + + + diff --git a/stm-jekyll/images/wand.svg b/stm-jekyll/images/wand.svg new file mode 100644 index 000000000..fcdce15c7 --- /dev/null +++ b/stm-jekyll/images/wand.svg @@ -0,0 +1,326 @@ + + + + diff --git a/stm-jekyll/images/wueste.svg b/stm-jekyll/images/wueste.svg new file mode 100644 index 000000000..5a75ea080 --- /dev/null +++ b/stm-jekyll/images/wueste.svg @@ -0,0 +1,274 @@ + + + + diff --git a/stm-jekyll/images/zitadelle.svg b/stm-jekyll/images/zitadelle.svg new file mode 100644 index 000000000..dd0adb0ac --- /dev/null +++ b/stm-jekyll/images/zitadelle.svg @@ -0,0 +1,55 @@ + + + + diff --git a/stm-jekyll/images/zweimast0.svg b/stm-jekyll/images/zweimast0.svg new file mode 100644 index 000000000..1f2193044 --- /dev/null +++ b/stm-jekyll/images/zweimast0.svg @@ -0,0 +1,64 @@ + + + + diff --git a/stm-jekyll/index.md b/stm-jekyll/index.md new file mode 100644 index 000000000..3b0a6bed0 --- /dev/null +++ b/stm-jekyll/index.md @@ -0,0 +1,21 @@ +--- +# Feel free to add content and custom Front Matter to this file. +# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults + +#layout: special +--- + +Willkommen auf Solthars Eresseaseiten! + +## Pages + +
    + {% for link in site.data.navigation.docs %} +
  • {{ link.title }}
  • + {% endfor %} +
+ +## Posts +{% for post in site.posts %} + - [{{ post.title }}]({{ site.baseurl }}{{post.url}}) +{% endfor %} diff --git a/stm-jekyll/scripts/cr2svg.php b/stm-jekyll/scripts/cr2svg.php new file mode 100644 index 000000000..da16b4b23 --- /dev/null +++ b/stm-jekyll/scripts/cr2svg.php @@ -0,0 +1,379 @@ + 'grey', + 'Ozean' => '#0000ff', + 'Ebene' => '#ffff00', + 'Wald' => '#00dd00', + 'Sumpf' => '#226611', + 'Berge' => '#777777', + 'Hochland' => '#ffeeaa', + 'Wüste' => 'ffcc55#', + 'Gletscher' => '#bbbbcc', + 'Eisberg' => '#eeeeff', + 'Vulkan' => '#bb0022', + 'Aktiver Vulkan' => '#ee0022', + 'Feuerwand' => '#ff0000', +); + +$default_image = 'region'; + +$images = array( + 'Ozean' => 'ozean', + 'Ebene' => 'ebene', + 'Wald' => 'wald', + 'Sumpf' => 'sumpf', + 'Berge' => 'berge', + 'Hochland' => 'hochland', + 'Wüste' => 'wueste', + 'Gletscher' => 'gletscher', + 'Eisberg' => 'eisberg', + 'Vulkan' => 'vulkan', + 'Aktiver Vulkan' => 'aktiver vulkan', + 'Feuerwand' => 'feuerwand', + 'Nebel' => 'nebel', + 'Dichter Nebel' => 'dichter nebel', + 'Packeis' => 'packeis', + 'Gang' => 'gang', + 'Halle' => 'halle', + 'Wand' => 'wand' +); + +function get_color($terrain) { + global $colors; + if (empty($colors[$terrain])) + return $colors['default']; + else { + return $colors[$terrain]; + } +} + +function get_image($terrain) { + global $images; + if (empty($images[$terrain])) + return null; + else { + return $images[$terrain]; + } +} + +$html_template = <<%1\$s + + +
+%3\$s +
+
You need to enable Javascript for this to work.
+%4\$s +EOT; + +$md_template = <<%1\$s + + +
+%3\$s +
+
You need to enable Javascript for this to work.
+%4\$s +EOT; + +$annotation = << + + + + + + +EOT; +$back_matter=<< + +EOT; + +$use_tag = << + +%2\$s +%7\$s + + +EOT; + +$details_tag = <<%s

%s
%s

+EOT; + + + +$rwidth = 100; +$yoff = $rwidth * .5; + +function include_image($image) { + $filename = "images/$image.svg"; + if (file_exists($filename)) { + $contents = file_get_contents($filename); + $contents = preg_replace('|^.*).*.*$|s', "\n".'$1'."\n", $contents); + return "\n\n$contents\n\n"; + } else { + warn("$filename not found."); + return ""; + } +} + +function output_front() { + global $front_matter, $bounds, $images; + $content = sprintf($front_matter, + ($bounds['xmax'] - $bounds['xmin'] + 110) / 2, + ($bounds['ymax'] - $bounds['ymin'] + 110) / 2, + $bounds['xmin'] - 5, $bounds['ymin'] -5, + $bounds['xmax'] - $bounds['xmin'] + 110, $bounds['ymax'] - $bounds['ymin'] + 110); + + foreach ($images as $terrain => $image) { + $content .= include_image($image); + } + + return $content . "\n \n"; +} + +function output_back() { + global $back_matter; + return $back_matter; +} + +function transformx($region) { + global $rwidth, $yoff; + return round($region['x'] * $rwidth + $region['y'] * $yoff); +} + +function transformy($region) { + global $rwidth; + return round($region['y'] * - $rwidth * 3 / 4); +} + +$display_tag = array ("x" => false, "y" => false, "z" => false, "Terrain" => false, "Name" => false); + +function output_region($region) { + global $default_image, $use_tag, $details_tag, $bounds, $display_tag; + if ($region == null) + return; + + if (empty($region['Terrain'])) { + $x = $region['x']; + $y = $region['y']; + warn("REGION $x $y without terrain"); + } + + if (empty($region['z'])) { + $color = get_color($region['Terrain']); + $tag = get_image($region['Terrain']); + if ($tag === null) { + $tag = $default_image; + $color = "fill=\"$color\""; + } else { + $color = ""; + } + $xx = $region['x']; + $yy = $region['y']; + $x = transformx($region); + $y = transformy($region); + $tt = ''; + $desc = ''; + if (!empty($region['Name'])) { + $tt = $region['Name']; + } else { + $tt = $region['Terrain']; + } + $tt .= " ($xx, $yy)"; + /*if (!empty($region['Name'])) */ + { + $b = ''; + foreach ($region as $key => $value) { + if (!isset($display_tag[$key]) || $display_tag[$key] === true) { + $b .= "" . $key . " ". $value . "
"; + } + } + $desc = sprintf($details_tag, $tt, $region['Terrain'], $b); + } + $id = "r_"; + if ($xx < 0) $id .= "m" . -$xx; else $id .= $xx; + if ($yy < 0) $id .= "_m" . -$yy; else $id .= "_" . $yy; + + if (empty($bounds['xmin']) || $bounds['xmin'] > $x) $bounds['xmin'] = $x; + if (empty($bounds['ymin']) || $bounds['ymin'] > $y) $bounds['ymin'] = $y; + if (empty($bounds['xmax']) || $bounds['xmax'] < $x) $bounds['xmax'] = $x; + if (empty($bounds['ymax']) || $bounds['ymax'] < $y) $bounds['ymax'] = $y; + + return sprintf($use_tag, $id, $tt, $tag, $x, $y, $color, $desc); + } +} + +function warn($string) { + echo "WARNING: $string\n"; +} + + +$content = ""; + +if ($annotateMode) { + $content = file_get_contents($inputName); + $content = preg_replace('/^---$(.*)^---$(.*)/sm', "---$1\n$annotation\n---$2\n$annotation2", $content); +} else { + $region = null; + $block = null; + while(!feof($crfile)) { + $line = fgets($crfile); + $tag = null; + if (preg_match($preg_region, $line, $matches) == 1) { + $content .= output_region($region); + $block = "REGION"; + $region = parse_region($line, $matches); + } else if (preg_match($preg_tagq, $line, $matches) == 1) { + $value = $matches[1]; + $tag = $matches[2]; + } else if (preg_match($preg_tag, $line, $matches) == 1) { + $value = $matches[1]; + $tag = $matches[2]; + } else if (preg_match($preg_block, $line, $matches) == 1){ + $block = $matches[1]; + } + if (!empty($tag)) { + if ($block == "REGION") { + $region[$tag] = $value; + } + } + } + + $content .= output_region($region); + + $content = output_front() . $content . output_back(); +} + +if ($htmlMode) { + $details = ""; + $description = ""; + $title = basename($inputName); + + $content = sprintf($html_template, $title, $description, $content, $details); +} + +if ($mdMode) { + $details = ""; + $description = ""; + if (!empty($mdName)) { + $details = file_get_contents($mdName); + preg_match('/^---$(.*?(^name: *(.*?) *$).*?)^---$(.*)/sm', $details, $matches); + $title = $matches[3]; + $head = $matches[1]; + $details = $matches[4]; + } + if (empty($title)) { + $title = basename($inputName); + } + + $content = sprintf($md_template, $title, $head, $content, $details); +} + +fwrite($svgfile, $content); + +fclose($crfile); +fclose($svgfile); + +?> diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh new file mode 100644 index 000000000..08e7a14f3 --- /dev/null +++ b/stm-jekyll/scripts/create_demos.sh @@ -0,0 +1,31 @@ +#!/bin/bash +set -ex + +ROOT=$(git rev-parse --show-toplevel) +cd $ROOT +#./configure +#s/build +#s/runtests +demo/run_demo + +cp demo/reports/*md stm-jekyll/_data/crs +cp demo/reports/*cr stm-jekyll/_data/crs +cd stm-jekyll + +for filename in _data/crs/*md; do + base="${filename%.*}" + basebase="$(basename "$base")" + php scripts/cr2svg.php --annotate "$base.md" "_demos/$basebase.md" +done + +for filename in _data/crs/*cr; do + base="${filename%.*}" + basebase="$(basename "$base")" + if [ -e "$base.md" ]; then + php scripts/cr2svg.php --md "$base.md" "$base.cr" "_demos/$basebase.md" + else + php scripts/cr2svg.php --html "$base.cr" "_demos/$basebase.md" + fi + cp "$filename" "_demos/$basebase.cr" +done +