aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authororwell96 <orwell@bleipb.de>2018-09-14 21:36:59 +0200
committerorwell96 <orwell@bleipb.de>2018-09-14 21:36:59 +0200
commit2596866b7488762c66547fb53db0d8a5eac972cc (patch)
treea7ab44a6c66c828721f35d4eb7baf66fbdb9910a
parentd837e7e5e9d2d6de7903e91b3efc36e0dd032b92 (diff)
downloadadvtrains-2596866b7488762c66547fb53db0d8a5eac972cc.tar.gz
advtrains-2596866b7488762c66547fb53db0d8a5eac972cc.tar.bz2
advtrains-2596866b7488762c66547fb53db0d8a5eac972cc.zip
Add interlocking guide/manual, silence debug outputs
-rw-r--r--advtrains/init.lua6
-rw-r--r--assets/interlocking.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___s_assets_lyx_img_screenshot_20180830_142551.pngbin0 -> 257012 bytes
-rw-r--r--assets/interlocking.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-26-35.pngbin0 -> 392215 bytes
-rw-r--r--assets/interlocking.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-32-48.pngbin0 -> 467151 bytes
-rw-r--r--assets/interlocking.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-27-25.pngbin0 -> 58974 bytes
-rw-r--r--assets/interlocking.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-28-32.pngbin0 -> 180489 bytes
-rw-r--r--assets/interlocking.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-51-25.pngbin0 -> 298898 bytes
-rw-r--r--assets/interlocking.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_assign_signal.pngbin0 -> 117671 bytes
-rw-r--r--assets/interlocking.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex1.pngbin0 -> 7668 bytes
-rw-r--r--assets/interlocking.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex2.pngbin0 -> 9374 bytes
-rw-r--r--assets/interlocking.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex3.pngbin0 -> 11544 bytes
-rw-r--r--assets/interlocking.html.LyXconv/interlocking.css141
-rw-r--r--assets/interlocking.html.LyXconv/interlocking.html558
-rw-r--r--assets/interlocking.lyx1157
-rw-r--r--assets/interlocking.lyx~1109
-rw-r--r--assets/lyx_img/Bildschirmfoto_2018-08-30_14-26-35.pngbin0 -> 392215 bytes
-rw-r--r--assets/lyx_img/Bildschirmfoto_2018-08-30_14-27-25.pngbin0 -> 58974 bytes
-rw-r--r--assets/lyx_img/Bildschirmfoto_2018-08-30_14-28-32.pngbin0 -> 180489 bytes
-rw-r--r--assets/lyx_img/Bildschirmfoto_2018-08-30_14-32-48.pngbin0 -> 467151 bytes
-rw-r--r--assets/lyx_img/Bildschirmfoto_2018-08-30_14-51-25.pngbin0 -> 298898 bytes
-rw-r--r--assets/lyx_img/assign_signal.pngbin0 -> 117671 bytes
-rw-r--r--assets/lyx_img/route_ex1.pngbin0 -> 7668 bytes
-rw-r--r--assets/lyx_img/route_ex2.pngbin0 -> 9374 bytes
-rw-r--r--assets/lyx_img/route_ex3.pngbin0 -> 11544 bytes
-rw-r--r--assets/lyx_img/screenshot_20180830_142551.pngbin0 -> 257012 bytes
-rw-r--r--assets/manual.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-43-29.pngbin0 -> 9345 bytes
-rw-r--r--assets/manual.html.LyXconv/10_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-48-54.pngbin0 -> 14032 bytes
-rw-r--r--assets/manual.html.LyXconv/11_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-50-27.pngbin0 -> 4246 bytes
-rw-r--r--assets/manual.html.LyXconv/12_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-51-02.pngbin0 -> 3704 bytes
-rw-r--r--assets/manual.html.LyXconv/13_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-39.pngbin0 -> 6880 bytes
-rw-r--r--assets/manual.html.LyXconv/14_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-20.pngbin0 -> 10375 bytes
-rw-r--r--assets/manual.html.LyXconv/15_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-33-09.pngbin0 -> 3496 bytes
-rw-r--r--assets/manual.html.LyXconv/16_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-42-49.pngbin0 -> 25657 bytes
-rw-r--r--assets/manual.html.LyXconv/17_home_moritz_Home_Projekte_Minetest_minetest____ssets_manual_img_screenshot_20161203_231622.pngbin0 -> 108256 bytes
-rw-r--r--assets/manual.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-12.pngbin0 -> 72813 bytes
-rw-r--r--assets/manual.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-57.pngbin0 -> 105448 bytes
-rw-r--r--assets/manual.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-05-51.pngbin0 -> 93538 bytes
-rw-r--r--assets/manual.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-07-13.pngbin0 -> 83521 bytes
-rw-r--r--assets/manual.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-56-34.pngbin0 -> 2789 bytes
-rw-r--r--assets/manual.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-08-02.pngbin0 -> 107762 bytes
-rw-r--r--assets/manual.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-09-01.pngbin0 -> 112579 bytes
-rw-r--r--assets/manual.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-10-15.pngbin0 -> 114075 bytes
-rw-r--r--assets/manual.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-45-38.pngbin0 -> 16695 bytes
-rw-r--r--assets/manual.html.LyXconv/manual.css112
-rw-r--r--assets/manual.html.LyXconv/manual.html236
45 files changed, 3316 insertions, 3 deletions
diff --git a/advtrains/init.lua b/advtrains/init.lua
index 92f8a9c..a02b377 100644
--- a/advtrains/init.lua
+++ b/advtrains/init.lua
@@ -108,9 +108,9 @@ sid=function(id) if id then return string.sub(id, -6) end end
--ONLY use this function for temporary debugging. for consistent debug prints use atprint
atdebug=function(t, ...)
- local text=advtrains.print_concat_table({t, ...})
- minetest.log("action", "[advtrains]"..text)
- minetest.chat_send_all("[advtrains]"..text)
+-- local text=advtrains.print_concat_table({t, ...})
+-- minetest.log("action", "[advtrains]"..text)
+-- minetest.chat_send_all("[advtrains]"..text)
end
if minetest.settings:get_bool("advtrains_enable_debugging") then
diff --git a/assets/interlocking.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___s_assets_lyx_img_screenshot_20180830_142551.png b/assets/interlocking.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___s_assets_lyx_img_screenshot_20180830_142551.png
new file mode 100644
index 0000000..77e05f8
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___s_assets_lyx_img_screenshot_20180830_142551.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-26-35.png b/assets/interlocking.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-26-35.png
new file mode 100644
index 0000000..468ce25
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-26-35.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-32-48.png b/assets/interlocking.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-32-48.png
new file mode 100644
index 0000000..c3aa984
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-32-48.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-27-25.png b/assets/interlocking.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-27-25.png
new file mode 100644
index 0000000..82253bc
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-27-25.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-28-32.png b/assets/interlocking.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-28-32.png
new file mode 100644
index 0000000..0cbed7d
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-28-32.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-51-25.png b/assets/interlocking.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-51-25.png
new file mode 100644
index 0000000..1091455
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-51-25.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_assign_signal.png b/assets/interlocking.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_assign_signal.png
new file mode 100644
index 0000000..cd97f05
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_assign_signal.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex1.png b/assets/interlocking.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex1.png
new file mode 100644
index 0000000..048294d
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex1.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex2.png b/assets/interlocking.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex2.png
new file mode 100644
index 0000000..ed14540
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex2.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex3.png b/assets/interlocking.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex3.png
new file mode 100644
index 0000000..fdcc785
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex3.png
Binary files differ
diff --git a/assets/interlocking.html.LyXconv/interlocking.css b/assets/interlocking.html.LyXconv/interlocking.css
new file mode 100644
index 0000000..461af3c
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/interlocking.css
@@ -0,0 +1,141 @@
+
+/* start css.sty */
+.ecsx-1728{font-size:170%; font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecst-1440{font-size:140%;}
+.ecsx-1200{font-size:120%; font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; }
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.figure img.graphics {margin-left:10%;}
+/* end css.sty */
+
diff --git a/assets/interlocking.html.LyXconv/interlocking.html b/assets/interlocking.html.LyXconv/interlocking.html
new file mode 100644
index 0000000..98f5ac9
--- /dev/null
+++ b/assets/interlocking.html.LyXconv/interlocking.html
@@ -0,0 +1,558 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="interlocking.tex">
+<link rel="stylesheet" type="text/css" href="interlocking.css">
+</head><body
+>
+<!--l. 18--><p class="noindent" >
+
+
+<!--l. 18--><p class="noindent" ><span
+class="ecsx-1728">Interlocking</span>
+<span
+class="ecsx-1728">System</span>
+<span
+class="ecsx-1728">Guide</span>
+<div class="tabular"> <table id="TBL-1" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-1-1g"><col
+id="TBL-1-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"
+class="td00"></td></tr></table>
+</div>
+<a
+ id="x1-2r1"></a>
+ <!--l. 20--><p class="noindent" ><span
+class="ecsx-1200">1</span> <span
+class="ecsx-1200">Introduction</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 22--><p class="noindent" >In real-world railways, a so-called interlocking system is a set of railway signals and trackside equipment. Its purpose is to prevent
+conflicting train movements which otherwise could result in derailing or colliding trains. If you want more information, just search for
+&#8220;railway interlocking&#8221; on the internet.
+<!--l. 28--><p class="noindent" >Real-world interlocking systems perform this task by setting routes. A route is a path along a track that a train can safely pass. To set a
+route for a train, the signalman (the operator of a signal box) has to set switches (turnouts) to the correct position and lock them in order
+to make a signal for a train show &#8220;Proceed&#8221;. In newer systems, this is done automatically by the interlocking system. A route can
+not be set if switches are locked to a wrong position by another route or if any portion of the route is occupied by a
+train.
+<!--l. 37--><p class="noindent" >The interlocking system in this Minetest mod tries to follow real-world interlocking systems as far as applicable. It divides tracks into
+track sections and implements a route setting mechanism following the same principle.
+<!--l. 42--><p class="noindent" >However, for the sake of simplicity of implementation and usage, not all concepts of real-world interlocking have been taken over.
+Especially, there is no mechanism for overlap.
+<!--l. 46--><p class="noindent" >If you are looking for a place to learn how real-world interlocking systems work, have a look at &#8220;SimSig&#8221;. By looking at their simulations,
+you can obtain experience on how to set up your own interlocking systems in AdvTrains. The SimSig glossary is a good place to look up
+unknown terms in this document.
+<!--l. 52--><p class="noindent" >
+<a
+ id="x1-3r2"></a>
+ <!--l. 52--><p class="noindent" ><span
+class="ecsx-1200">2</span> <span
+class="ecsx-1200">Setting</span>
+ <span
+class="ecsx-1200">up</span>
+ <span
+class="ecsx-1200">track</span>
+ <span
+class="ecsx-1200">sections</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 54--><p class="noindent" >In the real world, a line of track is divided into so-called track sections, or track circuits. Those systems often can not tell
+where exactly a train is, but only which track sections it occupies. A route can never be set through an occupied track
+section.
+<!--l. 59--><p class="noindent" >A track section often covers:
+ <ul class="itemize1">
+ <li class="itemize">A section on a main running line, between two signals
+ </li>
+ <li class="itemize">A single turnout
+ </li>
+ <li class="itemize">A rail crossing, or a set of turnouts acting as a double/single slip switch
+ </li>
+ <li class="itemize">A siding</li></ul>
+<!--l. 67--><p class="noindent" >You will find some examples on how to interlock certain patterns later.
+<!--l. 69--><p class="noindent" >
+<a
+ id="x1-4r1"></a>
+ <!--l. 69--><p class="noindent" ><span
+class="ecsx-1200">2.1</span> <span
+class="ecsx-1200">Track</span>
+ <span
+class="ecsx-1200">Circuit</span>
+ <span
+class="ecsx-1200">Breaks</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 71--><p class="noindent" >In this mod, you will not directly configure the locations of track sections. Instead, you designate the borders of each track section using a
+special node, the Track Circuit Break, abbreviated TCB.
+<!--l. 75--><p class="noindent" >For example, if you want to create a track section for a piece of a main running line, you set up two TCBs at the ends of this track
+circuit.
+<!--l. 79--><p class="noindent" >Setting up a TCB works as follows:
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-6x1">Place a TCB node somewhere near the place where the circuit break is going to be located.
+ </li>
+ <li
+ class="enumerate" id="x1-8x2">Right-click the TCB node
+ </li>
+ <li
+ class="enumerate" id="x1-10x3">Punch the rail which should act as TCB</li></ol>
+<!--l. 86--><p class="noindent" >The result should look like this:
+<!--l. 88--><p class="noindent" ><img
+src="0_home_moritz_Home_Projekte_Minetest_minetest_m___s_assets_lyx_img_screenshot_20180830_142551.png" alt="PIC"
+>
+<!--l. 90--><p class="noindent" >Now you have assigned the TCB node to a rail. Right-click the TCB node once again. This will bring up a form which looks as
+follows:
+<!--l. 93--><p class="noindent" ><img
+src="1_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-26-35.png" alt="PIC"
+>
+<!--l. 95--><p class="noindent" >You see that the form is divided in side A and side B. To designate where each side is, a marker is displayed on the rail. You can always
+make this marker show up by punching the TCB node, and remove it by punching the marker. Both sides are shown as &#8220;End of
+interlocking&#8221;. This means that there is no track section set up at this place.
+<!--l. 101--><p class="noindent" >You should repeat this procedure once again a few meters away from the first TCB to create a second TCB on the same
+track.
+<!--l. 104--><p class="noindent" ><img
+src="2_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-32-48.png" alt="PIC"
+>
+<!--l. 106--><p class="noindent" >Once you have both bordering TCBs set up, you can now create the actual track section. To do this:
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-12x1">Right-click one of the TCBs
+ </li>
+ <li
+ class="enumerate" id="x1-14x2">Locate the correct side (A or B) to create the track section
+ </li>
+ <li
+ class="enumerate" id="x1-16x3">Click &#8220;Create interlocked Track Section&#8221; in the formspec on the chosen side.</li></ol>
+<!--l. 114--><p class="noindent" >Now, the text on the formspec has changed. It shows something like this:
+<!--l. 117--><p class="noindent" ><img
+src="3_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-27-25.png" alt="PIC"
+>
+<!--l. 119--><p class="noindent" >Clicking &#8220;Show Track Section&#8221; brings up another formspec:
+<!--l. 121--><p class="noindent" ><img
+src="4_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-28-32.png" alt="PIC"
+>
+<!--l. 123--><p class="noindent" >On the top, you see a list of all TCBs that border this track section. In your case, there should be two TCBs listed. If there&#8217;s only one,
+head over to <a
+href="#x1-17r2">2.2<!--tex4ht:ref: subsec:Long-track-sections, --></a>. You should now select a name for the track section, to identify it later.
+<!--l. 128--><p class="noindent" >The same procedure is applicable when you create a turnout track section, except that you have to set up three or more
+TCBs.
+<!--l. 131--><p class="noindent" >The AdvTrains interlocking system allows you to add more TCBs after you have created a track section. This works without problems in
+most cases. For example, you can easily insert a turnout into an already set-up track section and create another TCB behind it, and
+AdvTrains will automatically detect the existing track section. Problems arise only if you try to insert a TCB in-between a section, in
+which case both sides of the TCB will end up assigned to the same section. The code currently does not handle this case properly, so try
+to avoid this situation by all means. As a last resort, you can always dissolve a faulty track section, as described in the next
+chapter.
+<!--l. 142--><p class="noindent" >
+<a
+ id="x1-17r2"></a>
+ <!--l. 142--><p class="noindent" ><span
+class="ecsx-1200">2.2</span> <span
+class="ecsx-1200">Long</span>
+ <span
+class="ecsx-1200">track</span>
+ <span
+class="ecsx-1200">sections,</span>
+ <span
+class="ecsx-1200">crossings</span>
+ <span
+class="ecsx-1200">and</span>
+ <span
+class="ecsx-1200">other</span>
+ <span
+class="ecsx-1200">edge</span>
+ <span
+class="ecsx-1200">cases</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 144--><p class="noindent" >
+<a
+ id="x1-18r1"></a>
+ <!--l. 144--><p class="noindent" ><span
+class="ecsx-1000">2.2.1</span> <span
+class="ecsx-1000">Very</span>
+ <span
+class="ecsx-1000">long</span>
+ <span
+class="ecsx-1000">track</span>
+ <span
+class="ecsx-1000">sections</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 146--><p class="noindent" >If you try to set up a track section that is longer than 1000 nodes, advtrains won&#8217;t recognize the TCB at the other end because of a safety
+limit in the traverser function, which is supposed to prevent deadlocks. This case has happened when the Track Section overview screen
+only shows one TCB in the list. The procedure for this is as follows:
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-20x1">Go to the second TCB (the one that wasn&#8217;t recognized). It should show &#8220;End of Interlocking&#8221; on the relevant side.
+ </li>
+ <li
+ class="enumerate" id="x1-22x2">Click &#8220;Create interlocked track section&#8221;. The section created will be different from the one that is already present.
+ </li>
+ <li
+ class="enumerate" id="x1-24x3">In the track section overview, click &#8220;Join into other section&#8221;
+ </li>
+ <li
+ class="enumerate" id="x1-26x4">Go back to the first TCB, bring up the Track Section overview screen of the first track section and click &#8220;Join with ???&#8221;</li></ol>
+<!--l. 160--><p class="noindent" >The other, missing TCB should now appear in the list. If you accidentally started such a joining procedure, click the &#8220;X&#8221; button on the
+right.
+<!--l. 164--><p class="noindent" >
+<a
+ id="x1-27r2"></a>
+ <!--l. 164--><p class="noindent" ><span
+class="ecsx-1000">2.2.2</span> <span
+class="ecsx-1000">Rail</span>
+ <span
+class="ecsx-1000">crosses</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 166--><p class="noindent" >Since rail crosses are created by laying tracks across each other without logical connection, there&#8217;s no way for advtrains to know whether
+rails cross each other.
+<!--l. 170--><p class="noindent" >Rail crossings in interlocking systems are always one single track section, which in most cases has 4 TCBs adjacent.
+<!--l. 173--><p class="noindent" ><img
+src="5_home_moritz_Home_Projekte_Minetest_minetest_m____lyx_img_Bildschirmfoto_2018-08-30_14-51-25.png" alt="PIC"
+>
+<!--l. 175--><p class="noindent" >The procedure is quite similar to the one for long sections: First, create two track sections for the branches, and then use the &#8220;Join&#8221;
+function to merge both sections into one.
+<!--l. 179--><p class="noindent" >
+<a
+ id="x1-28r3"></a>
+ <!--l. 179--><p class="noindent" ><span
+class="ecsx-1000">2.2.3</span> <span
+class="ecsx-1000">Deleting</span>
+ <span
+class="ecsx-1000">and</span>
+ <span
+class="ecsx-1000">re-adding</span>
+ <span
+class="ecsx-1000">single</span>
+ <span
+class="ecsx-1000">TCBs</span>
+ <span
+class="ecsx-1000">to</span>
+ <span
+class="ecsx-1000">a</span>
+ <span
+class="ecsx-1000">section</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 181--><p class="noindent" >In some occasions, for example when you remove a siding or a crossover, it can be necessary to unassign a TCB from a track section.
+There are multiple ways to do this:
+ <ul class="itemize1">
+ <li class="itemize">In the TCB form, click the &#8220;Remove from section&#8221; button
+ </li>
+ <li class="itemize">In the track section form, first select the TCB in the list and then click &#8220;Unlink selected TCB&#8221;</li></ul>
+<!--l. 189--><p class="noindent" >The result is that the TCB shows &#8220;End of Interlocking&#8221; and the section does not list the TCB as an endpoint anymore.
+<!--l. 192--><p class="noindent" >The other case is adding a siding or a crossover, in which case one or more TCBs still show &#8220;End of Interlocking&#8221; although they should be
+part of a section:
+ <ul class="itemize1">
+ <li class="itemize">Go to another TCB that is registered in the track section and click &#8220;Update near TCBs&#8221;
+ </li>
+ <li class="itemize">If that did not work, follow the procedure of creating a long track section</li></ul>
+<!--l. 202--><p class="noindent" >
+<a
+ id="x1-29r4"></a>
+ <!--l. 202--><p class="noindent" ><span
+class="ecsx-1000">2.2.4</span> <span
+class="ecsx-1000">Dissolving</span>
+ <span
+class="ecsx-1000">sections</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 204--><p class="noindent" >If you made a mistake setting up something and you don&#8217;t see any other way to fix a misconfigured track section, you can always
+delete it using the &#8220;Dissolve section&#8221; button. This operation removes the track section and sets all TCBs that previously
+belonged to the section as &#8220;End of Interlocking&#8221;. This will always work and lets you start over new with setting up track
+sections.
+<!--l. 211--><p class="noindent" >
+<a
+ id="x1-30r3"></a>
+ <!--l. 211--><p class="noindent" ><span
+class="ecsx-1200">2.3</span> <span
+class="ecsx-1200">Interlocking</span>
+ <span
+class="ecsx-1200">patterns</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 213--><p class="noindent" >This section shows some examples on how you should set up track sections on certain track configurations.
+<!--l. 216--><p class="noindent" >
+<a
+ id="x1-31r3"></a>
+ <!--l. 216--><p class="noindent" ><span
+class="ecsx-1200">3</span> <span
+class="ecsx-1200">Signals</span>
+ <span
+class="ecsx-1200">and</span>
+ <span
+class="ecsx-1200">routes</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 218--><p class="noindent" >The purpose of signals is to inform trains about whether they can proceed into the next section safely. Making a section of track safe to
+pass for a train, turnouts need to be set to the correct position and no other train should be allowed to cross or share parts of the route
+with this train.
+<!--l. 224--><p class="noindent" >
+<a
+ id="x1-32r1"></a>
+ <!--l. 224--><p class="noindent" ><span
+class="ecsx-1200">3.1</span> <span
+class="ecsx-1200">Assigning</span>
+ <span
+class="ecsx-1200">Signals</span>
+ <span
+class="ecsx-1200">to</span>
+ <span
+class="ecsx-1200">TCBs</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 226--><p class="noindent" >Signals in the advtrains interlocking system are positioned - like in real life - at the border of track sections.
+<!--l. 229--><p class="noindent" >When you set up a signal, do the following steps:
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-34x1">If not already happened, set up a TCB (you don&#8217;t need to, but are advised to, configure track sections there)
+ </li>
+ <li
+ class="enumerate" id="x1-36x2">Place the signal a few meters in front of the TCB, so that trains stopping at the signal do never pass the TCB
+ </li>
+ <li
+ class="enumerate" id="x1-38x3">Locate the side of the TCB which points in the direction that trains will proceed past the signal, as shown in the figure
+ below.
+ </li>
+ <li
+ class="enumerate" id="x1-40x4">Right-click the TCB, and click &#8220;Assign a signal&#8221; on this side.
+ </li>
+ <li
+ class="enumerate" id="x1-42x5">Punch the signal.</li></ol>
+<!--l. 240--><p class="noindent" ><img
+src="6_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_assign_signal.png" alt="PIC"
+>
+<!--l. 242--><p class="noindent" >You can assign a signal to each side of a TCB. This is, for example, useful when creating block sections on a bi-directional main running
+line.
+<!--l. 246--><p class="noindent" >
+<a
+ id="x1-43r2"></a>
+ <!--l. 246--><p class="noindent" ><span
+class="ecsx-1200">3.2</span> <span
+class="ecsx-1200">The</span>
+ <span
+class="ecsx-1200">concept</span>
+ <span
+class="ecsx-1200">of</span>
+ <span
+class="ecsx-1200">routes</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 248--><p class="noindent" >A so-called route is a locked path between two signals, which locks all turnouts in the correct position.
+<!--l. 251--><p class="noindent" >Example: Imagine a station with 2 platforms on a single track running line. We are looking at signal A. You probably want trains coming
+from the right to go into platform 1 or into platform 2, so you need to program 2 routes.
+<!--l. 256--><p class="noindent" ><img
+src="7_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex1.png" alt="PIC"
+>
+<!--l. 258--><p class="noindent" >This leads us to the most important aspect of route programming: Routes always start at a signal (A) and end at a signal facing in the
+<span
+class="ecbx-1000">same direction </span>(D and E), not at an opposite-facing signal (B and C). There are only few exceptions, we&#8217;ll cover this
+later.
+<!--l. 263--><p class="noindent" >When you set a route to make a train proceed on it, the interlocking system ensures that:
+ <ul class="itemize1">
+ <li class="itemize">There are no rail vehicles on the route
+ </li>
+ <li class="itemize">All turnouts are set to the correct position and it is impossible to move them
+ </li>
+ <li class="itemize">No other routes can be set that would in any way conflict with this route</li></ul>
+<!--l. 272--><p class="noindent" >For this to work, you need to specify all track sections the train will pass along, as well as the positions of all turnouts that need to be
+locked. Those are not only the turnouts that lay directly on the train&#8217;s route, but also some turnouts on adjacent tracks, the so-called
+flank protection.
+<!--l. 278--><p class="noindent" >The purpose of flank protection is to prevent runaway trains and/or wagons to pass into a route. This is achieved by setting nearby
+turnouts to a position that points &#8220;away&#8221; from the route. Example:
+<!--l. 282--><p class="noindent" ><img
+src="8_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex2.png" alt="PIC"
+>
+<!--l. 284--><p class="noindent" >The upper turnout, of course, needs to be locked in straight (normal) position, while the lower one is not relevant for the route itself. But
+what if the lower turnout was set to the diverging (reverse) position and the driver of another train approaching signal B fails to see the
+red light? This train would crash into the first one. To minimise danger, that other train would need to be routed towards signal
+D.
+<!--l. 291--><p class="noindent" >There are, of course, situations, where both positions of a turnout would conflict with a route equally. In those situations, there&#8217;s nothing
+you can do and no flank lock needs to be set.
+<!--l. 295--><p class="noindent" >
+<a
+ id="x1-44r3"></a>
+ <!--l. 295--><p class="noindent" ><span
+class="ecsx-1200">3.3</span> <span
+class="ecsx-1200">Shunt</span>
+ <span
+class="ecsx-1200">routes</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 297--><p class="noindent" >Operating railways is not all about driving trains around. Coupling, decoupling and moving single engines, wagons or groups of wagons
+across a station, called shunting, also plays an important role.
+<!--l. 301--><p class="noindent" >Remember what we said about routes: There must be no rail vehicles on the route. So what if you have some goods wagons
+ready on a siding, and want to couple an engine to it? You can not set a regular route into the siding, because it is
+occupied.
+<!--l. 306--><p class="noindent" >The solution is to program a second route into the siding, but with the difference that it already ends at the rear-facing signal of it, so it
+doesn&#8217;t include the siding section itself:
+<!--l. 310--><p class="noindent" ><img
+src="9_home_moritz_Home_Projekte_Minetest_minetest_mods_advtrains_assets_lyx_img_route_ex3.png" alt="PIC"
+>
+<!--l. 312--><p class="noindent" >The Sht2 route then needs to show a shunt aspect, which instructs the driver to proceed slowly and watch out for vehicles on the route.
+To show a &#8220;free&#8221; aspect here would be wrong, because that would mean that the track is free until the next main signal, which it is clearly
+not.
+<!--l. 320--><p class="noindent" ><span
+class="ecti-1000">Note that advtrains_interlocking currently does not allow to set individual aspects for routes, this is a feature still to be implemented</span>
+<span
+class="ecti-1000">soon.</span>
+<!--l. 322--><p class="noindent" >Shunt routes like this are, so far, the only exception to the &#8220;Routes should end at a signal facing the same direction&#8221;
+rule.
+<!--l. 325--><p class="noindent" >
+<a
+ id="x1-45r4"></a>
+ <!--l. 325--><p class="noindent" ><span
+class="ecsx-1200">3.4</span> <span
+class="ecsx-1200">Route</span>
+ <span
+class="ecsx-1200">Release</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 327--><p class="noindent" >In early real-life interlocking systems, routes either had to be cancelled by the signalman after the train had passed the route, or there was
+a single release contact at the end of the route. However, as interlocking systems evolved and the position of trains is now
+roughly known by the track sections, portions of the route can be freed as soon as the train has left the corresponding
+section.
+<!--l. 334--><p class="noindent" >AdvTrains has chosen a modern approach to route releasing. Each turnout lock is associated to a track section belonging to the route&#8217;s
+path. Once the train leaves this section, all assigned locks are also freed.
+<!--l. 338--><p class="noindent" >
+<a
+ id="x1-46r5"></a>
+ <!--l. 338--><p class="noindent" ><span
+class="ecsx-1200">3.5</span> <span
+class="ecsx-1200">Programming</span>
+ <span
+class="ecsx-1200">a</span>
+ <span
+class="ecsx-1200">route</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 340--><p class="noindent" >The route programming procedure is quite straightforward if you&#8217;ve read the previous sections and understood how routes should be
+set.
+<!--l. 343--><p class="noindent" >Routes always start at a signal. You must have assigned the signal to a TCB, as described earlier.
+<!--l. 346--><p class="noindent" >When you right-click the signal, it no longer changes its aspect. Instead, a formspec pops up, showing you an (empty) list of routes with
+the possibility to set them or to create new routes. Click the &#8220;Create new route&#8221; button to start programming a new
+route.
+<!--l. 351--><p class="noindent" >The form closes, and an arrow is displayed on the TCB. You are now in &#8220;Route Programming&#8221; mode, programming the first track section
+of the route. Now:
+ <ul class="itemize1">
+ <li class="itemize">Put any turnouts you need to lock in the correct position (e.g. by right-clicking them). This includes flank protection.
+ </li>
+ <li class="itemize">Punch them. This makes a marker saying &#8220;Route Lock Editing&#8221; appear.
+ </li>
+ <li class="itemize">If you punch a turnout again, or punch the marker, you can remove the lock again.
+ </li>
+ <li class="itemize">When you&#8217;ve locked all turnouts in the current section, go to and punch the TCB that is the border to the next track
+ section the train proceeds into.</li></ul>
+<!--l. 364--><p class="noindent" >Once you&#8217;ve done this, the lock markers change to &#8220;Route Lock&#8221;, telling they can&#8217;t be changed anymore. Repeat the above procedure until
+you have punched the final TCB, at which the route should end. As mentioned before, there should be a signal at this place,
+however this is not enforced. Now, run the chat command <span
+class="ectt-1000">/at_rp_set &#x003C;name of route&#x003E; </span>to complete programming the
+route.
+<!--l. 371--><p class="noindent" >A few hints:
+ <ul class="itemize1">
+ <li class="itemize">If one turnout should be locked by more than one section, set the lock only in the <span
+class="ectt-1000">last </span>of those sections. Locking the same
+ turnout in multiple sections of a single route results in undefined behavior!
+ </li>
+ <li class="itemize">If you accidentally punched a TCB, you can run <span
+class="ectt-1000">/at_rp_back </span>to undo this and return to the previous section. Due to a
+ bug, you have to re-set all locks of this section.
+ </li>
+ <li class="itemize">If you want to stop programming the entire route without saving it, run <span
+class="ectt-1000">/at_rp_discard</span></li></ul>
+<!--l. 384--><p class="noindent" >
+<a
+ id="x1-47r4"></a>
+ <!--l. 384--><p class="noindent" ><span
+class="ecsx-1200">4</span> <span
+class="ecsx-1200">Interlocking</span>
+ <span
+class="ecsx-1200">system</span>
+ <span
+class="ecsx-1200">operation</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 386--><p class="noindent" >Setting up the interlocking for a portion of a railway network requires some time, experience and planning, but once done, there&#8217;s not
+much to do anymore to make trains run on your, now safer, railway. This section covers some useful practices to route trains across your
+network.
+<!--l. 391--><p class="noindent" >At the moment, routes can only be set by clicking the signal or via LuaATC, except if you use automatic working. It is planned to control
+this via the onboard computer and via a &#8220;signal box&#8221; view based on the currently broken itrainmap.
+<!--l. 396--><p class="noindent" >
+<a
+ id="x1-48r1"></a>
+ <!--l. 396--><p class="noindent" ><span
+class="ecsx-1200">4.1</span> <span
+class="ecsx-1200">Simple</span>
+ <span
+class="ecsx-1200">route</span>
+ <span
+class="ecsx-1200">setting</span>
+ <span
+class="ecsx-1200">and</span>
+ <span
+class="ecsx-1200">cancelling</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 398--><p class="noindent" >To set a route, simply right-click the signal, select a route and click &#8220;set route&#8221;. If there are no conflicts, the signal turns green and the
+train is allowed to proceed.
+<!--l. 402--><p class="noindent" >It may be possible that the route can not be set, because one or more other routes conflict with the current one, or a section is blocked. In
+this case, the signal stays red, and the conflicting item is shown in the formspec. As soon as the conflict is resolved (by cancellation
+or release of the conflicting route, or the section becoming free), the requested route will be set and the signal turns
+green.
+<!--l. 409--><p class="noindent" >If a route is either requested or set, it can be cancelled from the signalling formspec. This means that all turnouts and sections are
+released, and the signal reverts back to red. This of course only works when the train has not passed the signal yet. There is no
+mechanism for Approach Locking.
+<!--l. 415--><p class="noindent" >
+<a
+ id="x1-49r2"></a>
+ <!--l. 415--><p class="noindent" ><span
+class="ecsx-1200">4.2</span> <span
+class="ecsx-1200">Automatic</span>
+ <span
+class="ecsx-1200">Working</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 417--><p class="noindent" >Block signals on main running lines usually only have a single route to set, the one proceeding along the main line. Their purpose is only
+to show whether there are trains in the next section. So, it would be convenient if this only route would set itself again after a train
+passed.
+<!--l. 423--><p class="noindent" >This is what Automatic Working is for. Set a route, click &#8220;Enable Automatic Working&#8221;, and as soon as a train passes, the route is
+automatically re-set.
+<!--l. 427--><p class="noindent" >This function is nearly identical to SimSig automatic signals. It can also be useful on a line with high traffic, when there&#8217;s a
+low-frequented access to a siding. You&#8217;d enable automatic working for the main route and cancel it only when you need a train to go into
+the siding.
+<!--l. 432--><p class="noindent" >
+<a
+ id="x1-50r5"></a>
+ <!--l. 432--><p class="noindent" ><span
+class="ecsx-1200">5</span> <span
+class="ecsx-1200">Final</span>
+ <span
+class="ecsx-1200">notes</span>
+<a
+ id="Q1-1-0"></a>
+<!--l. 434--><p class="noindent" >The interlocking system is mainly finished, though there are still some plans and ideas. They include:
+ <ul class="itemize1">
+ <li class="itemize">Setting routes from inside a train (via onboard computer)
+ </li>
+ <li class="itemize">Signalbox panels, as revival of itrainmap
+ </li>
+ <li class="itemize">Individual signal aspects for routes
+ </li>
+ <li class="itemize">Distant signals
+ </li>
+ <li class="itemize">On-Train head-up display for oncoming signals (they have something like this in Czech Republic, I forgot how it&#8217;s called.)</li></ul>
+<!--l. 444--><p class="noindent" >Apart from this, there&#8217;s the large oncoming project of a new timetable-based train automation system, but this will take some time to
+evolve and is out of the scope of this document.
+<!--l. 448--><p class="noindent" >If you have any suggestions, corrections, improvements, criticism or cute kittens and stuff, you can always contact me by various means
+(Forum PM, E-Mail (orwell@bleipb.de), Linuxworks server chat a.s.o.). Have fun!
+<!--l. 453--><p class="noindent" >- orwell
+</body></html>
+
+
+
diff --git a/assets/interlocking.lyx b/assets/interlocking.lyx
new file mode 100644
index 0000000..9e9e94f
--- /dev/null
+++ b/assets/interlocking.lyx
@@ -0,0 +1,1157 @@
+#LyX 2.2 created this file. For more info see http://www.lyx.org/
+\lyxformat 508
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass paper
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry true
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 1cm
+\topmargin 1cm
+\rightmargin 1cm
+\bottommargin 1cm
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation 0bp
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Title
+Minetest Mod - Advanced Trains [advtrains]
+\end_layout
+
+\begin_layout Title
+Interlocking System Guide
+\end_layout
+
+\begin_layout Section
+Introduction
+\end_layout
+
+\begin_layout Standard
+In real-world railways, a so-called interlocking system is a set of railway
+ signals and trackside equipment.
+ Its purpose is to prevent conflicting train movements which otherwise could
+ result in derailing or colliding trains.
+ If you want more information, just search for
+\begin_inset Quotes eld
+\end_inset
+
+railway interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ on the internet.
+\end_layout
+
+\begin_layout Standard
+Real-world interlocking systems perform this task by setting routes.
+ A route is a path along a track that a train can safely pass.
+ To set a route for a train, the signalman (the operator of a signal box)
+ has to set switches (turnouts) to the correct position and lock them in
+ order to make a signal for a train show
+\begin_inset Quotes eld
+\end_inset
+
+Proceed
+\begin_inset Quotes erd
+\end_inset
+
+.
+ In newer systems, this is done automatically by the interlocking system.
+ A route can not be set if switches are locked to a wrong position by another
+ route or if any portion of the route is occupied by a train.
+\end_layout
+
+\begin_layout Standard
+The interlocking system in this Minetest mod tries to follow real-world
+ interlocking systems as far as applicable.
+ It divides tracks into track sections and implements a route setting mechanism
+ following the same principle.
+\end_layout
+
+\begin_layout Standard
+However, for the sake of simplicity of implementation and usage, not all
+ concepts of real-world interlocking have been taken over.
+ Especially, there is no mechanism for overlap.
+\end_layout
+
+\begin_layout Standard
+If you are looking for a place to learn how real-world interlocking systems
+ work, have a look at
+\begin_inset Quotes eld
+\end_inset
+
+SimSig
+\begin_inset Quotes erd
+\end_inset
+
+.
+ By looking at their simulations, you can obtain experience on how to set
+ up your own interlocking systems in AdvTrains.
+ The SimSig glossary is a good place to look up unknown terms in this document.
+\end_layout
+
+\begin_layout Section
+Setting up track sections
+\end_layout
+
+\begin_layout Standard
+In the real world, a line of track is divided into so-called track sections,
+ or track circuits.
+ Those systems often can not tell where exactly a train is, but only which
+ track sections it occupies.
+ A route can never be set through an occupied track section.
+\end_layout
+
+\begin_layout Standard
+A track section often covers:
+\end_layout
+
+\begin_layout Itemize
+A section on a main running line, between two signals
+\end_layout
+
+\begin_layout Itemize
+A single turnout
+\end_layout
+
+\begin_layout Itemize
+A rail crossing, or a set of turnouts acting as a double/single slip switch
+\end_layout
+
+\begin_layout Itemize
+A siding
+\end_layout
+
+\begin_layout Standard
+You will find some examples on how to interlock certain patterns later.
+\end_layout
+
+\begin_layout Subsection
+Track Circuit Breaks
+\end_layout
+
+\begin_layout Standard
+In this mod, you will not directly configure the locations of track sections.
+ Instead, you designate the borders of each track section using a special
+ node, the Track Circuit Break, abbreviated TCB.
+\end_layout
+
+\begin_layout Standard
+For example, if you want to create a track section for a piece of a main
+ running line, you set up two TCBs at the ends of this track circuit.
+\end_layout
+
+\begin_layout Standard
+Setting up a TCB works as follows:
+\end_layout
+
+\begin_layout Enumerate
+Place a TCB node somewhere near the place where the circuit break is going
+ to be located.
+\end_layout
+
+\begin_layout Enumerate
+Right-click the TCB node
+\end_layout
+
+\begin_layout Enumerate
+Punch the rail which should act as TCB
+\end_layout
+
+\begin_layout Standard
+The result should look like this:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/screenshot_20180830_142551.png
+ width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Now you have assigned the TCB node to a rail.
+ Right-click the TCB node once again.
+ This will bring up a form which looks as follows:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-26-35.png
+ width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You see that the form is divided in side A and side B.
+ To designate where each side is, a marker is displayed on the rail.
+ You can always make this marker show up by punching the TCB node, and remove
+ it by punching the marker.
+ Both sides are shown as
+\begin_inset Quotes eld
+\end_inset
+
+End of interlocking
+\begin_inset Quotes erd
+\end_inset
+
+.
+ This means that there is no track section set up at this place.
+\end_layout
+
+\begin_layout Standard
+You should repeat this procedure once again a few meters away from the first
+ TCB to create a second TCB on the same track.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-32-48.png
+ width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Once you have both bordering TCBs set up, you can now create the actual
+ track section.
+ To do this:
+\end_layout
+
+\begin_layout Enumerate
+Right-click one of the TCBs
+\end_layout
+
+\begin_layout Enumerate
+Locate the correct side (A or B) to create the track section
+\end_layout
+
+\begin_layout Enumerate
+Click
+\begin_inset Quotes eld
+\end_inset
+
+Create interlocked Track Section
+\begin_inset Quotes erd
+\end_inset
+
+ in the formspec on the chosen side.
+\end_layout
+
+\begin_layout Standard
+Now, the text on the formspec has changed.
+ It shows something like this:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-27-25.png
+ width 5cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Clicking
+\begin_inset Quotes eld
+\end_inset
+
+Show Track Section
+\begin_inset Quotes erd
+\end_inset
+
+ brings up another formspec:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-28-32.png
+ width 5cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+On the top, you see a list of all TCBs that border this track section.
+ In your case, there should be two TCBs listed.
+ If there's only one, head over to
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:Long-track-sections,"
+
+\end_inset
+
+.
+ You should now select a name for the track section, to identify it later.
+\end_layout
+
+\begin_layout Standard
+The same procedure is applicable when you create a turnout track section,
+ except that you have to set up three or more TCBs.
+\end_layout
+
+\begin_layout Standard
+The AdvTrains interlocking system allows you to add more TCBs after you
+ have created a track section.
+ This works without problems in most cases.
+ For example, you can easily insert a turnout into an already set-up track
+ section and create another TCB behind it, and AdvTrains will automatically
+ detect the existing track section.
+ Problems arise only if you try to insert a TCB in-between a section, in
+ which case both sides of the TCB will end up assigned to the same section.
+ The code currently does not handle this case properly, so try to avoid
+ this situation by all means.
+ As a last resort, you can always dissolve a faulty track section, as described
+ in the next chapter.
+\end_layout
+
+\begin_layout Subsection
+Long track sections, crossings and other edge cases
+\begin_inset CommandInset label
+LatexCommand label
+name "subsec:Long-track-sections,"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Very long track sections
+\end_layout
+
+\begin_layout Standard
+If you try to set up a track section that is longer than 1000 nodes, advtrains
+ won't recognize the TCB at the other end because of a safety limit in the
+ traverser function, which is supposed to prevent deadlocks.
+ This case has happened when the Track Section overview screen only shows
+ one TCB in the list.
+ The procedure for this is as follows:
+\end_layout
+
+\begin_layout Enumerate
+Go to the second TCB (the one that wasn't recognized).
+ It should show
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ on the relevant side.
+\end_layout
+
+\begin_layout Enumerate
+Click
+\begin_inset Quotes eld
+\end_inset
+
+Create interlocked track section
+\begin_inset Quotes erd
+\end_inset
+
+.
+ The section created will be different from the one that is already present.
+\end_layout
+
+\begin_layout Enumerate
+In the track section overview, click
+\begin_inset Quotes eld
+\end_inset
+
+Join into other section
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Enumerate
+Go back to the first TCB, bring up the Track Section overview screen of
+ the first track section and click
+\begin_inset Quotes eld
+\end_inset
+
+Join with ???
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The other, missing TCB should now appear in the list.
+ If you accidentally started such a joining procedure, click the
+\begin_inset Quotes eld
+\end_inset
+
+X
+\begin_inset Quotes erd
+\end_inset
+
+ button on the right.
+\end_layout
+
+\begin_layout Subsubsection
+Rail crosses
+\end_layout
+
+\begin_layout Standard
+Since rail crosses are created by laying tracks across each other without
+ logical connection, there's no way for advtrains to know whether rails
+ cross each other.
+\end_layout
+
+\begin_layout Standard
+Rail crossings in interlocking systems are always one single track section,
+ which in most cases has 4 TCBs adjacent.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-51-25.png
+ width 5cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The procedure is quite similar to the one for long sections: First, create
+ two track sections for the branches, and then use the
+\begin_inset Quotes eld
+\end_inset
+
+Join
+\begin_inset Quotes erd
+\end_inset
+
+ function to merge both sections into one.
+\end_layout
+
+\begin_layout Subsubsection
+Deleting and re-adding single TCBs to a section
+\end_layout
+
+\begin_layout Standard
+In some occasions, for example when you remove a siding or a crossover,
+ it can be necessary to unassign a TCB from a track section.
+ There are multiple ways to do this:
+\end_layout
+
+\begin_layout Itemize
+In the TCB form, click the
+\begin_inset Quotes eld
+\end_inset
+
+Remove from section
+\begin_inset Quotes erd
+\end_inset
+
+ button
+\end_layout
+
+\begin_layout Itemize
+In the track section form, first select the TCB in the list and then click
+
+\begin_inset Quotes eld
+\end_inset
+
+Unlink selected TCB
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The result is that the TCB shows
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ and the section does not list the TCB as an endpoint anymore.
+\end_layout
+
+\begin_layout Standard
+The other case is adding a siding or a crossover, in which case one or more
+ TCBs still show
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ although they should be part of a section:
+\end_layout
+
+\begin_layout Itemize
+Go to another TCB that is registered in the track section and click
+\begin_inset Quotes eld
+\end_inset
+
+Update near TCBs
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+If that did not work, follow the procedure of creating a long track section
+\end_layout
+
+\begin_layout Subsubsection
+Dissolving sections
+\end_layout
+
+\begin_layout Standard
+If you made a mistake setting up something and you don't see any other way
+ to fix a misconfigured track section, you can always delete it using the
+
+\begin_inset Quotes eld
+\end_inset
+
+Dissolve section
+\begin_inset Quotes erd
+\end_inset
+
+ button.
+ This operation removes the track section and sets all TCBs that previously
+ belonged to the section as
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+.
+ This will always work and lets you start over new with setting up track
+ sections.
+\end_layout
+
+\begin_layout Subsection
+Interlocking patterns
+\end_layout
+
+\begin_layout Standard
+This section shows some examples on how you should set up track sections
+ on certain track configurations.
+\end_layout
+
+\begin_layout Section
+Signals and routes
+\end_layout
+
+\begin_layout Standard
+The purpose of signals is to inform trains about whether they can proceed
+ into the next section safely.
+ Making a section of track safe to pass for a train, turnouts need to be
+ set to the correct position and no other train should be allowed to cross
+ or share parts of the route with this train.
+\end_layout
+
+\begin_layout Subsection
+Assigning Signals to TCBs
+\end_layout
+
+\begin_layout Standard
+Signals in the advtrains interlocking system are positioned - like in real
+ life - at the border of track sections.
+\end_layout
+
+\begin_layout Standard
+When you set up a signal, do the following steps:
+\end_layout
+
+\begin_layout Enumerate
+If not already happened, set up a TCB (you don't need to, but are advised
+ to, configure track sections there)
+\end_layout
+
+\begin_layout Enumerate
+Place the signal a few meters in front of the TCB, so that trains stopping
+ at the signal do never pass the TCB
+\end_layout
+
+\begin_layout Enumerate
+Locate the side of the TCB which points in the direction that trains will
+ proceed past the signal, as shown in the figure below.
+\end_layout
+
+\begin_layout Enumerate
+Right-click the TCB, and click
+\begin_inset Quotes eld
+\end_inset
+
+Assign a signal
+\begin_inset Quotes erd
+\end_inset
+
+ on this side.
+\end_layout
+
+\begin_layout Enumerate
+Punch the signal.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/assign_signal.png
+ width 8cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You can assign a signal to each side of a TCB.
+ This is, for example, useful when creating block sections on a bi-directional
+ main running line.
+\end_layout
+
+\begin_layout Subsection
+The concept of routes
+\end_layout
+
+\begin_layout Standard
+A so-called route is a locked path between two signals, which locks all
+ turnouts in the correct position.
+\end_layout
+
+\begin_layout Standard
+Example: Imagine a station with 2 platforms on a single track running line.
+ We are looking at signal A.
+ You probably want trains coming from the right to go into platform 1 or
+ into platform 2, so you need to program 2 routes.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/route_ex1.png
+ width 7cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+This leads us to the most important aspect of route programming: Routes
+ always start at a signal (A) and end at a signal facing in the
+\series bold
+same direction
+\series default
+ (D and E), not at an opposite-facing signal (B and C).
+ There are only few exceptions, we'll cover this later.
+\end_layout
+
+\begin_layout Standard
+When you set a route to make a train proceed on it, the interlocking system
+ ensures that:
+\end_layout
+
+\begin_layout Itemize
+There are no rail vehicles on the route
+\end_layout
+
+\begin_layout Itemize
+All turnouts are set to the correct position and it is impossible to move
+ them
+\end_layout
+
+\begin_layout Itemize
+No other routes can be set that would in any way conflict with this route
+\end_layout
+
+\begin_layout Standard
+For this to work, you need to specify all track sections the train will
+ pass along, as well as the positions of all turnouts that need to be locked.
+ Those are not only the turnouts that lay directly on the train's route,
+ but also some turnouts on adjacent tracks, the so-called flank protection.
+\end_layout
+
+\begin_layout Standard
+The purpose of flank protection is to prevent runaway trains and/or wagons
+ to pass into a route.
+ This is achieved by setting nearby turnouts to a position that points
+\begin_inset Quotes eld
+\end_inset
+
+away
+\begin_inset Quotes erd
+\end_inset
+
+ from the route.
+ Example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/route_ex2.png
+ width 7cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The upper turnout, of course, needs to be locked in straight (normal) position,
+ while the lower one is not relevant for the route itself.
+ But what if the lower turnout was set to the diverging (reverse) position
+ and the driver of another train approaching signal B fails to see the red
+ light? This train would crash into the first one.
+ To minimise danger, that other train would need to be routed towards signal
+ D.
+\end_layout
+
+\begin_layout Standard
+There are, of course, situations, where both positions of a turnout would
+ conflict with a route equally.
+ In those situations, there's nothing you can do and no flank lock needs
+ to be set.
+\end_layout
+
+\begin_layout Subsection
+Shunt routes
+\end_layout
+
+\begin_layout Standard
+Operating railways is not all about driving trains around.
+ Coupling, decoupling and moving single engines, wagons or groups of wagons
+ across a station, called shunting, also plays an important role.
+\end_layout
+
+\begin_layout Standard
+Remember what we said about routes: There must be no rail vehicles on the
+ route.
+ So what if you have some goods wagons ready on a siding, and want to couple
+ an engine to it? You can not set a regular route into the siding, because
+ it is occupied.
+\end_layout
+
+\begin_layout Standard
+The solution is to program a second route into the siding, but with the
+ difference that it already ends at the rear-facing signal of it, so it
+ doesn't include the siding section itself:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/route_ex3.png
+ width 7cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The Sht2 route then needs to show a shunt aspect, which instructs the driver
+ to proceed slowly and watch out for vehicles on the route.
+ To show a
+\begin_inset Quotes eld
+\end_inset
+
+free
+\begin_inset Quotes erd
+\end_inset
+
+ aspect here would be wrong, because that would mean that the track is free
+ until the next main signal, which it is clearly not.
+\end_layout
+
+\begin_layout Standard
+
+\shape italic
+Note that advtrains_interlocking currently does not allow to set individual
+ aspects for routes, this is a feature still to be implemented soon.
+\end_layout
+
+\begin_layout Standard
+Shunt routes like this are, so far, the only exception to the
+\begin_inset Quotes eld
+\end_inset
+
+Routes should end at a signal facing the same direction
+\begin_inset Quotes erd
+\end_inset
+
+ rule.
+\end_layout
+
+\begin_layout Subsection
+Route Release
+\end_layout
+
+\begin_layout Standard
+In early real-life interlocking systems, routes either had to be cancelled
+ by the signalman after the train had passed the route, or there was a single
+ release contact at the end of the route.
+ However, as interlocking systems evolved and the position of trains is
+ now roughly known by the track sections, portions of the route can be freed
+ as soon as the train has left the corresponding section.
+\end_layout
+
+\begin_layout Standard
+AdvTrains has chosen a modern approach to route releasing.
+ Each turnout lock is associated to a track section belonging to the route's
+ path.
+ Once the train leaves this section, all assigned locks are also freed.
+\end_layout
+
+\begin_layout Subsection
+Programming a route
+\end_layout
+
+\begin_layout Standard
+The route programming procedure is quite straightforward if you've read
+ the previous sections and understood how routes should be set.
+\end_layout
+
+\begin_layout Standard
+Routes always start at a signal.
+ You must have assigned the signal to a TCB, as described earlier.
+\end_layout
+
+\begin_layout Standard
+When you right-click the signal, it no longer changes its aspect.
+ Instead, a formspec pops up, showing you an (empty) list of routes with
+ the possibility to set them or to create new routes.
+ Click the
+\begin_inset Quotes eld
+\end_inset
+
+Create new route
+\begin_inset Quotes erd
+\end_inset
+
+ button to start programming a new route.
+\end_layout
+
+\begin_layout Standard
+The form closes, and an arrow is displayed on the TCB.
+ You are now in
+\begin_inset Quotes eld
+\end_inset
+
+Route Programming
+\begin_inset Quotes erd
+\end_inset
+
+ mode, programming the first track section of the route.
+ Now:
+\end_layout
+
+\begin_layout Itemize
+Put any turnouts you need to lock in the correct position (e.g.
+ by right-clicking them).
+ This includes flank protection.
+\end_layout
+
+\begin_layout Itemize
+Punch them.
+ This makes a marker saying
+\begin_inset Quotes eld
+\end_inset
+
+Route Lock Editing
+\begin_inset Quotes erd
+\end_inset
+
+ appear.
+\end_layout
+
+\begin_layout Itemize
+If you punch a turnout again, or punch the marker, you can remove the lock
+ again.
+\end_layout
+
+\begin_layout Itemize
+When you've locked all turnouts in the current section, go to and punch
+ the TCB that is the border to the next track section the train proceeds
+ into.
+\end_layout
+
+\begin_layout Standard
+Once you've done this, the lock markers change to
+\begin_inset Quotes eld
+\end_inset
+
+Route Lock
+\begin_inset Quotes erd
+\end_inset
+
+, telling they can't be changed anymore.
+ Repeat the above procedure until you have punched the final TCB, at which
+ the route should end.
+ As mentioned before, there should be a signal at this place, however this
+ is not enforced.
+ Now, run the chat command
+\family typewriter
+/at_rp_set <name of route>
+\family default
+ to complete programming the route.
+\end_layout
+
+\begin_layout Standard
+A few hints:
+\end_layout
+
+\begin_layout Itemize
+If one turnout should be locked by more than one section, set the lock only
+ in the
+\family typewriter
+\series bold
+last
+\family default
+\series default
+ of those sections.
+ Locking the same turnout in multiple sections of a single route results
+ in undefined behavior!
+\end_layout
+
+\begin_layout Itemize
+If you accidentally punched a TCB, you can run
+\family typewriter
+/at_rp_back
+\family default
+ to undo this and return to the previous section.
+ Due to a bug, you have to re-set all locks of this section.
+\end_layout
+
+\begin_layout Itemize
+If you want to stop programming the entire route without saving it, run
+
+\family typewriter
+/at_rp_discard
+\end_layout
+
+\begin_layout Section
+Interlocking system operation
+\end_layout
+
+\begin_layout Standard
+Setting up the interlocking for a portion of a railway network requires
+ some time, experience and planning, but once done, there's not much to
+ do anymore to make trains run on your, now safer, railway.
+ This section covers some useful practices to route trains across your network.
+\end_layout
+
+\begin_layout Standard
+At the moment, routes can only be set by clicking the signal or via LuaATC,
+ except if you use automatic working.
+ It is planned to control this via the onboard computer and via a
+\begin_inset Quotes eld
+\end_inset
+
+signal box
+\begin_inset Quotes erd
+\end_inset
+
+ view based on the currently broken itrainmap.
+\end_layout
+
+\begin_layout Subsection
+Simple route setting and cancelling
+\end_layout
+
+\begin_layout Standard
+To set a route, simply right-click the signal, select a route and click
+
+\begin_inset Quotes eld
+\end_inset
+
+set route
+\begin_inset Quotes erd
+\end_inset
+
+.
+ If there are no conflicts, the signal turns green and the train is allowed
+ to proceed.
+\end_layout
+
+\begin_layout Standard
+It may be possible that the route can not be set, because one or more other
+ routes conflict with the current one, or a section is blocked.
+ In this case, the signal stays red, and the conflicting item is shown in
+ the formspec.
+ As soon as the conflict is resolved (by cancellation or release of the
+ conflicting route, or the section becoming free), the requested route will
+ be set and the signal turns green.
+\end_layout
+
+\begin_layout Standard
+If a route is either requested or set, it can be cancelled from the signalling
+ formspec.
+ This means that all turnouts and sections are released, and the signal
+ reverts back to red.
+ This of course only works when the train has not passed the signal yet.
+ There is no mechanism for Approach Locking.
+\end_layout
+
+\begin_layout Subsection
+Automatic Working
+\end_layout
+
+\begin_layout Standard
+Block signals on main running lines usually only have a single route to
+ set, the one proceeding along the main line.
+ Their purpose is only to show whether there are trains in the next section.
+ So, it would be convenient if this only route would set itself again after
+ a train passed.
+\end_layout
+
+\begin_layout Standard
+This is what Automatic Working is for.
+ Set a route, click
+\begin_inset Quotes eld
+\end_inset
+
+Enable Automatic Working
+\begin_inset Quotes erd
+\end_inset
+
+, and as soon as a train passes, the route is automatically re-set.
+\end_layout
+
+\begin_layout Standard
+This function is nearly identical to SimSig automatic signals.
+ It can also be useful on a line with high traffic, when there's a low-frequente
+d access to a siding.
+ You'd enable automatic working for the main route and cancel it only when
+ you need a train to go into the siding.
+\end_layout
+
+\begin_layout Section
+Final notes
+\end_layout
+
+\begin_layout Standard
+The interlocking system is mainly finished, though there are still some
+ plans and ideas.
+ They include:
+\end_layout
+
+\begin_layout Itemize
+Setting routes from inside a train (via onboard computer)
+\end_layout
+
+\begin_layout Itemize
+Signalbox panels, as revival of itrainmap
+\end_layout
+
+\begin_layout Itemize
+Individual signal aspects for routes
+\end_layout
+
+\begin_layout Itemize
+Distant signals
+\end_layout
+
+\begin_layout Itemize
+On-Train head-up display for oncoming signals (they have something like
+ this in Czech Republic, I forgot how it's called.)
+\end_layout
+
+\begin_layout Standard
+Apart from this, there's the large oncoming project of a new timetable-based
+ train automation system, but this will take some time to evolve and is
+ out of the scope of this document.
+\end_layout
+
+\begin_layout Standard
+If you have any suggestions, corrections, improvements, criticism or cute
+ kittens and stuff, you can always contact me by various means (Forum PM,
+ E-Mail (orwell@bleipb.de), Linuxworks server chat a.s.o.).
+ Have fun!
+\end_layout
+
+\begin_layout Standard
+- orwell
+\end_layout
+
+\end_body
+\end_document
diff --git a/assets/interlocking.lyx~ b/assets/interlocking.lyx~
new file mode 100644
index 0000000..0a881dc
--- /dev/null
+++ b/assets/interlocking.lyx~
@@ -0,0 +1,1109 @@
+#LyX 2.2 created this file. For more info see http://www.lyx.org/
+\lyxformat 508
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass paper
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry true
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 1cm
+\topmargin 1cm
+\rightmargin 1cm
+\bottommargin 1cm
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation 0bp
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Title
+Minetest Mod - Advanced Trains [advtrains]
+\end_layout
+
+\begin_layout Title
+Interlocking System Guide
+\end_layout
+
+\begin_layout Section
+Introduction
+\end_layout
+
+\begin_layout Standard
+In real-world railways, a so-called interlocking system is a set of railway
+ signals and trackside equipment.
+ Its purpose is to prevent conflicting train movements which otherwise could
+ result in derailing or colliding trains.
+ If you want more information, just search for
+\begin_inset Quotes eld
+\end_inset
+
+railway interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ on the internet.
+\end_layout
+
+\begin_layout Standard
+Real-world interlocking systems perform this task by setting routes.
+ A route is a path along a track that a train can safely pass.
+ To set a route for a train, the signalman (the operator of a signal box)
+ has to set switches (turnouts) to the correct position and lock them in
+ order to make a signal for a train show
+\begin_inset Quotes eld
+\end_inset
+
+Proceed
+\begin_inset Quotes erd
+\end_inset
+
+.
+ In newer systems, this is done automatically by the interlocking system.
+ A route can not be set if switches are locked to a wrong position by another
+ route or if any portion of the route is occupied by a train.
+\end_layout
+
+\begin_layout Standard
+The interlocking system in this Minetest mod tries to follow real-world
+ interlocking systems as far as applicable.
+ It divides tracks into track sections and implements a route setting mechanism
+ following the same principle.
+\end_layout
+
+\begin_layout Standard
+However, for the sake of simplicity of implementation and usage, not all
+ concepts of real-world interlocking have been taken over.
+ Especially, there is no mechanism for overlap.
+\end_layout
+
+\begin_layout Standard
+If you are looking for a place to learn how real-world interlocking systems
+ work, have a look at
+\begin_inset Quotes eld
+\end_inset
+
+SimSig
+\begin_inset Quotes erd
+\end_inset
+
+.
+ By looking at their simulations, you can obtain experience on how to set
+ up your own interlocking systems in AdvTrains.
+ The SimSig glossary is a good place to look up unknown terms in this document.
+\end_layout
+
+\begin_layout Section
+Setting up track sections
+\end_layout
+
+\begin_layout Standard
+In the real world, a line of track is divided into so-called track sections,
+ or track circuits.
+ Those systems often can not tell where exactly a train is, but only which
+ track sections it occupies.
+ A route can never be set through an occupied track section.
+\end_layout
+
+\begin_layout Standard
+A track section often covers:
+\end_layout
+
+\begin_layout Itemize
+A section on a main running line, between two signals
+\end_layout
+
+\begin_layout Itemize
+A single turnout
+\end_layout
+
+\begin_layout Itemize
+A rail crossing, or a set of turnouts acting as a double/single slip switch
+\end_layout
+
+\begin_layout Itemize
+A siding
+\end_layout
+
+\begin_layout Standard
+You will find some examples on how to interlock certain patterns later.
+\end_layout
+
+\begin_layout Subsection
+Track Circuit Breaks
+\end_layout
+
+\begin_layout Standard
+In this mod, you will not directly configure the locations of track sections.
+ Instead, you designate the borders of each track section using a special
+ node, the Track Circuit Break, abbreviated TCB.
+\end_layout
+
+\begin_layout Standard
+For example, if you want to create a track section for a piece of a main
+ running line, you set up two TCBs at the ends of this track circuit.
+\end_layout
+
+\begin_layout Standard
+Setting up a TCB works as follows:
+\end_layout
+
+\begin_layout Enumerate
+Place a TCB node somewhere near the place where the circuit break is going
+ to be located.
+\end_layout
+
+\begin_layout Enumerate
+Right-click the TCB node
+\end_layout
+
+\begin_layout Enumerate
+Punch the rail which should act as TCB
+\end_layout
+
+\begin_layout Standard
+The result should look like this:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/screenshot_20180830_142551.png
+ width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Now you have assigned the TCB node to a rail.
+ Right-click the TCB node once again.
+ This will bring up a form which looks as follows:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-26-35.png
+ width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You see that the form is divided in side A and side B.
+ To designate where each side is, a marker is displayed on the rail.
+ You can always make this marker show up by punching the TCB node, and remove
+ it by punching the marker.
+ Both sides are shown as
+\begin_inset Quotes eld
+\end_inset
+
+End of interlocking
+\begin_inset Quotes erd
+\end_inset
+
+.
+ This means that there is no track section set up at this place.
+\end_layout
+
+\begin_layout Standard
+You should repeat this procedure once again a few meters away from the first
+ TCB to create a second TCB on the same track.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-32-48.png
+ width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Once you have both bordering TCBs set up, you can now create the actual
+ track section.
+ To do this:
+\end_layout
+
+\begin_layout Enumerate
+Right-click one of the TCBs
+\end_layout
+
+\begin_layout Enumerate
+Locate the correct side (A or B) to create the track section
+\end_layout
+
+\begin_layout Enumerate
+Click
+\begin_inset Quotes eld
+\end_inset
+
+Create interlocked Track Section
+\begin_inset Quotes erd
+\end_inset
+
+ in the formspec on the chosen side.
+\end_layout
+
+\begin_layout Standard
+Now, the text on the formspec has changed.
+ It shows something like this:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-27-25.png
+ width 5cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Clicking
+\begin_inset Quotes eld
+\end_inset
+
+Show Track Section
+\begin_inset Quotes erd
+\end_inset
+
+ brings up another formspec:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-28-32.png
+ width 5cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+On the top, you see a list of all TCBs that border this track section.
+ In your case, there should be two TCBs listed.
+ If there's only one, head over to
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:Long-track-sections,"
+
+\end_inset
+
+.
+ You should now select a name for the track section, to identify it later.
+\end_layout
+
+\begin_layout Standard
+The same procedure is applicable when you create a turnout track section,
+ except that you have to set up three or more TCBs.
+\end_layout
+
+\begin_layout Standard
+The AdvTrains interlocking system allows you to add more TCBs after you
+ have created a track section.
+ This works without problems in most cases.
+ For example, you can easily insert a turnout into an already set-up track
+ section and create another TCB behind it, and AdvTrains will automatically
+ detect the existing track section.
+ Problems arise only if you try to insert a TCB in-between a section, in
+ which case both sides of the TCB will end up assigned to the same section.
+ The code currently does not handle this case properly, so try to avoid
+ this situation by all means.
+ As a last resort, you can always dissolve a faulty track section, as described
+ in the next chapter.
+\end_layout
+
+\begin_layout Subsection
+Long track sections, crossings and other edge cases
+\begin_inset CommandInset label
+LatexCommand label
+name "subsec:Long-track-sections,"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Very long track sections
+\end_layout
+
+\begin_layout Standard
+If you try to set up a track section that is longer than 1000 nodes, advtrains
+ won't recognize the TCB at the other end because of a safety limit in the
+ traverser function, which is supposed to prevent deadlocks.
+ This case has happened when the Track Section overview screen only shows
+ one TCB in the list.
+ The procedure for this is as follows:
+\end_layout
+
+\begin_layout Enumerate
+Go to the second TCB (the one that wasn't recognized).
+ It should show
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ on the relevant side.
+\end_layout
+
+\begin_layout Enumerate
+Click
+\begin_inset Quotes eld
+\end_inset
+
+Create interlocked track section
+\begin_inset Quotes erd
+\end_inset
+
+.
+ The section created will be different from the one that is already present.
+\end_layout
+
+\begin_layout Enumerate
+In the track section overview, click
+\begin_inset Quotes eld
+\end_inset
+
+Join into other section
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Enumerate
+Go back to the first TCB, bring up the Track Section overview screen of
+ the first track section and click
+\begin_inset Quotes eld
+\end_inset
+
+Join with ???
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The other, missing TCB should now appear in the list.
+ If you accidentally started such a joining procedure, click the
+\begin_inset Quotes eld
+\end_inset
+
+X
+\begin_inset Quotes erd
+\end_inset
+
+ button on the right.
+\end_layout
+
+\begin_layout Subsubsection
+Rail crosses
+\end_layout
+
+\begin_layout Standard
+Since rail crosses are created by laying tracks across each other without
+ logical connection, there's no way for advtrains to know whether rails
+ cross each other.
+\end_layout
+
+\begin_layout Standard
+Rail crossings in interlocking systems are always one single track section,
+ which in most cases has 4 TCBs adjacent.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/Bildschirmfoto_2018-08-30_14-51-25.png
+ width 5cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The procedure is quite similar to the one for long sections: First, create
+ two track sections for the branches, and then use the
+\begin_inset Quotes eld
+\end_inset
+
+Join
+\begin_inset Quotes erd
+\end_inset
+
+ function to merge both sections into one.
+\end_layout
+
+\begin_layout Subsubsection
+Deleting and re-adding single TCBs to a section
+\end_layout
+
+\begin_layout Standard
+In some occasions, for example when you remove a siding or a crossover,
+ it can be necessary to unassign a TCB from a track section.
+ There are multiple ways to do this:
+\end_layout
+
+\begin_layout Itemize
+In the TCB form, click the
+\begin_inset Quotes eld
+\end_inset
+
+Remove from section
+\begin_inset Quotes erd
+\end_inset
+
+ button
+\end_layout
+
+\begin_layout Itemize
+In the track section form, first select the TCB in the list and then click
+
+\begin_inset Quotes eld
+\end_inset
+
+Unlink selected TCB
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The result is that the TCB shows
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ and the section does not list the TCB as an endpoint anymore.
+\end_layout
+
+\begin_layout Standard
+The other case is adding a siding or a crossover, in which case one or more
+ TCBs still show
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+ although they should be part of a section:
+\end_layout
+
+\begin_layout Itemize
+Go to another TCB that is registered in the track section and click
+\begin_inset Quotes eld
+\end_inset
+
+Update near TCBs
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+If that did not work, follow the procedure of creating a long track section
+\end_layout
+
+\begin_layout Subsubsection
+Dissolving sections
+\end_layout
+
+\begin_layout Standard
+If you made a mistake setting up something and you don't see any other way
+ to fix a misconfigured track section, you can always delete it using the
+
+\begin_inset Quotes eld
+\end_inset
+
+Dissolve section
+\begin_inset Quotes erd
+\end_inset
+
+ button.
+ This operation removes the track section and sets all TCBs that previously
+ belonged to the section as
+\begin_inset Quotes eld
+\end_inset
+
+End of Interlocking
+\begin_inset Quotes erd
+\end_inset
+
+.
+ This will always work and lets you start over new with setting up track
+ sections.
+\end_layout
+
+\begin_layout Subsection
+Interlocking patterns
+\end_layout
+
+\begin_layout Standard
+This section shows some examples on how you should set up track sections
+ on certain track configurations.
+\end_layout
+
+\begin_layout Section
+Signals and routes
+\end_layout
+
+\begin_layout Standard
+The purpose of signals is to inform trains about whether they can proceed
+ into the next section safely.
+ Making a section of track safe to pass for a train, turnouts need to be
+ set to the correct position and no other train should be allowed to cross
+ or share parts of the route with this train.
+\end_layout
+
+\begin_layout Subsection
+Assigning Signals to TCBs
+\end_layout
+
+\begin_layout Standard
+Signals in the advtrains interlocking system are positioned - like in real
+ life - at the border of track sections.
+\end_layout
+
+\begin_layout Standard
+When you set up a signal, do the following steps:
+\end_layout
+
+\begin_layout Enumerate
+If not already happened, set up a TCB (you don't need to, but are advised
+ to, configure track sections there)
+\end_layout
+
+\begin_layout Enumerate
+Place the signal a few meters in front of the TCB, so that trains stopping
+ at the signal do never pass the TCB
+\end_layout
+
+\begin_layout Enumerate
+Locate the side of the TCB which points in the direction that trains will
+ proceed past the signal, as shown in the figure below.
+\end_layout
+
+\begin_layout Enumerate
+Right-click the TCB, and click
+\begin_inset Quotes eld
+\end_inset
+
+Assign a signal
+\begin_inset Quotes erd
+\end_inset
+
+ on this side.
+\end_layout
+
+\begin_layout Enumerate
+Punch the signal.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/assign_signal.png
+ width 8cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You can assign a signal to each side of a TCB.
+ This is, for example, useful when creating block sections on a bi-directional
+ main running line.
+\end_layout
+
+\begin_layout Subsection
+The concept of routes
+\end_layout
+
+\begin_layout Standard
+A so-called route is a locked path between two signals, which locks all
+ turnouts in the correct position.
+\end_layout
+
+\begin_layout Standard
+Example: Imagine a station with 2 platforms on a single track running line.
+ We are looking at signal A.
+ You probably want trains coming from the right to go into platform 1 or
+ into platform 2, so you need to program 2 routes.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/route_ex1.png
+ width 7cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+This leads us to the most important aspect of route programming: Routes
+ always start at a signal (A) and end at a signal facing in the
+\series bold
+same direction
+\series default
+ (D and E), not at an opposite-facing signal (B and C).
+ There are only few exceptions, we'll cover this later.
+\end_layout
+
+\begin_layout Standard
+When you set a route to make a train proceed on it, the interlocking system
+ ensures that:
+\end_layout
+
+\begin_layout Itemize
+There are no rail vehicles on the route
+\end_layout
+
+\begin_layout Itemize
+All turnouts are set to the correct position and it is impossible to move
+ them
+\end_layout
+
+\begin_layout Itemize
+No other routes can be set that would in any way conflict with this route
+\end_layout
+
+\begin_layout Standard
+For this to work, you need to specify all track sections the train will
+ pass along, as well as the positions of all turnouts that need to be locked.
+ Those are not only the turnouts that lay directly on the train's route,
+ but also some turnouts on adjacent tracks, the so-called flank protection.
+\end_layout
+
+\begin_layout Standard
+The purpose of flank protection is to prevent runaway trains and/or wagons
+ to pass into a route.
+ This is achieved by setting nearby turnouts to a position that points
+\begin_inset Quotes eld
+\end_inset
+
+away
+\begin_inset Quotes erd
+\end_inset
+
+ from the route.
+ Example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/route_ex2.png
+ width 7cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The upper turnout, of course, needs to be locked in straight (normal) position,
+ while the lower one is not relevant for the route itself.
+ But what if the lower turnout was set to the diverging (reverse) position
+ and the driver of another train approaching signal B fails to see the red
+ light? This train would crash into the first one.
+ To minimise danger, that other train would need to be routed towards signal
+ D.
+\end_layout
+
+\begin_layout Standard
+There are, of course, situations, where both positions of a turnout would
+ conflict with a route equally.
+ In those situations, there's nothing you can do and no flank lock needs
+ to be set.
+\end_layout
+
+\begin_layout Subsection
+Shunt routes
+\end_layout
+
+\begin_layout Standard
+Operating railways is not all about driving trains around.
+ Coupling, decoupling and moving single engines, wagons or groups of wagons
+ across a station, called shunting, also plays an important role.
+\end_layout
+
+\begin_layout Standard
+Remember what we said about routes: There must be no rail vehicles on the
+ route.
+ So what if you have some goods wagons ready on a siding, and want to couple
+ an engine to it? You can not set a regular route into the siding, because
+ it is occupied.
+\end_layout
+
+\begin_layout Standard
+The solution is to program a second route into the siding, but with the
+ difference that it already ends at the rear-facing signal of it, so it
+ doesn't include the siding section itself:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Graphics
+ filename lyx_img/route_ex3.png
+ width 7cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The Sht2 route then needs to show a shunt aspect, which instructs the driver
+ to proceed slowly and watch out for vehicles on the route.
+ To show a
+\begin_inset Quotes eld
+\end_inset
+
+free
+\begin_inset Quotes erd
+\end_inset
+
+ aspect here would be wrong, because that would mean that the track is free
+ until the next main signal, which it is clearly not.
+\end_layout
+
+\begin_layout Standard
+
+\shape italic
+Note that advtrains_interlocking currently does not allow to set individual
+ aspects for routes, this is a feature still to be implemented soon.
+\end_layout
+
+\begin_layout Standard
+Shunt routes like this are, so far, the only exception to the
+\begin_inset Quotes eld
+\end_inset
+
+Routes should end at a signal facing the same direction
+\begin_inset Quotes erd
+\end_inset
+
+ rule.
+\end_layout
+
+\begin_layout Subsection
+Route Release
+\end_layout
+
+\begin_layout Standard
+In early real-life interlocking systems, routes either had to be cancelled
+ by the signalman after the train had passed the route, or there was a single
+ release contact at the end of the route.
+ However, as interlocking systems evolved and the position of trains is
+ now roughly known by the track sections, portions of the route can be freed
+ as soon as the train has left the corresponding section.
+\end_layout
+
+\begin_layout Standard
+AdvTrains has chosen a modern approach to route releasing.
+ Each turnout lock is associated to a track section belonging to the route's
+ path.
+ Once the train leaves this section, all assigned locks are also freed.
+\end_layout
+
+\begin_layout Subsection
+Programming a route
+\end_layout
+
+\begin_layout Standard
+The route programming procedure is quite straightforward if you've read
+ the previous sections and understood how routes should be set.
+\end_layout
+
+\begin_layout Standard
+Routes always start at a signal.
+ You must have assigned the signal to a TCB, as described earlier.
+\end_layout
+
+\begin_layout Standard
+When you right-click the signal, it no longer changes its aspect.
+ Instead, a formspec pops up, showing you an (empty) list of routes with
+ the possibility to set them or to create new routes.
+ Click the
+\begin_inset Quotes eld
+\end_inset
+
+Create new route
+\begin_inset Quotes erd
+\end_inset
+
+ button to start programming a new route.
+\end_layout
+
+\begin_layout Standard
+The form closes, and an arrow is displayed on the TCB.
+ You are now in
+\begin_inset Quotes eld
+\end_inset
+
+Route Programming
+\begin_inset Quotes erd
+\end_inset
+
+ mode, programming the first track section of the route.
+ Now:
+\end_layout
+
+\begin_layout Itemize
+Put any turnouts you need to lock in the correct position (e.g.
+ by right-clicking them).
+ This includes flank protection.
+\end_layout
+
+\begin_layout Itemize
+Punch them.
+ This makes a marker saying
+\begin_inset Quotes eld
+\end_inset
+
+Route Lock Editing
+\begin_inset Quotes erd
+\end_inset
+
+ appear.
+\end_layout
+
+\begin_layout Itemize
+If you punch a turnout again, or punch the marker, you can remove the lock
+ again.
+\end_layout
+
+\begin_layout Itemize
+When you've locked all turnouts in the current section, go to and punch
+ the TCB that is the border to the next track section the train proceeds
+ into.
+\end_layout
+
+\begin_layout Standard
+Once you've done this, the lock markers change to
+\begin_inset Quotes eld
+\end_inset
+
+Route Lock
+\begin_inset Quotes erd
+\end_inset
+
+, telling they can't be changed anymore.
+ Repeat the above procedure until you have punched the final TCB, at which
+ the route should end.
+ As mentioned before, there should be a signal at this place, however this
+ is not enforced.
+ Now, run the chat command
+\family typewriter
+/at_rp_set <name of route>
+\family default
+ to complete programming the route.
+\end_layout
+
+\begin_layout Standard
+A few hints:
+\end_layout
+
+\begin_layout Itemize
+If one turnout should be locked by more than one section, set the lock only
+ in the
+\family typewriter
+\series bold
+last
+\family default
+\series default
+ of those sections.
+ Locking the same turnout in multiple sections of a single route results
+ in undefined behavior!
+\end_layout
+
+\begin_layout Itemize
+If you accidentally punched a TCB, you can run
+\family typewriter
+/at_rp_back
+\family default
+ to undo this and return to the previous section.
+ Due to a bug, you have to re-set all locks of this section.
+\end_layout
+
+\begin_layout Itemize
+If you want to stop programming the entire route without saving it, run
+
+\family typewriter
+/at_rp_discard
+\end_layout
+
+\begin_layout Section
+Interlocking system operation
+\end_layout
+
+\begin_layout Standard
+Setting up the interlocking for a portion of a railway network requires
+ some time, experience and planning, but once done, there's not much to
+ do anymore to make trains run on your, now safer, railway.
+ This section covers some useful practices to route trains across your network.
+\end_layout
+
+\begin_layout Standard
+At the moment, routes can only be set by clicking the signal or via LuaATC,
+ except if you use automatic working.
+ It is planned to control this via the onboard computer and via a
+\begin_inset Quotes eld
+\end_inset
+
+signal box
+\begin_inset Quotes erd
+\end_inset
+
+ view based on the currently broken itrainmap.
+\end_layout
+
+\begin_layout Subsection
+Simple route setting and cancelling
+\end_layout
+
+\begin_layout Standard
+To set a route, simply right-click the signal, select a route and click
+
+\begin_inset Quotes eld
+\end_inset
+
+set route
+\begin_inset Quotes erd
+\end_inset
+
+.
+ If there are no conflicts, the signal turns green and the train is allowed
+ to proceed.
+\end_layout
+
+\begin_layout Standard
+It may be possible that the route can not be set, because one or more other
+ routes conflict with the current one, or a section is blocked.
+ In this case, the signal stays red, and the conflicting item is shown in
+ the formspec.
+ As soon as the conflict is resolved (by cancellation or release of the
+ conflicting route, or the section becoming free), the requested route will
+ be set and the signal turns green.
+\end_layout
+
+\begin_layout Standard
+If a route is either requested or set, it can be cancelled from the signalling
+ formspec.
+ This means that all turnouts and sections are released, and the signal
+ reverts back to red.
+ This of course only works when the train has not passed the signal yet.
+ There is no mechanism for Approach Locking.
+\end_layout
+
+\begin_layout Subsection
+Automatic Working
+\end_layout
+
+\begin_layout Standard
+Block signals on main running lines usually only have a single route to
+ set, the one proceeding along the main line.
+ Their purpose is only to show whether there are trains in the next section.
+ So, it would be convenient if this only route would set itself again after
+ a train passed.
+\end_layout
+
+\begin_layout Standard
+This is what Automatic Working is for.
+ Set a route, click
+\begin_inset Quotes eld
+\end_inset
+
+Enable Automatic Working
+\begin_inset Quotes erd
+\end_inset
+
+, and as soon as a train passes, the route is automatically re-set.
+\end_layout
+
+\begin_layout Standard
+This function is nearly identical to SimSig automatic signals.
+ It can also be useful on a line with high traffic, when there's a low-frequente
+d access to a siding.
+ You'd enable automatic working for the main route and cancel it only when
+ you need a train to go into the siding.
+\end_layout
+
+\end_body
+\end_document
diff --git a/assets/lyx_img/Bildschirmfoto_2018-08-30_14-26-35.png b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-26-35.png
new file mode 100644
index 0000000..468ce25
--- /dev/null
+++ b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-26-35.png
Binary files differ
diff --git a/assets/lyx_img/Bildschirmfoto_2018-08-30_14-27-25.png b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-27-25.png
new file mode 100644
index 0000000..82253bc
--- /dev/null
+++ b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-27-25.png
Binary files differ
diff --git a/assets/lyx_img/Bildschirmfoto_2018-08-30_14-28-32.png b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-28-32.png
new file mode 100644
index 0000000..0cbed7d
--- /dev/null
+++ b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-28-32.png
Binary files differ
diff --git a/assets/lyx_img/Bildschirmfoto_2018-08-30_14-32-48.png b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-32-48.png
new file mode 100644
index 0000000..c3aa984
--- /dev/null
+++ b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-32-48.png
Binary files differ
diff --git a/assets/lyx_img/Bildschirmfoto_2018-08-30_14-51-25.png b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-51-25.png
new file mode 100644
index 0000000..1091455
--- /dev/null
+++ b/assets/lyx_img/Bildschirmfoto_2018-08-30_14-51-25.png
Binary files differ
diff --git a/assets/lyx_img/assign_signal.png b/assets/lyx_img/assign_signal.png
new file mode 100644
index 0000000..cd97f05
--- /dev/null
+++ b/assets/lyx_img/assign_signal.png
Binary files differ
diff --git a/assets/lyx_img/route_ex1.png b/assets/lyx_img/route_ex1.png
new file mode 100644
index 0000000..048294d
--- /dev/null
+++ b/assets/lyx_img/route_ex1.png
Binary files differ
diff --git a/assets/lyx_img/route_ex2.png b/assets/lyx_img/route_ex2.png
new file mode 100644
index 0000000..ed14540
--- /dev/null
+++ b/assets/lyx_img/route_ex2.png
Binary files differ
diff --git a/assets/lyx_img/route_ex3.png b/assets/lyx_img/route_ex3.png
new file mode 100644
index 0000000..fdcc785
--- /dev/null
+++ b/assets/lyx_img/route_ex3.png
Binary files differ
diff --git a/assets/lyx_img/screenshot_20180830_142551.png b/assets/lyx_img/screenshot_20180830_142551.png
new file mode 100644
index 0000000..77e05f8
--- /dev/null
+++ b/assets/lyx_img/screenshot_20180830_142551.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-43-29.png b/assets/manual.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-43-29.png
new file mode 100644
index 0000000..2e8301d
--- /dev/null
+++ b/assets/manual.html.LyXconv/0_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-43-29.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/10_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-48-54.png b/assets/manual.html.LyXconv/10_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-48-54.png
new file mode 100644
index 0000000..7e42a15
--- /dev/null
+++ b/assets/manual.html.LyXconv/10_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-48-54.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/11_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-50-27.png b/assets/manual.html.LyXconv/11_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-50-27.png
new file mode 100644
index 0000000..af02a2a
--- /dev/null
+++ b/assets/manual.html.LyXconv/11_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-50-27.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/12_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-51-02.png b/assets/manual.html.LyXconv/12_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-51-02.png
new file mode 100644
index 0000000..134002d
--- /dev/null
+++ b/assets/manual.html.LyXconv/12_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-51-02.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/13_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-39.png b/assets/manual.html.LyXconv/13_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-39.png
new file mode 100644
index 0000000..63d8cc6
--- /dev/null
+++ b/assets/manual.html.LyXconv/13_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-39.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/14_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-20.png b/assets/manual.html.LyXconv/14_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-20.png
new file mode 100644
index 0000000..5bc3da2
--- /dev/null
+++ b/assets/manual.html.LyXconv/14_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-20.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/15_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-33-09.png b/assets/manual.html.LyXconv/15_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-33-09.png
new file mode 100644
index 0000000..ebe6ada
--- /dev/null
+++ b/assets/manual.html.LyXconv/15_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-33-09.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/16_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-42-49.png b/assets/manual.html.LyXconv/16_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-42-49.png
new file mode 100644
index 0000000..7084c7d
--- /dev/null
+++ b/assets/manual.html.LyXconv/16_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-42-49.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/17_home_moritz_Home_Projekte_Minetest_minetest____ssets_manual_img_screenshot_20161203_231622.png b/assets/manual.html.LyXconv/17_home_moritz_Home_Projekte_Minetest_minetest____ssets_manual_img_screenshot_20161203_231622.png
new file mode 100644
index 0000000..6a667b9
--- /dev/null
+++ b/assets/manual.html.LyXconv/17_home_moritz_Home_Projekte_Minetest_minetest____ssets_manual_img_screenshot_20161203_231622.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-12.png b/assets/manual.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-12.png
new file mode 100644
index 0000000..1c5c088
--- /dev/null
+++ b/assets/manual.html.LyXconv/1_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-12.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-57.png b/assets/manual.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-57.png
new file mode 100644
index 0000000..9c0dd3e
--- /dev/null
+++ b/assets/manual.html.LyXconv/2_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-57.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-05-51.png b/assets/manual.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-05-51.png
new file mode 100644
index 0000000..3eae023
--- /dev/null
+++ b/assets/manual.html.LyXconv/3_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-05-51.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-07-13.png b/assets/manual.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-07-13.png
new file mode 100644
index 0000000..6da1b3f
--- /dev/null
+++ b/assets/manual.html.LyXconv/4_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-07-13.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-56-34.png b/assets/manual.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-56-34.png
new file mode 100644
index 0000000..c57002d
--- /dev/null
+++ b/assets/manual.html.LyXconv/5_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-56-34.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-08-02.png b/assets/manual.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-08-02.png
new file mode 100644
index 0000000..83d0249
--- /dev/null
+++ b/assets/manual.html.LyXconv/6_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-08-02.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-09-01.png b/assets/manual.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-09-01.png
new file mode 100644
index 0000000..be586b6
--- /dev/null
+++ b/assets/manual.html.LyXconv/7_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-09-01.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-10-15.png b/assets/manual.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-10-15.png
new file mode 100644
index 0000000..00d2ded
--- /dev/null
+++ b/assets/manual.html.LyXconv/8_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-10-15.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-45-38.png b/assets/manual.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-45-38.png
new file mode 100644
index 0000000..f535adb
--- /dev/null
+++ b/assets/manual.html.LyXconv/9_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-45-38.png
Binary files differ
diff --git a/assets/manual.html.LyXconv/manual.css b/assets/manual.html.LyXconv/manual.css
new file mode 100644
index 0000000..ed26400
--- /dev/null
+++ b/assets/manual.html.LyXconv/manual.css
@@ -0,0 +1,112 @@
+
+/* start css.sty */
+.ecsx-1728{font-size:170%; font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1728{ font-weight: bold;}
+.ecsx-1200{font-size:120%; font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ecsx-1200{ font-weight: bold;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+.ecsx-1000{ font-weight: bold;}
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; }
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.figure img.graphics {margin-left:10%;}
+/* end css.sty */
+
diff --git a/assets/manual.html.LyXconv/manual.html b/assets/manual.html.LyXconv/manual.html
new file mode 100644
index 0000000..fe1c132
--- /dev/null
+++ b/assets/manual.html.LyXconv/manual.html
@@ -0,0 +1,236 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+<!--l. 15--><p class="noindent" ><span
+class="ecsx-1728">Advanced</span>
+<span
+class="ecsx-1728">Trains</span>
+<!--l. 17--><p class="indent" > This mod aims to provide realistic, good-looking and functional trains by introducing a revolutionary rail placement system. It
+features several wagons that can be coupled together.
+<!--l. 21--><p class="indent" > This mod is not finished. If you miss features, suggest them, but do not denounce this mod just because they are not yet implemented.
+They will be.
+<span
+class="ecsx-1200">Placing</span>
+<span
+class="ecsx-1200">Rails</span>
+<!--l. 27--><p class="noindent" >Minetest&#8217;s in-house rail system features rails that turn at an angle of 90 degrees &#8211; totally impractical for the use with realistic trains. So
+we have our own rails. Remember: Carts can&#8217;t drive on the rails provided by this mod, as do trains not drive on minetest&#8217;s default rails
+because of their different track widths.
+<!--l. 33--><p class="indent" > First, craft some rails.
+<!--l. 35--><p class="indent" > <img
+src="0_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-43-29.png" alt="PIC"
+>
+<!--l. 37--><p class="indent" > Now, place one at any position and another one right next to it: you have made your first railway track!
+<!--l. 40--><p class="indent" > To learn how to make turns have a look at the following examples. A rail node has been placed only at the red-marked
+places.
+<!--l. 43--><p class="indent" > <img
+src="1_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-12.png" alt="PIC"
+><img
+src="2_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-04-57.png" alt="PIC"
+>
+<!--l. 45--><p class="indent" > <img
+src="3_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-05-51.png" alt="PIC"
+><img
+src="4_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-07-13.png" alt="PIC"
+>
+<!--l. 47--><p class="indent" > As shown in the illustrations above, the 30-degree angled rails use a knight&#8217;s move (2 ahead, 1 aside) for placement. For the rails to
+look realistic, I encourage you not to build turns that are too narrow. IMO the angles you can build with this are still way to narrow, but
+this is the best compromise I can find.
+<!--l. 53--><p class="indent" >
+<!--l. 53--><p class="noindent" ><span
+class="ecsx-1200">Switches</span>
+<!--l. 55--><p class="indent" > To create switches we need the trackworker tool. ATM it looks like a Doctor Who Sonic Screwdriver. Aside from turning rails into
+switches, it is also capable of rotating everything (rails, bumpers, signals) in this mod. Due to internal mechanics, nothing can be rotated
+using the default screwdriver.
+<!--l. 61--><p class="indent" > <img
+src="5_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-56-34.png" alt="PIC"
+>
+<!--l. 63--><p class="indent" > Place some rails. Then left-click 1-2 times on one of these rails, until you see a switch. Use right-click to rotate it how you need it. You
+can change the switch direction by right-clicking the switch or by powering it with mesecons.
+<!--l. 68--><p class="indent" > Unfortunately tracks that are placed next to switches don&#8217;t always automatically connect to them. You need to correct manually
+using the Trackworker. One day I will implement proper handling for these. When you are finished it could look like
+this:
+<!--l. 73--><p class="indent" > <img
+src="6_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-08-02.png" alt="PIC"
+>
+<!--l. 75--><p class="indent" >
+<!--l. 75--><p class="noindent" ><span
+class="ecsx-1200">Rail</span>
+<span
+class="ecsx-1200">crosses</span>
+<!--l. 77--><p class="indent" > There are no real cross-rail nodes. However you can create crossing rails by being creative and using the knight&#8217;s move or by placing
+opposing 45-degree rails.
+<!--l. 81--><p class="indent" > <img
+src="7_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-09-01.png" alt="PIC"
+><img
+src="8_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_10-10-15.png" alt="PIC"
+>
+<!--l. 83--><p class="indent" >
+<!--l. 83--><p class="noindent" ><span
+class="ecsx-1200">Height</span>
+<span
+class="ecsx-1200">differences</span>
+<!--l. 85--><p class="indent" > To master height differences you can craft slope nodes:
+<!--l. 87--><p class="indent" > <img
+src="9_home_moritz_Home_Projekte_Minetest_minetest_m___nual_img_Bildschirmfoto_2016-09-17_09-45-38.png" alt="PIC"
+>
+<!--l. 89--><p class="indent" > To place them, you have to prepare the base, then stand in the right direction and point to the slope start point, then place it. A slope
+will be constructed in the direction you are facing (45 degree steps) leaned against the next solid node. The right number of slopes is
+subtracted from the item stack if you are in survival.
+<!--l. 95--><p class="indent" >
+<!--l. 95--><p class="noindent" ><span
+class="ecsx-1200">Bumpers,</span>
+<span
+class="ecsx-1200">platforms,</span>
+<span
+class="ecsx-1200">signals</span>
+<span
+class="ecsx-1200">and</span>
+<span
+class="ecsx-1200">detector</span>
+<span
+class="ecsx-1200">rails</span>
+<!--l. 97--><p class="indent" > <img
+src="10_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-48-54.png" alt="PIC"
+>
+<!--l. 99--><p class="indent" > Bumpers are objects that are usually placed at the end of a track to prevent trains rolling off it. After placed, they can be rotated
+using the Trackworker.
+<!--l. 103--><p class="indent" > <img
+src="11_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-50-27.png" alt="PIC"
+><img
+src="12_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-51-02.png" alt="PIC"
+>
+<!--l. 105--><p class="indent" > These are a regular analog signal and an electric signal. Like everything, you can rotate them using the Trackworker.
+Right-click or power with mesecons to signal trains that they can pass or have to stop. The signals do not have any effect on
+trains, they can only signal the driver. A more advanced signalling system (with distant signals/signal combinations) is
+planned.
+<!--l. 112--><p class="indent" > <img
+src="13_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-39.png" alt="PIC"
+><img
+src="14_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2016-09-17_09-58-20.png" alt="PIC"
+>
+<!--l. 114--><p class="indent" > These are some platform nodes. I suggest using the left one, it&#8217;s only half height and looks better. These nodes also have a sandstone
+variant, craft with sandstone bricks
+<!--l. 118--><p class="indent" > <img
+src="15_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-33-09.png" alt="PIC"
+>
+<!--l. 120--><p class="indent" > These detector rails turn adjacent mesecons on when a train is standing/driving over them.
+<!--l. 123--><p class="indent" > Notice: Detector rails and bumpers currently aren&#8217;t aligned to the regular tracks. This will be fixed soon. Meanwhile, you need to
+rotate them manually.
+<!--l. 127--><p class="indent" >
+<!--l. 127--><p class="noindent" ><span
+class="ecsx-1200">Trains</span>
+<!--l. 129--><p class="indent" > There are some wagons included in this modpack, however community members (namely mbb and Andrey) have made some more wagons
+that can be downloaded and enabled separately. Visit the forum topic (<a
+href="https://forum.minetest.net/viewtopic.php?f=11&t=14726" class="url" ><span
+class="ectt-1000">https://forum.minetest.net/viewtopic.php?f=11&amp;t=14726</span></a>)
+to download them.
+<!--l. 134--><p class="indent" > To see what&#8217;s included, look up in a craft guide or consult the creative mode inventory.
+<!--l. 137--><p class="indent" > To place wagons simply craft and click a track. To remove a wagon, punch it. Only the person who placed the wagon can do this. In
+survival if you destroy trains you get only some of your steel back, so you will be asked to confirm if you really want to destroy a
+wagon.
+<!--l. 142--><p class="indent" >
+<!--l. 142--><p class="noindent" ><span
+class="ecsx-1200">Driving</span>
+<span
+class="ecsx-1200">trains</span>
+<!--l. 144--><p class="indent" > Right-click any wagon to get on. This will attach you to the wagon and register you as passenger. Depending on how the wagon is set
+up, you are either in a passenger seat or inside a driver stand. Right-clicking again will show your possibilities on what you can do in/with
+the wagon.
+<!--l. 150--><p class="indent" > Example:
+<!--l. 152--><p class="indent" > <img
+src="16_home_moritz_Home_Projekte_Minetest_minetest____nual_img_Bildschirmfoto_2017-03-09_11-42-49.png" alt="PIC"
+>
+<!--l. 154--><p class="indent" > When entering a subway wagon, you are formally inside the passenger area. You can see this by the fact that there&#8217;s no head-up
+display. Right-clicking brings up this form.
+<!--l. 158--><p class="indent" > The first button will make you move to the Driver stand, so you can drive the train.
+<!--l. 161--><p class="indent" > The second button should say &#8220;Wagon properties&#8221; and appears only for the wagon owner. See &#8220;Wagon Properties&#8221;.
+<!--l. 164--><p class="indent" > The last button tells that the doors are closed, so you can&#8217;t get off at this time. If the doors are open or the wagon has no doors, this
+button says &#8220;Get off&#8221;.
+<!--l. 168--><p class="indent" > It is always possible to bypass closed doors and get off by holding the Sneak key and right-clicking the wagon or by
+holding Sneak and Use at the same time. Remember that this may result in your death when the train is travelling
+fast.
+<!--l. 173--><p class="indent" > The Japanese train and the Subway train support automatic getting on by just walking into the wagon. As soon as you stand on a
+platform and walk towards a door, you will automatically get on the wagon. On these, pressing W or S while inside the Passenger Area
+will also make you get off.
+<!--l. 179--><p class="indent" >
+<!--l. 179--><p class="noindent" ><span
+class="ecsx-1200">Train</span>
+<span
+class="ecsx-1200">controls</span>
+<!--l. 181--><p class="indent" > If you are inside a driver stand you are presented with a head-up display:
+<!--l. 184--><p class="indent" > The upper bar shows your current speed and the lower bar shows what speed you ordered the train to hold. Assuming you have the
+default controls (WASD, Shift for sneak, Space for jump), the following key bindings apply:
+ <ul class="itemize1">
+ <li class="itemize">W - faster
+ </li>
+ <li class="itemize">S - slower / change direction
+ </li>
+ <li class="itemize">A / D &#8211; open/close doors
+ </li>
+ <li class="itemize">Space: brake (shown by =B=, target speed will be decreased automatically)
+ </li>
+ <li class="itemize">Sneak+S: set speed to 0 (train rolls out, brake to stop!)
+ </li>
+ <li class="itemize">Sneak+W: Set full speed
+ </li>
+ <li class="itemize">Sneak+A: Set speed to 4 (~40km/h)
+ </li>
+ <li class="itemize">Sneak+D: Set speed to 8 (~100km/h)
+ </li>
+ <li class="itemize">Sneak+Space: toggle brake (the brake will not release when releasing the keys, shown by =^B=)</li></ul>
+<!--l. 201--><p class="indent" >
+<!--l. 201--><p class="noindent" ><span
+class="ecsx-1200">Coupling</span>
+<span
+class="ecsx-1200">wagons</span>
+<!--l. 203--><p class="indent" > You just learned how to drive an engine. Now place a wagon anywhere and drive your engine slowly towards that wagon. As soon as
+they collided your engine will stop. Now get off and right-click the green icon that appeared between the engine and the train. You have
+coupled the wagon to the engine.
+<!--l. 209--><p class="indent" > <img
+src="17_home_moritz_Home_Projekte_Minetest_minetest____ssets_manual_img_screenshot_20161203_231622.png" alt="PIC"
+>
+<!--l. 211--><p class="indent" > To discouple a wagon, punch the red icon between the wagons you want to discouple while the train is standing.
+<!--l. 214--><p class="indent" >
+<!--l. 214--><p class="noindent" ><span
+class="ecsx-1200">Automatic</span>
+<span
+class="ecsx-1200">Train</span>
+<span
+class="ecsx-1200">Control</span>
+<span
+class="ecsx-1200">(ATC)</span>
+<!--l. 216--><p class="indent" > ATC rails allow you to automate train operation. There are two types of ATC rails:
+<!--l. 219--><p class="indent" >
+<!--l. 219--><p class="noindent" ><span
+class="ecsx-1000">Regular</span>
+<span
+class="ecsx-1000">ATC</span>
+<!--l. 221--><p class="indent" > The ATC rail does not have a crafting recipe. When placed, you can set a command and it will be sent to any train driving over the
+controller.
+<!--l. 224--><p class="indent" > Only the static mode is implemented, changing the mode has no effect.
+<!--l. 226--><p class="indent" > For a detailed explanation how ATC commands work and their syntax see atc_command.txt
+<!--l. 229--><p class="indent" > Note: to rotate ATC rails, you need to bypass the formspec that is set for the node. To do this, hold Sneak when right-clicking the rail
+with the trackworker tool.
+<!--l. 233--><p class="indent" >
+<!--l. 233--><p class="noindent" ><span
+class="ecsx-1000">LUA</span>
+<span
+class="ecsx-1000">ATC</span>
+<!--l. 235--><p class="indent" > The LUA ATC suite is part of the mod advtrains_luaautomation. The LUA ATC components are quite similar to Mesecons
+Luacontrollers and allow to create all kinds of automation systems. This tool is not intended for beginners or regular players, but for
+server admins who wish to create a heavily automated subway system.
+<!--l. 241--><p class="indent" > More information on those can be found inside the mod directory of advtrains_luaautomation.
+</body></html>
+
+
+