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;
+
+$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 %}
+
+ 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;
-
-$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;
+
+$use_tag = <<
+
+
+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 %}
-
- 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 = <<