From 158c952b6ba238e8f6876573d190f66a3efd07b6 Mon Sep 17 00:00:00 2001 From: Jaculabilis Date: Fri, 7 Apr 2023 21:27:41 -0700 Subject: [PATCH] Update README with order parsing grammar --- README.md | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 818ef1f..601bbf0 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,105 @@ When a unit changes the outcome of a battle in the past, only the timeline of th Since there are many ways to create new timelines, the game would rapidly expand beyond all comprehension if this were not counterbalanced in some way. This happens during the _sustain phase_, which occurs after the fall movement and retreat phases and before the winter buid/disband phase. -(TODO) +WIP: the sustain phase has not been implemented yet ### Victory conditions The Great Powers of Europe can only wage multiversal wars because they are lead by extradimensional beings masquerading as human politicians. When a country is eliminated in one timeline, its extradimensional leader is executed, killing them in all timelines. + +### Unit designations + +In _Diplomacy_, orders refer to provinces by name or abbreviation, such as an order given to "Army Munich" or a build order for "London". In _5D Diplomacy with Multiversal Time Travel_, this is insufficient to unambiguously identify a province, since the province exists in multiple timelines across multiple turns. The convention for identifying a multiversal location is `timeline:province:turn`, where `timeline` is the timeline's identifier and `turn` is the turn's identifier. Thus, an army in Munich in timeline "bravo" in Spring 1902 might be referenced as "Army bravo:Munich:Spring 1902" or "A b:Mun:S02" for short. + +(Why this order? If timeline and turn identifiers were next to each other, it could be difficult to immediately see which one is the timeline and which one is the turn if both are in a short representation, especially for timelines designated `foxtrot` or `sierra` compared to turns designated as being Fall or Spring. _5D Diplomacy with Multiversal Time Travel_ is already complicated enough, so the timeline and turn are put on either side of the province.) + +WIP: parsing of turn designations has not been implemented yet + +## 5dp script + +Order notation is case-insensitive. + +### Order element grammar + +Where a unit type is expected, either the full unit type name or a single letter is valid. +``` + = / + = "Army" / "Fleet" + = "A" / "F" +``` + +Where a timeline is expected, either the full timeline designation or an initial is valid. An omitted secondary designation is equivalent to a secondary designation of 0. +``` + = / + = + = "alfa" / "bravo" / ... + = "" / "prime" / "second" / ... + = + = "a" / "b" / ... + = "" / "1" / "2" / ... +``` + +Where a province is expected, either the province's full name or a known abbreviation is valid. A named location in a province may optionally be specified with either its full name or a known abbreviation. A named location is not necessary for the _form_ of a province to be valid, though an order may be invalid if the omission creates an ambiguity. +``` + = ( / ) ["/" ( / )] + = "Munich" / "Tyrolia" / ... + = "MUN" / "TYR" / ... + = "north coast" / "south coast" / ... + = "nc" / "sc" / ... +``` + +Where a turn is expected, either the full seasonal designation or an abbreviated form is valid. +``` + = ( / ) [" "] ( / ) + = "Spring" / "Fall" / "Winter" + = "S" / "F" / "W" + = "1901" / "1902" / ... + = "01" / "02" / ... +``` + +A multiversal location is a timeline, a province, and a turn separated by a colon. +``` + = ":" ":" +``` + +Thus, the following multiversal locations are equivalent: +* `bravoprime:Irish Sea:Fall 1902` +* `b1:IRI:F02` +* `bravoprime:IRS:Fall02` + +### Order formats + +Note that DATC 4.C makes unit designations superfluous outside some build order cases. Thus, the `` is considered optional in the orders below. + +Hold orders require the unit and an indication of a hold order. +``` + = [] + = "hold" / "holds" +``` + +Move orders require the unit, target, and an indication of movement instead of support. +``` + = [] + = "-" / " to " +``` + +Support-hold orders require the unit, target, and an indication of support instead of movement. +``` + = [] + = " S " / " support " / " supports " +``` + +Support-move orders require the unit, target, and the support and move indicators. +``` + = [] +``` + +Convoy orders WIP. + +Retreat orders WIP. + +Build orders WIP. + +Disband orders WIP. + +Sustain orders WIP. \ No newline at end of file