From eff60452b564ac94a02fa564cecada8d48051d80 Mon Sep 17 00:00:00 2001 From: Steffen <1808071+stm2@users.noreply.github.com> Date: Tue, 30 Aug 2022 14:18:13 +0200 Subject: [PATCH 01/26] Create pages.yml --- .github/workflows/pages.yml | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/workflows/pages.yml diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 000000000..fa6fdeb4a --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,50 @@ +# 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: ["master"] + + # 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: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Pages + uses: actions/configure-pages@v2 + - name: Build with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./stm-jekyll + destination: ./_site + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + + # 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@v1 From 41898764bddc14f8bb564daeafe82a9f2fe06eec Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 30 Aug 2022 14:51:52 +0200 Subject: [PATCH 02/26] trying jekyll pages --- .github/workflows/pages.yml | 2 +- stm-jekyll/404.html | 24 ++++++++++ stm-jekyll/Gemfile | 35 +++++++++++++++ stm-jekyll/_config.yml | 45 +++++++++++++++++++ .../2022-08-30-welcome-to-jekyll.markdown | 25 +++++++++++ stm-jekyll/about.md | 18 ++++++++ stm-jekyll/index.md | 8 ++++ 7 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 stm-jekyll/404.html create mode 100644 stm-jekyll/Gemfile create mode 100644 stm-jekyll/_config.yml create mode 100644 stm-jekyll/_posts/2022-08-30-welcome-to-jekyll.markdown create mode 100644 stm-jekyll/about.md create mode 100644 stm-jekyll/index.md diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index fa6fdeb4a..00c0fbb1a 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -4,7 +4,7 @@ name: Deploy Jekyll with GitHub Pages dependencies preinstalled on: # Runs on pushes targeting the default branch push: - branches: ["master"] + branches: ["stm-web"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: 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..c02400ae3 --- /dev/null +++ b/stm-jekyll/Gemfile @@ -0,0 +1,35 @@ +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", "~> 3.8.6" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" +# 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.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform? diff --git a/stm-jekyll/_config.yml b/stm-jekyll/_config.yml new file mode 100644 index 000000000..547c625b8 --- /dev/null +++ b/stm-jekyll/_config.yml @@ -0,0 +1,45 @@ +# 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: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +github_username: stm2 + +# Build settings +markdown: kramdown +theme: minima +#theme: architect +#remote_theme: pages-themes/architect@v0.2.0 +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/ 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/index.md b/stm-jekyll/index.md new file mode 100644 index 000000000..ba27bef5c --- /dev/null +++ b/stm-jekyll/index.md @@ -0,0 +1,8 @@ +--- +# 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: home +theme:minima +--- +Hello, Jekyll! From 51312c7e226d6cc2918f426a5e9cef986b497c8e Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Fri, 2 Sep 2022 09:38:40 +0200 Subject: [PATCH 03/26] create svg from cr --- stm-jekyll/bla.php | 13 + stm-jekyll/cr2svg.php | 207 + stm-jekyll/example.svg | 5662 +++++++++++++++++++ stm-jekyll/images/active.svg | 96 + stm-jekyll/images/akademie der kuenste.svg | 37 + stm-jekyll/images/akademie.svg | 26 + stm-jekyll/images/aktiver vulkan.svg | 298 + stm-jekyll/images/barke0.svg | 60 + stm-jekyll/images/barke1.svg | 60 + stm-jekyll/images/barke2.svg | 57 + stm-jekyll/images/barke3.svg | 57 + stm-jekyll/images/barke4.svg | 64 + stm-jekyll/images/barke5.svg | 60 + stm-jekyll/images/barke6.svg | 54 + stm-jekyll/images/befestigung.svg | 30 + stm-jekyll/images/berge.svg | 280 + stm-jekyll/images/bergwerk.svg | 41 + stm-jekyll/images/boat0.svg | 49 + stm-jekyll/images/boat1.svg | 43 + stm-jekyll/images/boat2.svg | 40 + stm-jekyll/images/boat3.svg | 35 + stm-jekyll/images/boat4.svg | 35 + stm-jekyll/images/boat5.svg | 36 + stm-jekyll/images/boat6.svg | 28 + stm-jekyll/images/boot0.svg | 49 + stm-jekyll/images/boot1.svg | 43 + stm-jekyll/images/boot2.svg | 40 + stm-jekyll/images/boot3.svg | 35 + stm-jekyll/images/boot4.svg | 35 + stm-jekyll/images/boot5.svg | 36 + stm-jekyll/images/boot6.svg | 28 + stm-jekyll/images/burg.svg | 48 + stm-jekyll/images/damm.svg | 35 + stm-jekyll/images/dichter nebel.svg | 165 + stm-jekyll/images/drachenschiff0.svg | 63 + stm-jekyll/images/drachenschiff1.svg | 61 + stm-jekyll/images/drachenschiff2.svg | 56 + stm-jekyll/images/drachenschiff3.svg | 46 + stm-jekyll/images/drachenschiff4.svg | 59 + stm-jekyll/images/drachenschiff5.svg | 64 + stm-jekyll/images/drachenschiff6.svg | 50 + stm-jekyll/images/dragonship0.svg | 63 + stm-jekyll/images/dragonship1.svg | 61 + stm-jekyll/images/dragonship2.svg | 56 + stm-jekyll/images/dragonship3.svg | 46 + stm-jekyll/images/dragonship4.svg | 59 + stm-jekyll/images/dragonship5.svg | 64 + stm-jekyll/images/dragonship6.svg | 50 + stm-jekyll/images/ebene.svg | 265 + stm-jekyll/images/einbaum0.svg | 65 + stm-jekyll/images/einbaum1.svg | 57 + stm-jekyll/images/einbaum2.svg | 51 + stm-jekyll/images/einbaum3.svg | 41 + stm-jekyll/images/einbaum4.svg | 48 + stm-jekyll/images/einbaum5.svg | 51 + stm-jekyll/images/einbaum6.svg | 45 + stm-jekyll/images/eisberg.svg | 332 ++ stm-jekyll/images/eisscholle.svg | 287 + stm-jekyll/images/eisscholle2.svg | 258 + stm-jekyll/images/festung.svg | 50 + stm-jekyll/images/feuerwand.svg | 226 + stm-jekyll/images/feuerwand0.svg | 57 + stm-jekyll/images/feuerwand1.svg | 58 + stm-jekyll/images/feuerwand2.svg | 30 + stm-jekyll/images/feuerwand3.svg | 57 + stm-jekyll/images/feuerwand4.svg | 59 + stm-jekyll/images/feuerwand5.svg | 32 + stm-jekyll/images/floss0.svg | 57 + stm-jekyll/images/floss1.svg | 37 + stm-jekyll/images/floss2.svg | 33 + stm-jekyll/images/floss3.svg | 34 + stm-jekyll/images/floss4.svg | 40 + stm-jekyll/images/floss5.svg | 41 + stm-jekyll/images/floss6.svg | 38 + stm-jekyll/images/fregatte0.svg | 69 + stm-jekyll/images/fregatte1.svg | 71 + stm-jekyll/images/fregatte2.svg | 68 + stm-jekyll/images/fregatte3.svg | 62 + stm-jekyll/images/fregatte4.svg | 77 + stm-jekyll/images/fregatte5.svg | 74 + stm-jekyll/images/fregatte6.svg | 52 + stm-jekyll/images/galeone0.svg | 74 + stm-jekyll/images/galeone1.svg | 62 + stm-jekyll/images/galeone2.svg | 54 + stm-jekyll/images/galeone3.svg | 48 + stm-jekyll/images/galeone4.svg | 63 + stm-jekyll/images/galeone5.svg | 64 + stm-jekyll/images/galeone6.svg | 49 + stm-jekyll/images/gang.svg | 340 ++ stm-jekyll/images/gebirge.svg | 280 + stm-jekyll/images/geruest.svg | 30 + stm-jekyll/images/gesegneter steinkreis.svg | 30 + stm-jekyll/images/gletscher.svg | 249 + stm-jekyll/images/grundmauern.svg | 31 + stm-jekyll/images/hafen.svg | 44 + stm-jekyll/images/halle.svg | 340 ++ stm-jekyll/images/handelsposten.svg | 31 + stm-jekyll/images/hochland.svg | 289 + stm-jekyll/images/irrlichter0.svg | 30 + stm-jekyll/images/irrlichter1.svg | 30 + stm-jekyll/images/irrlichter2.svg | 26 + stm-jekyll/images/irrlichter3.svg | 30 + stm-jekyll/images/irrlichter4.svg | 31 + stm-jekyll/images/irrlichter5.svg | 26 + stm-jekyll/images/karavelle0.svg | 67 + stm-jekyll/images/karavelle1.svg | 47 + stm-jekyll/images/karavelle2.svg | 42 + stm-jekyll/images/karavelle3.svg | 43 + stm-jekyll/images/karavelle30.svg | 68 + stm-jekyll/images/karavelle4.svg | 52 + stm-jekyll/images/karavelle5.svg | 53 + stm-jekyll/images/karavelle6.svg | 39 + stm-jekyll/images/karawane0.svg | 45 + stm-jekyll/images/karawanserei.svg | 29 + stm-jekyll/images/katamaran0.svg | 48 + stm-jekyll/images/katamaran1.svg | 42 + stm-jekyll/images/katamaran2.svg | 39 + stm-jekyll/images/katamaran3.svg | 36 + stm-jekyll/images/katamaran4.svg | 47 + stm-jekyll/images/katamaran5.svg | 47 + stm-jekyll/images/katamaran6.svg | 41 + stm-jekyll/images/koenigsbarke0.svg | 60 + stm-jekyll/images/koenigsbarke1.svg | 60 + stm-jekyll/images/koenigsbarke2.svg | 57 + stm-jekyll/images/koenigsbarke3.svg | 57 + stm-jekyll/images/koenigsbarke4.svg | 64 + stm-jekyll/images/koenigsbarke5.svg | 60 + stm-jekyll/images/koenigsbarke6.svg | 54 + stm-jekyll/images/kogge0.svg | 64 + stm-jekyll/images/kogge1.svg | 61 + stm-jekyll/images/kogge2.svg | 58 + stm-jekyll/images/kogge3.svg | 57 + stm-jekyll/images/kogge4.svg | 70 + stm-jekyll/images/kogge5.svg | 66 + stm-jekyll/images/kogge6.svg | 55 + stm-jekyll/images/korallenriff.svg | 333 ++ stm-jekyll/images/kutter0.svg | 50 + stm-jekyll/images/kutter1.svg | 48 + stm-jekyll/images/kutter2.svg | 44 + stm-jekyll/images/kutter3.svg | 39 + stm-jekyll/images/kutter4.svg | 50 + stm-jekyll/images/kutter5.svg | 50 + stm-jekyll/images/kutter6.svg | 42 + stm-jekyll/images/langboot0.svg | 50 + stm-jekyll/images/langboot1.svg | 48 + stm-jekyll/images/langboot2.svg | 44 + stm-jekyll/images/langboot3.svg | 39 + stm-jekyll/images/langboot4.svg | 50 + stm-jekyll/images/langboot5.svg | 50 + stm-jekyll/images/langboot6.svg | 42 + stm-jekyll/images/leere.svg | 237 + stm-jekyll/images/leuchtturm.svg | 32 + stm-jekyll/images/longboat0.svg | 50 + stm-jekyll/images/longboat1.svg | 48 + stm-jekyll/images/longboat2.svg | 44 + stm-jekyll/images/longboat3.svg | 39 + stm-jekyll/images/longboat4.svg | 50 + stm-jekyll/images/longboat5.svg | 50 + stm-jekyll/images/longboat6.svg | 42 + stm-jekyll/images/magierturm.svg | 40 + stm-jekyll/images/mahlstrom.svg | 297 + stm-jekyll/images/markt.svg | 37 + stm-jekyll/images/marktplatz.svg | 37 + stm-jekyll/images/monument.svg | 32 + stm-jekyll/images/nebel.svg | 70 + stm-jekyll/images/notype.svg | 9 + stm-jekyll/images/ozean.svg | 299 + stm-jekyll/images/packeis.svg | 348 ++ stm-jekyll/images/pfeil0.svg | 86 + stm-jekyll/images/pfeil1.svg | 85 + stm-jekyll/images/pfeil2.svg | 124 + stm-jekyll/images/pfeil3.svg | 86 + stm-jekyll/images/pfeil4.svg | 84 + stm-jekyll/images/pfeil5.svg | 126 + stm-jekyll/images/pferdezucht.svg | 36 + stm-jekyll/images/portal.svg | 47 + stm-jekyll/images/regenwald.svg | 304 + stm-jekyll/images/saegewerk.svg | 36 + stm-jekyll/images/schemen.svg | 9 + stm-jekyll/images/schiff0.svg | 29 + stm-jekyll/images/schiff1.svg | 29 + stm-jekyll/images/schiff2.svg | 27 + stm-jekyll/images/schiff3.svg | 25 + stm-jekyll/images/schiff4.svg | 27 + stm-jekyll/images/schiff5.svg | 30 + stm-jekyll/images/schiff6.svg | 27 + stm-jekyll/images/schloss.svg | 43 + stm-jekyll/images/schmiede.svg | 31 + stm-jekyll/images/schoner0.svg | 73 + stm-jekyll/images/schoner1.svg | 67 + stm-jekyll/images/schoner2.svg | 59 + stm-jekyll/images/schoner3.svg | 50 + stm-jekyll/images/schoner4.svg | 65 + stm-jekyll/images/schoner5.svg | 68 + stm-jekyll/images/schoner6.svg | 52 + stm-jekyll/images/selected.svg | 84 + stm-jekyll/images/steinbruch.svg | 42 + stm-jekyll/images/steinkreis.svg | 47 + stm-jekyll/images/sumpf.svg | 312 + stm-jekyll/images/taverne.svg | 44 + stm-jekyll/images/trireme0.svg | 77 + stm-jekyll/images/trireme1.svg | 68 + stm-jekyll/images/trireme2.svg | 53 + stm-jekyll/images/trireme3.svg | 59 + stm-jekyll/images/trireme4.svg | 72 + stm-jekyll/images/trireme5.svg | 69 + stm-jekyll/images/trireme6.svg | 58 + stm-jekyll/images/tundra.svg | 167 + stm-jekyll/images/tunnel.svg | 42 + stm-jekyll/images/turm.svg | 29 + stm-jekyll/images/uebergang.svg | 91 + stm-jekyll/images/unbekannt.svg | 9 + stm-jekyll/images/vulkan.svg | 363 ++ stm-jekyll/images/wachstube.svg | 30 + stm-jekyll/images/wachturm.svg | 37 + stm-jekyll/images/wald.svg | 365 ++ stm-jekyll/images/wand.svg | 326 ++ stm-jekyll/images/wueste.svg | 274 + stm-jekyll/images/zitadelle.svg | 55 + stm-jekyll/images/zweimast0.svg | 64 + 220 files changed, 22683 insertions(+) create mode 100644 stm-jekyll/bla.php create mode 100644 stm-jekyll/cr2svg.php create mode 100644 stm-jekyll/example.svg create mode 100644 stm-jekyll/images/active.svg create mode 100644 stm-jekyll/images/akademie der kuenste.svg create mode 100644 stm-jekyll/images/akademie.svg create mode 100644 stm-jekyll/images/aktiver vulkan.svg create mode 100644 stm-jekyll/images/barke0.svg create mode 100644 stm-jekyll/images/barke1.svg create mode 100644 stm-jekyll/images/barke2.svg create mode 100644 stm-jekyll/images/barke3.svg create mode 100644 stm-jekyll/images/barke4.svg create mode 100644 stm-jekyll/images/barke5.svg create mode 100644 stm-jekyll/images/barke6.svg create mode 100644 stm-jekyll/images/befestigung.svg create mode 100644 stm-jekyll/images/berge.svg create mode 100644 stm-jekyll/images/bergwerk.svg create mode 100644 stm-jekyll/images/boat0.svg create mode 100644 stm-jekyll/images/boat1.svg create mode 100644 stm-jekyll/images/boat2.svg create mode 100644 stm-jekyll/images/boat3.svg create mode 100644 stm-jekyll/images/boat4.svg create mode 100644 stm-jekyll/images/boat5.svg create mode 100644 stm-jekyll/images/boat6.svg create mode 100644 stm-jekyll/images/boot0.svg create mode 100644 stm-jekyll/images/boot1.svg create mode 100644 stm-jekyll/images/boot2.svg create mode 100644 stm-jekyll/images/boot3.svg create mode 100644 stm-jekyll/images/boot4.svg create mode 100644 stm-jekyll/images/boot5.svg create mode 100644 stm-jekyll/images/boot6.svg create mode 100644 stm-jekyll/images/burg.svg create mode 100644 stm-jekyll/images/damm.svg create mode 100644 stm-jekyll/images/dichter nebel.svg create mode 100644 stm-jekyll/images/drachenschiff0.svg create mode 100644 stm-jekyll/images/drachenschiff1.svg create mode 100644 stm-jekyll/images/drachenschiff2.svg create mode 100644 stm-jekyll/images/drachenschiff3.svg create mode 100644 stm-jekyll/images/drachenschiff4.svg create mode 100644 stm-jekyll/images/drachenschiff5.svg create mode 100644 stm-jekyll/images/drachenschiff6.svg create mode 100644 stm-jekyll/images/dragonship0.svg create mode 100644 stm-jekyll/images/dragonship1.svg create mode 100644 stm-jekyll/images/dragonship2.svg create mode 100644 stm-jekyll/images/dragonship3.svg create mode 100644 stm-jekyll/images/dragonship4.svg create mode 100644 stm-jekyll/images/dragonship5.svg create mode 100644 stm-jekyll/images/dragonship6.svg create mode 100644 stm-jekyll/images/ebene.svg create mode 100644 stm-jekyll/images/einbaum0.svg create mode 100644 stm-jekyll/images/einbaum1.svg create mode 100644 stm-jekyll/images/einbaum2.svg create mode 100644 stm-jekyll/images/einbaum3.svg create mode 100644 stm-jekyll/images/einbaum4.svg create mode 100644 stm-jekyll/images/einbaum5.svg create mode 100644 stm-jekyll/images/einbaum6.svg create mode 100644 stm-jekyll/images/eisberg.svg create mode 100644 stm-jekyll/images/eisscholle.svg create mode 100644 stm-jekyll/images/eisscholle2.svg create mode 100644 stm-jekyll/images/festung.svg create mode 100644 stm-jekyll/images/feuerwand.svg create mode 100644 stm-jekyll/images/feuerwand0.svg create mode 100644 stm-jekyll/images/feuerwand1.svg create mode 100644 stm-jekyll/images/feuerwand2.svg create mode 100644 stm-jekyll/images/feuerwand3.svg create mode 100644 stm-jekyll/images/feuerwand4.svg create mode 100644 stm-jekyll/images/feuerwand5.svg create mode 100644 stm-jekyll/images/floss0.svg create mode 100644 stm-jekyll/images/floss1.svg create mode 100644 stm-jekyll/images/floss2.svg create mode 100644 stm-jekyll/images/floss3.svg create mode 100644 stm-jekyll/images/floss4.svg create mode 100644 stm-jekyll/images/floss5.svg create mode 100644 stm-jekyll/images/floss6.svg create mode 100644 stm-jekyll/images/fregatte0.svg create mode 100644 stm-jekyll/images/fregatte1.svg create mode 100644 stm-jekyll/images/fregatte2.svg create mode 100644 stm-jekyll/images/fregatte3.svg create mode 100644 stm-jekyll/images/fregatte4.svg create mode 100644 stm-jekyll/images/fregatte5.svg create mode 100644 stm-jekyll/images/fregatte6.svg create mode 100644 stm-jekyll/images/galeone0.svg create mode 100644 stm-jekyll/images/galeone1.svg create mode 100644 stm-jekyll/images/galeone2.svg create mode 100644 stm-jekyll/images/galeone3.svg create mode 100644 stm-jekyll/images/galeone4.svg create mode 100644 stm-jekyll/images/galeone5.svg create mode 100644 stm-jekyll/images/galeone6.svg create mode 100644 stm-jekyll/images/gang.svg create mode 100644 stm-jekyll/images/gebirge.svg create mode 100644 stm-jekyll/images/geruest.svg create mode 100644 stm-jekyll/images/gesegneter steinkreis.svg create mode 100644 stm-jekyll/images/gletscher.svg create mode 100644 stm-jekyll/images/grundmauern.svg create mode 100644 stm-jekyll/images/hafen.svg create mode 100644 stm-jekyll/images/halle.svg create mode 100644 stm-jekyll/images/handelsposten.svg create mode 100644 stm-jekyll/images/hochland.svg create mode 100644 stm-jekyll/images/irrlichter0.svg create mode 100644 stm-jekyll/images/irrlichter1.svg create mode 100644 stm-jekyll/images/irrlichter2.svg create mode 100644 stm-jekyll/images/irrlichter3.svg create mode 100644 stm-jekyll/images/irrlichter4.svg create mode 100644 stm-jekyll/images/irrlichter5.svg create mode 100644 stm-jekyll/images/karavelle0.svg create mode 100644 stm-jekyll/images/karavelle1.svg create mode 100644 stm-jekyll/images/karavelle2.svg create mode 100644 stm-jekyll/images/karavelle3.svg create mode 100644 stm-jekyll/images/karavelle30.svg create mode 100644 stm-jekyll/images/karavelle4.svg create mode 100644 stm-jekyll/images/karavelle5.svg create mode 100644 stm-jekyll/images/karavelle6.svg create mode 100644 stm-jekyll/images/karawane0.svg create mode 100644 stm-jekyll/images/karawanserei.svg create mode 100644 stm-jekyll/images/katamaran0.svg create mode 100644 stm-jekyll/images/katamaran1.svg create mode 100644 stm-jekyll/images/katamaran2.svg create mode 100644 stm-jekyll/images/katamaran3.svg create mode 100644 stm-jekyll/images/katamaran4.svg create mode 100644 stm-jekyll/images/katamaran5.svg create mode 100644 stm-jekyll/images/katamaran6.svg create mode 100644 stm-jekyll/images/koenigsbarke0.svg create mode 100644 stm-jekyll/images/koenigsbarke1.svg create mode 100644 stm-jekyll/images/koenigsbarke2.svg create mode 100644 stm-jekyll/images/koenigsbarke3.svg create mode 100644 stm-jekyll/images/koenigsbarke4.svg create mode 100644 stm-jekyll/images/koenigsbarke5.svg create mode 100644 stm-jekyll/images/koenigsbarke6.svg create mode 100644 stm-jekyll/images/kogge0.svg create mode 100644 stm-jekyll/images/kogge1.svg create mode 100644 stm-jekyll/images/kogge2.svg create mode 100644 stm-jekyll/images/kogge3.svg create mode 100644 stm-jekyll/images/kogge4.svg create mode 100644 stm-jekyll/images/kogge5.svg create mode 100644 stm-jekyll/images/kogge6.svg create mode 100644 stm-jekyll/images/korallenriff.svg create mode 100644 stm-jekyll/images/kutter0.svg create mode 100644 stm-jekyll/images/kutter1.svg create mode 100644 stm-jekyll/images/kutter2.svg create mode 100644 stm-jekyll/images/kutter3.svg create mode 100644 stm-jekyll/images/kutter4.svg create mode 100644 stm-jekyll/images/kutter5.svg create mode 100644 stm-jekyll/images/kutter6.svg create mode 100644 stm-jekyll/images/langboot0.svg create mode 100644 stm-jekyll/images/langboot1.svg create mode 100644 stm-jekyll/images/langboot2.svg create mode 100644 stm-jekyll/images/langboot3.svg create mode 100644 stm-jekyll/images/langboot4.svg create mode 100644 stm-jekyll/images/langboot5.svg create mode 100644 stm-jekyll/images/langboot6.svg create mode 100644 stm-jekyll/images/leere.svg create mode 100644 stm-jekyll/images/leuchtturm.svg create mode 100644 stm-jekyll/images/longboat0.svg create mode 100644 stm-jekyll/images/longboat1.svg create mode 100644 stm-jekyll/images/longboat2.svg create mode 100644 stm-jekyll/images/longboat3.svg create mode 100644 stm-jekyll/images/longboat4.svg create mode 100644 stm-jekyll/images/longboat5.svg create mode 100644 stm-jekyll/images/longboat6.svg create mode 100644 stm-jekyll/images/magierturm.svg create mode 100644 stm-jekyll/images/mahlstrom.svg create mode 100644 stm-jekyll/images/markt.svg create mode 100644 stm-jekyll/images/marktplatz.svg create mode 100644 stm-jekyll/images/monument.svg create mode 100644 stm-jekyll/images/nebel.svg create mode 100644 stm-jekyll/images/notype.svg create mode 100644 stm-jekyll/images/ozean.svg create mode 100644 stm-jekyll/images/packeis.svg create mode 100644 stm-jekyll/images/pfeil0.svg create mode 100644 stm-jekyll/images/pfeil1.svg create mode 100644 stm-jekyll/images/pfeil2.svg create mode 100644 stm-jekyll/images/pfeil3.svg create mode 100644 stm-jekyll/images/pfeil4.svg create mode 100644 stm-jekyll/images/pfeil5.svg create mode 100644 stm-jekyll/images/pferdezucht.svg create mode 100644 stm-jekyll/images/portal.svg create mode 100644 stm-jekyll/images/regenwald.svg create mode 100644 stm-jekyll/images/saegewerk.svg create mode 100644 stm-jekyll/images/schemen.svg create mode 100644 stm-jekyll/images/schiff0.svg create mode 100644 stm-jekyll/images/schiff1.svg create mode 100644 stm-jekyll/images/schiff2.svg create mode 100644 stm-jekyll/images/schiff3.svg create mode 100644 stm-jekyll/images/schiff4.svg create mode 100644 stm-jekyll/images/schiff5.svg create mode 100644 stm-jekyll/images/schiff6.svg create mode 100644 stm-jekyll/images/schloss.svg create mode 100644 stm-jekyll/images/schmiede.svg create mode 100644 stm-jekyll/images/schoner0.svg create mode 100644 stm-jekyll/images/schoner1.svg create mode 100644 stm-jekyll/images/schoner2.svg create mode 100644 stm-jekyll/images/schoner3.svg create mode 100644 stm-jekyll/images/schoner4.svg create mode 100644 stm-jekyll/images/schoner5.svg create mode 100644 stm-jekyll/images/schoner6.svg create mode 100644 stm-jekyll/images/selected.svg create mode 100644 stm-jekyll/images/steinbruch.svg create mode 100644 stm-jekyll/images/steinkreis.svg create mode 100644 stm-jekyll/images/sumpf.svg create mode 100644 stm-jekyll/images/taverne.svg create mode 100644 stm-jekyll/images/trireme0.svg create mode 100644 stm-jekyll/images/trireme1.svg create mode 100644 stm-jekyll/images/trireme2.svg create mode 100644 stm-jekyll/images/trireme3.svg create mode 100644 stm-jekyll/images/trireme4.svg create mode 100644 stm-jekyll/images/trireme5.svg create mode 100644 stm-jekyll/images/trireme6.svg create mode 100644 stm-jekyll/images/tundra.svg create mode 100644 stm-jekyll/images/tunnel.svg create mode 100644 stm-jekyll/images/turm.svg create mode 100644 stm-jekyll/images/uebergang.svg create mode 100644 stm-jekyll/images/unbekannt.svg create mode 100644 stm-jekyll/images/vulkan.svg create mode 100644 stm-jekyll/images/wachstube.svg create mode 100644 stm-jekyll/images/wachturm.svg create mode 100644 stm-jekyll/images/wald.svg create mode 100644 stm-jekyll/images/wand.svg create mode 100644 stm-jekyll/images/wueste.svg create mode 100644 stm-jekyll/images/zitadelle.svg create mode 100644 stm-jekyll/images/zweimast0.svg diff --git a/stm-jekyll/bla.php b/stm-jekyll/bla.php new file mode 100644 index 000000000..5198decc7 --- /dev/null +++ b/stm-jekyll/bla.php @@ -0,0 +1,13 @@ + +Hello

