diff --git a/vasl_templates/webapp/data/default-template-pack/extras/count-remaining.j2 b/vasl_templates/webapp/data/default-template-pack/extras/count-remaining.j2
index 4dff46b..deb40bc 100644
--- a/vasl_templates/webapp/data/default-template-pack/extras/count-remaining.j2
+++ b/vasl_templates/webapp/data/default-template-pack/extras/count-remaining.j2
@@ -8,12 +8,20 @@
Panzerfaust
- before '44
- | #squads
- | '44
- | #squads × 1½ (FRD)
- | '45
- | #squads × 2
+ | German (-'44)
+ | #squads
+ | German ('44)
+ | 1½ × #squads (FRD)
+ | German ('45)
+ | 2 × #squads
+ | Finnish (7/44+)
+ | = 1945 or (SCENARIO_YEAR == 1944 and SCENARIO_MONTH >= 7))%} {{HILITE_STYLE}} {%endif%}> 1½ × # Elite/1st Line MMC squads (FRD)
+ | Hungarian (6/44+)
+ | = 1945 or (SCENARIO_YEAR == 1944 and SCENARIO_MONTH >= 6))%} {{HILITE_STYLE}} {%endif%}> #squads
+ | Romanian (3-12/44)
+ | = 3%} {{HILITE_STYLE}} {%endif%}> 1½ × #squads
+ | Romanian ('45)
+ | #squads
|
Squads or squad-equivalents.
@@ -21,13 +29,13 @@
Tank-Hunter Heroes
before '43
- | 10% of #squads (FRU) (20% vs. Russians)
+ | 10% of #squads (FRU) (20% vs. Russians)
| '43
- | 20% of #squads (FRU)
+ | 20% of #squads (FRU)
| '44
- | 33% of #squads (FRU)
+ | 33% of #squads (FRU)
| '45
- | 50% of #squads (FRU)
+ | 50% of #squads (FRU)
|
Squads only, not squad-equivalents.
-->
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 6eaa55a..01f6893 100644
--- a/vasl_templates/webapp/data/default-template-pack/national-capabilities.json
+++ b/vasl_templates/webapp/data/default-template-pack/national-capabilities.json
@@ -6,11 +6,11 @@
"hob_drm": "0 DRM",
"grenades": "Smoke",
"notes": [
- "{? 10/1943- | Inherent PF | No Inherent PF | Inherent PF (10/43+) ?}",
- "{? 01/1944- | Inherent ATMM | No Inherent ATMM | Inherent ATMM (44+) ?}",
+ "{? 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 Fire (44+) ?}"
+ "{? 01/1944- | Squad Assault Fire | No Squad Assault Fire | Squad Assault Fire44+ ?}"
]
},
@@ -23,14 +23,14 @@
"Massacre OK",
"Deploy NA",
"Entrench -1 DRM",
- "{? 11/1942- | Commissars NA | Commissars | Commissars (pre-11/42) ?}",
+ "{? -10/1942 | Commissars | Commissars NA | Commissars-10/42 ?}",
"Human Wave",
- "{? 01/1942- | Riders OK | Riders NA | Riders (42+) ?}"
+ "{? 01/1942- | Riders OK | Riders NA | Riders42+ ?}"
]
},
"american": {
- "th_color": "{? 01/1944- | Black | Red | Black (44+) ?}",
+ "th_color": "{? 01/1944- | Black | Red | Black44+ ?}",
"oba": [ "10B", "3R", "Plentiful Ammo included" ],
"oba_access": "≤ 2",
"hob_drm": "0 DRM",
@@ -63,7 +63,7 @@
"th_color": "Black",
"oba": [ "8B", "2R" ], "oba_access": "≤ 2",
"hob_drm": "-1 DRM",
- "grenades": "{? 01/1944- | SMOKE | Smoke | SMOKE (44+) ?}",
+ "grenades": "{? 01/1944- | SMOKE | Smoke | SMOKE44+ ?}",
"notes": [
"Elite & 1st Line: Cowering NA",
"ANZAC: Stealthy (unless Green)",
@@ -104,7 +104,7 @@
"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:
- Range = 1
- PF Check ≤ 2
- Max. shots = 1½ × # Elite/1st Line squad-equivalents (FRD)
| | - Inherent PF (7/44+) ?}
",
+ "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]"
@@ -119,8 +119,8 @@
"notes": [
"Escape NA",
"1st Line & Conscript: - 1 PAATC
- Surrender on HoB Final DR ≥ 10
",
- "Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+): - Range = {? 06/1944- | 2 | 1 | 1 (pre-6/44), 2 thereafter ?}
",
- "{? 07/1943- | Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM) | No Inherent ATMM | Inherent ATMM (7/43+) ?}"
+ "{? 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+) ?}"
]
},
@@ -212,7 +212,7 @@
"grenades": "SMOKE",
"notes": [
"2nd Line MMC: ELR Replacement → Disrupt",
- "{? 01/1952- | Canadian squads have Assault Fire | | Canadian squads have Assault Fire (1/52+) ?}",
+ "{? 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
"
]
},
@@ -245,7 +245,7 @@
"kfw-cpva": {
"th_color": "Red",
"oba": [
- "{? 04/1951- | 7B | | 7B (4/51+) ?}",
+ "{? 04/1951- | 7B | | 7B4/51+ ?}",
"{! 04/1951-09/1952 = 3R | 10/1952- = 2R | ??? !}"
],
"oba_access": "≤ 1",
diff --git a/vasl_templates/webapp/data/default-template-pack/pf-finnish.j2 b/vasl_templates/webapp/data/default-template-pack/pf-finnish.j2
new file mode 100644
index 0000000..a8c3843
--- /dev/null
+++ b/vasl_templates/webapp/data/default-template-pack/pf-finnish.j2
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{INCLUDE:player_flag}}Panzerfaust
+
+ |
+
+
+ Elite & 1st Line MMC only
+ PF check: dr ≤ 2 (△)
+
+
+ +1 | HS/crew
+ |
+ +2 | SMC
+ |
+ +1 | CX
+ |
+ +1 | non-AFV target
+ |
+ original 6 = pinned
+
+ |
+
+
+ Range | TH#
+ |
+ 0 | 10
+ |
+ 1 | 8
+ |
+
+ |
+
+
+ TK#: 31
+ 16-3
+
+ |
+
+
diff --git a/vasl_templates/webapp/data/default-template-pack/pf-hungarian.j2 b/vasl_templates/webapp/data/default-template-pack/pf-hungarian.j2
new file mode 100644
index 0000000..4d60082
--- /dev/null
+++ b/vasl_templates/webapp/data/default-template-pack/pf-hungarian.j2
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{INCLUDE:player_flag}}Panzerfaust
+
+ |
+
+
+ Non-Crew MMC only
+ PF check: dr ≤ 2 (△)
+
+
+ +1 | HS/crew
+ |
+ +2 | SMC
+ |
+ +1 | CX
+ |
+ +1 | non-AFV target
+ |
+ +1 | Conscript
+ |
+ original 6 = pinned
+
+ |
+
+
+ Range | TH#
+ |
+ 0 | 10
+ |
+ 1 | 8
+ |
+ 2 | 6
+ |
+
+ |
+
+
+ TK#: 31
+ 16-3
+
+ |
+
+
diff --git a/vasl_templates/webapp/data/default-template-pack/pf-romanian.j2 b/vasl_templates/webapp/data/default-template-pack/pf-romanian.j2
new file mode 100644
index 0000000..d742274
--- /dev/null
+++ b/vasl_templates/webapp/data/default-template-pack/pf-romanian.j2
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{INCLUDE:player_flag}}Panzerfaust
+
+ |
+
+
+ Non-Crew MMC only
+ PF check: dr ≤ {%if SCENARIO_YEAR >= 1945%} 1 {%else%} 2 {%endif%} (△)
+
+
+ +1 | HS/crew
+ |
+ +2 | SMC
+ |
+ +1 | CX
+ |
+ +1 | non-AFV target
+ |
+ +1 | Conscript
+ |
+ +1 | -1 vs AFV if Elite
+ |
+ original 6 = pinned
+
+ |
+
+
+ Range | TH#
+ |
+ 0 | 10
+ |
+ 1 | 8
+{%if SCENARIO_YEAR >= 1945 or (SCENARIO_YEAR == 1944 and SCENARIO_MONTH >= 6)%}
+ |
+ 2 | 6
+{%endif%}
+ |
+
+ |
+
+
+ TK#: 31
+ 16-3
+
+ |
+
+
diff --git a/vasl_templates/webapp/static/main.js b/vasl_templates/webapp/static/main.js
index e0622db..bf05838 100644
--- a/vasl_templates/webapp/static/main.js
+++ b/vasl_templates/webapp/static/main.js
@@ -13,6 +13,9 @@ gEmSize = null ;
var NATIONALITY_SPECIFIC_BUTTONS = {
"pf": [ "german" ],
+ "pf-finnish": [ "finnish" ],
+ "pf-hungarian": [ "hungarian" ],
+ "pf-romanian": [ "romanian" ],
"atmm": [ "german" ],
"psk": [ "german" ],
"mol": [ "russian" ],
diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js
index 3d7b9ce..a304015 100644
--- a/vasl_templates/webapp/static/snippets.js
+++ b/vasl_templates/webapp/static/snippets.js
@@ -395,6 +395,12 @@ function make_snippet( $btn, params, extra_params, show_date_warnings )
if ( show_date_warnings ) {
if ( template_id === "pf" && ! is_pf_available() )
showWarningMsg( "PF are only available after September 1943." ) ;
+ if ( template_id === "pf-finnish" && ! is_pf_finnish_available() )
+ showWarningMsg( "PF are only available from July 1944." ) ;
+ if ( template_id === "pf-hungarian" && ! is_pf_hungarian_available() )
+ showWarningMsg( "PF are only available from June 1944." ) ;
+ if ( template_id === "pf-romanian" && ! is_pf_romanian_available() )
+ showWarningMsg( "PF are only available from March 1944." ) ;
if ( template_id === "psk" && ! is_psk_available() )
showWarningMsg( "PSK are only available after September 1943." ) ;
if ( template_id === "baz" && ! is_baz_available() )
@@ -2159,7 +2165,7 @@ function do_load_template_pack( fname, data )
// --------------------------------------------------------------------
-function _is_scenario_after( month, year ) {
+function _is_scenario_in_or_after( month, year ) {
// check if the scenario is after the specified month/year
var scenario_date = get_scenario_date() ;
if ( ! scenario_date )
@@ -2168,13 +2174,16 @@ function _is_scenario_after( month, year ) {
return true ;
if ( scenario_date.getFullYear() < year )
return false ;
- return (scenario_date.getMonth() >= month) ;
+ return scenario_date.getMonth() >= month-1 ;
}
-function is_pf_available() { return _is_scenario_after( 9, 1943 ) ; }
-function is_psk_available() { return _is_scenario_after( 9, 1943 ) ; }
-function is_baz_available() { return _is_scenario_after( 10, 1942 ) ; }
-function is_atmm_available() { return _is_scenario_after( 0, 1944 ) ; }
+function is_pf_available() { return _is_scenario_in_or_after( 10, 1943 ) ; }
+function is_pf_finnish_available() { return _is_scenario_in_or_after( 7, 1944 ) ; }
+function is_pf_hungarian_available() { return _is_scenario_in_or_after( 6, 1944 ) ; }
+function is_pf_romanian_available() { return _is_scenario_in_or_after( 3, 1944 ) ; }
+function is_psk_available() { return _is_scenario_in_or_after( 9, 1943 ) ; }
+function is_baz_available() { return _is_scenario_in_or_after( 11, 1942 ) ; }
+function is_atmm_available() { return _is_scenario_in_or_after( 1, 1944 ) ; }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -2195,6 +2204,9 @@ function on_scenario_date_change()
} ) ;
}
update_ui( "pf", is_pf_available() ) ;
+ update_ui( "pf-finnish", is_pf_finnish_available() ) ;
+ update_ui( "pf-hungarian", is_pf_hungarian_available() ) ;
+ update_ui( "pf-romanian", is_pf_romanian_available() ) ;
update_ui( "psk", is_psk_available() ) ;
update_ui( "baz", is_baz_available() ) ;
update_ui( "atmm", is_atmm_available() ) ;
diff --git a/vasl_templates/webapp/static/vassal.js b/vasl_templates/webapp/static/vassal.js
index 4d62962..658e30a 100644
--- a/vasl_templates/webapp/static/vassal.js
+++ b/vasl_templates/webapp/static/vassal.js
@@ -92,7 +92,7 @@ function _generate_snippets()
// figure out which templates we don't want to auto-create labels for
var no_autocreate = {} ;
for ( var template_id in NATIONALITY_SPECIFIC_BUTTONS ) {
- if ( ["pf","atmm","thh"].indexOf( template_id ) !== -1 ) {
+ if ( ["pf","atmm","thh"].indexOf( template_id ) !== -1 || template_id.substring(0,3) === "pf-" ) {
// NOTE: PF, ATMM, THH are always available as an inherent part of a squad's capabilities
// (subject to date restrictions), so we always auto-create these labels, unlike, say MOL or BAZ,
// which are only present by SSR or OB counter).
@@ -221,7 +221,7 @@ function _get_raw_content( snippet_id, $btn, params )
return [ "Molotov Cocktail", "MOL check:", "IFT DR original colored dr:" ] ;
if ( snippet_id === "mol-p" )
return [ "MOL Projector", "TH#", "X#", "B#" ] ;
- if ( snippet_id === "pf" )
+ if ( snippet_id === "pf" || snippet_id.substring(0,3) === "pf-" )
return [ "Panzerfaust", "PF check:", "non-AFV target", "TH#" ] ;
if ( snippet_id === "psk" )
return [ "Panzerschrek", "Range", "TH#", "X#", "TK#" ] ;
diff --git a/vasl_templates/webapp/templates/tabs-ob1.html b/vasl_templates/webapp/templates/tabs-ob1.html
index 0887900..5a0bd78 100644
--- a/vasl_templates/webapp/templates/tabs-ob1.html
+++ b/vasl_templates/webapp/templates/tabs-ob1.html
@@ -29,6 +29,9 @@
+
+
+
diff --git a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/nationalities.json b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/nationalities.json
index 2a78312..5c50ba8 100644
--- a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/nationalities.json
+++ b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/nationalities.json
@@ -57,6 +57,12 @@
"type": "axis-minor"
},
+"hungarian": {
+ "display_name": "Hungarian",
+ "ob_colors": [ "OBCOL:hungarian","OBCOL2:hungarian", "OBCOL-BORDER:hungarian" ],
+ "type": "axis-minor"
+},
+
"kfw-cpva": {
"display_name": "Communist Chinese",
"ob_colors": [ "OBCOL:kfw-cpva","OBCOL2:kfw-cpva", "OBCOL-BORDER:kfw-cpva" ]
diff --git a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-finnish.j2 b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-finnish.j2
new file mode 100644
index 0000000..b3f8fcd
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-finnish.j2
@@ -0,0 +1 @@
+PF-FINNISH: col=[{{OB_COLOR}}]/[{{OB_COLOR_2}}]
diff --git a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-hungarian.j2 b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-hungarian.j2
new file mode 100644
index 0000000..01d099b
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-hungarian.j2
@@ -0,0 +1 @@
+PF-HUNGARIAN: col=[{{OB_COLOR}}]/[{{OB_COLOR_2}}]
diff --git a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-romanian.j2 b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-romanian.j2
new file mode 100644
index 0000000..f2ec244
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/pf-romanian.j2
@@ -0,0 +1 @@
+PF-ROMANIAN: col=[{{OB_COLOR}}]/[{{OB_COLOR_2}}]
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 c175e04..2cc4c55 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1940.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 f593093..99c9e6f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1941.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 4348d50..d39a172 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1942.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 a04e978..80688f9 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1943.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 34f6945..9bc1c7b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1944.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 3231da1..d71e26d 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/bulgarian/1945.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 2
+* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 404ee54..fce0120 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1940.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 2ac34de..7a4718d 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1941.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 e9e65a1..a802598 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1942.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 6730809..463a1fe 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1943.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 a6dbb76..0f2df91 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1944.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 2f5c5b5..6978a23 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/croatian/1945.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 2
+* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 ea52a68..d2a407f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1940.txt
@@ -12,6 +12,7 @@ OBA: 6B 3R (access: ≤ 1)
* 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]
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 3548ed4..c1e62b0 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1941.txt
@@ -12,6 +12,7 @@ OBA: 7B 3R (access: ≤ 1)
* 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]
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 bb7d4be..c62623e 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1942.txt
@@ -12,6 +12,7 @@ OBA: 7B 3R (access: ≤ 1)
* 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]
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 269a4e8..12c9dfc 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1943.txt
@@ -12,6 +12,7 @@ OBA: 8B 3R (access: ≤ 1)
* 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]
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 4156e3c..fbe9fb1 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1944.txt
@@ -12,6 +12,7 @@ OBA: 8B 3R (access: ≤ 1)
* 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]
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 3eb5e48..76d4830 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/finnish/1945.txt
@@ -12,10 +12,7 @@ OBA: 7B 3R (access: ≤ 1)
* Elite & 1st Line:
* Always Stealthy
* Use FT/DC as Elite
- * Inherent PF:
- * Range = 1
- * PF Check ≤ 2
- * Max. shots = 1½ × # Elite/1st Line squad-equivalents (FRD)
+ * Inherent PF
* Ski-trained (don Skis = one MF)
* Leader Creation NA
* Captured Use penalties NA for Russian MG [EXC: LMG in 1939; .50-cal]
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 f6b0164..a989211 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1940.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 2a6db74..bb2ea3f 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1941.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 85b630e..af43532 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1942.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 f17cc7e..2aae6be 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1943.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 3dd0c2f..3c516e1 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1944.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 d24572e..38caa09 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/hungarian/1945.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 2
+* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 c0c55cf..5f21417 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1940.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 3e6dc7a..a6f8e86 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1941.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 c12a096..87e1b50 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1942.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 b2d124b..6c8a1fc 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1943.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 0412f78..cf66e67 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1944.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 9690691..eab79c1 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/romanian/1945.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 2
+* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 08bb099..38ac84c 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1940.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 5b5cca1..2fb411b 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1941.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 9ab02a1..ed23b3a 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1942.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 e3326e1..2c64de0 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1943.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* No Inherent ATMM
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 3f6d550..f5625fc 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1944.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 1
+* No Inherent PF
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
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 44848cc..74b29c4 100644
--- a/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/nat-caps/slovakian/1945.txt
@@ -9,6 +9,5 @@ OBA: 6B 3R (access: ≤ 1)
* 1st Line & Conscript:
* 1 PAATC
* Surrender on HoB Final DR ≥ 10
-* Inherent PF in non-Crew MMC (Romanian 3/44+; Hungarian 6/44+):
- * Range = 2
+* Inherent PF in non-Crew MMC (Romanian3/44+; Hungarian6/44+)
* Inherent ATMM in Romanian non-Crew Elite & 1st Line MMC (-2 CC DRM)
diff --git a/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-finnish.j2 b/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-finnish.j2
new file mode 100644
index 0000000..a36e288
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-finnish.j2
@@ -0,0 +1 @@
+Customized PF-FINNISH.
diff --git a/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-hungarian.j2 b/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-hungarian.j2
new file mode 100644
index 0000000..9c5b119
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-hungarian.j2
@@ -0,0 +1 @@
+Customized PF-HUNGARIAN.
diff --git a/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-romanian.j2 b/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-romanian.j2
new file mode 100644
index 0000000..188d1f7
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/template-packs/full/pf-romanian.j2
@@ -0,0 +1 @@
+Customized PF-ROMANIAN.
diff --git a/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-finnish.j2 b/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-finnish.j2
new file mode 100644
index 0000000..d622579
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-finnish.j2
@@ -0,0 +1 @@
+New default PF-FINNISH.
diff --git a/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-hungarian.j2 b/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-hungarian.j2
new file mode 100644
index 0000000..beedc7a
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-hungarian.j2
@@ -0,0 +1 @@
+New default PF-HUNGARIAN.
diff --git a/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-romanian.j2 b/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-romanian.j2
new file mode 100644
index 0000000..f9ce0e5
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/template-packs/new-default/pf-romanian.j2
@@ -0,0 +1 @@
+New default PF-ROMANIAN.
diff --git a/vasl_templates/webapp/tests/test_extras_templates.py b/vasl_templates/webapp/tests/test_extras_templates.py
index 0f184de..7931263 100644
--- a/vasl_templates/webapp/tests/test_extras_templates.py
+++ b/vasl_templates/webapp/tests/test_extras_templates.py
@@ -3,7 +3,7 @@
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
-from vasl_templates.webapp.tests.utils import init_webapp, select_tab, \
+from vasl_templates.webapp.tests.utils import init_webapp, select_tab, set_player, \
set_template_params, get_droplist_vals, select_droplist_val, \
find_child, find_children, wait_for, wait_for_clipboard
from vasl_templates.webapp.tests.test_template_packs import make_zip_from_files, upload_template_pack_zip
@@ -183,11 +183,11 @@ def test_count_remaining_hilites( webapp, webdriver ):
reset = lambda ct: ct.set_data_dir( dtype="real" )
)
- def do_test( year, expected ): #pylint: disable=missing-docstring
+ def do_test( month, year, expected ): #pylint: disable=missing-docstring
# set the specified year
set_template_params( {
- "SCENARIO_DATE": "01/01/{}".format( year ) if year else ""
+ "SCENARIO_DATE": "{}/01/{}".format( month, year ) if year else ""
} )
# select the "count remaining" template and check what's been highlighted
@@ -205,36 +205,80 @@ def test_count_remaining_hilites( webapp, webdriver ):
assert cells == expected[count_type]
# do the tests
- do_test( None, {
- "pf": [ False, False, False ],
+ set_player( 1, "german" )
+ set_player( 2, "japanese" )
+ do_test( None, None, {
+ "pf": [ False, False, False, False, False, False, False ],
"thh": [ False, False, False, False ]
} )
- do_test( 1940, {
- "pf": [ True, False, False ],
+ do_test( 1, 1940, {
+ "pf": [ True, False, False, False, False, False, False ],
"thh": [ True, False, False, False ]
} )
- do_test( 1941, {
- "pf": [ True, False, False ],
+ do_test( 1, 1941, {
+ "pf": [ True, False, False, False, False, False, False ],
"thh": [ True, False, False, False ]
} )
- do_test( 1942, {
- "pf": [ True, False, False ],
+ do_test( 1, 1942, {
+ "pf": [ True, False, False, False, False, False, False ],
"thh": [ True, False, False, False ]
} )
- do_test( 1943, {
- "pf": [ True, False, False ],
+ do_test( 1, 1943, {
+ "pf": [ True, False, False, False, False, False, False ],
"thh": [ False, True, False, False ]
} )
- do_test( 1944, {
- "pf": [ False, True, False ],
+ do_test( 1, 1944, {
+ "pf": [ False, True, False, False, False, False, False ],
"thh": [ False, False, True, False ]
} )
- do_test( 1945, {
- "pf": [ False, False, True ],
+ do_test( 1, 1945, {
+ "pf": [ False, False, True, False, False, False, False ],
"thh": [ False, False, False, True ]
} )
- do_test( 1946, {
- "pf": [ False, False, False ],
+ do_test( 1, 1946, {
+ "pf": [ False, False, False, False, False, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+
+ # do the tests
+ set_player( 1, "finnish" )
+ set_player( 2, "russian" )
+ do_test( 6, 1944, {
+ "pf": [ False, False, False, False, False, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+ do_test( 7, 1944, {
+ "pf": [ False, False, False, True, False, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+
+ # do the tests
+ set_player( 1, "hungarian" )
+ do_test( 5, 1944, {
+ "pf": [ False, False, False, False, False, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+ do_test( 6, 1944, {
+ "pf": [ False, False, False, False, True, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+ do_test( 1, 1945, {
+ "pf": [ False, False, False, False, True, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+
+ # do the tests
+ set_player( 1, "romanian" )
+ do_test( 2, 1944, {
+ "pf": [ False, False, False, False, False, False, False ],
+ "thh": [ False, False, False, False ]
+ } )
+ do_test( 3, 1944, {
+ "pf": [ False, False, False, False, False, True, False ],
+ "thh": [ False, False, False, False ]
+ } )
+ do_test( 1, 1945, {
+ "pf": [ False, False, False, False, False, False, True ],
"thh": [ False, False, False, False ]
} )
diff --git a/vasl_templates/webapp/tests/test_ob.py b/vasl_templates/webapp/tests/test_ob.py
index a62e6b6..1de4e68 100644
--- a/vasl_templates/webapp/tests/test_ob.py
+++ b/vasl_templates/webapp/tests/test_ob.py
@@ -143,8 +143,8 @@ def test_nationality_specific( webapp, webdriver ): #pylint: disable=too-many-lo
btn = find_child( "button[data-id='psk']" )
expected = "====> whoosh! ; col=[OBCOL:german]/[OBCOL-BORDER:german]"
do_check_snippets( btn, (1942,1), expected, True )
- do_check_snippets( btn, (1943,9), expected, True )
- do_check_snippets( btn, (1943,10), expected, False )
+ do_check_snippets( btn, (1943,8), expected, True )
+ do_check_snippets( btn, (1943,9), expected, False )
do_check_snippets( btn, (1944,1), expected, False )
# initialize
diff --git a/vasl_templates/webapp/tests/utils.py b/vasl_templates/webapp/tests/utils.py
index 39b818c..ed6dd89 100644
--- a/vasl_templates/webapp/tests/utils.py
+++ b/vasl_templates/webapp/tests/utils.py
@@ -37,6 +37,9 @@ _STD_TEMPLATES = {
# nationality-specific templates
_NAT_TEMPLATES = {
"german": [ "pf", "psk", "atmm" ],
+ "finnish": [ "pf-finnish" ],
+ "hungarian": [ "pf-hungarian" ],
+ "romanian": [ "pf-romanian" ],
"russian": [ "mol", "mol-p" ],
"american": [ "baz" ],
"british": [ "piat" ],
|