diff --git a/vasl_templates/webapp/data/default-template-pack/nat_caps.j2 b/vasl_templates/webapp/data/default-template-pack/nat_caps.j2
index 8d64ca8..de7bc17 100644
--- a/vasl_templates/webapp/data/default-template-pack/nat_caps.j2
+++ b/vasl_templates/webapp/data/default-template-pack/nat_caps.j2
@@ -7,6 +7,7 @@
td { padding: 2px 5px ; }
li.comment { font-size: 96% ; font-style: italic ; color: #404040 ; }
span.comment { font-size: 85% ; font-style: italic ; color: #404040 ; }
+.note-group { margin-top: 5px ; padding-top: 3px ; border-top: 1px solid #ccc ; }
@@ -30,18 +31,20 @@ span.comment { font-size: 85% ; font-style: italic ; color: #404040 ; }
{%if NAT_CAPS.OBA_BLACK%}
OBA: {{NAT_CAPS.OBA_BLACK}} {{NAT_CAPS.OBA_RED}}
{%if NAT_CAPS.OBA_ACCESS%} (access: {{NAT_CAPS.OBA_ACCESS}}) {%endif%}
-
{%if NAT_CAPS.OBA_COMMENTS%}
{%endif%}
{%endif%}
-{%if NAT_CAPS.NOTES%}
- {%for note in NAT_CAPS.NOTES%}
- - {{note}}
-{%endfor%}
-{%endif%}
+{% for group in NAT_CAPS.NOTE_GROUPS %}
+
+{%if group.CAPTION %}
{{group.CAPTION}}
{%endif%}
+{%if group.NOTES %}
{%for note in group.NOTES%}
+ - {{note}} {%endfor%}
+
{%endif%}
+
+{%endfor%}
{%else%}
diff --git a/vasl_templates/webapp/data/default-template-pack/national-capabilities.json b/vasl_templates/webapp/data/default-template-pack/national-capabilities.json
index 7a02052..39600d0 100644
--- a/vasl_templates/webapp/data/default-template-pack/national-capabilities.json
+++ b/vasl_templates/webapp/data/default-template-pack/national-capabilities.json
@@ -8,7 +8,11 @@
"notes": [
"{? 10/1943- | Inherent PF | No Inherent PF | Inherent PF10/43+ ?}",
"{? 01/1944- | Inherent ATMM | No Inherent ATMM | Inherent ATMM44+ ?}",
- "SS: - Disrupt & RtPh Surrender NA
vs Russians - Massacre OK
- {? 01/1944- | Squad Assault Fire | No Squad Assault Fire | Squad Assault Fire44+ ?}
"
+ { "caption": "SS", "notes": [
+ "Disrupt & RtPh Surrender NA
vs Russians",
+ "Massacre OK",
+ "{? 01/1944- | Squad Assault Fire | No Squad Assault Fire | Squad Assault Fire44+ ?}"
+ ] }
]
},
@@ -34,7 +38,11 @@
"hob_drm": "0 DRM",
"grenades": "SMOKE",
"notes": [
- "U.S.M.C.: - Disruption NA
- 7-6-8 can Self-Deploy
- Vehicle [EXC: LC] Crew: Army 1-2-6
"
+ { "caption": "U.S.M.C.", "notes": [
+ "Disruption NA",
+ "7-6-8 can Self-Deploy",
+ "Vehicle [EXC: LC] Crew: Army 1-2-6"
+ ] }
]
},
"kfw-american": {
@@ -46,14 +54,30 @@
"hob_drm": [ "0 DRM", "+3 for Katusa; NA for TACP" ],
"grenades": "SMOKE",
"notes": [
- "Rangers: 6-6-8 - Self-Rally OK
- Self-Deploy (1TC) & Self-Recombine OK
- Cowering NA
- Commandos
- No Non-Qualified Use penalty for RCL
- No Captured Use penalty for Communist SW
",
- "Airborne: 6-6-7",
"{! 06/1950-08/1950 = Early KW U.S. Army rules: - Always Lax
- Ammo Shortage
- SW repair only on \"1\"
- Radio/Phone Contact reduced by 1
- AFV Inherent Crews have Morale 7
- All motorized vehicles have Red MP
!}",
- "Katusa: As U.S. Army MMC - HoB +3 DRM
- Leader Creation +1 drm {! 09/1950-10/1951 =
- ELR 2
- Allied Troop penalties with U.S. leaders !}
",
"Disruption NA",
"7-6-8 can Self-Deploy",
"Use 5-5-8 when: - U.S.M.C. ELR Replacement is in effect
- U.S.M.C. MMC re-arms
",
- "Tactical Air Control Party: - Inherent Radio (Contact = 9)
- May set up HIP
"
+ { "caption": "Rangers (6-6-8)", "notes": [
+ "Self-Rally OK",
+ "Self-Deploy (1TC) & Self-Recombine OK",
+ "Cowering NA",
+ "Commandos",
+ "No Non-Qualified Use penalty for RCL",
+ "No Captured Use penalty for Communist SW"
+ ] },
+ { "caption": "Airborne (6-6-7)", "allow_empty": true },
+ { "caption": "Katusa", "notes": [
+ "As U.S. Army MMC",
+ "HoB +3 DRM",
+ "Leader Creation +1 drm",
+ "{! 09/1950-10/1951 = ELR 2 !}",
+ "{! 09/1950-10/1951 = Allied Troop penalties with U.S. leaders !}"
+ ] },
+ { "caption": "Tactical Air Control Party", "notes": [
+ "Inherent Radio (Contact = 9)",
+ "May set up HIP"
+ ] }
]
},
@@ -63,9 +87,18 @@
"hob_drm": "-1 DRM",
"grenades": "{? 01/1944- | SMOKE | Smoke | SMOKE44+ ?}",
"notes": [
- "Elite & 1st Line: Cowering NA",
- "ANZAC: Stealthy (unless Green)",
- "Gurkha: - -1 CC DRM
- Disrupt & RtPh Surrender NA
- Commando (unless Green)
- Stealthy
"
+ { "caption": "Elite & 1st Line", "notes": [
+ "Cowering NA"
+ ] },
+ { "caption": "ANZAC", "notes": [
+ "Stealthy (unless Green)"
+ ] },
+ { "caption": "Gurkha", "notes": [
+ "-1 CC DRM",
+ "Disrupt & RtPh Surrender NA",
+ "Commando (unless Green)",
+ "Stealthy"
+ ] }
]
},
@@ -73,8 +106,7 @@
"th_color": [ "Black", "AFV use Red TH#" ],
"oba": [ "6B", "2R" ], "oba_access": "≤ 1",
"hob_drm": "+1 DRM",
- "grenades": "Smoke",
- "notes": []
+ "grenades": "Smoke"
},
"italian": {
@@ -84,7 +116,13 @@
"grenades": "Smoke",
"notes": [
"Escape NA",
- "1st Line & Conscript: - Surrender on HoB Final DR ≥ 10
- Deploy NA
- +1 CC Capture DRM NA
- Always Lax
- 1 PAATC
"
+ { "caption": "1st Line & Conscript", "notes": [
+ "Surrender on HoB Final DR ≥ 10",
+ "Deploy NA",
+ "+1 CC Capture DRM NA",
+ "Always Lax",
+ "1 PAATC"
+ ] }
]
},
@@ -102,10 +140,14 @@
"Deploy (1TC) & Recombine without Leader",
"Self-Rally OK [EXC: Conscript]",
"Cowering NA [EXC: Conscript]",
- "Elite & 1st Line: - Always Stealthy
- Use FT/DC as Elite
- {? 07/1944- | Inherent PF | No Inherent PF | Inherent PF7/44+ ?}
",
"Ski-trained (don Skis = one MF)",
"Leader Creation NA",
- "Captured Use penalties NA for Russian MG
[EXC: LMG in 1939; .50-cal]"
+ "Captured Use penalties NA for Russian MG
[EXC: LMG in 1939; .50-cal]",
+ { "caption": "Elite & 1st Line", "notes": [
+ "Always Stealthy",
+ "Use FT/DC as Elite",
+ "{? 07/1944- | Inherent PF | No Inherent PF | Inherent PF7/44+ ?}"
+ ] }
]
},
@@ -114,9 +156,13 @@
"oba": [ "6B", "3R"],
"hob_drm": "0 DRM",
"notes": [
- "1st Line Battle Hardening → Fanatic",
- "Allied Troops Captured Use penalties NA",
- "Extreme Winter effects NA"
+ "Extreme Winter effects NA",
+ { "caption": "1st Line", "notes": [
+ "Battle Hardening → Fanatic"
+ ] },
+ { "caption": "Allied Troops", "notes": [
+ "Captured Use penalties NA"
+ ] }
]
},
@@ -127,9 +173,12 @@
"grenades": "Smoke",
"notes": [
"Escape NA",
- "1st Line & Conscript: - 1 PAATC
- Surrender on HoB Final DR ≥ 10
",
"{? 03/1944- | Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+) | No Inherent PF | Inherent PF (Romanian3/44+; Hungarian6/44+) ?}",
- "{? 07/1943- | Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM) | No Inherent ATMM | Inherent ATMM(7/43+) ?}"
+ "{? 07/1943- | Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM) | No Inherent ATMM | Inherent ATMM(7/43+) ?}",
+ { "caption": "1st Line & Conscript", "notes": [
+ "1 PAATC",
+ "Surrender on HoB Final DR ≥ 10"
+ ] }
]
},
@@ -140,7 +189,9 @@
"grenades": "Smoke",
"notes": [
"+1 Broken Morale vs Italians",
- "1st Line & Green: 1 PAATC"
+ { "caption": "1st Line & Green", "notes": [
+ "1 PAATC"
+ ] }
]
},
@@ -151,19 +202,34 @@
"grenades": "SMOKE",
"notes": [
"SMC PTC/Pin/Break NA",
- "Leaders: - Replacement NA
- Casualty MC → elimination
- Morale/Rally/Berserk as Commissar
",
"Tank-Hunter Heroes & ATMM",
"Banzai Charge (always Lax)",
- "Elite & 1st Line: Always Stealthy",
- "Conscript: Always Lax",
"ATR/MMG/HMG Breakdown penalty",
- "Always NA: - PAATC
- Escape
- RtPh Surrender
- Disruption
- Encircled lower Morale
- Leader Creation
",
"LLMC → LLTC if unbroken",
"Massacre OK",
"-1 Interrogation DRM",
"-2 Concealment drm",
"Enemy +2 search drm",
- "Hand-to-Hand CC & Hara-Kiri"
+ "Hand-to-Hand CC & Hara-Kiri",
+ { "caption": "Leaders", "notes": [
+ "Replacement NA",
+ "Casualty MC → elimination",
+ "Morale/Rally/Berserk as Commissar"
+ ] },
+ { "caption": "Elite & 1st Line", "notes": [
+ "Always Stealthy"
+ ] },
+ { "caption": "Conscript", "notes": [
+ "Always Lax"
+ ] },
+ { "caption": "Always NA", "notes": [
+ "PAATC",
+ "Escape",
+ "RtPh Surrender",
+ "Disruption",
+ "Encircled lower Morale",
+ "Leader Creation"
+ ] }
]
},
@@ -180,9 +246,11 @@
"Deploy NA",
"Lax at Night",
"+1 Leader Creation drm",
- "1st Line & Conscript: 1 PAATC",
"Human Wave",
- "Dare-Death Squads [EXC: 5-3-7]"
+ "Dare-Death Squads [EXC: 5-3-7]",
+ { "caption": "1st Line & Conscript", "notes": [
+ "1 PAATC"
+ ] }
]
},
@@ -222,8 +290,16 @@
"hob_drm": "+3/+4 DRM",
"grenades": "SMOKE",
"notes": [
- "Republic of Korea (ROK): {! 06/1946-04/1951 = - Early KW ROK rules !}
- 1st Line MMC Battle-Harden to Fanatic
- 2nd Line & Conscript MMC: {? -10/1950 |
- Human Bullets | |
- Human Bullets (pre-11/50) ?}
",
- "Korean Marine Corps (KMC): {! 04/1949-07/1950 = - Japanese-Armed KMC | 08/1950- =
- U.S.-Armed KMC !} {? -01/1951 |
- SW B#/X#/ROF penalty | |
- SW B#/X#/ROF penalty (pre-2/51) ?}
"
+ { "caption": "Republic of Korea (ROK)", "notes": [
+ "{! 06/1946-04/1951 = Early KW ROK rules !}",
+ "1st Line MMC: ",
+ "2nd Line & Conscript MMC: - Always Lax
- Deploy NA",
+ "{? -10/1950 | Human Bullets | | Human Bullets (pre-11/50) ?}"
+ ] },
+ { "caption": "Korean Marine Corps (KMC)", "notes": [
+ "{! 04/1949-07/1950 = Japanese-Armed KMC | 08/1950- = U.S.-Armed KMC !}",
+ "{? -01/1951 | SW B#/X#/ROF penalty | | SW B#/X#/ROF penalty (pre-2/51) ?}"
+ ] }
]
},
@@ -233,9 +309,18 @@
"hob_drm": "-1 DRM",
"grenades": "SMOKE",
"notes": [
- "2nd Line MMC: ELR Replacement → Disrupt",
- "{? 01/1952- | Canadian squads have Assault Fire | | Canadian squads have Assault Fire1/52+ ?}",
- "Royal Marines:
- Commandos
- No Non-Qualified Use penalty for RCL
- No Captured Use penalty for Communist SW
- Self-Deploy (1TC) & Self-Recombine OK
"
+ { "caption": "2nd Line MMC", "notes": [
+ "ELR Replacement → Disrupt"
+ ] },
+ { "caption": "Canadian", "notes": [
+ "{? 01/1952- | Squads have Assault Fire | | Squads have Assault Fire1/52+ ?}"
+ ] },
+ { "caption": "Royal Marines", "notes": [
+ "Commandos",
+ "No Non-Qualified Use penalty for RCL",
+ "No Captured Use penalty for Communist SW",
+ "Self-Deploy (1TC) & Self-Recombine OK"
+ ] }
]
},
@@ -245,8 +330,12 @@
"hob_drm": [ "0 DRM", "+3 for Turkish" ],
"grenades": "SMOKE",
"notes": [
- "2nd Line MMC: ELR Replacement → Disrupt [EXC: Turkish]",
- "Bayonet Charge NTC NA for Ethiopian, French, Turkish leaders"
+ { "caption": "2nd Line MMC", "notes": [
+ "ELR Replacement → Disrupt [EXC: Turkish]"
+ ] },
+ { "caption": "Ethiopian, French, Turkish", "notes": [
+ "Bayonet Charge NTC NA for leaders"
+ ] }
]
},
@@ -256,11 +345,24 @@
"hob_drm": "+2 DRM",
"grenades": null,
"notes": [
- "As Russian - Elite Personnel always Stealthy
- Elite Squads may Deploy
- Commissars
- Massacre OK
- Human Wave by SSR only
",
"Suicide Heroes",
"Starshell restrictions",
- "Assault Engineers: WP grenades",
- "Communist Partisans: - Neither Elite nor Conscript/Green
- Always Stealthy
- Massacre OK
- Disrupt & RtPh Surrender NA
"
+ { "caption": "As Russian", "notes": [
+ "Elite Personnel always Stealthy",
+ "Elite Squads may Deploy",
+ "Commissars",
+ "Massacre OK",
+ "Human Wave by SSR only"
+ ] },
+ { "caption": "Assault Engineers", "notes": [
+ "WP grenades"
+ ] },
+ { "caption": "Communist Partisans", "notes": [
+ "Neither Elite nor Conscript/Green",
+ "Always Stealthy",
+ "Massacre OK",
+ "Disrupt & RtPh Surrender NA"
+ ] }
]
},
@@ -278,7 +380,6 @@
"Starshell restrictions",
"Armored Assault NA",
"Riders NA",
- "Assault Engineers: WP grenades",
"{! 10/1950-03/1951 = Early KW CPVA rules !}",
"Leaders & Political Officers increase Morale
as if Commissar",
"SW B#/X#/ROF penalty",
@@ -292,7 +393,10 @@
"Infantry Overrun NTC NA",
"Conceal if +2 Hindrance",
"Concealment -1 drm",
- "Civilian Interrogation is always in effect"
+ "Civilian Interrogation is always in effect",
+ { "caption": "Assault Engineers", "notes": [
+ "WP grenades"
+ ] }
]
},
@@ -303,9 +407,13 @@
"grenades": null,
"notes": [
"Dare-Death Squads (as if Chinese)",
- "Elite and 1st Line MMC: Always Stealthy",
"Deploy NA [EXC: A20.5 & A21.22]; Recombine OK",
- "Leaders: Morale/Berserk/Rally as Commissar"
+ { "caption": "Elite and 1st Line MMC", "notes": [
+ "Always Stealthy"
+ ] },
+ { "caption": "Leaders", "notes": [
+ "Morale/Berserk/Rally as Commissar"
+ ] }
]
},
diff --git a/vasl_templates/webapp/static/nat_caps.js b/vasl_templates/webapp/static/nat_caps.js
index 1cbd9d6..3080be3 100644
--- a/vasl_templates/webapp/static/nat_caps.js
+++ b/vasl_templates/webapp/static/nat_caps.js
@@ -84,14 +84,46 @@ function set_nat_caps_params( player_nat, params )
// set the OBA access number
add_nat_cap( "OBA_ACCESS", nat_caps.oba_access ) ;
- // add any additional notes
- if ( nat_caps.notes ) {
- params.NAT_CAPS.NOTES = [] ;
- for ( i=0 ; i < nat_caps.notes.length ; ++i ) {
- val = make_time_based_comment( nat_caps.notes[i], params.SCENARIO_MONTH, params.SCENARIO_YEAR ) ;
- if ( val )
- params.NAT_CAPS.NOTES.push( fixup_content( val ) ) ;
+ // add any notes
+ function load_notes( data ) {
+ // create a new note group
+ var group = {} ;
+ var groupIndex = params.NAT_CAPS.NOTE_GROUPS.length ;
+ params.NAT_CAPS.NOTE_GROUPS.push( group ) ;
+ // locate the notes
+ var notes ;
+ if ( $.isArray( data ) )
+ notes = data ; // nb: this is the root group (which has no caption)
+ else {
+ if ( data.caption )
+ group.CAPTION = fixup_content( data.caption ) ;
+ notes = data.notes || [] ;
+ }
+ // add the notes to the new note group
+ var notes2 = [] ;
+ notes.forEach( function( note ) {
+ if ( typeof note === "string" ) {
+ // add the next note to the note group
+ val = make_time_based_comment( note, params.SCENARIO_MONTH, params.SCENARIO_YEAR ) ;
+ if ( val )
+ notes2.push( fixup_content( val ) ) ;
+ } else {
+ // recurse down and add the child note group
+ load_notes( note ) ;
+ }
+ } ) ;
+ if ( notes2.length > 0 ) {
+ group.NOTES = notes2 ;
+ if ( group.CAPTION )
+ group.CAPTION += ":" ;
}
+ // remove the note group if it's empty
+ if ( ! group.NOTES && ! data.allow_empty )
+ params.NAT_CAPS.NOTE_GROUPS.splice( groupIndex, 1 ) ;
+ }
+ if ( nat_caps.notes ) {
+ params.NAT_CAPS.NOTE_GROUPS = [] ;
+ load_notes( nat_caps.notes ) ;
}
}
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1940.txt
index 103403d..a09f595 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1940.txt
@@ -6,7 +6,7 @@ Red TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* U.S.M.C.:
- * Disruption NA
- * 7-6-8 can Self-Deploy
- * Vehicle [EXC: LC] Crew: Army 1-2-6
+U.S.M.C.:
+* Disruption NA
+* 7-6-8 can Self-Deploy
+* Vehicle [EXC: LC] Crew: Army 1-2-6
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1941.txt
index 114e104..b4a4904 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1941.txt
@@ -6,7 +6,7 @@ Red TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* U.S.M.C.:
- * Disruption NA
- * 7-6-8 can Self-Deploy
- * Vehicle [EXC: LC] Crew: Army 1-2-6
+U.S.M.C.:
+* Disruption NA
+* 7-6-8 can Self-Deploy
+* Vehicle [EXC: LC] Crew: Army 1-2-6
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1942.txt
index 9e2481d..8d23098 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1942.txt
@@ -6,7 +6,7 @@ Red TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* U.S.M.C.:
- * Disruption NA
- * 7-6-8 can Self-Deploy
- * Vehicle [EXC: LC] Crew: Army 1-2-6
+U.S.M.C.:
+* Disruption NA
+* 7-6-8 can Self-Deploy
+* Vehicle [EXC: LC] Crew: Army 1-2-6
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1943.txt
index b759c92..5015123 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1943.txt
@@ -6,7 +6,7 @@ Red TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* U.S.M.C.:
- * Disruption NA
- * 7-6-8 can Self-Deploy
- * Vehicle [EXC: LC] Crew: Army 1-2-6
+U.S.M.C.:
+* Disruption NA
+* 7-6-8 can Self-Deploy
+* Vehicle [EXC: LC] Crew: Army 1-2-6
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1944.txt
index 3de504a..a77578a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1944.txt
@@ -6,7 +6,7 @@ Black TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* U.S.M.C.:
- * Disruption NA
- * 7-6-8 can Self-Deploy
- * Vehicle [EXC: LC] Crew: Army 1-2-6
+U.S.M.C.:
+* Disruption NA
+* 7-6-8 can Self-Deploy
+* Vehicle [EXC: LC] Crew: Army 1-2-6
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1945.txt
index 9fae889..bd51477 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/american/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/american/1945.txt
@@ -6,7 +6,7 @@ Black TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* U.S.M.C.:
- * Disruption NA
- * 7-6-8 can Self-Deploy
- * Vehicle [EXC: LC] Crew: Army 1-2-6
+U.S.M.C.:
+* Disruption NA
+* 7-6-8 can Self-Deploy
+* Vehicle [EXC: LC] Crew: Army 1-2-6
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1940.txt
index 89df9c4..fbc8aa0 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1940.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1941.txt
index cb3980c..18afc3a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1941.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1942.txt
index 3463d12..17b82c7 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1942.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1943.txt
index d530d8e..aa33a1a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1943.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1944.txt
index 0465e33..d7f886b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1944.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1945.txt
index 9a69e91..1deb1e3 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/belgian/1945.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1940.txt
index c5da347..e3de319 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1940.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1941.txt
index 795dd5f..e74963e 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1941.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1942.txt
index 99969a5..10ca2d2 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1942.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1943.txt
index 14e92ef..00fec86 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1943.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1944.txt
index 44c8fbf..0ef92d3 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1944.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1945.txt
index 2c1f59d..4403c07 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british/1945.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1940.txt
index 7a7e88d..5407c5c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1940.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1941.txt
index 2133733..61a9cb4 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1941.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1942.txt
index 0cc277a..ffac74f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1942.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1943.txt
index f9762e5..acaab26 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1943.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1944.txt
index 3eb28d3..e633a5a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1944.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1945.txt
index 7457bdb..b1097d3 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~anzac/1945.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1940.txt
index 010af32..dc07196 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1940.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1941.txt
index b5375ca..d7a731a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1941.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1942.txt
index 1a231ec..bff3604 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1942.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1943.txt
index 9b2770f..13d5c76 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1943.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1944.txt
index b32a19c..72e4d68 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1944.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1945.txt
index 32bb564..65a4bf9 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~australian/1945.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1940.txt
index 46c9123..0d4f960 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1940.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1941.txt
index 1cacf36..78f5fa5 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1941.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1942.txt
index 744c42b..c7ce36c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1942.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1943.txt
index b8e805c..dedbab9 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1943.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1944.txt
index 15f42c7..548e2fa 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1944.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1945.txt
index ccfecf3..97acc13 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~canadian/1945.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1940.txt
index 25ad9f3..b774e86 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1940.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1941.txt
index d0053ef..3c46521 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1941.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1942.txt
index e6c6fb0..3753ce2 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1942.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1943.txt
index b00e277..b368c55 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1943.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1944.txt
index d19a401..7dfe8fd 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1944.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1945.txt
index b99b7b0..89b2097 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/british~newzealand/1945.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1940.txt
index 2cc4c55..487d107 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1940.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1941.txt
index 99c9e6f..4f1239a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1941.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1942.txt
index d39a172..1599759 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1942.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1943.txt
index 80688f9..de707f9 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1943.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1944.txt
index 9bc1c7b..58083db 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1944.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1945.txt
index d71e26d..60596d3 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1945.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1940.txt
index 689e1ee..5b5df35 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1940.txt
@@ -6,6 +6,10 @@ Red TH#
OBA: - - -
* Dare-Death Squads (as if Chinese)
-* Elite and 1st Line MMC: Always Stealthy
* Deploy NA [EXC: A20.5 & A21.22]; Recombine OK
-* Leaders: Morale/Berserk/Rally as Commissar
+
+Elite and 1st Line MMC:
+* Always Stealthy
+
+Leaders:
+* Morale/Berserk/Rally as Commissar
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1941.txt
index 5942da3..e8a19c2 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1941.txt
@@ -6,6 +6,10 @@ Red TH#
OBA: - - -
* Dare-Death Squads (as if Chinese)
-* Elite and 1st Line MMC: Always Stealthy
* Deploy NA [EXC: A20.5 & A21.22]; Recombine OK
-* Leaders: Morale/Berserk/Rally as Commissar
+
+Elite and 1st Line MMC:
+* Always Stealthy
+
+Leaders:
+* Morale/Berserk/Rally as Commissar
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1942.txt
index 7fa15e9..fa4b74e 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1942.txt
@@ -6,6 +6,10 @@ Red TH#
OBA: - - -
* Dare-Death Squads (as if Chinese)
-* Elite and 1st Line MMC: Always Stealthy
* Deploy NA [EXC: A20.5 & A21.22]; Recombine OK
-* Leaders: Morale/Berserk/Rally as Commissar
+
+Elite and 1st Line MMC:
+* Always Stealthy
+
+Leaders:
+* Morale/Berserk/Rally as Commissar
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1943.txt
index a3a2579..217e059 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1943.txt
@@ -6,6 +6,10 @@ Red TH#
OBA: - - -
* Dare-Death Squads (as if Chinese)
-* Elite and 1st Line MMC: Always Stealthy
* Deploy NA [EXC: A20.5 & A21.22]; Recombine OK
-* Leaders: Morale/Berserk/Rally as Commissar
+
+Elite and 1st Line MMC:
+* Always Stealthy
+
+Leaders:
+* Morale/Berserk/Rally as Commissar
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1944.txt
index 0ab64ed..bafb225 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1944.txt
@@ -6,6 +6,10 @@ Red TH#
OBA: - - -
* Dare-Death Squads (as if Chinese)
-* Elite and 1st Line MMC: Always Stealthy
* Deploy NA [EXC: A20.5 & A21.22]; Recombine OK
-* Leaders: Morale/Berserk/Rally as Commissar
+
+Elite and 1st Line MMC:
+* Always Stealthy
+
+Leaders:
+* Morale/Berserk/Rally as Commissar
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1945.txt
index 4d34c6f..0c52e47 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/burmese/1945.txt
@@ -6,6 +6,10 @@ Red TH#
OBA: - - -
* Dare-Death Squads (as if Chinese)
-* Elite and 1st Line MMC: Always Stealthy
* Deploy NA [EXC: A20.5 & A21.22]; Recombine OK
-* Leaders: Morale/Berserk/Rally as Commissar
+
+Elite and 1st Line MMC:
+* Always Stealthy
+
+Leaders:
+* Morale/Berserk/Rally as Commissar
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1940.txt
index 8981022..cc88bfd 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1940.txt
@@ -10,6 +10,8 @@ OBA: 5B 2R (access: ≤ 1)
* Deploy NA
* Lax at Night
* +1 Leader Creation drm
-* 1st Line & Conscript: 1 PAATC
* Human Wave
* Dare-Death Squads [EXC: 5-3-7]
+
+1st Line & Conscript:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1941.txt
index e7b8bd2..7d9127f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1941.txt
@@ -10,6 +10,8 @@ OBA: 5B 2R (access: ≤ 1)
* Deploy NA
* Lax at Night
* +1 Leader Creation drm
-* 1st Line & Conscript: 1 PAATC
* Human Wave
* Dare-Death Squads [EXC: 5-3-7]
+
+1st Line & Conscript:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1942.txt
index 631f940..953813b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1942.txt
@@ -10,6 +10,8 @@ OBA: 5B 2R (access: ≤ 1)
* Deploy NA
* Lax at Night
* +1 Leader Creation drm
-* 1st Line & Conscript: 1 PAATC
* Human Wave
* Dare-Death Squads [EXC: 5-3-7]
+
+1st Line & Conscript:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1943.txt
index 0067b86..d8404fa 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1943.txt
@@ -10,6 +10,8 @@ OBA: 5B 2R (access: ≤ 1)
* Deploy NA
* Lax at Night
* +1 Leader Creation drm
-* 1st Line & Conscript: 1 PAATC
* Human Wave
* Dare-Death Squads [EXC: 5-3-7]
+
+1st Line & Conscript:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1944.txt
index 47c90f3..4c82f69 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1944.txt
@@ -10,6 +10,8 @@ OBA: 5B 2R (access: ≤ 1)
* Deploy NA
* Lax at Night
* +1 Leader Creation drm
-* 1st Line & Conscript: 1 PAATC
* Human Wave
* Dare-Death Squads [EXC: 5-3-7]
+
+1st Line & Conscript:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1945.txt
index 433cc28..2b2f4c0 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/chinese~gmd/1945.txt
@@ -10,6 +10,8 @@ OBA: 5B 2R (access: ≤ 1)
* Deploy NA
* Lax at Night
* +1 Leader Creation drm
-* 1st Line & Conscript: 1 PAATC
* Human Wave
* Dare-Death Squads [EXC: 5-3-7]
+
+1st Line & Conscript:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1940.txt
index fce0120..fd02b7a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1940.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1941.txt
index 7a4718d..21e8624 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1941.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1942.txt
index a802598..4b88b4c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1942.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1943.txt
index 463a1fe..dead12a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1943.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1944.txt
index 0f2df91..d3f87e2 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1944.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1945.txt
index 6978a23..4e793ec 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1945.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1940.txt
index 8c3e8be..27322cc 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1940.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1941.txt
index 34d8b19..0808c0a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1941.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1942.txt
index aaecf4c..2ac5528 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1942.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1943.txt
index 5c647a7..cab1110 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1943.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1944.txt
index 15f2033..874176e 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1944.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1945.txt
index b3ea9b5..622aa5c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/danish/1945.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1940.txt
index 99ca947..8abff76 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1940.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1941.txt
index 837134b..a616b3f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1941.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1942.txt
index f4a52e3..e89219c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1942.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1943.txt
index b1376d5..70b548f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1943.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1944.txt
index 6bafd90..7893287 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1944.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1945.txt
index 376f2bf..a2476b9 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/dutch/1945.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1940.txt
index 4067e6f..7048e09 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1940.txt
@@ -9,10 +9,11 @@ OBA: 6B 3R (access: ≤ 1)
* Deploy (1TC) & Recombine without Leader
* Self-Rally OK [EXC: Conscript]
* Cowering NA [EXC: Conscript]
-* Elite & 1st Line:
- * Always Stealthy
- * Use FT/DC as Elite
- * No Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
+
+Elite & 1st Line:
+* Always Stealthy
+* Use FT/DC as Elite
+* No Inherent PF
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1941.txt
index c8d11d7..f66a708 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1941.txt
@@ -9,10 +9,11 @@ OBA: 7B 3R (access: ≤ 1)
* Deploy (1TC) & Recombine without Leader
* Self-Rally OK [EXC: Conscript]
* Cowering NA [EXC: Conscript]
-* Elite & 1st Line:
- * Always Stealthy
- * Use FT/DC as Elite
- * No Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
+
+Elite & 1st Line:
+* Always Stealthy
+* Use FT/DC as Elite
+* No Inherent PF
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1942.txt
index 3963a4b..7beac89 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1942.txt
@@ -9,10 +9,11 @@ OBA: 7B 3R (access: ≤ 1)
* Deploy (1TC) & Recombine without Leader
* Self-Rally OK [EXC: Conscript]
* Cowering NA [EXC: Conscript]
-* Elite & 1st Line:
- * Always Stealthy
- * Use FT/DC as Elite
- * No Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
+
+Elite & 1st Line:
+* Always Stealthy
+* Use FT/DC as Elite
+* No Inherent PF
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1943.txt
index c5cd47f..e9e053b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1943.txt
@@ -9,10 +9,11 @@ OBA: 8B 3R (access: ≤ 1)
* Deploy (1TC) & Recombine without Leader
* Self-Rally OK [EXC: Conscript]
* Cowering NA [EXC: Conscript]
-* Elite & 1st Line:
- * Always Stealthy
- * Use FT/DC as Elite
- * No Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
+
+Elite & 1st Line:
+* Always Stealthy
+* Use FT/DC as Elite
+* No Inherent PF
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1944.txt
index 8d7d1c6..7574449 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1944.txt
@@ -9,10 +9,11 @@ OBA: 8B 3R (access: ≤ 1)
* Deploy (1TC) & Recombine without Leader
* Self-Rally OK [EXC: Conscript]
* Cowering NA [EXC: Conscript]
-* Elite & 1st Line:
- * Always Stealthy
- * Use FT/DC as Elite
- * No Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
+
+Elite & 1st Line:
+* Always Stealthy
+* Use FT/DC as Elite
+* No Inherent PF
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1945.txt
index e09bd61..1a3685a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1945.txt
@@ -9,10 +9,11 @@ OBA: 7B 3R (access: ≤ 1)
* Deploy (1TC) & Recombine without Leader
* Self-Rally OK [EXC: Conscript]
* Cowering NA [EXC: Conscript]
-* Elite & 1st Line:
- * Always Stealthy
- * Use FT/DC as Elite
- * Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
+
+Elite & 1st Line:
+* Always Stealthy
+* Use FT/DC as Elite
+* Inherent PF
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1940.txt
index 2f789f8..a675ccf 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1940.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1941.txt
index 1f1bcb8..c468319 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1941.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1942.txt
index 6dd7388..ea9dd17 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1942.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1943.txt
index 4c658e3..c6174ee 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1943.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1944.txt
index b156d81..d38681c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1944.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1945.txt
index 92fea6f..5330066 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/free-french/1945.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* Elite & 1st Line: Cowering NA
-* ANZAC: Stealthy (unless Green)
-* Gurkha:
- * -1 CC DRM
- * Disrupt & RtPh Surrender NA
- * Commando (unless Green)
- * Stealthy
+Elite & 1st Line:
+* Cowering NA
+
+ANZAC:
+* Stealthy (unless Green)
+
+Gurkha:
+* -1 CC DRM
+* Disrupt & RtPh Surrender NA
+* Commando (unless Green)
+* Stealthy
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1940.txt
index 7af24ef..1b7c6f7 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1940.txt
@@ -7,7 +7,8 @@ OBA: 8B 3R (access: ≤ 2)
* No Inherent PF
* No Inherent ATMM
-* SS:
- * Disrupt & RtPh Surrender NA vs Russians
- * Massacre OK
- * No Squad Assault Fire
+
+SS:
+* Disrupt & RtPh Surrender NA vs Russians
+* Massacre OK
+* No Squad Assault Fire
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1941.txt
index 1387ac5..a40d133 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1941.txt
@@ -7,7 +7,8 @@ OBA: 8B 3R (access: ≤ 2)
* No Inherent PF
* No Inherent ATMM
-* SS:
- * Disrupt & RtPh Surrender NA vs Russians
- * Massacre OK
- * No Squad Assault Fire
+
+SS:
+* Disrupt & RtPh Surrender NA vs Russians
+* Massacre OK
+* No Squad Assault Fire
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1942.txt
index 394f7db..805e776 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1942.txt
@@ -7,7 +7,8 @@ OBA: 8B 3R (access: ≤ 2)
* No Inherent PF
* No Inherent ATMM
-* SS:
- * Disrupt & RtPh Surrender NA vs Russians
- * Massacre OK
- * No Squad Assault Fire
+
+SS:
+* Disrupt & RtPh Surrender NA vs Russians
+* Massacre OK
+* No Squad Assault Fire
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1943.txt
index 018a8f8..9c44832 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1943.txt
@@ -7,7 +7,8 @@ OBA: 8B 3R (access: ≤ 2)
* No Inherent PF
* No Inherent ATMM
-* SS:
- * Disrupt & RtPh Surrender NA vs Russians
- * Massacre OK
- * No Squad Assault Fire
+
+SS:
+* Disrupt & RtPh Surrender NA vs Russians
+* Massacre OK
+* No Squad Assault Fire
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1944.txt
index 372e20c..d4d99c8 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1944.txt
@@ -7,7 +7,8 @@ OBA: 8B 3R (access: ≤ 2)
* Inherent PF
* Inherent ATMM
-* SS:
- * Disrupt & RtPh Surrender NA vs Russians
- * Massacre OK
- * Squad Assault Fire
+
+SS:
+* Disrupt & RtPh Surrender NA vs Russians
+* Massacre OK
+* Squad Assault Fire
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1945.txt
index 592f39e..426ad61 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/german/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/german/1945.txt
@@ -7,7 +7,8 @@ OBA: 8B 3R (access: ≤ 2)
* Inherent PF
* Inherent ATMM
-* SS:
- * Disrupt & RtPh Surrender NA vs Russians
- * Massacre OK
- * Squad Assault Fire
+
+SS:
+* Disrupt & RtPh Surrender NA vs Russians
+* Massacre OK
+* Squad Assault Fire
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1940.txt
index a499765..b239584 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1940.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1941.txt
index 7931cda..da06542 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1941.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1942.txt
index 5d2c301..4e549d9 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1942.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1943.txt
index 48098ca..fdb0c39 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1943.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1944.txt
index cbbdf72..b16dbd1 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1944.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1945.txt
index 15f2d3f..2a808a6 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/greek/1945.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1940.txt
index a989211..a519e09 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1940.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1941.txt
index bb2ea3f..43d7f9c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1941.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1942.txt
index af43532..57d4c49 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1942.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1943.txt
index 2aae6be..7fe8740 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1943.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1944.txt
index 3c516e1..b32a667 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1944.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1945.txt
index 38caa09..d410a11 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1945.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1940.txt
index b7291d7..a627033 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1940.txt
@@ -6,9 +6,10 @@ Red TH#
OBA: 7B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * Surrender on HoB Final DR ≥ 10
- * Deploy NA
- * +1 CC Capture DRM NA
- * Always Lax
- * 1 PAATC
+
+1st Line & Conscript:
+* Surrender on HoB Final DR ≥ 10
+* Deploy NA
+* +1 CC Capture DRM NA
+* Always Lax
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1941.txt
index bb1bab7..8482ab2 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1941.txt
@@ -6,9 +6,10 @@ Red TH#
OBA: 7B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * Surrender on HoB Final DR ≥ 10
- * Deploy NA
- * +1 CC Capture DRM NA
- * Always Lax
- * 1 PAATC
+
+1st Line & Conscript:
+* Surrender on HoB Final DR ≥ 10
+* Deploy NA
+* +1 CC Capture DRM NA
+* Always Lax
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1942.txt
index 622ac54..dbb7ce7 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1942.txt
@@ -6,9 +6,10 @@ Red TH#
OBA: 7B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * Surrender on HoB Final DR ≥ 10
- * Deploy NA
- * +1 CC Capture DRM NA
- * Always Lax
- * 1 PAATC
+
+1st Line & Conscript:
+* Surrender on HoB Final DR ≥ 10
+* Deploy NA
+* +1 CC Capture DRM NA
+* Always Lax
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1943.txt
index f2d9fba..78b2e12 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1943.txt
@@ -6,9 +6,10 @@ Red TH#
OBA: 7B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * Surrender on HoB Final DR ≥ 10
- * Deploy NA
- * +1 CC Capture DRM NA
- * Always Lax
- * 1 PAATC
+
+1st Line & Conscript:
+* Surrender on HoB Final DR ≥ 10
+* Deploy NA
+* +1 CC Capture DRM NA
+* Always Lax
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1944.txt
index e70571d..3abd355 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1944.txt
@@ -6,9 +6,10 @@ Red TH#
OBA: 7B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * Surrender on HoB Final DR ≥ 10
- * Deploy NA
- * +1 CC Capture DRM NA
- * Always Lax
- * 1 PAATC
+
+1st Line & Conscript:
+* Surrender on HoB Final DR ≥ 10
+* Deploy NA
+* +1 CC Capture DRM NA
+* Always Lax
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1945.txt
index 3559588..f9ea876 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/italian/1945.txt
@@ -6,9 +6,10 @@ Red TH#
OBA: 7B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * Surrender on HoB Final DR ≥ 10
- * Deploy NA
- * +1 CC Capture DRM NA
- * Always Lax
- * 1 PAATC
+
+1st Line & Conscript:
+* Surrender on HoB Final DR ≥ 10
+* Deploy NA
+* +1 CC Capture DRM NA
+* Always Lax
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1940.txt
index dd0db19..b55da97 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1940.txt
@@ -6,25 +6,31 @@ Black TH#
OBA: 5B 2R (access: ≤ 1)
* SMC PTC/Pin/Break NA
-* Leaders:
- * Replacement NA
- * Casualty MC → elimination
- * Morale/Rally/Berserk as Commissar
* Tank-Hunter Heroes & ATMM
* Banzai Charge (always Lax)
-* Elite & 1st Line: Always Stealthy
-* Conscript: Always Lax
* ATR/MMG/HMG Breakdown penalty
-* Always NA:
- * PAATC
- * Escape
- * RtPh Surrender
- * Disruption
- * Encircled lower Morale
- * Leader Creation
* LLMC → LLTC if unbroken
* Massacre OK
* -1 Interrogation DRM
* -2 Concealment drm
* Enemy +2 search drm
* Hand-to-Hand CC & Hara-Kiri
+
+Leaders:
+* Replacement NA
+* Casualty MC → elimination
+* Morale/Rally/Berserk as Commissar
+
+Elite & 1st Line:
+* Always Stealthy
+
+Conscript:
+* Always Lax
+
+Always NA:
+* PAATC
+* Escape
+* RtPh Surrender
+* Disruption
+* Encircled lower Morale
+* Leader Creation
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1941.txt
index 9b2a74e..a7a3228 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1941.txt
@@ -6,25 +6,31 @@ Black TH#
OBA: 5B 2R (access: ≤ 1)
* SMC PTC/Pin/Break NA
-* Leaders:
- * Replacement NA
- * Casualty MC → elimination
- * Morale/Rally/Berserk as Commissar
* Tank-Hunter Heroes & ATMM
* Banzai Charge (always Lax)
-* Elite & 1st Line: Always Stealthy
-* Conscript: Always Lax
* ATR/MMG/HMG Breakdown penalty
-* Always NA:
- * PAATC
- * Escape
- * RtPh Surrender
- * Disruption
- * Encircled lower Morale
- * Leader Creation
* LLMC → LLTC if unbroken
* Massacre OK
* -1 Interrogation DRM
* -2 Concealment drm
* Enemy +2 search drm
* Hand-to-Hand CC & Hara-Kiri
+
+Leaders:
+* Replacement NA
+* Casualty MC → elimination
+* Morale/Rally/Berserk as Commissar
+
+Elite & 1st Line:
+* Always Stealthy
+
+Conscript:
+* Always Lax
+
+Always NA:
+* PAATC
+* Escape
+* RtPh Surrender
+* Disruption
+* Encircled lower Morale
+* Leader Creation
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1942.txt
index 4afb95f..32cf673 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1942.txt
@@ -6,25 +6,31 @@ Black TH#
OBA: 5B 2R (access: ≤ 1)
* SMC PTC/Pin/Break NA
-* Leaders:
- * Replacement NA
- * Casualty MC → elimination
- * Morale/Rally/Berserk as Commissar
* Tank-Hunter Heroes & ATMM
* Banzai Charge (always Lax)
-* Elite & 1st Line: Always Stealthy
-* Conscript: Always Lax
* ATR/MMG/HMG Breakdown penalty
-* Always NA:
- * PAATC
- * Escape
- * RtPh Surrender
- * Disruption
- * Encircled lower Morale
- * Leader Creation
* LLMC → LLTC if unbroken
* Massacre OK
* -1 Interrogation DRM
* -2 Concealment drm
* Enemy +2 search drm
* Hand-to-Hand CC & Hara-Kiri
+
+Leaders:
+* Replacement NA
+* Casualty MC → elimination
+* Morale/Rally/Berserk as Commissar
+
+Elite & 1st Line:
+* Always Stealthy
+
+Conscript:
+* Always Lax
+
+Always NA:
+* PAATC
+* Escape
+* RtPh Surrender
+* Disruption
+* Encircled lower Morale
+* Leader Creation
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1943.txt
index 73cb7a2..9430961 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1943.txt
@@ -6,25 +6,31 @@ Black TH#
OBA: 5B 2R (access: ≤ 1)
* SMC PTC/Pin/Break NA
-* Leaders:
- * Replacement NA
- * Casualty MC → elimination
- * Morale/Rally/Berserk as Commissar
* Tank-Hunter Heroes & ATMM
* Banzai Charge (always Lax)
-* Elite & 1st Line: Always Stealthy
-* Conscript: Always Lax
* ATR/MMG/HMG Breakdown penalty
-* Always NA:
- * PAATC
- * Escape
- * RtPh Surrender
- * Disruption
- * Encircled lower Morale
- * Leader Creation
* LLMC → LLTC if unbroken
* Massacre OK
* -1 Interrogation DRM
* -2 Concealment drm
* Enemy +2 search drm
* Hand-to-Hand CC & Hara-Kiri
+
+Leaders:
+* Replacement NA
+* Casualty MC → elimination
+* Morale/Rally/Berserk as Commissar
+
+Elite & 1st Line:
+* Always Stealthy
+
+Conscript:
+* Always Lax
+
+Always NA:
+* PAATC
+* Escape
+* RtPh Surrender
+* Disruption
+* Encircled lower Morale
+* Leader Creation
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1944.txt
index 29ed9b3..ecc6359 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1944.txt
@@ -6,25 +6,31 @@ Black TH#
OBA: 5B 2R (access: ≤ 1)
* SMC PTC/Pin/Break NA
-* Leaders:
- * Replacement NA
- * Casualty MC → elimination
- * Morale/Rally/Berserk as Commissar
* Tank-Hunter Heroes & ATMM
* Banzai Charge (always Lax)
-* Elite & 1st Line: Always Stealthy
-* Conscript: Always Lax
* ATR/MMG/HMG Breakdown penalty
-* Always NA:
- * PAATC
- * Escape
- * RtPh Surrender
- * Disruption
- * Encircled lower Morale
- * Leader Creation
* LLMC → LLTC if unbroken
* Massacre OK
* -1 Interrogation DRM
* -2 Concealment drm
* Enemy +2 search drm
* Hand-to-Hand CC & Hara-Kiri
+
+Leaders:
+* Replacement NA
+* Casualty MC → elimination
+* Morale/Rally/Berserk as Commissar
+
+Elite & 1st Line:
+* Always Stealthy
+
+Conscript:
+* Always Lax
+
+Always NA:
+* PAATC
+* Escape
+* RtPh Surrender
+* Disruption
+* Encircled lower Morale
+* Leader Creation
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1945.txt
index f957205..45556d6 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/japanese/1945.txt
@@ -6,25 +6,31 @@ Black TH#
OBA: 5B 2R (access: ≤ 1)
* SMC PTC/Pin/Break NA
-* Leaders:
- * Replacement NA
- * Casualty MC → elimination
- * Morale/Rally/Berserk as Commissar
* Tank-Hunter Heroes & ATMM
* Banzai Charge (always Lax)
-* Elite & 1st Line: Always Stealthy
-* Conscript: Always Lax
* ATR/MMG/HMG Breakdown penalty
-* Always NA:
- * PAATC
- * Escape
- * RtPh Surrender
- * Disruption
- * Encircled lower Morale
- * Leader Creation
* LLMC → LLTC if unbroken
* Massacre OK
* -1 Interrogation DRM
* -2 Concealment drm
* Enemy +2 search drm
* Hand-to-Hand CC & Hara-Kiri
+
+Leaders:
+* Replacement NA
+* Casualty MC → elimination
+* Morale/Rally/Berserk as Commissar
+
+Elite & 1st Line:
+* Always Stealthy
+
+Conscript:
+* Always Lax
+
+Always NA:
+* PAATC
+* Escape
+* RtPh Surrender
+* Disruption
+* Encircled lower Morale
+* Leader Creation
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1950.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1950.txt
index 5c6ce84..0201865 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1950.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1950.txt
@@ -5,22 +5,27 @@ HoB: 0 DRM (+3 for Katusa; NA for TACP)
??? TH#
OBA: ??? 3R (access: ≤ 2)
-* Rangers: 6-6-8
- * Self-Rally OK
- * Self-Deploy (1TC) & Self-Recombine OK
- * Cowering NA
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
-* Airborne: 6-6-7
-* Katusa: As U.S. Army MMC
- * HoB +3 DRM
- * Leader Creation +1 drm
* Disruption NA
* 7-6-8 can Self-Deploy
* Use 5-5-8 when:
* U.S.M.C. ELR Replacement is in effect
* U.S.M.C. MMC re-arms
-* Tactical Air Control Party:
- * Inherent Radio (Contact = 9)
- * May set up HIP
+
+Rangers (6-6-8):
+* Self-Rally OK
+* Self-Deploy (1TC) & Self-Recombine OK
+* Cowering NA
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+
+Airborne (6-6-7)
+
+Katusa:
+* As U.S. Army MMC
+* HoB +3 DRM
+* Leader Creation +1 drm
+
+Tactical Air Control Party:
+* Inherent Radio (Contact = 9)
+* May set up HIP
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1951.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1951.txt
index 7911f95..8b9ae5c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1951.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1951.txt
@@ -6,24 +6,29 @@ Black TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* Rangers: 6-6-8
- * Self-Rally OK
- * Self-Deploy (1TC) & Self-Recombine OK
- * Cowering NA
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
-* Airborne: 6-6-7
-* Katusa: As U.S. Army MMC
- * HoB +3 DRM
- * Leader Creation +1 drm
- * ELR 2
- * Allied Troop penalties with U.S. leaders
* Disruption NA
* 7-6-8 can Self-Deploy
* Use 5-5-8 when:
* U.S.M.C. ELR Replacement is in effect
* U.S.M.C. MMC re-arms
-* Tactical Air Control Party:
- * Inherent Radio (Contact = 9)
- * May set up HIP
+
+Rangers (6-6-8):
+* Self-Rally OK
+* Self-Deploy (1TC) & Self-Recombine OK
+* Cowering NA
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+
+Airborne (6-6-7)
+
+Katusa:
+* As U.S. Army MMC
+* HoB +3 DRM
+* Leader Creation +1 drm
+* ELR 2
+* Allied Troop penalties with U.S. leaders
+
+Tactical Air Control Party:
+* Inherent Radio (Contact = 9)
+* May set up HIP
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1952.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1952.txt
index 0239069..81f64a4 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1952.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1952.txt
@@ -6,22 +6,27 @@ Black TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* Rangers: 6-6-8
- * Self-Rally OK
- * Self-Deploy (1TC) & Self-Recombine OK
- * Cowering NA
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
-* Airborne: 6-6-7
-* Katusa: As U.S. Army MMC
- * HoB +3 DRM
- * Leader Creation +1 drm
* Disruption NA
* 7-6-8 can Self-Deploy
* Use 5-5-8 when:
* U.S.M.C. ELR Replacement is in effect
* U.S.M.C. MMC re-arms
-* Tactical Air Control Party:
- * Inherent Radio (Contact = 9)
- * May set up HIP
+
+Rangers (6-6-8):
+* Self-Rally OK
+* Self-Deploy (1TC) & Self-Recombine OK
+* Cowering NA
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+
+Airborne (6-6-7)
+
+Katusa:
+* As U.S. Army MMC
+* HoB +3 DRM
+* Leader Creation +1 drm
+
+Tactical Air Control Party:
+* Inherent Radio (Contact = 9)
+* May set up HIP
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1953.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1953.txt
index a8c3641..e8df6cd 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1953.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/american/1953.txt
@@ -6,22 +6,27 @@ Black TH#
OBA: 10B 3R (access: ≤ 2)
- Plentiful Ammo included
-* Rangers: 6-6-8
- * Self-Rally OK
- * Self-Deploy (1TC) & Self-Recombine OK
- * Cowering NA
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
-* Airborne: 6-6-7
-* Katusa: As U.S. Army MMC
- * HoB +3 DRM
- * Leader Creation +1 drm
* Disruption NA
* 7-6-8 can Self-Deploy
* Use 5-5-8 when:
* U.S.M.C. ELR Replacement is in effect
* U.S.M.C. MMC re-arms
-* Tactical Air Control Party:
- * Inherent Radio (Contact = 9)
- * May set up HIP
+
+Rangers (6-6-8):
+* Self-Rally OK
+* Self-Deploy (1TC) & Self-Recombine OK
+* Cowering NA
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+
+Airborne (6-6-7)
+
+Katusa:
+* As U.S. Army MMC
+* HoB +3 DRM
+* Leader Creation +1 drm
+
+Tactical Air Control Party:
+* Inherent Radio (Contact = 9)
+* May set up HIP
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1950.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1950.txt
index d494761..9dddf58 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1950.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1950.txt
@@ -5,9 +5,11 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* 2nd Line MMC: ELR Replacement → Disrupt
-* Royal Marines:
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
- * Self-Deploy (1TC) & Self-Recombine OK
+2nd Line MMC:
+* ELR Replacement → Disrupt
+
+Royal Marines:
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+* Self-Deploy (1TC) & Self-Recombine OK
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1951.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1951.txt
index 401aabf..5c672ce 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1951.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1951.txt
@@ -5,9 +5,11 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* 2nd Line MMC: ELR Replacement → Disrupt
-* Royal Marines:
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
- * Self-Deploy (1TC) & Self-Recombine OK
+2nd Line MMC:
+* ELR Replacement → Disrupt
+
+Royal Marines:
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+* Self-Deploy (1TC) & Self-Recombine OK
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1952.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1952.txt
index d5d81f5..066ca36 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1952.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1952.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* 2nd Line MMC: ELR Replacement → Disrupt
-* Canadian squads have Assault Fire
-* Royal Marines:
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
- * Self-Deploy (1TC) & Self-Recombine OK
+2nd Line MMC:
+* ELR Replacement → Disrupt
+
+Canadian:
+* Squads have Assault Fire
+
+Royal Marines:
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+* Self-Deploy (1TC) & Self-Recombine OK
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1953.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1953.txt
index 7133b6f..9d338cb 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1953.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/british/1953.txt
@@ -5,10 +5,14 @@ HoB: -1 DRM
Black TH#
OBA: 8B 2R (access: ≤ 2)
-* 2nd Line MMC: ELR Replacement → Disrupt
-* Canadian squads have Assault Fire
-* Royal Marines:
- * Commandos
- * No Non-Qualified Use penalty for RCL
- * No Captured Use penalty for Communist SW
- * Self-Deploy (1TC) & Self-Recombine OK
+2nd Line MMC:
+* ELR Replacement → Disrupt
+
+Canadian:
+* Squads have Assault Fire
+
+Royal Marines:
+* Commandos
+* No Non-Qualified Use penalty for RCL
+* No Captured Use penalty for Communist SW
+* Self-Deploy (1TC) & Self-Recombine OK
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1950.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1950.txt
index 6820822..654ff90 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1950.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1950.txt
@@ -9,7 +9,6 @@ OBA: - - -
* Starshell restrictions
* Armored Assault NA
* Riders NA
-* Assault Engineers: WP grenades
* Leaders & Political Officers increase Morale as if Commissar
* SW B#/X#/ROF penalty
* Restricted Fire
@@ -23,3 +22,6 @@ OBA: - - -
* Conceal if +2 Hindrance
* Concealment -1 drm
* Civilian Interrogation is always in effect
+
+Assault Engineers:
+* WP grenades
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1951.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1951.txt
index 219ade1..ed44ef7 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1951.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1951.txt
@@ -9,7 +9,6 @@ OBA: - - -
* Starshell restrictions
* Armored Assault NA
* Riders NA
-* Assault Engineers: WP grenades
* Early KW CPVA rules
* Leaders & Political Officers increase Morale as if Commissar
* SW B#/X#/ROF penalty
@@ -24,3 +23,6 @@ OBA: - - -
* Conceal if +2 Hindrance
* Concealment -1 drm
* Civilian Interrogation is always in effect
+
+Assault Engineers:
+* WP grenades
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1952.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1952.txt
index 2626711..9c60d85 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1952.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1952.txt
@@ -9,7 +9,6 @@ OBA: 7B 3R (access: ≤ 1)
* Starshell restrictions
* Armored Assault NA
* Riders NA
-* Assault Engineers: WP grenades
* Leaders & Political Officers increase Morale as if Commissar
* SW B#/X#/ROF penalty
* Restricted Fire
@@ -23,3 +22,6 @@ OBA: 7B 3R (access: ≤ 1)
* Conceal if +2 Hindrance
* Concealment -1 drm
* Civilian Interrogation is always in effect
+
+Assault Engineers:
+* WP grenades
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1953.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1953.txt
index ee82caa..7c89940 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1953.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-cpva/1953.txt
@@ -9,7 +9,6 @@ OBA: 7B 2R (access: ≤ 1)
* Starshell restrictions
* Armored Assault NA
* Riders NA
-* Assault Engineers: WP grenades
* Leaders & Political Officers increase Morale as if Commissar
* SW B#/X#/ROF penalty
* Restricted Fire
@@ -23,3 +22,6 @@ OBA: 7B 2R (access: ≤ 1)
* Conceal if +2 Hindrance
* Concealment -1 drm
* Civilian Interrogation is always in effect
+
+Assault Engineers:
+* WP grenades
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1950.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1950.txt
index c6e9f14..5c2b273 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1950.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1950.txt
@@ -5,17 +5,21 @@ HoB: +2 DRM
Red TH#
OBA: 5B 2R (access: ≤ 1)
-* As Russian
- * Elite Personnel always Stealthy
- * Elite Squads may Deploy
- * Commissars
- * Massacre OK
- * Human Wave by SSR only
* Suicide Heroes
* Starshell restrictions
-* Assault Engineers: WP grenades
-* Communist Partisans:
- * Neither Elite nor Conscript/Green
- * Always Stealthy
- * Massacre OK
- * Disrupt & RtPh Surrender NA
+
+As Russian:
+* Elite Personnel always Stealthy
+* Elite Squads may Deploy
+* Commissars
+* Massacre OK
+* Human Wave by SSR only
+
+Assault Engineers:
+* WP grenades
+
+Communist Partisans:
+* Neither Elite nor Conscript/Green
+* Always Stealthy
+* Massacre OK
+* Disrupt & RtPh Surrender NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1951.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1951.txt
index adfd6f7..044e1b7 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1951.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1951.txt
@@ -5,17 +5,21 @@ HoB: +2 DRM
Red TH#
OBA: 5B 2R (access: ≤ 1)
-* As Russian
- * Elite Personnel always Stealthy
- * Elite Squads may Deploy
- * Commissars
- * Massacre OK
- * Human Wave by SSR only
* Suicide Heroes
* Starshell restrictions
-* Assault Engineers: WP grenades
-* Communist Partisans:
- * Neither Elite nor Conscript/Green
- * Always Stealthy
- * Massacre OK
- * Disrupt & RtPh Surrender NA
+
+As Russian:
+* Elite Personnel always Stealthy
+* Elite Squads may Deploy
+* Commissars
+* Massacre OK
+* Human Wave by SSR only
+
+Assault Engineers:
+* WP grenades
+
+Communist Partisans:
+* Neither Elite nor Conscript/Green
+* Always Stealthy
+* Massacre OK
+* Disrupt & RtPh Surrender NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1952.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1952.txt
index 40b0d39..9aa50ec 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1952.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1952.txt
@@ -5,17 +5,21 @@ HoB: +2 DRM
Red TH#
OBA: 5B 2R (access: ≤ 1)
-* As Russian
- * Elite Personnel always Stealthy
- * Elite Squads may Deploy
- * Commissars
- * Massacre OK
- * Human Wave by SSR only
* Suicide Heroes
* Starshell restrictions
-* Assault Engineers: WP grenades
-* Communist Partisans:
- * Neither Elite nor Conscript/Green
- * Always Stealthy
- * Massacre OK
- * Disrupt & RtPh Surrender NA
+
+As Russian:
+* Elite Personnel always Stealthy
+* Elite Squads may Deploy
+* Commissars
+* Massacre OK
+* Human Wave by SSR only
+
+Assault Engineers:
+* WP grenades
+
+Communist Partisans:
+* Neither Elite nor Conscript/Green
+* Always Stealthy
+* Massacre OK
+* Disrupt & RtPh Surrender NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1953.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1953.txt
index b4937d5..869a691 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1953.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-kpa/1953.txt
@@ -5,17 +5,21 @@ HoB: +2 DRM
Red TH#
OBA: 5B 2R (access: ≤ 1)
-* As Russian
- * Elite Personnel always Stealthy
- * Elite Squads may Deploy
- * Commissars
- * Massacre OK
- * Human Wave by SSR only
* Suicide Heroes
* Starshell restrictions
-* Assault Engineers: WP grenades
-* Communist Partisans:
- * Neither Elite nor Conscript/Green
- * Always Stealthy
- * Massacre OK
- * Disrupt & RtPh Surrender NA
+
+As Russian:
+* Elite Personnel always Stealthy
+* Elite Squads may Deploy
+* Commissars
+* Massacre OK
+* Human Wave by SSR only
+
+Assault Engineers:
+* WP grenades
+
+Communist Partisans:
+* Neither Elite nor Conscript/Green
+* Always Stealthy
+* Massacre OK
+* Disrupt & RtPh Surrender NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1950.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1950.txt
index f11c5fa..9f5c1a8 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1950.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1950.txt
@@ -5,5 +5,8 @@ HoB: 0 DRM (+3 for Turkish)
Black TH#
OBA: 9B 3R (access: ≤ 1)
-* 2nd Line MMC: ELR Replacement → Disrupt [EXC: Turkish]
-* Bayonet Charge NTC NA for Ethiopian, French, Turkish leaders
+2nd Line MMC:
+* ELR Replacement → Disrupt [EXC: Turkish]
+
+Ethiopian, French, Turkish:
+* Bayonet Charge NTC NA for leaders
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1951.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1951.txt
index 446a06e..07b5325 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1951.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1951.txt
@@ -5,5 +5,8 @@ HoB: 0 DRM (+3 for Turkish)
Black TH#
OBA: 9B 3R (access: ≤ 1)
-* 2nd Line MMC: ELR Replacement → Disrupt [EXC: Turkish]
-* Bayonet Charge NTC NA for Ethiopian, French, Turkish leaders
+2nd Line MMC:
+* ELR Replacement → Disrupt [EXC: Turkish]
+
+Ethiopian, French, Turkish:
+* Bayonet Charge NTC NA for leaders
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1952.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1952.txt
index 57d5ee5..fad99ee 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1952.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1952.txt
@@ -5,5 +5,8 @@ HoB: 0 DRM (+3 for Turkish)
Black TH#
OBA: 9B 3R (access: ≤ 1)
-* 2nd Line MMC: ELR Replacement → Disrupt [EXC: Turkish]
-* Bayonet Charge NTC NA for Ethiopian, French, Turkish leaders
+2nd Line MMC:
+* ELR Replacement → Disrupt [EXC: Turkish]
+
+Ethiopian, French, Turkish:
+* Bayonet Charge NTC NA for leaders
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1953.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1953.txt
index a568b6a..791ae23 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1953.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-ounc/1953.txt
@@ -5,5 +5,8 @@ HoB: 0 DRM (+3 for Turkish)
Black TH#
OBA: 9B 3R (access: ≤ 1)
-* 2nd Line MMC: ELR Replacement → Disrupt [EXC: Turkish]
-* Bayonet Charge NTC NA for Ethiopian, French, Turkish leaders
+2nd Line MMC:
+* ELR Replacement → Disrupt [EXC: Turkish]
+
+Ethiopian, French, Turkish:
+* Bayonet Charge NTC NA for leaders
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1950.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1950.txt
index c5041e7..bfd57d5 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1950.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1950.txt
@@ -6,13 +6,15 @@ Red TH#
OBA: ??? 3R (access: ≤ 1 (ROK) ; 2 (KMC))
- Plentiful Ammo included (KMC)
-* Republic of Korea (ROK):
- * Early KW ROK rules
- * 1st Line MMC Battle-Harden to Fanatic
- * 2nd Line & Conscript MMC:
- * Always Lax
- * Deploy NA
+Republic of Korea (ROK):
+* Early KW ROK rules
+* 1st Line MMC:
+ * Battle-Harden to Fanatic
+* 2nd Line & Conscript MMC:
+ * Always Lax
+ * Deploy NA
* Human Bullets
-* Korean Marine Corps (KMC):
- * Japanese-Armed KMC
- * SW B#/X#/ROF penalty
+
+Korean Marine Corps (KMC):
+* Japanese-Armed KMC
+* SW B#/X#/ROF penalty
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1951.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1951.txt
index 444032b..52d033b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1951.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1951.txt
@@ -6,12 +6,14 @@ Red TH# (ROK) ; Black (KMC)
OBA: 10B 3R (access: ≤ 1 (ROK) ; 2 (KMC))
- Plentiful Ammo included
-* Republic of Korea (ROK):
- * Early KW ROK rules
- * 1st Line MMC Battle-Harden to Fanatic
- * 2nd Line & Conscript MMC:
- * Always Lax
- * Deploy NA
-* Korean Marine Corps (KMC):
- * U.S.-Armed KMC
- * SW B#/X#/ROF penalty
+Republic of Korea (ROK):
+* Early KW ROK rules
+* 1st Line MMC:
+ * Battle-Harden to Fanatic
+* 2nd Line & Conscript MMC:
+ * Always Lax
+ * Deploy NA
+
+Korean Marine Corps (KMC):
+* U.S.-Armed KMC
+* SW B#/X#/ROF penalty
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1952.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1952.txt
index fb9465c..52f9bf1 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1952.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1952.txt
@@ -6,10 +6,12 @@ Black TH#
OBA: 10B 3R (access: ≤ 1 (ROK) ; 2 (KMC))
- Plentiful Ammo included
-* Republic of Korea (ROK):
- * 1st Line MMC Battle-Harden to Fanatic
- * 2nd Line & Conscript MMC:
- * Always Lax
- * Deploy NA
-* Korean Marine Corps (KMC):
- * U.S.-Armed KMC
+Republic of Korea (ROK):
+* 1st Line MMC:
+ * Battle-Harden to Fanatic
+* 2nd Line & Conscript MMC:
+ * Always Lax
+ * Deploy NA
+
+Korean Marine Corps (KMC):
+* U.S.-Armed KMC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1953.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1953.txt
index bcc8092..0ed1c6c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1953.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/kfw/kfw-rok/1953.txt
@@ -6,10 +6,12 @@ Black TH#
OBA: 10B 3R (access: ≤ 1 (ROK) ; 2 (KMC))
- Plentiful Ammo included
-* Republic of Korea (ROK):
- * 1st Line MMC Battle-Harden to Fanatic
- * 2nd Line & Conscript MMC:
- * Always Lax
- * Deploy NA
-* Korean Marine Corps (KMC):
- * U.S.-Armed KMC
+Republic of Korea (ROK):
+* 1st Line MMC:
+ * Battle-Harden to Fanatic
+* 2nd Line & Conscript MMC:
+ * Always Lax
+ * Deploy NA
+
+Korean Marine Corps (KMC):
+* U.S.-Armed KMC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1940.txt
index 4178613..77a3007 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1940.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1941.txt
index 22bd82e..ae5d4aa 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1941.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1942.txt
index fb6de3b..82f5539 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1942.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1943.txt
index 17f9e92..e9b5507 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1943.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1944.txt
index db748cc..146628b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1944.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1945.txt
index d243917..20c4c79 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/polish/1945.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1940.txt
index 5f21417..1b1285f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1940.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1941.txt
index a6f8e86..f1eb4cb 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1941.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1942.txt
index 87e1b50..ea50545 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1942.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1943.txt
index 6c8a1fc..627dc5e 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1943.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1944.txt
index cf66e67..17b0a5b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1944.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1945.txt
index eab79c1..1a40131 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1945.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1940.txt
index 38ac84c..4c4a079 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1940.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1941.txt
index 2fb411b..b6e9c74 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1941.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1942.txt
index ed23b3a..489c9c7 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1942.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1943.txt
index 2c64de0..36f413a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1943.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* No Inherent ATMM
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1944.txt
index f5625fc..a4d46ae 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1944.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1945.txt
index 74b29c4..3ced1ca 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1945.txt
@@ -6,8 +6,9 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* Escape NA
-* 1st Line & Conscript:
- * 1 PAATC
- * Surrender on HoB Final DR ≥ 10
* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
+
+1st Line & Conscript:
+* 1 PAATC
+* Surrender on HoB Final DR ≥ 10
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1940.txt
index edbad76..56fbf37 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1940.txt
@@ -5,6 +5,10 @@ HoB: 0 DRM
Red TH# [EXC: MG]
OBA: 6B 3R -
-* 1st Line Battle Hardening → Fanatic
-* Allied Troops Captured Use penalties NA
* Extreme Winter effects NA
+
+1st Line:
+* Battle Hardening → Fanatic
+
+Allied Troops:
+* Captured Use penalties NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1941.txt
index 87d5580..9255509 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1941.txt
@@ -5,6 +5,10 @@ HoB: 0 DRM
Red TH# [EXC: MG]
OBA: 6B 3R -
-* 1st Line Battle Hardening → Fanatic
-* Allied Troops Captured Use penalties NA
* Extreme Winter effects NA
+
+1st Line:
+* Battle Hardening → Fanatic
+
+Allied Troops:
+* Captured Use penalties NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1942.txt
index fec615f..90f8b54 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1942.txt
@@ -5,6 +5,10 @@ HoB: 0 DRM
Red TH# [EXC: MG]
OBA: 6B 3R -
-* 1st Line Battle Hardening → Fanatic
-* Allied Troops Captured Use penalties NA
* Extreme Winter effects NA
+
+1st Line:
+* Battle Hardening → Fanatic
+
+Allied Troops:
+* Captured Use penalties NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1943.txt
index d6fabee..c7961aa 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1943.txt
@@ -5,6 +5,10 @@ HoB: 0 DRM
Red TH# [EXC: MG]
OBA: 6B 3R -
-* 1st Line Battle Hardening → Fanatic
-* Allied Troops Captured Use penalties NA
* Extreme Winter effects NA
+
+1st Line:
+* Battle Hardening → Fanatic
+
+Allied Troops:
+* Captured Use penalties NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1944.txt
index 377a5ee..405db98 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1944.txt
@@ -5,6 +5,10 @@ HoB: 0 DRM
Red TH# [EXC: MG]
OBA: 6B 3R -
-* 1st Line Battle Hardening → Fanatic
-* Allied Troops Captured Use penalties NA
* Extreme Winter effects NA
+
+1st Line:
+* Battle Hardening → Fanatic
+
+Allied Troops:
+* Captured Use penalties NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1945.txt
index 3dff117..431d530 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/swedish/1945.txt
@@ -5,6 +5,10 @@ HoB: 0 DRM
Red TH# [EXC: MG]
OBA: 6B 3R -
-* 1st Line Battle Hardening → Fanatic
-* Allied Troops Captured Use penalties NA
* Extreme Winter effects NA
+
+1st Line:
+* Battle Hardening → Fanatic
+
+Allied Troops:
+* Captured Use penalties NA
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1940.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1940.txt
index dc4d369..414b8e6 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1940.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1941.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1941.txt
index d7edecd..a8e5759 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1941.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1942.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1942.txt
index c89904f..4af8a14 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1942.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1943.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1943.txt
index b72f0ac..3cb2cb4 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1943.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1944.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1944.txt
index 1ba226f..34ac1b5 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1944.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1945.txt b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1945.txt
index d919e30..89e5647 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/yugoslavian/1945.txt
@@ -6,4 +6,6 @@ Red TH#
OBA: 6B 3R (access: ≤ 1)
* +1 Broken Morale vs Italians
-* 1st Line & Green: 1 PAATC
+
+1st Line & Green:
+* 1 PAATC
diff --git a/vasl_templates/webapp/tests/test_national_capabilities.py b/vasl_templates/webapp/tests/test_national_capabilities.py
index 2b7b340..acd9c95 100644
--- a/vasl_templates/webapp/tests/test_national_capabilities.py
+++ b/vasl_templates/webapp/tests/test_national_capabilities.py
@@ -3,6 +3,7 @@
import os
import shutil
import io
+import itertools
import lxml.html
@@ -99,7 +100,7 @@ def _get_nat_caps( webapp, webdriver, nat, theater, year, month ): #pylint: disa
vals.extend( [ c.text, c.tail ] )
vals.append( elem.tail )
vals = [ v for v in vals if v ]
- return "".join( vals )
+ return "".join( vals ).strip()
# parse the basic details
report = {}
@@ -111,7 +112,7 @@ def _get_nat_caps( webapp, webdriver, nat, theater, year, month ): #pylint: disa
report[ field ] = "-"
else:
assert len(elems) == 1
- report[ field ] = to_text( elems[0] ).strip()
+ report[ field ] = to_text( elems[0] )
if report["hob-drm"] != "-":
assert report["hob-drm"].startswith( "Heat of Battle: " )
report["hob-drm"] = report["hob-drm"][16:]
@@ -121,28 +122,29 @@ def _get_nat_caps( webapp, webdriver, nat, theater, year, month ): #pylint: disa
for elem in doc.xpath( "//ul[@class='oba-comments']/li" ):
report["oba-comments"].append( elem.text.strip() )
- def parse_list( root, items, depth ):
+ def parse_list( root, items ):
"""Parse a list of items (and their child items)."""
for elem in root.xpath( "./li" ):
val = to_text( elem )
- val = val.strip()
elems = elem.xpath( "./ul" )
if not elems:
items.append( val )
else:
assert len(elems) == 1
- children = []
- parse_list( elems[0], children, depth+1 )
- items.append( [ val, children ] )
+ items.append( [
+ val, parse_list( elems[0], [] )
+ ] )
+ return items
# parse the notes
- report["notes"] = []
- elems = doc.xpath( "//ul[@class='notes']" )
- if len(elems) == 0:
- pass
- else:
- assert len(elems) == 1
- parse_list( elems[0], report["notes"], 0 )
+ report[ "note-groups" ] = []
+ for group in doc.xpath( "//div[@class='note-group']" ):
+ caption = group.xpath( "./div[@class='caption']" )
+ notes = group.xpath( "./ul" )
+ report["note-groups"].append( [
+ to_text( caption[0] ) if caption else None,
+ parse_list( notes[0], [] ) if notes else None
+ ] )
return report
@@ -175,9 +177,12 @@ def _make_report( nat, theater, year, nat_caps ):
print( "", file=buf )
for cmt in nat_caps["oba-comments"]:
print( "- {}".format( cmt ), file=buf )
- if nat_caps["notes"]:
+ for group in nat_caps.get( "note-groups", [] ):
print( "", file=buf )
- dump_list_items( nat_caps["notes"], 0 )
+ if group[0]:
+ print( group[0], file=buf )
+ if group[1]:
+ dump_list_items( group[1], 0 )
return buf.getvalue()
@@ -198,9 +203,13 @@ def test_time_based_national_capabilities( webapp, webdriver ):
"""Check the national capabilities notes."""
nat_caps = _get_nat_caps( webapp, webdriver, nat, theater, year, month )
for e in expected:
+ notes = [
+ g[1] or []
+ for g in nat_caps.get( "note-groups", [] )
+ ]
notes = [
n if isinstance(n,str) else n[0]
- for n in nat_caps["notes"]
+ for n in itertools.chain( *notes )
]
if e.startswith( "!" ):
assert e[1:] not in notes