"; +$svg_content = file_get_contents("example.svg"); +echo '
'; +echo preg_replace("|.*('; + +// phpinfo(); +?> + + diff --git a/stm-jekyll/cr2svg.php b/stm-jekyll/cr2svg.php new file mode 100644 index 000000000..0ec632aa9 --- /dev/null +++ b/stm-jekyll/cr2svg.php @@ -0,0 +1,207 @@ + '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', +); + +$images = array( + 'default' => 'region', + '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 $images['default']; + else { + return $images[$terrain]; + } +} + + +$front_matter = << + + + + + + +EOT; +$back_matter=<< + +EOT; + +$use_tag = '' . "\n"; + +$rwidth = 100; +$yoff = $rwidth * .5; + +function include_image($image) { + global $mysvg; + $filename = "images/$image.svg"; + if (file_exists($filename)) { + $contents = file_get_contents($filename); + $contents = preg_replace('|^.*).*.*$|s', "\n".'$1'."\n", $contents); + fwrite($mysvg, "\n\n"); + fwrite($mysvg, $contents); + fwrite($mysvg, "\n\n"); + } else { + warn("$filename not found."); + } +} + +function output_front() { + global $mysvg, $front_matter, $bounds, $images; + fwrite($mysvg, 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) { + include_image($image); + } + + fwrite($mysvg, " \n \n"); +} + +function output_back() { + global $mysvg, $back_matter; + fwrite($mysvg, $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); +} + +function output_region($region) { + global $mysvg, $use_tag, $bounds; + if (empty($region['z'])) { + $color = get_color($region['terrain']); + $tag = get_image($region['terrain']); + $x = transformx($region); + $y = transformy($region); + 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, $tag, $x, $y, $color); + } +} + +function warn($string) { + echo "WARNING: $string\n"; +} + + +$content = ""; + +$region = null; +while(!feof($myfile)) { + $line = fgets($myfile); + if (preg_match($preg_region, $line, $matches) == 1) { + if ($region != null) { + $x = $region['x']; + $y = $region['y']; + warn("REGION $x $y without terrain"); + } + + $region = parse_region($line, $matches); + } else if (preg_match($preg_terrain, $line, $matches) == 1) { + $region['terrain'] = $matches[1]; + $content .= output_region($region); + $region = null; + } +} + +output_front(); +fwrite($mysvg, $content); +output_back(); + +fclose($myfile); +fclose($mysvg); + +?> diff --git a/stm-jekyll/example.svg b/stm-jekyll/example.svg new file mode 100644 index 000000000..0b982334e --- /dev/null +++ b/stm-jekyll/example.svg @@ -0,0 +1,5662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 @@ + + + + From 126a8a5dc4df63d793580511ea44cc0842cbbb98 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 9 Aug 2022 17:03:21 +0200 Subject: [PATCH 04/26] region:setresourcelevel(type, value, level, divisor) for iron-like resources --- src/bind_region.c | 8 +++++++- src/kernel/region.c | 12 ++++++++++-- src/kernel/region.h | 2 ++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/bind_region.c b/src/bind_region.c index f493d4547..03aefd24e 100644 --- a/src/bind_region.c +++ b/src/bind_region.c @@ -414,7 +414,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); @@ -430,6 +433,9 @@ 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); } } diff --git a/src/kernel/region.c b/src/kernel/region.c index daf1a67e9..22e9d7b0c 100644 --- a/src/kernel/region.c +++ b/src/kernel/region.c @@ -838,12 +838,20 @@ 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 = r->resources; while (rm) { if (rm->rtype == rtype) { - rm->amount = value; + if (level > 0) { + set_resource(rm, level, value, divisor); + } else { + rm->amount = value; + } break; } rm = rm->next; 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); From cf3b818c3054c866e1ce5fb43f53b95a2f9b1874 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 9 Aug 2022 17:05:25 +0200 Subject: [PATCH 05/26] clear_reservations command (needed for multiple process_orders calls) --- src/bindings.c | 15 +++++++++++++++ src/kernel/pool.c | 12 ++++++++++++ src/kernel/pool.h | 1 + 3 files changed, 28 insertions(+) diff --git a/src/bindings.c b/src/bindings.c index 2456b0320..39c5c8052 100755 --- a/src/bindings.c +++ b/src/bindings.c @@ -24,6 +24,7 @@ #include "kernel/terrain.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" @@ -332,6 +333,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; @@ -964,6 +978,7 @@ 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_endmodule(L); return 1; } 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, From 4f9419366c9aecf34294d85166b5fdc5a093f6f7 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 9 Aug 2022 17:06:37 +0200 Subject: [PATCH 06/26] rng.active() for re-enabling rng adter rng.inject(int) --- src/bindings.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/bindings.c b/src/bindings.c index 39c5c8052..7ef0e0675 100755 --- a/src/bindings.c +++ b/src/bindings.c @@ -862,11 +862,16 @@ static void parse_inifile(lua_State * L, const dictionary * d, const char *secti } static int lua_rng_default(lua_State *L) { - UNUSED_ARG(L); random_source_inject_constant(0); return 0; } +static int lua_rng_reset(lua_State *L) { + UNUSED_ARG(L); + random_source_reset(); + return 0; +} + int tolua_bindings_open(lua_State * L, const dictionary *inifile) { tolua_open(L); @@ -890,6 +895,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); From b8dc2288236e72fb36b39e2c952e2e8527221050 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Mon, 15 Feb 2021 20:51:32 +0100 Subject: [PATCH 07/26] faction:free_messages removes battle messages --- src/bind_faction.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/bind_faction.c b/src/bind_faction.c index a24f01e54..4c6049d07 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); @@ -682,6 +698,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); From 8a481ed606845a83f187dcdddfcbe81a220f7a14 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Thu, 25 Mar 2021 13:08:20 +0100 Subject: [PATCH 08/26] added s/bash_source command to update environment before calling s/runtests.qad --- s/bash_source | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 s/bash_source diff --git a/s/bash_source b/s/bash_source new file mode 100755 index 000000000..8d416291c --- /dev/null +++ b/s/bash_source @@ -0,0 +1,4 @@ +# luarocks install lunitx +eval $(luarocks path) +export LUA_PATH="$LUA_PATH;;" + From 41798cb5995c42ecaa0561062182d90db8b247ca Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Thu, 2 Sep 2021 20:40:11 +0200 Subject: [PATCH 09/26] set_debug for dirty debugging (fprintf-style) --- src/bindings.c | 8 ++++++++ src/kernel/config.c | 1 + src/kernel/config.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/bindings.c b/src/bindings.c index 7ef0e0675..11fe5e6fa 100755 --- a/src/bindings.c +++ b/src/bindings.c @@ -872,6 +872,13 @@ static int lua_rng_reset(lua_State *L) { return 0; } +static int tolua_set_debug(lua_State * L) +{ + debug = (int)tolua_tonumber(L, 1, 0); + return 0; +} + + int tolua_bindings_open(lua_State * L, const dictionary *inifile) { tolua_open(L); @@ -985,6 +992,7 @@ int tolua_bindings_open(lua_State * L, const dictionary *inifile) 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 2bb90c3d9..f47aac525 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 3ad5478e0..8141a8672 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; #ifdef __cplusplus } From 2511aa6a6c93035a50e8a9d181927850a703a6bc Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Sun, 16 Jan 2022 13:39:36 +0100 Subject: [PATCH 10/26] region:add_road(direction) --- src/bind_region.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/bind_region.c b/src/bind_region.c index 03aefd24e..c7e3c2312 100644 --- a/src/bind_region.c +++ b/src/bind_region.c @@ -442,6 +442,18 @@ static int tolua_region_set_resource(lua_State * L) 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); @@ -818,6 +830,7 @@ 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, "next", tolua_region_get_next); From edcb33f764234c7ede36e9d1e73c753ad8138f90 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Sun, 16 Jan 2022 22:55:16 +0100 Subject: [PATCH 11/26] add new peasants in empty region only if they can work --- src/laws.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/laws.c b/src/laws.c index 49b683b72..c175fb8b4 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) { From 7604dbf665fe0f72424d864074eb536811dab5b0 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Sun, 23 Jan 2022 09:57:04 +0100 Subject: [PATCH 12/26] added round parameter to pest message --- res/core/messages.xml | 1 + res/translations/messages.de.po | 2 +- src/randenc.c | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/res/core/messages.xml b/res/core/messages.xml index 4daf608cc..9390ba085 100644 --- a/res/core/messages.xml +++ b/res/core/messages.xml @@ -5434,6 +5434,7 @@ + diff --git a/res/translations/messages.de.po b/res/translations/messages.de.po index 4acffadf1..d2e903d63 100644 --- a/res/translations/messages.de.po +++ b/res/translations/messages.de.po @@ -2413,7 +2413,7 @@ msgid "sp_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/src/randenc.c b/src/randenc.c index 238ab235a..be710b409 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); } From db48f7550182b7b97ac7177259e87b7bc65442aa Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 8 Feb 2022 15:01:00 +0100 Subject: [PATCH 13/26] region:get_terrain_flag(flag) --- src/bind_region.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/bind_region.c b/src/bind_region.c index c7e3c2312..1abd11318 100644 --- a/src/bind_region.c +++ b/src/bind_region.c @@ -323,6 +323,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); @@ -833,6 +842,7 @@ void tolua_region_open(lua_State * L) 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); From bef416e7f829b3074b451a44bbd8540dad9b32ac Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Mon, 8 Aug 2022 18:13:45 +0200 Subject: [PATCH 14/26] refactored demo --- demo/eressea.ini | 12 + demo/run_demo | 20 ++ scripts/demo/demo.lua | 530 ++++++++++++++++++++++++++++++++++++++++++ scripts/demo/init.lua | 3 + scripts/run-demo.lua | 48 ++++ 5 files changed, 613 insertions(+) create mode 100644 demo/eressea.ini create mode 100755 demo/run_demo create mode 100644 scripts/demo/demo.lua create mode 100644 scripts/demo/init.lua create mode 100644 scripts/run-demo.lua 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..6690543c4 --- /dev/null +++ b/demo/run_demo @@ -0,0 +1,20 @@ +#!/bin/bash +set -ex + +ROOT=$(git rev-parse --show-toplevel) +export LUA_PATH="$ROOT/scripts/?.lua;$LUA_PATH" +[ -z $BUILD ] && BUILD=Debug ; export BUILD + +RUN_ERESSEA=$ROOT/$BUILD/eressea/eressea + +if [ ! -e $ROOT/$BUILD ]; then + echo "cannot find build directory $BUILD in $ROOT. did you run cmake-init?" + exit +fi + +cd $ROOT/demo +rm -rf reports orders.txt score score.alliances datum turn +$RUN_ERESSEA -v1 ../scripts/run-demo.lua +$RUN_ERESSEA --version + +cd - diff --git a/scripts/demo/demo.lua b/scripts/demo/demo.lua new file mode 100644 index 000000000..90868b911 --- /dev/null +++ b/scripts/demo/demo.lua @@ -0,0 +1,530 @@ +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("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 create_eressea_map() + 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', '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(x, 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 function test_orc() + local r1 = region.create(1, 0, 'plain') + local f1 = faction.create('human', "human@eressea.de", "de") + local f2 = faction.create('orc', "orc@eressea.de", "de") + local h1 + local o1 + + for i = 1,100 do + h1 = unit.create(f1, r1, 10) + o1 = unit.create(f2, r1, 10) + h1:add_item("money", 100*10*h1.number) + o1:add_item("money", 100*10*o1.number) + h1:add_order("LERNE Holzfällen") + o1:add_order("LERNE Holzfällen") + end + for r = 1, 100 do + process_orders() + -- info(r, h1:get_skill("forestry"), o1:get_skill("forestry")) + end + + -- init_reports() + -- write_reports() + local skill1, skill2 = 0, 0 + for u in f1.units do + skill1 = skill1 + u:get_skill("forestry") * (u:get_skill("forestry") +1) / 2 + end + for u in f2.units do + skill2 = skill2 + u:get_skill("forestry") * (u:get_skill("forestry") +1) / 2 + end + -- info(skill1, skill2, skill1/skill2) + assert_true(skill1 > 1.15 * skill2) +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 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_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_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_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_region(24, 0) + local r1 = get_region(0, 8) + local r2 = get_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_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_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_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_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() + 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() + + init_reports() + write_reports() + + process_orders() + + init_reports() + write_reports() + + rules_tame() +end + +return { create_demo = create_demo } 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..1b2be2e43 --- /dev/null +++ b/scripts/run-demo.lua @@ -0,0 +1,48 @@ +-- 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 +--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 From c3a974e3beb7bcefc9de492c0d991c0a71780580 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Mon, 22 Aug 2022 15:16:06 +0200 Subject: [PATCH 15/26] WIP --- scripts/demo/demo.lua | 303 +++++++++++++++++++++++++++++++++++------- scripts/run-demo.lua | 5 + 2 files changed, 262 insertions(+), 46 deletions(-) diff --git a/scripts/demo/demo.lua b/scripts/demo/demo.lua index 90868b911..2b79c6ff7 100644 --- a/scripts/demo/demo.lua +++ b/scripts/demo/demo.lua @@ -1,4 +1,4 @@ -local lunit = require('lunit') +-- local lunit = require('lunit') function rules_tame() eressea.settings.set("rules.food.flags", "4") -- 4: food is free @@ -9,6 +9,7 @@ function rules_tame() 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") @@ -24,7 +25,38 @@ local function printf(s, ...) return io.write(s:format(...)) end +function get_plane_bounds() + 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.y then + bounds.x = 0 + bounds.xmin = 0 + bounds.y = 0 + bounds.ymin = 0 + else + bounds.x = bounds.x + 100 + bounds.y = bounds.y + 100 + bounds.xmin = bounds.xmin - 100 + bounds.ymin = bounds.ymin - 100 + end + return bounds +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.x + x, demo_bounds.y + y) +end + function create_eressea_map() + demo_bounds = get_plane_bounds() + local points = { {0, 0}, {1 ,0}, {2, 0}, {4, 0}, {6, 0}, @@ -93,7 +125,7 @@ function create_eressea_map() elseif x == -5 or y == -5 or x == 2*xmax+5 or y == 2*ymax+5 then type = 'firewall' end - r = region.create(x, y, type) + r = region.create(demo_bounds.x + x, demo_bounds.y + y, type) end end end @@ -138,39 +170,6 @@ local function dump(o) end end -local function test_orc() - local r1 = region.create(1, 0, 'plain') - local f1 = faction.create('human', "human@eressea.de", "de") - local f2 = faction.create('orc', "orc@eressea.de", "de") - local h1 - local o1 - - for i = 1,100 do - h1 = unit.create(f1, r1, 10) - o1 = unit.create(f2, r1, 10) - h1:add_item("money", 100*10*h1.number) - o1:add_item("money", 100*10*o1.number) - h1:add_order("LERNE Holzfällen") - o1:add_order("LERNE Holzfällen") - end - for r = 1, 100 do - process_orders() - -- info(r, h1:get_skill("forestry"), o1:get_skill("forestry")) - end - - -- init_reports() - -- write_reports() - local skill1, skill2 = 0, 0 - for u in f1.units do - skill1 = skill1 + u:get_skill("forestry") * (u:get_skill("forestry") +1) / 2 - end - for u in f2.units do - skill2 = skill2 + u:get_skill("forestry") * (u:get_skill("forestry") +1) / 2 - end - -- info(skill1, skill2, skill1/skill2) - assert_true(skill1 > 1.15 * skill2) -end - local demo_units = { ['factions'] = {}, ['numbers'] = {}, ['units'] = {}} function create_demo_faction(race, email, lang, name, id) @@ -231,7 +230,7 @@ function create_demo_unit(f, r, number, name, id, skills, items, orders) end function demo_module_starters() - local r0 = get_region(24, 0) + 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] @@ -259,7 +258,7 @@ function demo_module_starters() end function demo_module_paula(f0) - local r0 = get_region(24, 0) + local r0 = get_demo_region(24, 0) r0.terrain = 'highland' r0.name = 'Piratenbucht' @@ -281,7 +280,7 @@ function demo_module_paula2(p) end function demo_module_piratenbucht() - local r0 = get_region(24, 0) + local r0 = get_demo_region(24, 0) local bc = building.create(r0, "castle", 250) bc.name = 'Paulas Schloss' @@ -329,9 +328,9 @@ function demo_module_piratenbucht() end function demo_module_mages() - local r0 = get_region(24, 0) - local r1 = get_region(0, 8) - local r2 = get_region(8, 8) + 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 @@ -350,7 +349,7 @@ function demo_module_mages() end function try_cerddor(mage1, mage2, mage3) - local r = get_region(48, 0) + 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" ) @@ -363,7 +362,7 @@ function try_draig(mage1, mage2, mage3) mage1:add_order("ZAUBERE 'Kleines Blutopfer'") -- mage1:add_order("ZAUBERE STUFE 1 'Traumsenden' nice Träumchen") - get_region(0,5):set_resource("grave", 1000) + 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'") @@ -386,7 +385,7 @@ function try_gwyrrd(mage1, mage2, mage3) end function try_illaun(mage1, mage2, mage3) - local r = get_region(2, 0) + 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 }) @@ -428,7 +427,7 @@ function get_astral(r) end function demo_module_mages2() - local r0 = get_region(24, 0) + local r0 = get_demo_region(24, 0) local mage1 = get_unit(atoi36('mort')) local mage2 = get_unit(atoi36('zoe')) @@ -527,4 +526,216 @@ function create_demo() rules_tame() end -return { create_demo = create_demo } +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.x + x, example_bounds.y + 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.x + x, example_bounds.y + 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() + 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_reports() +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/run-demo.lua b/scripts/run-demo.lua index 1b2be2e43..35ae33bd0 100644 --- a/scripts/run-demo.lua +++ b/scripts/run-demo.lua @@ -35,6 +35,11 @@ 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. From fd033ff4bbc55ec4a5f92b6654da057ef7aa7487 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Fri, 2 Sep 2022 22:50:52 +0200 Subject: [PATCH 16/26] WIP --- scripts/demo/demo.lua | 46 ++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/scripts/demo/demo.lua b/scripts/demo/demo.lua index 2b79c6ff7..40f69bd73 100644 --- a/scripts/demo/demo.lua +++ b/scripts/demo/demo.lua @@ -25,7 +25,8 @@ local function printf(s, ...) return io.write(s:format(...)) end -function get_plane_bounds() +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 @@ -33,16 +34,20 @@ function get_plane_bounds() 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.y then + 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 + 100 - bounds.y = bounds.y + 100 - bounds.xmin = bounds.xmin - 100 - bounds.ymin = bounds.ymin - 100 + 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 @@ -51,7 +56,7 @@ 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.x + x, demo_bounds.y + y) + return get_region(demo_bounds.xoff + x, demo_bounds.yoff + y) end function create_eressea_map() @@ -100,7 +105,7 @@ function create_eressea_map() } local map = {} local xmax, ymax = 0, 0 - local types = { 'plain', 'swamp', 'highland', 'volcano', 'glacier' } + local types = { 'plain', 'swamp', 'highland', 'desert', 'volcano', 'glacier' } local ntypes = 5 for _, p in ipairs(points) do local x, y = p[1], p[2] @@ -125,7 +130,7 @@ function create_eressea_map() 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.x + x, demo_bounds.y + y, type) + r = region.create(demo_bounds.xoff + x, demo_bounds.yoff + y, type) end end end @@ -188,6 +193,13 @@ function create_demo_faction(race, email, lang, name, id) return f end +function write_demo_reports() + init_reports() + for k, f in pairs(demo_units['factions']) do + write_report(f) + end +end + function create_demo_unit(f, r, number, name, id, skills, items, orders) if f == NULL then f = demo_units['factions'][1] @@ -476,6 +488,7 @@ function spawn_monsters(rounds) end function create_demo() + print("---- DEMO ----") rules_wild() rng.active() local races = { 'aquarian', 'cat', 'demon', 'dwarf', 'elf', 'goblin', 'halfling', 'human', 'insect', 'orc'} @@ -515,13 +528,11 @@ function create_demo() demo_module_paula2(p) demo_module_mages2() - init_reports() - write_reports() + write_demo_reports() process_orders() - init_reports() - write_reports() + write_demo_reports() rules_tame() end @@ -617,13 +628,13 @@ end function get_example_region(x, y) if example_bounds.x == nil then error("bounds not initialized") end - return get_region(example_bounds.x + x, example_bounds.y + y) + 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.x + x, example_bounds.y + y, terrain) + 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 @@ -649,6 +660,7 @@ function make_trees(r, t) end function create_example() + print("---- EXAMPLE ----") set_turn(333) rules_wild() rng.active() @@ -718,8 +730,10 @@ function create_example() u:add_order("BOTSCHAFT REGION 'Hey, Welt'") process_orders() + init_reports() - write_reports() + write_report(f) + write_report(f2) end function create_start() From d9b1465407f892fa87697e4befd79e0b6f328be1 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Mon, 5 Sep 2022 12:58:19 +0200 Subject: [PATCH 17/26] refactored demo cr pages --- .github/workflows/pages.yml | 4 + stm-jekyll/_config.yml | 4 + stm-jekyll/_demos/basic.cr | 113 + stm-jekyll/_demos/basic.md | 6 + stm-jekyll/_demos/index.md | 12 + stm-jekyll/bla.php | 13 - stm-jekyll/cr2svg.php | 207 - stm-jekyll/example.svg | 5662 ---------------------------- stm-jekyll/scripts/cr2svg.php | 334 ++ stm-jekyll/scripts/create_demos.sh | 25 + 10 files changed, 498 insertions(+), 5882 deletions(-) create mode 100644 stm-jekyll/_demos/basic.cr create mode 100644 stm-jekyll/_demos/basic.md create mode 100644 stm-jekyll/_demos/index.md delete mode 100644 stm-jekyll/bla.php delete mode 100644 stm-jekyll/cr2svg.php delete mode 100644 stm-jekyll/example.svg create mode 100644 stm-jekyll/scripts/cr2svg.php create mode 100644 stm-jekyll/scripts/create_demos.sh diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 00c0fbb1a..30a3d2fc1 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -29,6 +29,10 @@ jobs: uses: actions/checkout@v3 - name: Setup Pages uses: actions/configure-pages@v2 + - name: Create demos + run: | + cd stm-jekyll + bash scripts/create_demos.sh - name: Build with Jekyll uses: actions/jekyll-build-pages@v1 with: diff --git a/stm-jekyll/_config.yml b/stm-jekyll/_config.yml index 547c625b8..588126f9c 100644 --- a/stm-jekyll/_config.yml +++ b/stm-jekyll/_config.yml @@ -43,3 +43,7 @@ plugins: # - vendor/cache/ # - vendor/gems/ # - vendor/ruby/ + +collections: + demos: + output: true diff --git a/stm-jekyll/_demos/basic.cr b/stm-jekyll/_demos/basic.cr new file mode 100644 index 000000000..751b626f7 --- /dev/null +++ b/stm-jekyll/_demos/basic.cr @@ -0,0 +1,113 @@ +VERSION 69 +"UTF-8";charset +"de";locale +1;noskillpoints +1662148354;date +"Eressea";Spiel +"Standard";Konfiguration +"Hex";Koordinaten +2500;max_units +36;Basis +334;Runde +2;Zeitalter +"27.3.0-60aec1398";Build +"eressea-server@kn-bremen.de";mailto +"ERESSEA 2 BEFEHLE";mailcmd +PARTEI 146 +"de";locale +1;age +599;Optionen +"Menschen";Typ +75;Rekrutierungskosten +1;Anzahl Personen +"gray";Magiegebiet +0;Anzahl Immigranten +32;Max. Immigranten +"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 +REGION 0 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 +EINHEIT 107043 +"Einheit 2aLf";Name +146;Partei +1;Anzahl +"Menschen";Typ +COMMANDS +"ARBEITE" +TALENTE +6287400 20;Hiebwaffen +1646700 10;Ausdauer +GEGENSTAENDE +999;Silber +REGION 1 0 +1484905476;id +"Sivel";Name +"Sumpf";Terrain +"neighbour";visibility +REGION 1 -1 +1484905475;id +"Blargel";Name +"Hochland";Terrain +"neighbour";visibility +REGION 0 1 +1484905474;id +"Lydis";Name +"Hochland";Terrain +"neighbour";visibility +REGION 0 -1 +1502968275;id +"Ozean";Terrain +"neighbour";visibility +REGION -1 0 +184973115;id +"Ozean";Terrain +"neighbour";visibility +REGION -1 1 +2030168754;id +"Ozean";Terrain +"neighbour";visibility diff --git a/stm-jekyll/_demos/basic.md b/stm-jekyll/_demos/basic.md new file mode 100644 index 000000000..054a54e86 --- /dev/null +++ b/stm-jekyll/_demos/basic.md @@ -0,0 +1,6 @@ +--- +name: Basis +description: A very basic CR +cr: basic.cr +--- +Ein Computerreport, so einfach wie möglich. diff --git a/stm-jekyll/_demos/index.md b/stm-jekyll/_demos/index.md new file mode 100644 index 000000000..fec6f1cbc --- /dev/null +++ b/stm-jekyll/_demos/index.md @@ -0,0 +1,12 @@ +--- +title: Eressea Demo-Reporte +--- +{% for demo in site.demos %} +

