summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2024-09-15 16:24:27 +0200
committerTor Andersson <tor@ccxvii.net>2024-09-20 15:05:33 +0200
commit9ba7ea8a1661961eadbfadc538416f71c9e996b1 (patch)
treee00eb121755b5df23dff0f4829eff88a59a53bb9
parent6512998ee5cfa9e5b7e6e5489a732543b43315b6 (diff)
downloadwilderness-war-9ba7ea8a1661961eadbfadc538416f71c9e996b1.tar.gz
Improve client log capabilities.
- shorter piece names for logging - piece tooltips - dice icons - tactics rating icons - lime green tooltip highlights
-rw-r--r--data.js302
-rw-r--r--die_black_pips.svg37
-rw-r--r--die_white_pips.svg37
-rw-r--r--mountain-tip.svg2
-rw-r--r--play.css52
-rw-r--r--play.html2
-rw-r--r--play.js99
7 files changed, 349 insertions, 182 deletions
diff --git a/data.js b/data.js
index f33a4fe..fd3577a 100644
--- a/data.js
+++ b/data.js
@@ -78,157 +78,157 @@ null,
const pieces =
[
{name:"None"},
-{faction:"british",type:"leader",name:"Amherst",initiative:2,command:7,tactics:1,movement:6,desc:"2-7-1 Amherst",square:"british_square_leader_seven m2s",tall:"british_leader_seven t2s"},
-{faction:"british",type:"leader",name:"Braddock",initiative:2,command:7,tactics:0,movement:6,desc:"2-7-0 Braddock",square:"british_square_leader_seven m3s",tall:"british_leader_seven t3s"},
-{faction:"british",type:"leader",name:"Abercromby",initiative:3,command:7,tactics:0,movement:6,desc:"3-7-0 Abercromby",square:"british_square_leader_seven m1s",tall:"british_leader_seven t1s"},
-{faction:"british",type:"leader",name:"Loudoun",initiative:3,command:7,tactics:0,movement:6,desc:"3-7-0 Loudoun",square:"british_square_leader_seven m4s",tall:"british_leader_seven t4s"},
-{faction:"british",type:"leader",name:"Wolfe",initiative:1,command:6,tactics:2,movement:6,desc:"1-6-2 Wolfe",square:"british_square_leader m9s",tall:"british_leader t9s"},
-{faction:"british",type:"leader",name:"Forbes",initiative:1,command:6,tactics:0,movement:6,desc:"1-6-0 Forbes",square:"british_square_leader m3s",tall:"british_leader t3s"},
-{faction:"british",type:"leader",name:"Shirley",initiative:2,command:6,tactics:0,movement:6,desc:"2-6-0 Shirley",square:"british_square_leader m7s",tall:"british_leader t7s"},
-{faction:"british",type:"leader",name:"Murray",initiative:1,command:5,tactics:0,movement:6,desc:"1-5-0 Murray",square:"british_square_leader m6s",tall:"british_leader t6s"},
-{faction:"british",type:"leader",name:"Monckton",initiative:2,command:5,tactics:0,movement:6,desc:"2-5-0 Monckton",square:"british_square_leader m5s",tall:"british_leader t5s"},
-{faction:"british",type:"leader",name:"Webb",initiative:3,command:5,tactics:0,movement:6,desc:"3-5-0 Webb",square:"british_square_leader m8s",tall:"british_leader t8s"},
-{faction:"british",type:"leader",name:"Bradstreet",initiative:1,command:4,tactics:1,movement:6,desc:"1-4-1 Bradstreet",square:"british_square_leader m1s",tall:"british_leader t1s"},
-{faction:"british",type:"leader",name:"Dunbar",initiative:3,command:4,tactics:0,movement:6,desc:"3-4-0 Dunbar",square:"british_square_leader m2s",tall:"british_leader t2s"},
-{faction:"british",type:"leader",name:"Johnson",initiative:1,command:3,tactics:1,movement:6,desc:"1-3-1 Johnson",square:"british_square_leader m4s",tall:"british_leader t4s"},
-{faction:"british",type:"indian",subtype:"cherokee",name:"Cherokee",strength:1,reduced_strength:0,movement:6,desc:"1-6 Cherokee",rdesc:"0-6 Cherokee",counter:"british_indian_cherokee c1"},
-{faction:"british",type:"indian",subtype:"cherokee",name:"Cherokee",strength:1,reduced_strength:0,movement:6,desc:"1-6 Cherokee",rdesc:"0-6 Cherokee",counter:"british_indian_cherokee c1"},
-{faction:"british",type:"indian",subtype:"gray",name:"Cayuga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Cayuga",rdesc:"0-6 Cayuga",counter:"british_indian_gray c1"},
-{faction:"british",type:"indian",subtype:"gray",name:"Oneida",strength:1,reduced_strength:0,movement:6,desc:"1-6 Oneida",rdesc:"0-6 Oneida",counter:"british_indian_gray c2"},
-{faction:"british",type:"indian",subtype:"gray",name:"Onondaga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Onondaga",rdesc:"0-6 Onondaga",counter:"british_indian_gray c3"},
-{faction:"british",type:"indian",subtype:"gray",name:"Seneca",strength:1,reduced_strength:0,movement:6,desc:"1-6 Seneca",rdesc:"0-6 Seneca",counter:"british_indian_gray c4"},
-{faction:"british",type:"indian",subtype:"gray",name:"Tuscarora",strength:1,reduced_strength:0,movement:6,desc:"1-6 Tuscarora",rdesc:"0-6 Tuscarora",counter:"british_indian_gray c5"},
-{faction:"british",type:"indian",subtype:"mohawk",name:"Mohawk",strength:1,reduced_strength:0,movement:6,desc:"1-6 Mohawk",rdesc:"0-6 Mohawk",counter:"british_indian_mohawk c1"},
-{faction:"british",type:"indian",subtype:"mohawk",name:"Mohawk",strength:1,reduced_strength:0,movement:6,desc:"1-6 Mohawk",rdesc:"0-6 Mohawk",counter:"british_indian_mohawk c1"},
-{faction:"british",type:"ranger",name:"Armstrong",strength:2,reduced_strength:1,movement:6,desc:"2-6 ranger",rdesc:"1-6 ranger",counter:"british_ranger c1"},
-{faction:"british",type:"ranger",name:"Goreham",strength:2,reduced_strength:1,movement:6,desc:"2-6 ranger",rdesc:"1-6 ranger",counter:"british_ranger c2"},
-{faction:"british",type:"ranger",name:"Rogers",strength:2,reduced_strength:1,movement:6,desc:"2-6 ranger",rdesc:"1-6 ranger",counter:"british_ranger c3"},
-{faction:"british",type:"light infantry",name:"1/95th",strength:2,reduced_strength:1,movement:6,desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m1"},
-{faction:"british",type:"light infantry",name:"2/95th",strength:2,reduced_strength:1,movement:6,desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m2"},
-{faction:"british",type:"light infantry",name:"85th Ryl. Vol.",strength:2,reduced_strength:1,movement:6,desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m3"},
-{faction:"british",type:"light infantry",name:"Gage's 80th",strength:2,reduced_strength:1,movement:6,desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m4"},
-{faction:"british",type:"light infantry",name:"Howe's",strength:2,reduced_strength:1,movement:6,desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m5"},
-{faction:"british",type:"light infantry",name:"Scott's",strength:2,reduced_strength:1,movement:6,desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m6"},
-{faction:"british",type:"northern provincial",name:"Connecticut",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m1"},
-{faction:"british",type:"northern provincial",name:"Connecticut",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m1"},
-{faction:"british",type:"northern provincial",name:"Connecticut",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m1"},
-{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
-{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
-{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
-{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
-{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
-{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
-{faction:"british",type:"northern provincial",name:"New Hampshire",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m3"},
-{faction:"british",type:"northern provincial",name:"New Jersey",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m4"},
-{faction:"british",type:"northern provincial",name:"New Jersey",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m4"},
-{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
-{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
-{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
-{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
-{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
-{faction:"british",type:"northern provincial",name:"Rhode Island",strength:2,reduced_strength:1,movement:4,desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m6"},
-{faction:"british",type:"southern provincial",name:"Maryland",strength:2,reduced_strength:1,movement:4,desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m1"},
-{faction:"british",type:"southern provincial",name:"Pennsylvania",strength:2,reduced_strength:1,movement:4,desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m2"},
-{faction:"british",type:"southern provincial",name:"Pennsylvania",strength:2,reduced_strength:1,movement:4,desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m2"},
-{faction:"british",type:"southern provincial",name:"Pennsylvania",strength:2,reduced_strength:1,movement:4,desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m2"},
-{faction:"british",type:"southern provincial",name:"Virginia",strength:2,reduced_strength:1,movement:4,desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m3"},
-{faction:"british",type:"southern provincial",name:"Virginia",strength:2,reduced_strength:1,movement:4,desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m3"},
-{faction:"british",type:"regular",name:"15th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m1"},
-{faction:"british",type:"regular",name:"17th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m2"},
-{faction:"british",type:"regular",name:"1st Royal",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m3"},
-{faction:"british",type:"regular",name:"22nd",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m4"},
-{faction:"british",type:"regular",name:"27th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m5"},
-{faction:"british",type:"regular",name:"28th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m6"},
-{faction:"british",type:"regular",name:"35th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m7"},
-{faction:"british",type:"regular",name:"40th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m8"},
-{faction:"british",type:"regular",name:"43rd",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m9"},
-{faction:"british",type:"regular",name:"44th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m10"},
-{faction:"british",type:"regular",name:"45th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m11"},
-{faction:"british",type:"regular",name:"46th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m12"},
-{faction:"british",type:"regular",name:"47th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m13"},
-{faction:"british",type:"regular",name:"48th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m14"},
-{faction:"british",type:"regular",name:"55th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m15"},
-{faction:"british",type:"regular",name:"58th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m16"},
-{faction:"british",type:"regular",name:"90th",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m17"},
-{faction:"british",type:"royal american",name:"1/60th",strength:4,reduced_strength:3,movement:4,desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m1"},
-{faction:"british",type:"royal american",name:"2/60th",strength:4,reduced_strength:3,movement:4,desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m2"},
-{faction:"british",type:"royal american",name:"3/60th",strength:4,reduced_strength:3,movement:4,desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m3"},
-{faction:"british",type:"royal american",name:"4/60th",strength:4,reduced_strength:3,movement:4,desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m4"},
-{faction:"british",type:"highland",name:"1/42nd",strength:4,reduced_strength:3,movement:4,desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m1"},
-{faction:"british",type:"highland",name:"2/42nd",strength:4,reduced_strength:3,movement:4,desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m2"},
-{faction:"british",type:"highland",name:"77th (a)",strength:4,reduced_strength:3,movement:4,desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m3"},
-{faction:"british",type:"highland",name:"77th (b)",strength:4,reduced_strength:3,movement:4,desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m4"},
-{faction:"british",type:"highland",name:"78th (a)",strength:4,reduced_strength:3,movement:4,desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m5"},
-{faction:"british",type:"highland",name:"78th (b)",strength:4,reduced_strength:3,movement:4,desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m6"},
-{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
-{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
-{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
-{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
-{faction:"french",type:"leader",name:"Montcalm",initiative:1,command:6,tactics:2,movement:6,desc:"1-6-2 Montcalm",square:"french_square_leader m7s",tall:"french_leader t7s"},
-{faction:"french",type:"leader",name:"Dieskau",initiative:2,command:6,tactics:0,movement:6,desc:"2-6-0 Dieskau",square:"french_square_leader m3s",tall:"french_leader t3s"},
-{faction:"french",type:"leader",name:"Lévis",initiative:2,command:5,tactics:1,movement:6,desc:"2-5-1 Lévis",square:"french_square_leader m6s",tall:"french_leader t6s"},
-{faction:"french",type:"leader",name:"Vaudreuil",initiative:3,command:5,tactics:0,movement:6,desc:"3-5-0 Vaudreuil",square:"french_square_leader m9s",tall:"french_leader t9s"},
-{faction:"french",type:"leader",name:"Drucour",initiative:2,command:4,tactics:1,movement:6,desc:"2-4-1 Drucour",square:"french_square_leader m4s",tall:"french_leader t4s"},
-{faction:"french",type:"leader",name:"Rigaud",initiative:2,command:4,tactics:0,movement:6,desc:"2-4-0 Rigaud",square:"french_square_leader m8s",tall:"french_leader t8s"},
-{faction:"french",type:"leader",name:"Villiers",initiative:2,command:3,tactics:1,movement:6,desc:"2-3-1 Villiers",square:"french_square_leader m10s",tall:"french_leader t10s"},
-{faction:"french",type:"leader",name:"Bougainville",initiative:1,command:3,tactics:0,movement:6,desc:"1-3-0 Bougainville",square:"french_square_leader m2s",tall:"french_leader t2s"},
-{faction:"french",type:"leader",name:"Beaujeu",initiative:1,command:2,tactics:1,movement:6,desc:"1-2-1 Beaujeu",square:"french_square_leader m1s",tall:"french_leader t1s"},
-{faction:"french",type:"leader",name:"Dumas",initiative:1,command:2,tactics:1,movement:6,desc:"1-2-1 Dumas",square:"french_square_leader m5s",tall:"french_leader t5s"},
-{faction:"french",type:"indian",subtype:"blue-orange",name:"Huron",strength:1,reduced_strength:0,movement:6,desc:"1-6 Huron",rdesc:"0-6 Huron",counter:"french_indian_blue_orange c1"},
-{faction:"french",type:"indian",subtype:"blue-orange",name:"Ojibwa",strength:1,reduced_strength:0,movement:6,desc:"1-6 Ojibwa",rdesc:"0-6 Ojibwa",counter:"french_indian_blue_orange c2"},
-{faction:"french",type:"indian",subtype:"blue-orange",name:"Ottawa",strength:1,reduced_strength:0,movement:6,desc:"1-6 Ottawa",rdesc:"0-6 Ottawa",counter:"french_indian_blue_orange c3"},
-{faction:"french",type:"indian",subtype:"blue-orange",name:"Potawatomi",strength:1,reduced_strength:0,movement:6,desc:"1-6 Potawatomi",rdesc:"0-6 Potawatomi",counter:"french_indian_blue_orange c4"},
-{faction:"french",type:"indian",subtype:"blue",name:"Abenaki",strength:1,reduced_strength:0,movement:6,desc:"1-6 Abenaki",rdesc:"0-6 Abenaki",counter:"french_indian_blue c1"},
-{faction:"french",type:"indian",subtype:"blue",name:"Abenaki",strength:1,reduced_strength:0,movement:6,desc:"1-6 Abenaki",rdesc:"0-6 Abenaki",counter:"french_indian_blue c2"},
-{faction:"french",type:"indian",subtype:"blue",name:"Algonquin",strength:1,reduced_strength:0,movement:6,desc:"1-6 Algonquin",rdesc:"0-6 Algonquin",counter:"french_indian_blue c3"},
-{faction:"french",type:"indian",subtype:"blue",name:"Algonquin",strength:1,reduced_strength:0,movement:6,desc:"1-6 Algonquin",rdesc:"0-6 Algonquin",counter:"french_indian_blue c4"},
-{faction:"french",type:"indian",subtype:"blue",name:"Caughnawaga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Caughnawaga",rdesc:"0-6 Caughnawaga",counter:"french_indian_blue c5"},
-{faction:"french",type:"indian",subtype:"blue",name:"Caughnawaga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Caughnawaga",rdesc:"0-6 Caughnawaga",counter:"french_indian_blue c6"},
-{faction:"french",type:"indian",subtype:"blue",name:"Mississauga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Mississauga",rdesc:"0-6 Mississauga",counter:"french_indian_blue c7"},
-{faction:"french",type:"indian",subtype:"gray",name:"Cayuga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Cayuga",rdesc:"0-6 Cayuga",counter:"french_indian_gray c1"},
-{faction:"french",type:"indian",subtype:"gray",name:"Oneida",strength:1,reduced_strength:0,movement:6,desc:"1-6 Oneida",rdesc:"0-6 Oneida",counter:"french_indian_gray c2"},
-{faction:"french",type:"indian",subtype:"gray",name:"Onondaga",strength:1,reduced_strength:0,movement:6,desc:"1-6 Onondaga",rdesc:"0-6 Onondaga",counter:"french_indian_gray c3"},
-{faction:"french",type:"indian",subtype:"gray",name:"Seneca",strength:1,reduced_strength:0,movement:6,desc:"1-6 Seneca",rdesc:"0-6 Seneca",counter:"french_indian_gray c4"},
-{faction:"french",type:"indian",subtype:"gray",name:"Tuscarora",strength:1,reduced_strength:0,movement:6,desc:"1-6 Tuscarora",rdesc:"0-6 Tuscarora",counter:"french_indian_gray c5"},
-{faction:"french",type:"indian",subtype:"orange",name:"Delaware",strength:1,reduced_strength:0,movement:6,desc:"1-6 Delaware",rdesc:"0-6 Delaware",counter:"french_indian_orange c1"},
-{faction:"french",type:"indian",subtype:"orange",name:"Delaware",strength:1,reduced_strength:0,movement:6,desc:"1-6 Delaware",rdesc:"0-6 Delaware",counter:"french_indian_orange c2"},
-{faction:"french",type:"indian",subtype:"orange",name:"Mingo",strength:1,reduced_strength:0,movement:6,desc:"1-6 Mingo",rdesc:"0-6 Mingo",counter:"french_indian_orange c3"},
-{faction:"french",type:"indian",subtype:"orange",name:"Mingo",strength:1,reduced_strength:0,movement:6,desc:"1-6 Mingo",rdesc:"0-6 Mingo",counter:"french_indian_orange c4"},
-{faction:"french",type:"indian",subtype:"orange",name:"Shawnee",strength:1,reduced_strength:0,movement:6,desc:"1-6 Shawnee",rdesc:"0-6 Shawnee",counter:"french_indian_orange c5"},
-{faction:"french",type:"indian",subtype:"orange",name:"Shawnee",strength:1,reduced_strength:0,movement:6,desc:"1-6 Shawnee",rdesc:"0-6 Shawnee",counter:"french_indian_orange c6"},
-{faction:"french",type:"coureurs",name:"Boishébert Acadian",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c1"},
-{faction:"french",type:"coureurs",name:"Joncaire",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c2"},
-{faction:"french",type:"coureurs",name:"Langlade",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c3"},
-{faction:"french",type:"coureurs",name:"Ligneris",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c4"},
-{faction:"french",type:"coureurs",name:"Léry",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c5"},
-{faction:"french",type:"coureurs",name:"Marin",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c6"},
-{faction:"french",type:"coureurs",name:"Perière",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c7"},
-{faction:"french",type:"coureurs",name:"Repentigny",strength:1,reduced_strength:0,movement:6,desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c8"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
-{faction:"french",type:"regular",name:"2/Berry",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m1"},
-{faction:"french",type:"regular",name:"3/Berry",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m2"},
-{faction:"french",type:"regular",name:"Artois",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m3"},
-{faction:"french",type:"regular",name:"Bourgogne",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m4"},
-{faction:"french",type:"regular",name:"Béarn",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m5"},
-{faction:"french",type:"regular",name:"Cambis",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m6"},
-{faction:"french",type:"regular",name:"Guyenne",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m7"},
-{faction:"french",type:"regular",name:"La Reine",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m8"},
-{faction:"french",type:"regular",name:"La Sarre",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m9"},
-{faction:"french",type:"regular",name:"Languedoc",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m10"},
-{faction:"french",type:"regular",name:"Marine",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m11"},
-{faction:"french",type:"regular",name:"Marine",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m11"},
-{faction:"french",type:"regular",name:"Royal Roussillon",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m12"},
-{faction:"french",type:"regular",name:"V. Étrangers",strength:3,reduced_strength:2,movement:4,desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m13"},
-{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"},
-{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"},
-{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"},
-{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"}
+{faction:"british",type:"leader",name:"Amherst",initiative:2,command:7,tactics:1,movement:6,log_name:"Amherst",desc:"2-7-1 Amherst",square:"british_square_leader_seven m2s",tall:"british_leader_seven t2s"},
+{faction:"british",type:"leader",name:"Braddock",initiative:2,command:7,tactics:0,movement:6,log_name:"Braddock",desc:"2-7-0 Braddock",square:"british_square_leader_seven m3s",tall:"british_leader_seven t3s"},
+{faction:"british",type:"leader",name:"Abercromby",initiative:3,command:7,tactics:0,movement:6,log_name:"Abercromby",desc:"3-7-0 Abercromby",square:"british_square_leader_seven m1s",tall:"british_leader_seven t1s"},
+{faction:"british",type:"leader",name:"Loudoun",initiative:3,command:7,tactics:0,movement:6,log_name:"Loudoun",desc:"3-7-0 Loudoun",square:"british_square_leader_seven m4s",tall:"british_leader_seven t4s"},
+{faction:"british",type:"leader",name:"Wolfe",initiative:1,command:6,tactics:2,movement:6,log_name:"Wolfe",desc:"1-6-2 Wolfe",square:"british_square_leader m9s",tall:"british_leader t9s"},
+{faction:"british",type:"leader",name:"Forbes",initiative:1,command:6,tactics:0,movement:6,log_name:"Forbes",desc:"1-6-0 Forbes",square:"british_square_leader m3s",tall:"british_leader t3s"},
+{faction:"british",type:"leader",name:"Shirley",initiative:2,command:6,tactics:0,movement:6,log_name:"Shirley",desc:"2-6-0 Shirley",square:"british_square_leader m7s",tall:"british_leader t7s"},
+{faction:"british",type:"leader",name:"Murray",initiative:1,command:5,tactics:0,movement:6,log_name:"Murray",desc:"1-5-0 Murray",square:"british_square_leader m6s",tall:"british_leader t6s"},
+{faction:"british",type:"leader",name:"Monckton",initiative:2,command:5,tactics:0,movement:6,log_name:"Monckton",desc:"2-5-0 Monckton",square:"british_square_leader m5s",tall:"british_leader t5s"},
+{faction:"british",type:"leader",name:"Webb",initiative:3,command:5,tactics:0,movement:6,log_name:"Webb",desc:"3-5-0 Webb",square:"british_square_leader m8s",tall:"british_leader t8s"},
+{faction:"british",type:"leader",name:"Bradstreet",initiative:1,command:4,tactics:1,movement:6,log_name:"Bradstreet",desc:"1-4-1 Bradstreet",square:"british_square_leader m1s",tall:"british_leader t1s"},
+{faction:"british",type:"leader",name:"Dunbar",initiative:3,command:4,tactics:0,movement:6,log_name:"Dunbar",desc:"3-4-0 Dunbar",square:"british_square_leader m2s",tall:"british_leader t2s"},
+{faction:"british",type:"leader",name:"Johnson",initiative:1,command:3,tactics:1,movement:6,log_name:"Johnson",desc:"1-3-1 Johnson",square:"british_square_leader m4s",tall:"british_leader t4s"},
+{faction:"british",type:"indian",subtype:"cherokee",name:"Cherokee",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Cherokee",rdesc:"0-6 Cherokee",counter:"british_indian_cherokee c1"},
+{faction:"british",type:"indian",subtype:"cherokee",name:"Cherokee",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Cherokee",rdesc:"0-6 Cherokee",counter:"british_indian_cherokee c1"},
+{faction:"british",type:"indian",subtype:"gray",name:"Cayuga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Cayuga",rdesc:"0-6 Cayuga",counter:"british_indian_gray c1"},
+{faction:"british",type:"indian",subtype:"gray",name:"Oneida",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Oneida",rdesc:"0-6 Oneida",counter:"british_indian_gray c2"},
+{faction:"british",type:"indian",subtype:"gray",name:"Onondaga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Onondaga",rdesc:"0-6 Onondaga",counter:"british_indian_gray c3"},
+{faction:"british",type:"indian",subtype:"gray",name:"Seneca",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Seneca",rdesc:"0-6 Seneca",counter:"british_indian_gray c4"},
+{faction:"british",type:"indian",subtype:"gray",name:"Tuscarora",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Tuscarora",rdesc:"0-6 Tuscarora",counter:"british_indian_gray c5"},
+{faction:"british",type:"indian",subtype:"mohawk",name:"Mohawk",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Mohawk",rdesc:"0-6 Mohawk",counter:"british_indian_mohawk c1"},
+{faction:"british",type:"indian",subtype:"mohawk",name:"Mohawk",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Mohawk",rdesc:"0-6 Mohawk",counter:"british_indian_mohawk c1"},
+{faction:"british",type:"ranger",name:"Armstrong",strength:2,reduced_strength:1,movement:6,log_name:"rangers",desc:"2-6 ranger",rdesc:"1-6 ranger",counter:"british_ranger c1"},
+{faction:"british",type:"ranger",name:"Goreham",strength:2,reduced_strength:1,movement:6,log_name:"rangers",desc:"2-6 ranger",rdesc:"1-6 ranger",counter:"british_ranger c2"},
+{faction:"british",type:"ranger",name:"Rogers",strength:2,reduced_strength:1,movement:6,log_name:"rangers",desc:"2-6 ranger",rdesc:"1-6 ranger",counter:"british_ranger c3"},
+{faction:"british",type:"light infantry",name:"1/95th",strength:2,reduced_strength:1,movement:6,log_name:"light infantry",desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m1"},
+{faction:"british",type:"light infantry",name:"2/95th",strength:2,reduced_strength:1,movement:6,log_name:"light infantry",desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m2"},
+{faction:"british",type:"light infantry",name:"85th Ryl. Vol.",strength:2,reduced_strength:1,movement:6,log_name:"light infantry",desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m3"},
+{faction:"british",type:"light infantry",name:"Gage's 80th",strength:2,reduced_strength:1,movement:6,log_name:"light infantry",desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m4"},
+{faction:"british",type:"light infantry",name:"Howe's",strength:2,reduced_strength:1,movement:6,log_name:"light infantry",desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m5"},
+{faction:"british",type:"light infantry",name:"Scott's",strength:2,reduced_strength:1,movement:6,log_name:"light infantry",desc:"2-6 light infantry",rdesc:"1-6 light infantry",counter:"british_light_infantry m6"},
+{faction:"british",type:"northern provincial",name:"Connecticut",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m1"},
+{faction:"british",type:"northern provincial",name:"Connecticut",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m1"},
+{faction:"british",type:"northern provincial",name:"Connecticut",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m1"},
+{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
+{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
+{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
+{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
+{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
+{faction:"british",type:"northern provincial",name:"Massachusetts",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m2"},
+{faction:"british",type:"northern provincial",name:"New Hampshire",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m3"},
+{faction:"british",type:"northern provincial",name:"New Jersey",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m4"},
+{faction:"british",type:"northern provincial",name:"New Jersey",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m4"},
+{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
+{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
+{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
+{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
+{faction:"british",type:"northern provincial",name:"New York",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m5"},
+{faction:"british",type:"northern provincial",name:"Rhode Island",strength:2,reduced_strength:1,movement:4,log_name:"northern provincials",desc:"2-4 northern provincial",rdesc:"1-4 northern provincial",counter:"british_northern_provincial m6"},
+{faction:"british",type:"southern provincial",name:"Maryland",strength:2,reduced_strength:1,movement:4,log_name:"southern provincials",desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m1"},
+{faction:"british",type:"southern provincial",name:"Pennsylvania",strength:2,reduced_strength:1,movement:4,log_name:"southern provincials",desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m2"},
+{faction:"british",type:"southern provincial",name:"Pennsylvania",strength:2,reduced_strength:1,movement:4,log_name:"southern provincials",desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m2"},
+{faction:"british",type:"southern provincial",name:"Pennsylvania",strength:2,reduced_strength:1,movement:4,log_name:"southern provincials",desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m2"},
+{faction:"british",type:"southern provincial",name:"Virginia",strength:2,reduced_strength:1,movement:4,log_name:"southern provincials",desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m3"},
+{faction:"british",type:"southern provincial",name:"Virginia",strength:2,reduced_strength:1,movement:4,log_name:"southern provincials",desc:"2-4 southern provincial",rdesc:"1-4 southern provincial",counter:"british_southern_provincial m3"},
+{faction:"british",type:"regular",name:"15th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m1"},
+{faction:"british",type:"regular",name:"17th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m2"},
+{faction:"british",type:"regular",name:"1st Royal",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m3"},
+{faction:"british",type:"regular",name:"22nd",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m4"},
+{faction:"british",type:"regular",name:"27th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m5"},
+{faction:"british",type:"regular",name:"28th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m6"},
+{faction:"british",type:"regular",name:"35th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m7"},
+{faction:"british",type:"regular",name:"40th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m8"},
+{faction:"british",type:"regular",name:"43rd",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m9"},
+{faction:"british",type:"regular",name:"44th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m10"},
+{faction:"british",type:"regular",name:"45th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m11"},
+{faction:"british",type:"regular",name:"46th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m12"},
+{faction:"british",type:"regular",name:"47th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m13"},
+{faction:"british",type:"regular",name:"48th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m14"},
+{faction:"british",type:"regular",name:"55th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m15"},
+{faction:"british",type:"regular",name:"58th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m16"},
+{faction:"british",type:"regular",name:"90th",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"british_regular m17"},
+{faction:"british",type:"royal american",name:"1/60th",strength:4,reduced_strength:3,movement:4,log_name:"royal americans",desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m1"},
+{faction:"british",type:"royal american",name:"2/60th",strength:4,reduced_strength:3,movement:4,log_name:"royal americans",desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m2"},
+{faction:"british",type:"royal american",name:"3/60th",strength:4,reduced_strength:3,movement:4,log_name:"royal americans",desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m3"},
+{faction:"british",type:"royal american",name:"4/60th",strength:4,reduced_strength:3,movement:4,log_name:"royal americans",desc:"4-4 royal american",rdesc:"3-4 royal american",counter:"british_royal_american m4"},
+{faction:"british",type:"highland",name:"1/42nd",strength:4,reduced_strength:3,movement:4,log_name:"highlanders",desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m1"},
+{faction:"british",type:"highland",name:"2/42nd",strength:4,reduced_strength:3,movement:4,log_name:"highlanders",desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m2"},
+{faction:"british",type:"highland",name:"77th (a)",strength:4,reduced_strength:3,movement:4,log_name:"highlanders",desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m3"},
+{faction:"british",type:"highland",name:"77th (b)",strength:4,reduced_strength:3,movement:4,log_name:"highlanders",desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m4"},
+{faction:"british",type:"highland",name:"78th (a)",strength:4,reduced_strength:3,movement:4,log_name:"highlanders",desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m5"},
+{faction:"british",type:"highland",name:"78th (b)",strength:4,reduced_strength:3,movement:4,log_name:"highlanders",desc:"4-4 highland",rdesc:"3-4 highland",counter:"british_highland m6"},
+{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
+{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
+{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
+{faction:"british",type:"militia",name:"Colonial Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"british_militia m1"},
+{faction:"french",type:"leader",name:"Montcalm",initiative:1,command:6,tactics:2,movement:6,log_name:"Montcalm",desc:"1-6-2 Montcalm",square:"french_square_leader m7s",tall:"french_leader t7s"},
+{faction:"french",type:"leader",name:"Dieskau",initiative:2,command:6,tactics:0,movement:6,log_name:"Dieskau",desc:"2-6-0 Dieskau",square:"french_square_leader m3s",tall:"french_leader t3s"},
+{faction:"french",type:"leader",name:"Lévis",initiative:2,command:5,tactics:1,movement:6,log_name:"Lévis",desc:"2-5-1 Lévis",square:"french_square_leader m6s",tall:"french_leader t6s"},
+{faction:"french",type:"leader",name:"Vaudreuil",initiative:3,command:5,tactics:0,movement:6,log_name:"Vaudreuil",desc:"3-5-0 Vaudreuil",square:"french_square_leader m9s",tall:"french_leader t9s"},
+{faction:"french",type:"leader",name:"Drucour",initiative:2,command:4,tactics:1,movement:6,log_name:"Drucour",desc:"2-4-1 Drucour",square:"french_square_leader m4s",tall:"french_leader t4s"},
+{faction:"french",type:"leader",name:"Rigaud",initiative:2,command:4,tactics:0,movement:6,log_name:"Rigaud",desc:"2-4-0 Rigaud",square:"french_square_leader m8s",tall:"french_leader t8s"},
+{faction:"french",type:"leader",name:"Villiers",initiative:2,command:3,tactics:1,movement:6,log_name:"Villiers",desc:"2-3-1 Villiers",square:"french_square_leader m10s",tall:"french_leader t10s"},
+{faction:"french",type:"leader",name:"Bougainville",initiative:1,command:3,tactics:0,movement:6,log_name:"Bougainville",desc:"1-3-0 Bougainville",square:"french_square_leader m2s",tall:"french_leader t2s"},
+{faction:"french",type:"leader",name:"Beaujeu",initiative:1,command:2,tactics:1,movement:6,log_name:"Beaujeu",desc:"1-2-1 Beaujeu",square:"french_square_leader m1s",tall:"french_leader t1s"},
+{faction:"french",type:"leader",name:"Dumas",initiative:1,command:2,tactics:1,movement:6,log_name:"Dumas",desc:"1-2-1 Dumas",square:"french_square_leader m5s",tall:"french_leader t5s"},
+{faction:"french",type:"indian",subtype:"blue-orange",name:"Huron",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Huron",rdesc:"0-6 Huron",counter:"french_indian_blue_orange c1"},
+{faction:"french",type:"indian",subtype:"blue-orange",name:"Ojibwa",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Ojibwa",rdesc:"0-6 Ojibwa",counter:"french_indian_blue_orange c2"},
+{faction:"french",type:"indian",subtype:"blue-orange",name:"Ottawa",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Ottawa",rdesc:"0-6 Ottawa",counter:"french_indian_blue_orange c3"},
+{faction:"french",type:"indian",subtype:"blue-orange",name:"Potawatomi",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Potawatomi",rdesc:"0-6 Potawatomi",counter:"french_indian_blue_orange c4"},
+{faction:"french",type:"indian",subtype:"blue",name:"Abenaki",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Abenaki",rdesc:"0-6 Abenaki",counter:"french_indian_blue c1"},
+{faction:"french",type:"indian",subtype:"blue",name:"Abenaki",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Abenaki",rdesc:"0-6 Abenaki",counter:"french_indian_blue c2"},
+{faction:"french",type:"indian",subtype:"blue",name:"Algonquin",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Algonquin",rdesc:"0-6 Algonquin",counter:"french_indian_blue c3"},
+{faction:"french",type:"indian",subtype:"blue",name:"Algonquin",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Algonquin",rdesc:"0-6 Algonquin",counter:"french_indian_blue c4"},
+{faction:"french",type:"indian",subtype:"blue",name:"Caughnawaga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Caughnawaga",rdesc:"0-6 Caughnawaga",counter:"french_indian_blue c5"},
+{faction:"french",type:"indian",subtype:"blue",name:"Caughnawaga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Caughnawaga",rdesc:"0-6 Caughnawaga",counter:"french_indian_blue c6"},
+{faction:"french",type:"indian",subtype:"blue",name:"Mississauga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Mississauga",rdesc:"0-6 Mississauga",counter:"french_indian_blue c7"},
+{faction:"french",type:"indian",subtype:"gray",name:"Cayuga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Cayuga",rdesc:"0-6 Cayuga",counter:"french_indian_gray c1"},
+{faction:"french",type:"indian",subtype:"gray",name:"Oneida",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Oneida",rdesc:"0-6 Oneida",counter:"french_indian_gray c2"},
+{faction:"french",type:"indian",subtype:"gray",name:"Onondaga",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Onondaga",rdesc:"0-6 Onondaga",counter:"french_indian_gray c3"},
+{faction:"french",type:"indian",subtype:"gray",name:"Seneca",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Seneca",rdesc:"0-6 Seneca",counter:"french_indian_gray c4"},
+{faction:"french",type:"indian",subtype:"gray",name:"Tuscarora",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Tuscarora",rdesc:"0-6 Tuscarora",counter:"french_indian_gray c5"},
+{faction:"french",type:"indian",subtype:"orange",name:"Delaware",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Delaware",rdesc:"0-6 Delaware",counter:"french_indian_orange c1"},
+{faction:"french",type:"indian",subtype:"orange",name:"Delaware",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Delaware",rdesc:"0-6 Delaware",counter:"french_indian_orange c2"},
+{faction:"french",type:"indian",subtype:"orange",name:"Mingo",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Mingo",rdesc:"0-6 Mingo",counter:"french_indian_orange c3"},
+{faction:"french",type:"indian",subtype:"orange",name:"Mingo",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Mingo",rdesc:"0-6 Mingo",counter:"french_indian_orange c4"},
+{faction:"french",type:"indian",subtype:"orange",name:"Shawnee",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Shawnee",rdesc:"0-6 Shawnee",counter:"french_indian_orange c5"},
+{faction:"french",type:"indian",subtype:"orange",name:"Shawnee",strength:1,reduced_strength:0,movement:6,log_name:"indians",desc:"1-6 Shawnee",rdesc:"0-6 Shawnee",counter:"french_indian_orange c6"},
+{faction:"french",type:"coureurs",name:"Boishébert Acadian",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c1"},
+{faction:"french",type:"coureurs",name:"Joncaire",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c2"},
+{faction:"french",type:"coureurs",name:"Langlade",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c3"},
+{faction:"french",type:"coureurs",name:"Ligneris",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c4"},
+{faction:"french",type:"coureurs",name:"Léry",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c5"},
+{faction:"french",type:"coureurs",name:"Marin",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c6"},
+{faction:"french",type:"coureurs",name:"Perière",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c7"},
+{faction:"french",type:"coureurs",name:"Repentigny",strength:1,reduced_strength:0,movement:6,log_name:"coureurs",desc:"1-6 coureurs",rdesc:"0-6 coureurs",counter:"french_coureurs c8"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"marine detachment",name:"Marine Detachment",strength:1,reduced_strength:0,movement:4,log_name:"marine detachments",desc:"1-4 marine detachment",rdesc:"0-4 marine detachment",counter:"french_marine_detachment m1"},
+{faction:"french",type:"regular",name:"2/Berry",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m1"},
+{faction:"french",type:"regular",name:"3/Berry",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m2"},
+{faction:"french",type:"regular",name:"Artois",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m3"},
+{faction:"french",type:"regular",name:"Bourgogne",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m4"},
+{faction:"french",type:"regular",name:"Béarn",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m5"},
+{faction:"french",type:"regular",name:"Cambis",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m6"},
+{faction:"french",type:"regular",name:"Guyenne",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m7"},
+{faction:"french",type:"regular",name:"La Reine",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m8"},
+{faction:"french",type:"regular",name:"La Sarre",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m9"},
+{faction:"french",type:"regular",name:"Languedoc",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m10"},
+{faction:"french",type:"regular",name:"Marine",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m11"},
+{faction:"french",type:"regular",name:"Marine",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m11"},
+{faction:"french",type:"regular",name:"Royal Roussillon",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m12"},
+{faction:"french",type:"regular",name:"V. Étrangers",strength:3,reduced_strength:2,movement:4,log_name:"regulars",desc:"3-4 regular",rdesc:"2-4 regular",counter:"french_regular m13"},
+{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"},
+{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"},
+{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"},
+{faction:"french",type:"militia",name:"Canadian Militia",strength:1,reduced_strength:1,movement:0,log_name:"militia",desc:"1-0 militia",rdesc:"1-0 militia",counter:"french_militia m1"}
]
const spaces =
diff --git a/die_black_pips.svg b/die_black_pips.svg
new file mode 100644
index 0000000..d641f28
--- /dev/null
+++ b/die_black_pips.svg
@@ -0,0 +1,37 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="336" height="56">
+<g fill="black">
+<g transform="translate(0 0)">
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(56 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+<g transform="translate(112 0)">
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(168 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+<g transform="translate(224 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(280 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="28"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="28"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+</g>
+</svg>
diff --git a/die_white_pips.svg b/die_white_pips.svg
new file mode 100644
index 0000000..efc864b
--- /dev/null
+++ b/die_white_pips.svg
@@ -0,0 +1,37 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="336" height="56">
+<g fill="white">
+<g transform="translate(0 0)">
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(56 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+<g transform="translate(112 0)">
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(168 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+<g transform="translate(224 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(280 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="28"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="28"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+</g>
+</svg>
diff --git a/mountain-tip.svg b/mountain-tip.svg
index 3dd60fa..6582d4b 100644
--- a/mountain-tip.svg
+++ b/mountain-tip.svg
@@ -2,7 +2,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="210" height="148">
<path
fill="none"
- stroke="white"
+ stroke="lime"
stroke-width="8"
d="M 10 138 L 78 35 L 101 57 L 128 10 L 200 138 Z"/>
</svg>
diff --git a/play.css b/play.css
index 95fbdfe..badc1e4 100644
--- a/play.css
+++ b/play.css
@@ -32,11 +32,11 @@ aside { min-width: 220px; }
#log .tip { color: blue; }
#log .tip:hover { text-decoration: underline; }
#log .spacetip:hover { text-decoration: underline; cursor: pointer; }
+#log .piecetip:hover { text-decoration: underline; cursor: pointer; }
-#log .indent {
- padding-left: 12px;
- text-indent: -12px;
-}
+#log div { padding-left: 20px; text-indent: -12px; }
+#log div.i { padding-left: 32px; text-indent: -12px; }
+#log div.ii { padding-left: 44px; text-indent: -12px; }
#turn_info {
position: relative;
@@ -48,6 +48,39 @@ aside { min-width: 220px; }
bottom: 3px;
}
+#log .number {
+ display: inline-block;
+ margin: 0;
+ text-indent: 0;
+ text-align: center;
+ width: 12px;
+ height: 12px;
+ line-height: 12px;
+ border: 1px solid #444;
+}
+#log .number.br { background-color: hsl(15, 90%, 75%); }
+#log .number.fr { background-color: hsl(211, 50%, 75%); }
+
+#log .dice {
+ display: inline-block;
+ vertical-align: -3px;
+ width: 12px;
+ height: 12px;
+ background-size: 600% 100%;
+ background-repeat: no-repeat;
+ background-image: url(die_black_pips.svg);
+ background-color: white;
+ border: 1px solid black;
+}
+
+.d0 { background-position: -100% 0 }
+.d1 { background-position: 0% 0; }
+.d2 { background-position: 20% 0; }
+.d3 { background-position: 40% 0; }
+.d4 { background-position: 60% 0; }
+.d5 { background-position: 80% 0; }
+.d6 { background-position: 100% 0; }
+
/* CARDS */
.hand {
@@ -115,7 +148,6 @@ aside { min-width: 220px; }
}
#tooltip {
- display: none;
pointer-events: none;
position: fixed;
z-index: 600;
@@ -123,9 +155,8 @@ aside { min-width: 220px; }
top: 60px;
}
-#tooltip.show {
- display: block;
-}
+body.flat #tooltip.leader { box-shadow: 1px 1px 5px rgba(0,0,0,0.5); }
+body.bevel #tooltip.leader { box-shadow: 0 0 0 1px black, 1px 1px 5px rgba(0,0,0,0.5); }
@media (max-width: 800px) {
#tooltip {
@@ -328,10 +359,13 @@ body.shift .cultivated.highlight
box-shadow: inset 0 0 0 2px red, inset 0 0 3px 2px black, 0 0 3px black;
}
.wilderness.tip, .cultivated.tip, .box.tip, .militia-box.tip {
- border-color: white;
+ border-color: lime;
box-shadow: 0 0 3px black, inset 0 0 3px black;
z-index: 100;
}
+.leader.tip, .unit.tip {
+ box-shadow: 0 0 0 1px #222, 0 0 0 4px lime !important;
+}
.wilderness.french_supply, .cultivated.french_supply, .box.french_supply {
border-width: 6px;
diff --git a/play.html b/play.html
index 6173314..6c1ea40 100644
--- a/play.html
+++ b/play.html
@@ -16,7 +16,7 @@
</head>
<body class="bevel">
-<div id="tooltip"></div>
+<div id="tooltip" class="hide"></div>
<menu id="popup">
<li class="title">CARD
diff --git a/play.js b/play.js
index 16754e4..4e1d9d7 100644
--- a/play.js
+++ b/play.js
@@ -244,21 +244,21 @@ function print(x) {
}
function on_focus_card_tip(card_number) {
- document.getElementById("tooltip").className = "card show card_" + card_number
+ ui.tooltip.className = "card show card_" + card_number
}
function on_blur_card_tip() {
- document.getElementById("tooltip").classList = "card"
+ ui.tooltip.classList = "hide"
}
function on_focus_last_card() {
if (typeof view.last_card === 'number') {
- document.getElementById("tooltip").className = "card show card_" + view.last_card
+ ui.tooltip.className = "card show card_" + view.last_card
}
}
function on_blur_last_card() {
- document.getElementById("tooltip").classList = "card"
+ ui.tooltip.classList = "card"
}
function on_focus_pa_marker() {
@@ -298,6 +298,25 @@ function on_click_space_tip(s) {
scroll_into_view(ui.space_list[s])
}
+function on_focus_piece_tip(p) {
+ pieces[p].element.classList.add("tip")
+ if (is_leader(p)) {
+ let leader = pieces[p]
+ ui.tooltip.className = "leader " + leader.faction + " " + leader.tall
+ }
+}
+
+function on_blur_piece_tip(p) {
+ pieces[p].element.classList.remove("tip")
+ ui.tooltip.className = "hide"
+}
+
+function on_click_piece_tip(p) {
+ scroll_into_view(pieces[p].element)
+}
+
+// LOG
+
function on_log_line(text, cn) {
let p = document.createElement("div")
if (cn) p.className = cn
@@ -311,14 +330,48 @@ function sub_space_name(match, p1, offset, string) {
return `<span class="spacetip" onmouseenter="on_focus_space_tip(${s})" onmouseleave="on_blur_space_tip(${s})" onclick="on_click_space_tip(${s})">${n}</span>`
}
+function sub_piece_name(match, p1, offset, string) {
+ let p = p1 | 0
+ let n = pieces[p].log_name
+ return `<span class="piecetip" onmouseenter="on_focus_piece_tip(${p})" onmouseleave="on_blur_piece_tip(${p})" onclick="on_click_piece_tip(${p})">${n}</span>`
+}
+
+function sub_card_name(match, p1, offset, string) {
+ let c = p1 | 0
+ let n = `(${cards[c].activation}) ${cards[c].name}`
+ return `<span class="tip" onmouseenter="on_focus_card_tip(${c})" onmouseleave="on_blur_card_tip(${c})">${n}</span>`
+}
+
+const ICONS = {
+ D0: '<span class="dice d0"></span>',
+ D1: '<span class="dice d1"></span>',
+ D2: '<span class="dice d2"></span>',
+ D3: '<span class="dice d3"></span>',
+ D4: '<span class="dice d4"></span>',
+ D5: '<span class="dice d5"></span>',
+ D6: '<span class="dice d6"></span>',
+ RB0: '<span class="number br">0</span>',
+ RB1: '<span class="number br">1</span>',
+ RB2: '<span class="number br">2</span>',
+ RF0: '<span class="number fr">0</span>',
+ RF1: '<span class="number fr">1</span>',
+ RF2: '<span class="number fr">2</span>',
+}
+
+function sub_icon(match) {
+ return ICONS[match]
+}
+
function on_log(text) {
let p = document.createElement("div")
- text = text.replace(/&/g, "&amp;")
- text = text.replace(/</g, "&lt;")
- text = text.replace(/>/g, "&gt;")
- text = text.replace(/#(\d+)[^\]]*\]/g,
- '<span class="tip" onmouseenter="on_focus_card_tip($1)" onmouseleave="on_blur_card_tip()">$&</span>')
- text = text.replace(/%(\d+)/g, sub_space_name)
+ if (text.startsWith(">>")) {
+ p.className = "ii"
+ text = text.substring(2)
+ }
+ if (text.startsWith(">")) {
+ p.className = "i"
+ text = text.substring(1)
+ }
if (text.match(/^\.h1/)) {
text = text.substring(4)
@@ -358,14 +411,19 @@ function on_log(text) {
p.className = 'b'
}
- if (text.indexOf("\n") < 0) {
- p.innerHTML = text
- } else {
- text = text.split("\n")
- p.appendChild(on_log_line(text[0]))
- for (let i = 1; i < text.length; ++i)
- p.appendChild(on_log_line(text[i], "indent"))
- }
+ text = text.replace(/&/g, "&amp;")
+ text = text.replace(/</g, "&lt;")
+ text = text.replace(/>/g, "&gt;")
+ text = text.replace(/#(\d+)[^\]]*\]/g,
+ '<span class="tip" onmouseenter="on_focus_card_tip($1)" onmouseleave="on_blur_card_tip()">$&</span>')
+ text = text.replace(/C(\d+)/g, sub_card_name)
+ text = text.replace(/P(\d+)/g, sub_piece_name)
+ text = text.replace(/%(\d+)/g, sub_space_name)
+ text = text.replace(/\bD\d\b/g, match => ICONS[match])
+ text = text.replace(/\bR[BF]\d\b/g, match => ICONS[match])
+
+ p.innerHTML = text
+
return p
}
@@ -402,6 +460,7 @@ function on_reply(q, params) {
let ui = {
map: document.getElementById("map"),
+ tooltip: document.getElementById("tooltip"),
status: document.getElementById("status"),
spaces: document.getElementById("spaces"),
markers: document.getElementById("markers"),
@@ -1081,8 +1140,8 @@ const MINX = 15
const MINY = 15
const MAXX = 2550 - 15
-// TODO: two or more columns/rows if too many pieces in stack
-// TODO: separate layout for leader and militia boxes
+// todo: two or more columns/rows if too many pieces in stack
+// todo: separate layout for leader and militia boxes
function layout_stack(stack, x, y, dx) {
let dim = style_dims[style]