+ + {{ demo.name }} - {{ demo.description }} + +

+

CR: {{ demo.cr }}

+

{{ demo.content | markdownify }}

+{% endfor %} diff --git a/stm-jekyll/bla.php b/stm-jekyll/bla.php deleted file mode 100644 index 5198decc7..000000000 --- a/stm-jekyll/bla.php +++ /dev/null @@ -1,13 +0,0 @@ - -Hello

"; -$svg_content = file_get_contents("example.svg"); -echo '
'; -echo preg_replace("|.*('; - -// phpinfo(); -?> - - diff --git a/stm-jekyll/cr2svg.php b/stm-jekyll/cr2svg.php deleted file mode 100644 index 0ec632aa9..000000000 --- a/stm-jekyll/cr2svg.php +++ /dev/null @@ -1,207 +0,0 @@ - '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', -); - -$images = array( - 'default' => 'region', - '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 $images['default']; - else { - return $images[$terrain]; - } -} - - -$front_matter = << - - - - - - -EOT; -$back_matter=<< - -EOT; - -$use_tag = '' . "\n"; - -$rwidth = 100; -$yoff = $rwidth * .5; - -function include_image($image) { - global $mysvg; - $filename = "images/$image.svg"; - if (file_exists($filename)) { - $contents = file_get_contents($filename); - $contents = preg_replace('|^.*).*.*$|s', "\n".'$1'."\n", $contents); - fwrite($mysvg, "\n\n"); - fwrite($mysvg, $contents); - fwrite($mysvg, "\n\n"); - } else { - warn("$filename not found."); - } -} - -function output_front() { - global $mysvg, $front_matter, $bounds, $images; - fwrite($mysvg, 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) { - include_image($image); - } - - fwrite($mysvg, " \n \n"); -} - -function output_back() { - global $mysvg, $back_matter; - fwrite($mysvg, $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); -} - -function output_region($region) { - global $mysvg, $use_tag, $bounds; - if (empty($region['z'])) { - $color = get_color($region['terrain']); - $tag = get_image($region['terrain']); - $x = transformx($region); - $y = transformy($region); - 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, $tag, $x, $y, $color); - } -} - -function warn($string) { - echo "WARNING: $string\n"; -} - - -$content = ""; - -$region = null; -while(!feof($myfile)) { - $line = fgets($myfile); - if (preg_match($preg_region, $line, $matches) == 1) { - if ($region != null) { - $x = $region['x']; - $y = $region['y']; - warn("REGION $x $y without terrain"); - } - - $region = parse_region($line, $matches); - } else if (preg_match($preg_terrain, $line, $matches) == 1) { - $region['terrain'] = $matches[1]; - $content .= output_region($region); - $region = null; - } -} - -output_front(); -fwrite($mysvg, $content); -output_back(); - -fclose($myfile); -fclose($mysvg); - -?> diff --git a/stm-jekyll/example.svg b/stm-jekyll/example.svg deleted file mode 100644 index 0b982334e..000000000 --- a/stm-jekyll/example.svg +++ /dev/null @@ -1,5662 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/stm-jekyll/scripts/cr2svg.php b/stm-jekyll/scripts/cr2svg.php new file mode 100644 index 000000000..25c13ea8c --- /dev/null +++ b/stm-jekyll/scripts/cr2svg.php @@ -0,0 +1,334 @@ + '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 = << + + + + + +

Eressea

+ + +
+%s +
+
You need to enable Javascript for this to work.
+ + + +EOT; + +$front_matter = << + + + + + + +EOT; +$back_matter=<< + +EOT; + +$use_tag = << + +%s +%s + + +EOT; + +$description_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, $description_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($description_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, $tt, $id, $tag, $id, $x, $y, $color, $tt, $desc); + } +} + +function warn($string) { + echo "WARNING: $string\n"; +} + + +$content = ""; + +$region = null; +$block = null; +while(!feof($myfile)) { + $line = fgets($myfile); + $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) { + $content = sprintf($html_template, $content); +} + +fwrite($mysvg, $content); + +fclose($myfile); +fclose($mysvg); + +?> diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh new file mode 100644 index 000000000..acf341f7f --- /dev/null +++ b/stm-jekyll/scripts/create_demos.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -ex + +ROOT=$(git rev-parse --show-toplevel) +cd $ROOT +./configure +s/build +s/runtests +demo/run_demo + +cp demo/reports/*cr stm-jekyll/_demos +cd stm-jekyll + +for filename in _demos/*cr; do + base=${filename%.*} + basebase=$(basename "$base") + php scripts/cr2svg.php --html $base.cr $base.html + if [ ! -e $base.md ]; then + echo "---" >> $base.md + echo "name: $basebase" >> $base.md + echo "cr: $basebase.cr" >> $base.md + echo "---" >> $base.md + echo >> $base.md + fi +done From c524354f98a224236881ecd351fc5d8aeac2f3c9 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Mon, 5 Sep 2022 14:32:43 +0200 Subject: [PATCH 18/26] fixed run_demo paths --- demo/run_demo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/demo/run_demo b/demo/run_demo index 6690543c4..3a4487ec6 100755 --- a/demo/run_demo +++ b/demo/run_demo @@ -3,11 +3,11 @@ set -ex ROOT=$(git rev-parse --show-toplevel) export LUA_PATH="$ROOT/scripts/?.lua;$LUA_PATH" -[ -z $BUILD ] && BUILD=Debug ; export BUILD +BUILD=$ROOT/build -RUN_ERESSEA=$ROOT/$BUILD/eressea/eressea +RUN_ERESSEA=$BUILD/eressea/eressea -if [ ! -e $ROOT/$BUILD ]; then +if [ ! -e $BUILD ]; then echo "cannot find build directory $BUILD in $ROOT. did you run cmake-init?" exit fi From 1068cff4dbafaac2b16db366313c1732f7af7ede Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 6 Sep 2022 11:40:12 +0200 Subject: [PATCH 19/26] changes for svg reports --- scripts/demo/demo.lua | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/scripts/demo/demo.lua b/scripts/demo/demo.lua index 40f69bd73..33025386c 100644 --- a/scripts/demo/demo.lua +++ b/scripts/demo/demo.lua @@ -52,6 +52,22 @@ function get_plane_bounds(dist) 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) @@ -195,9 +211,12 @@ 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) @@ -528,11 +547,24 @@ function create_demo() demo_module_paula2(p) demo_module_mages2() - write_demo_reports() + local f1 = write_demo_reports() + process_orders() - write_demo_reports() + 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 @@ -734,6 +766,7 @@ function create_example() 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() From 589031be9b64063df3e75597a00cea84ec995810 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Mon, 5 Sep 2022 14:09:27 +0200 Subject: [PATCH 20/26] working on demo pages --- .github/workflows/pages.yml | 26 ++++++++++++++++++++++++-- stm-jekyll/_config.yml | 23 ++++++++++++----------- stm-jekyll/_demos/basic.md | 7 +++++-- stm-jekyll/_demos/index.md | 12 ------------ stm-jekyll/demos.md | 22 ++++++++++++++++++++++ stm-jekyll/scripts/create_demos.sh | 8 ++++---- 6 files changed, 67 insertions(+), 31 deletions(-) delete mode 100644 stm-jekyll/_demos/index.md create mode 100644 stm-jekyll/demos.md diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 30a3d2fc1..a59269595 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -23,10 +23,32 @@ concurrency: 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: Checkout - uses: actions/checkout@v3 + - 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 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@v2 + with: + submodules: true + - name: Build and Test + uses: ashutoshvarma/action-cmake-build@master + with: + build-dir: ${{ runner.workspace }}/server/build + build-type: Debug + run-test: true + ctest-options: --output-on-failure + - name: Setup Pages uses: actions/configure-pages@v2 - name: Create demos diff --git a/stm-jekyll/_config.yml b/stm-jekyll/_config.yml index 588126f9c..dcdfc797d 100644 --- a/stm-jekyll/_config.yml +++ b/stm-jekyll/_config.yml @@ -17,8 +17,8 @@ title: Eressea stm email: stm@example.com description: >- # this means to ignore newlines until "baseurl:" Experiments around Eressea -baseurl: "" # the subpath of your site, e.g. /blog -url: "" # the base hostname & protocol for your site, e.g. http://example.com +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 # Build settings @@ -35,15 +35,16 @@ plugins: # 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/ +exclude: + - Gemfile + - Gemfile.lock + - node_modules + - vendor/bundle/ + - vendor/cache/ + - vendor/gems/ + - vendor/ruby/ + - scripts collections: demos: - output: true + output: false diff --git a/stm-jekyll/_demos/basic.md b/stm-jekyll/_demos/basic.md index 054a54e86..e8afeecd6 100644 --- a/stm-jekyll/_demos/basic.md +++ b/stm-jekyll/_demos/basic.md @@ -1,6 +1,9 @@ --- name: Basis description: A very basic CR -cr: basic.cr +crs: + - basic.cr + - basic2.cr +date: 22-09-01 --- -Ein Computerreport, so einfach wie möglich. +Ein Computerreport, so *einfach* wie möglich. diff --git a/stm-jekyll/_demos/index.md b/stm-jekyll/_demos/index.md deleted file mode 100644 index fec6f1cbc..000000000 --- a/stm-jekyll/_demos/index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Eressea Demo-Reporte ---- -{% for demo in site.demos %} -

- - {{ demo.name }} - {{ demo.description }} - -

-

CR: {{ demo.cr }}

-

{{ demo.content | markdownify }}

-{% endfor %} diff --git a/stm-jekyll/demos.md b/stm-jekyll/demos.md new file mode 100644 index 000000000..c53fc456f --- /dev/null +++ b/stm-jekyll/demos.md @@ -0,0 +1,22 @@ +--- +title: Eressea Demo-Reporte +--- +

{{ $title }}

+{% for demo in site.demos %} + +## [{{ demo.name }}{% if demo.description %} - {{ demo.description }}{% endif %}]({{ site.baseurl }}{{ demo.url }}) + + {% if demo.crs.size == 1 %} +CR: [{{ demo.crs[0] }}](demos/{{ demo.crs[0] }}) + {% endif %} + {% if demo.crs.size > 1 %} +CRs: + {% for cr in demo.crs limit:1 -%} +[{{ cr }}](demos/{{ cr }}) + {% endfor -%} + {% for cr in demo.crs offset:continue -%} +, [{{ cr }}](demos/{{ cr }}) + {% endfor %} + {% endif %} +{{ demo.content }} +{% endfor %} diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh index acf341f7f..ac225c8b2 100644 --- a/stm-jekyll/scripts/create_demos.sh +++ b/stm-jekyll/scripts/create_demos.sh @@ -3,9 +3,9 @@ set -ex ROOT=$(git rev-parse --show-toplevel) cd $ROOT -./configure -s/build -s/runtests +#./configure +#s/build +#s/runtests demo/run_demo cp demo/reports/*cr stm-jekyll/_demos @@ -18,7 +18,7 @@ for filename in _demos/*cr; do if [ ! -e $base.md ]; then echo "---" >> $base.md echo "name: $basebase" >> $base.md - echo "cr: $basebase.cr" >> $base.md + echo "crs: $basebase.cr" >> $base.md echo "---" >> $base.md echo >> $base.md fi From b2c837cb94b29eb8801dd31c2a2d4b2fd9d8f647 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Tue, 6 Sep 2022 12:23:02 +0200 Subject: [PATCH 21/26] working on md integration --- stm-jekyll/_demos/basic.md | 1 - stm-jekyll/demos.md | 24 +++++++++++++----------- stm-jekyll/index.md | 2 +- stm-jekyll/scripts/create_demos.sh | 15 ++++++++------- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/stm-jekyll/_demos/basic.md b/stm-jekyll/_demos/basic.md index e8afeecd6..58404ac07 100644 --- a/stm-jekyll/_demos/basic.md +++ b/stm-jekyll/_demos/basic.md @@ -3,7 +3,6 @@ name: Basis description: A very basic CR crs: - basic.cr - - basic2.cr date: 22-09-01 --- Ein Computerreport, so *einfach* wie möglich. diff --git a/stm-jekyll/demos.md b/stm-jekyll/demos.md index c53fc456f..09543e147 100644 --- a/stm-jekyll/demos.md +++ b/stm-jekyll/demos.md @@ -1,22 +1,24 @@ --- title: Eressea Demo-Reporte --- -

{{ $title }}

+

{{ title }}

{% for demo in site.demos %} ## [{{ demo.name }}{% if demo.description %} - {{ demo.description }}{% endif %}]({{ site.baseurl }}{{ demo.url }}) {% if demo.crs.size == 1 %} -CR: [{{ demo.crs[0] }}](demos/{{ demo.crs[0] }}) - {% endif %} - {% if demo.crs.size > 1 %} +CR: + {% endif -%} + {% if demo.crs.size > 1 -%} CRs: - {% for cr in demo.crs limit:1 -%} -[{{ cr }}](demos/{{ cr }}) - {% endfor -%} - {% for cr in demo.crs offset:continue -%} -, [{{ cr }}](demos/{{ cr }}) - {% endfor %} - {% endif %} + {% endif -%} + {% for cr in demo.crs limit:1 -%} +[{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) +(download) + {% endfor -%} + {% for cr in demo.crs offset:continue -%} +, [{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) +(download) + {% endfor %} {{ demo.content }} {% endfor %} diff --git a/stm-jekyll/index.md b/stm-jekyll/index.md index ba27bef5c..9db4ece42 100644 --- a/stm-jekyll/index.md +++ b/stm-jekyll/index.md @@ -3,6 +3,6 @@ # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults layout: home -theme:minima +theme: minima --- Hello, Jekyll! diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh index ac225c8b2..13a8346fe 100644 --- a/stm-jekyll/scripts/create_demos.sh +++ b/stm-jekyll/scripts/create_demos.sh @@ -8,6 +8,7 @@ cd $ROOT #s/runtests demo/run_demo +cp demo/reports/*md stm-jekyll/_demos cp demo/reports/*cr stm-jekyll/_demos cd stm-jekyll @@ -15,11 +16,11 @@ for filename in _demos/*cr; do base=${filename%.*} basebase=$(basename "$base") php scripts/cr2svg.php --html $base.cr $base.html - if [ ! -e $base.md ]; then - echo "---" >> $base.md - echo "name: $basebase" >> $base.md - echo "crs: $basebase.cr" >> $base.md - echo "---" >> $base.md - echo >> $base.md - fi +# if [ ! -e $base.md ]; then +# echo "---" >> $base.md +# echo "name: $basebase" >> $base.md +# echo "crs: $basebase.cr" >> $base.md +# echo "---" >> $base.md +# echo >> $base.md +# fi done From 63b8ba2ad87930d70bead1c7c5611b090a3376b6 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Wed, 7 Sep 2022 11:45:32 +0200 Subject: [PATCH 22/26] added md option --- stm-jekyll/demos.md | 6 +-- stm-jekyll/index.md | 19 +++++-- stm-jekyll/scripts/cr2svg.php | 86 +++++++++++++++++++++--------- stm-jekyll/scripts/create_demos.sh | 7 ++- 4 files changed, 85 insertions(+), 33 deletions(-) diff --git a/stm-jekyll/demos.md b/stm-jekyll/demos.md index 09543e147..fd6a2b3f7 100644 --- a/stm-jekyll/demos.md +++ b/stm-jekyll/demos.md @@ -1,9 +1,7 @@ --- title: Eressea Demo-Reporte --- -

{{ title }}

{% for demo in site.demos %} - ## [{{ demo.name }}{% if demo.description %} - {{ demo.description }}{% endif %}]({{ site.baseurl }}{{ demo.url }}) {% if demo.crs.size == 1 %} @@ -20,5 +18,7 @@ CRs: , [{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) (download) {% endfor %} -{{ demo.content }} + +{{ demo.content | split: "." | first | markdownify }}...
+ {% endfor %} diff --git a/stm-jekyll/index.md b/stm-jekyll/index.md index 9db4ece42..3b0a6bed0 100644 --- a/stm-jekyll/index.md +++ b/stm-jekyll/index.md @@ -2,7 +2,20 @@ # 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: home -theme: minima +#layout: special --- -Hello, Jekyll! + +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 index 25c13ea8c..c545ce23d 100644 --- a/stm-jekyll/scripts/cr2svg.php +++ b/stm-jekyll/scripts/cr2svg.php @@ -1,25 +1,40 @@ +%1\$s -

Eressea

+

%1\$s

-%s +%2\$s
-
You need to enable Javascript for this to work.
- +
You need to enable Javascript for this to work.
+%3\$s EOT; +$description_tag=<<%s
+EOT; + $front_matter = << %s

%s
%s

EOT; @@ -231,7 +252,7 @@ function transformy($region) { $display_tag = array ("x" => false, "y" => false, "z" => false, "Terrain" => false, "Name" => false); function output_region($region) { - global $default_image, $use_tag, $description_tag, $bounds, $display_tag; + global $default_image, $use_tag, $details_tag, $bounds, $display_tag; if ($region == null) return; @@ -270,7 +291,7 @@ function output_region($region) { $b .= "" . $key . " ". $value . "
"; } } - $desc = sprintf($description_tag, $tt, $region['Terrain'], $b); + $desc = sprintf($details_tag, $tt, $region['Terrain'], $b); } $id = "r_"; if ($xx < 0) $id .= "m" . -$xx; else $id .= $xx; @@ -294,8 +315,8 @@ function warn($string) { $region = null; $block = null; -while(!feof($myfile)) { - $line = fgets($myfile); +while(!feof($crfile)) { + $line = fgets($crfile); $tag = null; if (preg_match($preg_region, $line, $matches) == 1) { $content .= output_region($region); @@ -323,12 +344,25 @@ function warn($string) { $content = output_front() . $content . output_back(); if ($htmlMode) { - $content = sprintf($html_template, $content); + $description = ""; + if (!empty($mdName)) { + $description = file_get_contents($mdName); + preg_match('/^---$.*?(^name: *(.*?) *$).*?^---$(.*)/sm', $description, $matches); + $title = $matches[2]; + $description = $matches[3]; + $description = Parsedown::instance()->text($description); + $description = sprintf($description_tag, $description); + } + if (empty($title)) { + $title = $inputName; + } + + $content = sprintf($html_template, $title, $content, $description); } -fwrite($mysvg, $content); +fwrite($svgfile, $content); -fclose($myfile); -fclose($mysvg); +fclose($crfile); +fclose($svgfile); ?> diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh index 13a8346fe..10dfc72e2 100644 --- a/stm-jekyll/scripts/create_demos.sh +++ b/stm-jekyll/scripts/create_demos.sh @@ -15,7 +15,12 @@ cd stm-jekyll for filename in _demos/*cr; do base=${filename%.*} basebase=$(basename "$base") - php scripts/cr2svg.php --html $base.cr $base.html + if [ -e $base.md ]; then + md="-md $base.md" + else + md= + fi + php scripts/cr2svg.php --html $md $base.cr $base.html # if [ ! -e $base.md ]; then # echo "---" >> $base.md # echo "name: $basebase" >> $base.md From 7913f72c642b0e1203abbcaf07859aa5f60962dc Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Thu, 8 Sep 2022 09:37:18 +0200 Subject: [PATCH 23/26] refactored cr2svg --- stm-jekyll/_config.yml | 11 +- stm-jekyll/_data/crs/1234-bLa.cr | 382 +++++++++ stm-jekyll/_data/crs/1234-bLa.md | 307 +++++++ stm-jekyll/_data/crs/basic.cr | 923 ++++++++++++++++++++++ stm-jekyll/{_demos => _data/crs}/basic.md | 1 + stm-jekyll/_data/crs/eressea.md | 18 + stm-jekyll/_data/crs/example.md | 14 + stm-jekyll/_data/navigation.yml | 5 + stm-jekyll/_demos/basic.cr | 113 --- stm-jekyll/_demos/crstuff.js | 28 + stm-jekyll/_includes/head-custom.html | 8 + stm-jekyll/_layouts/crsvg.html | 69 ++ stm-jekyll/demos.md | 9 +- stm-jekyll/scripts/cr2svg.php | 121 ++- stm-jekyll/scripts/create_demos.sh | 22 +- 15 files changed, 1833 insertions(+), 198 deletions(-) create mode 100644 stm-jekyll/_data/crs/1234-bLa.cr create mode 100644 stm-jekyll/_data/crs/1234-bLa.md create mode 100644 stm-jekyll/_data/crs/basic.cr rename stm-jekyll/{_demos => _data/crs}/basic.md (99%) create mode 100644 stm-jekyll/_data/crs/eressea.md create mode 100644 stm-jekyll/_data/crs/example.md create mode 100644 stm-jekyll/_data/navigation.yml delete mode 100644 stm-jekyll/_demos/basic.cr create mode 100644 stm-jekyll/_demos/crstuff.js create mode 100644 stm-jekyll/_includes/head-custom.html create mode 100644 stm-jekyll/_layouts/crsvg.html diff --git a/stm-jekyll/_config.yml b/stm-jekyll/_config.yml index dcdfc797d..502d00a25 100644 --- a/stm-jekyll/_config.yml +++ b/stm-jekyll/_config.yml @@ -23,9 +23,11 @@ github_username: stm2 # Build settings markdown: kramdown -theme: minima -#theme: architect -#remote_theme: pages-themes/architect@v0.2.0 +#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 @@ -47,4 +49,5 @@ exclude: collections: demos: - output: false + 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..d991c851a --- /dev/null +++ b/stm-jekyll/_data/crs/1234-bLa.md @@ -0,0 +1,307 @@ +--- +name: Ork Zug 0 +description: Erste Züge mit Orks +crs: + - 1234-bLa.cr +date: 22-09-01 +--- +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 +``` + +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/_demos/basic.md b/stm-jekyll/_data/crs/basic.md similarity index 99% rename from stm-jekyll/_demos/basic.md rename to stm-jekyll/_data/crs/basic.md index 58404ac07..fb38f567f 100644 --- a/stm-jekyll/_demos/basic.md +++ b/stm-jekyll/_data/crs/basic.md @@ -6,3 +6,4 @@ crs: date: 22-09-01 --- 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..3cfc08a11 --- /dev/null +++ b/stm-jekyll/_data/crs/eressea.md @@ -0,0 +1,18 @@ +--- +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: 2022-09-08 +layout: crsvg +custom-javascript-list: + - crstuff.js +--- +An example with all sorts of stuff that could go on in an Eressea game{% for cr in page.crs %} + - [{{ cr }}]({{ cr | replace: ".cr", ".html" }}) +{% endfor %} diff --git a/stm-jekyll/_data/crs/example.md b/stm-jekyll/_data/crs/example.md new file mode 100644 index 000000000..a8d2bbb27 --- /dev/null +++ b/stm-jekyll/_data/crs/example.md @@ -0,0 +1,14 @@ +--- +name: Demo 001 +description: A more complex CR +crs: + - 334-42.cr +date: 2022-09-08 +layout: crsvg +custom-javascript-list: + - crstuff.js +--- +An example with different types of terrains, ships, lighthouses, and a battle. +{% for cr in page.crs %} + - [{{ cr }}]({{ cr | replace: ".cr", ".html" }}) +{% endfor %} 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/basic.cr b/stm-jekyll/_demos/basic.cr deleted file mode 100644 index 751b626f7..000000000 --- a/stm-jekyll/_demos/basic.cr +++ /dev/null @@ -1,113 +0,0 @@ -VERSION 69 -"UTF-8";charset -"de";locale -1;noskillpoints -1662148354;date -"Eressea";Spiel -"Standard";Konfiguration -"Hex";Koordinaten -2500;max_units -36;Basis -334;Runde -2;Zeitalter -"27.3.0-60aec1398";Build -"eressea-server@kn-bremen.de";mailto -"ERESSEA 2 BEFEHLE";mailcmd -PARTEI 146 -"de";locale -1;age -599;Optionen -"Menschen";Typ -75;Rekrutierungskosten -1;Anzahl Personen -"gray";Magiegebiet -0;Anzahl Immigranten -32;Max. Immigranten -"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 -REGION 0 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 -EINHEIT 107043 -"Einheit 2aLf";Name -146;Partei -1;Anzahl -"Menschen";Typ -COMMANDS -"ARBEITE" -TALENTE -6287400 20;Hiebwaffen -1646700 10;Ausdauer -GEGENSTAENDE -999;Silber -REGION 1 0 -1484905476;id -"Sivel";Name -"Sumpf";Terrain -"neighbour";visibility -REGION 1 -1 -1484905475;id -"Blargel";Name -"Hochland";Terrain -"neighbour";visibility -REGION 0 1 -1484905474;id -"Lydis";Name -"Hochland";Terrain -"neighbour";visibility -REGION 0 -1 -1502968275;id -"Ozean";Terrain -"neighbour";visibility -REGION -1 0 -184973115;id -"Ozean";Terrain -"neighbour";visibility -REGION -1 1 -2030168754;id -"Ozean";Terrain -"neighbour";visibility 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/demos.md b/stm-jekyll/demos.md index fd6a2b3f7..2c22a7f76 100644 --- a/stm-jekyll/demos.md +++ b/stm-jekyll/demos.md @@ -2,7 +2,7 @@ title: Eressea Demo-Reporte --- {% for demo in site.demos %} -## [{{ demo.name }}{% if demo.description %} - {{ demo.description }}{% endif %}]({{ site.baseurl }}{{ demo.url }}) +## [{{ demo.name }}]({{ site.baseurl }}{{ demo.url }}) {% if demo.crs.size == 1 %} CR: @@ -11,14 +11,13 @@ CR: CRs: {% endif -%} {% for cr in demo.crs limit:1 -%} -[{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) +[{{ cr }}]({{ cr | replace: ".cr", ".html" }}) (download) {% endfor -%} {% for cr in demo.crs offset:continue -%} -, [{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) +, [{{ cr }}]({{ cr | replace: ".cr", ".html" }}) (download) {% endfor %} - -{{ demo.content | split: "." | first | markdownify }}...
+{% if demo.description %}{{ demo.description }}{% endif %} {% endfor %} diff --git a/stm-jekyll/scripts/cr2svg.php b/stm-jekyll/scripts/cr2svg.php index c545ce23d..08b7b4270 100644 --- a/stm-jekyll/scripts/cr2svg.php +++ b/stm-jekyll/scripts/cr2svg.php @@ -1,9 +1,9 @@ - - -%1\$s - - +
+%3\$s +
+
You need to enable Javascript for this to work.
+%4\$s +EOT; +$md_template = <<%1\$s -
-%2\$s +
+%3\$s
You need to enable Javascript for this to work.
-%3\$s - - +%4\$s EOT; $description_tag=<< - -%s -%s +onclick="showDescription(event, '%1\$s');"> + +%2\$s +%7\$s EOT; @@ -302,7 +287,7 @@ function output_region($region) { if (empty($bounds['xmax']) || $bounds['xmax'] < $x) $bounds['xmax'] = $x; if (empty($bounds['ymax']) || $bounds['ymax'] < $y) $bounds['ymax'] = $y; - return sprintf($use_tag, $tt, $id, $tag, $id, $x, $y, $color, $tt, $desc); + return sprintf($use_tag, $id, $tt, $tag, $x, $y, $color, $desc); } } @@ -344,20 +329,30 @@ function warn($string) { $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)) { - $description = file_get_contents($mdName); - preg_match('/^---$.*?(^name: *(.*?) *$).*?^---$(.*)/sm', $description, $matches); - $title = $matches[2]; - $description = $matches[3]; - $description = Parsedown::instance()->text($description); - $description = sprintf($description_tag, $description); + $details = file_get_contents($mdName); + preg_match('/^---$(.*?(^name: *(.*?) *$).*?)^---$(.*)/sm', $details, $matches); + $title = $matches[3]; + $head = $matches[1]; + $details = $matches[4]; + # $details = Parsedown::instance()->text($details); + // $details = sprintf($description_tag, $details); } if (empty($title)) { - $title = $inputName; + $title = basename($inputName); } - $content = sprintf($html_template, $title, $content, $description); + $content = sprintf($md_template, $title, $head, $content, $details); } fwrite($svgfile, $content); diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh index 10dfc72e2..676476e64 100644 --- a/stm-jekyll/scripts/create_demos.sh +++ b/stm-jekyll/scripts/create_demos.sh @@ -8,24 +8,20 @@ cd $ROOT #s/runtests demo/run_demo -cp demo/reports/*md stm-jekyll/_demos -cp demo/reports/*cr stm-jekyll/_demos +cp demo/reports/*md stm-jekyll/_data/crs +cp demo/reports/*cr stm-jekyll/_data/crs cd stm-jekyll -for filename in _demos/*cr; do +for filename in _data/crs/*md; do + cp $filename _demos +done + +for filename in _data/crs/*cr; do base=${filename%.*} basebase=$(basename "$base") if [ -e $base.md ]; then - md="-md $base.md" + php scripts/cr2svg.php --md $base.md $base.cr _demos/$basebase.md else - md= + php scripts/cr2svg.php --html $base.cr _demos/$basebase.md fi - php scripts/cr2svg.php --html $md $base.cr $base.html -# if [ ! -e $base.md ]; then -# echo "---" >> $base.md -# echo "name: $basebase" >> $base.md -# echo "crs: $basebase.cr" >> $base.md -# echo "---" >> $base.md -# echo >> $base.md -# fi done From e5fa15fd9a2747be273040652a92bda3cd989b17 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Thu, 8 Sep 2022 15:46:53 +0200 Subject: [PATCH 24/26] amend --- stm-jekyll/_data/crs/1234-bLa.md | 1 + stm-jekyll/_data/crs/basic.md | 1 + stm-jekyll/_data/crs/eressea.md | 7 +-- stm-jekyll/_data/crs/example.md | 6 --- stm-jekyll/demos.md | 6 ++- stm-jekyll/scripts/cr2svg.php | 82 ++++++++++++++++++------------ stm-jekyll/scripts/create_demos.sh | 4 +- 7 files changed, 59 insertions(+), 48 deletions(-) diff --git a/stm-jekyll/_data/crs/1234-bLa.md b/stm-jekyll/_data/crs/1234-bLa.md index d991c851a..8e00e7c67 100644 --- a/stm-jekyll/_data/crs/1234-bLa.md +++ b/stm-jekyll/_data/crs/1234-bLa.md @@ -4,6 +4,7 @@ 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: diff --git a/stm-jekyll/_data/crs/basic.md b/stm-jekyll/_data/crs/basic.md index fb38f567f..358823f26 100644 --- a/stm-jekyll/_data/crs/basic.md +++ b/stm-jekyll/_data/crs/basic.md @@ -4,6 +4,7 @@ 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 index 3cfc08a11..4a10444ae 100644 --- a/stm-jekyll/_data/crs/eressea.md +++ b/stm-jekyll/_data/crs/eressea.md @@ -9,10 +9,5 @@ crs: - 1000-nice.cr - 1000-foe.cr date: 2022-09-08 -layout: crsvg -custom-javascript-list: - - crstuff.js --- -An example with all sorts of stuff that could go on in an Eressea game{% for cr in page.crs %} - - [{{ cr }}]({{ cr | replace: ".cr", ".html" }}) -{% endfor %} +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 index a8d2bbb27..12e71faf4 100644 --- a/stm-jekyll/_data/crs/example.md +++ b/stm-jekyll/_data/crs/example.md @@ -4,11 +4,5 @@ description: A more complex CR crs: - 334-42.cr date: 2022-09-08 -layout: crsvg -custom-javascript-list: - - crstuff.js --- An example with different types of terrains, ships, lighthouses, and a battle. -{% for cr in page.crs %} - - [{{ cr }}]({{ cr | replace: ".cr", ".html" }}) -{% endfor %} diff --git a/stm-jekyll/demos.md b/stm-jekyll/demos.md index 2c22a7f76..38332b08a 100644 --- a/stm-jekyll/demos.md +++ b/stm-jekyll/demos.md @@ -2,6 +2,7 @@ title: Eressea Demo-Reporte --- {% for demo in site.demos %} +{% if demo.list %} ## [{{ demo.name }}]({{ site.baseurl }}{{ demo.url }}) {% if demo.crs.size == 1 %} @@ -11,13 +12,14 @@ CR: CRs: {% endif -%} {% for cr in demo.crs limit:1 -%} -[{{ cr }}]({{ cr | replace: ".cr", ".html" }}) +[{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) (download) {% endfor -%} {% for cr in demo.crs offset:continue -%} -, [{{ cr }}]({{ cr | replace: ".cr", ".html" }}) +, [{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) (download) {% endfor %} {% if demo.description %}{{ demo.description }}{% endif %} +{% endif -%} {% endfor %} diff --git a/stm-jekyll/scripts/cr2svg.php b/stm-jekyll/scripts/cr2svg.php index 08b7b4270..da16b4b23 100644 --- a/stm-jekyll/scripts/cr2svg.php +++ b/stm-jekyll/scripts/cr2svg.php @@ -3,7 +3,7 @@ # include dirname(__FILE__) . "/../vendor/erusev/parsedown/Parsedown.php"; function usage($argv) { - echo "\n Usage: $argv[0] [--html]|[--md input.md] input.cr output.svg\n\n"; + echo "\n Usage: $argv[0] [--html]|[--md input.md][--annotate] input.cr output.svg\n\n"; exit(1); } @@ -13,18 +13,22 @@ function usage($argv) { } $htmlMode = false; +$mdMode = false; +$annotateMode = false; if ($argv[$args] == '--html') { $htmlMode = true; $args++; } else if ($argv[$args] == '--md') { $mdMode = true; $args++; - if (empty($argv[$args])) - usage($argv); $mdName = $argv[$args]; + if (empty($argv[$args])) + usage($argv); $args += 1; +} else if ($argv[$args] == '--annotate') { + $annotateMode = true; + $args++; } - if (empty($argv[$args]) || empty($argv[$args+1])) { usage($argv); } @@ -128,6 +132,7 @@ function get_image($terrain) { $md_template = <<%s
+$annotation2 = << text($details); - // $details = sprintf($description_tag, $details); } if (empty($title)) { $title = basename($inputName); diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh index 676476e64..580b608c0 100644 --- a/stm-jekyll/scripts/create_demos.sh +++ b/stm-jekyll/scripts/create_demos.sh @@ -13,7 +13,9 @@ cp demo/reports/*cr stm-jekyll/_data/crs cd stm-jekyll for filename in _data/crs/*md; do - cp $filename _demos + base=${filename%.*} + basebase=$(basename "$base") + php scripts/cr2svg.php --annotate $base.md _demos/$basebase.md done for filename in _data/crs/*cr; do From f95a41006e62b65a59e4303454e96228db15a205 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Thu, 15 Sep 2022 00:38:40 +0200 Subject: [PATCH 25/26] amend --- stm-jekyll/_data/crs/1234-bLa.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stm-jekyll/_data/crs/1234-bLa.md b/stm-jekyll/_data/crs/1234-bLa.md index 8e00e7c67..abfe922f7 100644 --- a/stm-jekyll/_data/crs/1234-bLa.md +++ b/stm-jekyll/_data/crs/1234-bLa.md @@ -238,7 +238,7 @@ REKRUTIERE 1 NACH o ENDE ``` -Die nächsten 2 Botschafter schicken wir nach Südosten +Die nächsten 2 Botschafter schicken wir nach Südosten. ``` MACHE TEMP de05 BENENNE EINHEIT "Botschafter der DEMOkratie" @@ -299,7 +299,7 @@ LERNE AUTO Holzfällen ENDE ``` -Befehl NÄCHSTER am Ende unserer Befehle fügt Magellan netterweise +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. From c1e413f2139dfe80b516e3bb05a4badefd4cde59 Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Wed, 30 Aug 2023 15:18:34 +0200 Subject: [PATCH 26/26] WIP --- .github/workflows/pages.yml | 15 +++++++-------- stm-jekyll/Gemfile | 21 +++++++++++++-------- stm-jekyll/_config.yml | 1 + stm-jekyll/_data/crs/eressea.md | 2 +- stm-jekyll/_data/crs/example.md | 2 +- stm-jekyll/demos.md | 8 ++++---- stm-jekyll/scripts/create_demos.sh | 18 ++++++++++-------- 7 files changed, 37 insertions(+), 30 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index a59269595..26bf60cb0 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -34,23 +34,22 @@ jobs: run: sudo apt update - name: Install dependencies run: | - sudo apt install 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 + 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@v2 + uses: actions/checkout@v3 with: submodules: true - name: Build and Test - uses: ashutoshvarma/action-cmake-build@master + uses: threeal/cmake-action@v1.1.0 with: build-dir: ${{ runner.workspace }}/server/build - build-type: Debug + args: "-DCMAKE_BUILD_TYPE=Debug" run-test: true - ctest-options: --output-on-failure - name: Setup Pages - uses: actions/configure-pages@v2 + uses: actions/configure-pages@v3 - name: Create demos run: | cd stm-jekyll @@ -61,7 +60,7 @@ jobs: source: ./stm-jekyll destination: ./_site - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v2 # Deployment job deploy: @@ -73,4 +72,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 diff --git a/stm-jekyll/Gemfile b/stm-jekyll/Gemfile index c02400ae3..6d1aab309 100644 --- a/stm-jekyll/Gemfile +++ b/stm-jekyll/Gemfile @@ -8,10 +8,9 @@ source "https://rubygems.org" # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -# gem "jekyll", "~> 3.8.6" - +#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.0" +gem "minima", "~> 2.5" # gem "architect", "~> 0.2.0" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and @@ -21,15 +20,21 @@ gem "github-pages", group: :jekyll_plugins # If you have any plugins, put them here! group :jekyll_plugins do - gem "jekyll-feed", "~> 0.6" + gem "jekyll-feed", "~> 0.12" end -# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library. -install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do - gem "tzinfo", "~> 1.2" +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.0", :install_if => Gem.win_platform? +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 index 502d00a25..a1c641b50 100644 --- a/stm-jekyll/_config.yml +++ b/stm-jekyll/_config.yml @@ -20,6 +20,7 @@ description: >- # this means to ignore newlines until "baseurl:" 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 diff --git a/stm-jekyll/_data/crs/eressea.md b/stm-jekyll/_data/crs/eressea.md index 4a10444ae..47356f022 100644 --- a/stm-jekyll/_data/crs/eressea.md +++ b/stm-jekyll/_data/crs/eressea.md @@ -8,6 +8,6 @@ crs: - 1000-demo.cr - 1000-nice.cr - 1000-foe.cr -date: 2022-09-08 +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 index 12e71faf4..e6a358251 100644 --- a/stm-jekyll/_data/crs/example.md +++ b/stm-jekyll/_data/crs/example.md @@ -3,6 +3,6 @@ name: Demo 001 description: A more complex CR crs: - 334-42.cr -date: 2022-09-08 +date: 2023-08-30 --- An example with different types of terrains, ships, lighthouses, and a battle. diff --git a/stm-jekyll/demos.md b/stm-jekyll/demos.md index 38332b08a..853e212fb 100644 --- a/stm-jekyll/demos.md +++ b/stm-jekyll/demos.md @@ -12,12 +12,12 @@ CR: CRs: {% endif -%} {% for cr in demo.crs limit:1 -%} -[{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) -(download) +[{{ cr }}]({{ site.baseurl }}/demos/{{ cr | replace: ".cr", ".html" }}) +(download) {% endfor -%} {% for cr in demo.crs offset:continue -%} -, [{{ cr }}](demos/{{ cr | replace: ".cr", ".html" }}) -(download) +, [{{ cr }}]({{ site.baseurl }}/demos/{{ cr | replace: ".cr", ".html" }}) +(download) {% endfor %} {% if demo.description %}{{ demo.description }}{% endif %} diff --git a/stm-jekyll/scripts/create_demos.sh b/stm-jekyll/scripts/create_demos.sh index 580b608c0..08e7a14f3 100644 --- a/stm-jekyll/scripts/create_demos.sh +++ b/stm-jekyll/scripts/create_demos.sh @@ -13,17 +13,19 @@ 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 + 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 + 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 + php scripts/cr2svg.php --html "$base.cr" "_demos/$basebase.md" fi + cp "$filename" "_demos/$basebase.cr" done +