fertig-classic-games/data/advancewars-campaign.json

3602 lines
79 KiB
JSON

{
"missions": [
{
"id": "m01",
"name": "It's War!",
"playerCo": "andy",
"enemyCos": [
"olaf"
],
"fog": false,
"production": false,
"startFunds": [
0,
0
],
"dayLimit": 15,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 1,
"aggression": 0.4,
"captureWeight": 0.0
},
"briefing": [
{
"speaker": "ethel",
"mood": "idle",
"text": "Maurice, wake up! Blue Moon troops have crossed the border. They're right on top of us!"
},
{
"speaker": "maurice",
"mood": "idle",
"text": "Whoa! Okay, okay! Bucky and I are on it. Which one of these pedals makes the tank go?"
},
{
"speaker": "brad",
"mood": "idle",
"text": "GRAAAR! Who dares interrupt my fishing trip? Crush them and be quick about it!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Deary, just remember: tanks are strong, artillery shoots from afar, and infantry are brave little things. Destroy every enemy unit and the day is ours."
}
],
"victoryLine": {
"speaker": "brad",
"mood": "upset",
"text": "Impossible! Beaten by a beaver?! This isn't over... Retreat!"
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Oh dear. Don't you worry, sweetheart \u2014 even the best commanders lose a battle now and then. Let's try again."
},
"map": {
"w": 12,
"h": 9,
"tiles": [
"ww...rr...ww",
"w.q..rr..c.w",
"....mrr.....",
"..rrrrrrrr..",
"....w..m....",
".rrrrrrrrrr.",
".c.......q..",
"....mm......",
"ww...rr...ww"
],
"properties": [
{
"x": 2,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 6,
"owner": 0
},
{
"x": 9,
"y": 1,
"owner": 1
},
{
"x": 9,
"y": 6,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "tank",
"x": 2,
"y": 3
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 5
},
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 4
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "artillery",
"x": 1,
"y": 4
},
{
"army": 1,
"type": "tank",
"x": 9,
"y": 4
},
{
"army": 1,
"type": "infantry",
"x": 8,
"y": 3
},
{
"army": 1,
"type": "artillery",
"x": 10,
"y": 4
}
]
}
},
{
"id": "m02",
"name": "Supply Lines",
"playerCo": "andy",
"enemyCos": [
"olaf"
],
"fog": false,
"production": true,
"startFunds": [
3000,
3000
],
"dayLimit": 28,
"objective": {
"type": "capturecount",
"n": 7
},
"aiProfile": {
"skill": 1,
"aggression": 0.3,
"captureWeight": 0.6
},
"briefing": [
{
"speaker": "ethel",
"mood": "idle",
"text": "An army marches on its funds, dear. Every city we hold pays us 1,000 G a day, and bases build new units. Tap a base to build!"
},
{
"speaker": "maurice",
"mood": "idle",
"text": "Capture, eh? Nobody out-claims a beaver. Bucky, fetch my flag!"
},
{
"speaker": "brad",
"mood": "idle",
"text": "Those cities are MY fishing spots! Er... tax revenue! Whatever \u2014 keep your paws off!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Park infantry on a property and choose Capture. Hold seven properties and this valley is ours."
}
],
"victoryLine": {
"speaker": "brad",
"mood": "upset",
"text": "My cities! My beautiful revenue! Fine, take the valley \u2014 I'm going back to the river."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "We ran out of time, sweetie. Capture faster \u2014 infantry are cheap, so build plenty."
},
"map": {
"w": 14,
"h": 10,
"tiles": [
"q............q",
"ff..........ff",
"..............",
"..c...ww...c..",
"....c....c....",
"..............",
"..c...mm...c..",
"..............",
"....w....w....",
".............."
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 13,
"y": 0,
"owner": 1
},
{
"x": 12,
"y": 1,
"owner": 1
},
{
"x": 13,
"y": 1,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 1,
"y": 2
},
{
"army": 1,
"type": "infantry",
"x": 11,
"y": 2
},
{
"army": 1,
"type": "infantry",
"x": 12,
"y": 2
}
]
}
},
{
"id": "m03",
"name": "Timber Ridge",
"playerCo": "max",
"enemyCos": [
"olaf"
],
"fog": false,
"production": false,
"startFunds": [
0,
0
],
"dayLimit": 18,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 2,
"aggression": 0.5,
"captureWeight": 0.0
},
"briefing": [
{
"speaker": "ethel",
"mood": "idle",
"text": "Meet Natasha, dear \u2014 she doesn't believe in subtlety. Her direct-fire units hit 20% harder, though her artillery suffers a little."
},
{
"speaker": "natasha",
"mood": "idle",
"text": "Enough talk. There are tanks in those woods, and I intend to introduce myself. Personally."
},
{
"speaker": "brad",
"mood": "idle",
"text": "The forest is MY turf! Bears live in woods, you know. It's kind of our whole thing!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Remember: woods and mountains give defense stars. Don't fight in the open if you can help it."
}
],
"victoryLine": {
"speaker": "brad",
"mood": "upset",
"text": "Ouch, ouch, OUCH! Fine! The woods are yours. I know when I'm clear-cut."
},
"defeatLine": {
"speaker": "natasha",
"mood": "upset",
"text": "We overextended. Regroup \u2014 next time we hit them twice as hard."
},
"map": {
"w": 15,
"h": 10,
"tiles": [
"www.........www",
".q....mm......w",
"..w...ww....w..",
"....rrrrrrr....",
"..w....m....w..",
".....w...w.....",
"....rrrrrrr....",
"..w....ww...w..",
"w......mm....q.",
"www.........www"
],
"properties": [
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 13,
"y": 8,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "tank",
"x": 2,
"y": 3
},
{
"army": 0,
"type": "tank",
"x": 2,
"y": 5
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 4
},
{
"army": 0,
"type": "artillery",
"x": 1,
"y": 4
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 6
},
{
"army": 0,
"type": "apc",
"x": 1,
"y": 5
},
{
"army": 0,
"type": "recon",
"x": 3,
"y": 3
},
{
"army": 1,
"type": "tank",
"x": 12,
"y": 4
},
{
"army": 1,
"type": "artillery",
"x": 13,
"y": 4
},
{
"army": 1,
"type": "infantry",
"x": 11,
"y": 3
},
{
"army": 1,
"type": "infantry",
"x": 11,
"y": 5
},
{
"army": 1,
"type": "recon",
"x": 12,
"y": 3
}
]
}
},
{
"id": "m04",
"name": "Sniper's Alley",
"playerCo": "andy",
"enemyCos": [
"grit"
],
"fog": false,
"production": true,
"startFunds": [
10000,
3000
],
"dayLimit": 50,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 2,
"aggression": 0.4,
"captureWeight": 0.3
},
"briefing": [
{
"speaker": "jeff",
"mood": "idle",
"text": "Well howdy. Name's Jeff. I don't move fast, and I don't need to. My cannons reach one square farther than yours."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "A river AND artillery? Bucky, we're going to need a bigger dam."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Mind the bridges, dear \u2014 they're the only way across, and Jeff will have every one of them zeroed in."
},
{
"speaker": "jeff",
"mood": "idle",
"text": "Come on over whenever you're ready. I'll be here. Sipping lemonade. Aiming."
}
],
"victoryLine": {
"speaker": "jeff",
"mood": "upset",
"text": "Well, shoot. Literally, I guess I should have. You crossed faster than I figured. Nice hustle, kid."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Those long-range guns are murder on a bridge crossing. Try massing at one bridge and pushing through fast."
},
"map": {
"w": 16,
"h": 10,
"tiles": [
"q.......v......q",
"ff......v.....cf",
"........v.......",
"..c.....b....c..",
"........v.......",
"........v.......",
"..c.....b....c..",
"ff......v.....cc",
"........v.......",
"........v......."
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 7,
"owner": 0
},
{
"x": 1,
"y": 7,
"owner": 0
},
{
"x": 15,
"y": 0,
"owner": 1
},
{
"x": 14,
"y": 1,
"owner": 1
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 14,
"y": 7,
"owner": 1
},
{
"x": 15,
"y": 7,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 7
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 4
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 5
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 4
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 5
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 7
},
{
"army": 1,
"type": "artillery",
"x": 12,
"y": 3
},
{
"army": 1,
"type": "artillery",
"x": 12,
"y": 6
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 0
},
{
"army": 0,
"type": "rockets",
"x": 3,
"y": 3
},
{
"army": 0,
"type": "rockets",
"x": 3,
"y": 6
}
]
}
},
{
"id": "m05",
"name": "Frozen Front",
"playerCo": "max",
"enemyCos": [
"olaf"
],
"fog": false,
"production": true,
"startFunds": [
10000,
8000
],
"dayLimit": 40,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 3,
"aggression": 0.5,
"captureWeight": 0.4
},
"briefing": [
{
"speaker": "brad",
"mood": "idle",
"text": "You've pushed me far enough! This is my last stand, and I've been saving something special. Ever been caught outside in a blizzard?"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Watch his power meter, dear. When it fills, that Blizzard will slow every one of our units for a whole day."
},
{
"speaker": "natasha",
"mood": "idle",
"text": "Then we finish this before the snow falls. All units \u2014 forward!"
}
],
"victoryLine": {
"speaker": "brad",
"mood": "upset",
"text": "Brrr... enough! I surrender! Winter is supposed to be MY season... I need a nap. A long one."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "That bear fights harder on his home ice. Build anti-air and artillery, and keep your tanks together."
},
"map": {
"w": 18,
"h": 12,
"tiles": [
"mmm..........wwwww",
"mq...c....c.....qm",
"mf..............fm",
"mf.....ww.......fm",
"....rrrrrrrrrr....",
"..w....mm....w....",
"....w......c......",
"....rrrrrrrrrr....",
"wf..............fw",
"w....c....c......w",
"ww..............ww",
"wwww..........wwww"
],
"properties": [
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 2,
"owner": 0
},
{
"x": 1,
"y": 3,
"owner": 0
},
{
"x": 1,
"y": 8,
"owner": 0
},
{
"x": 16,
"y": 1,
"owner": 1
},
{
"x": 16,
"y": 2,
"owner": 1
},
{
"x": 16,
"y": 3,
"owner": 1
},
{
"x": 16,
"y": 8,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 8
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 3
},
{
"army": 1,
"type": "infantry",
"x": 15,
"y": 2
},
{
"army": 1,
"type": "infantry",
"x": 15,
"y": 8
},
{
"army": 1,
"type": "tank",
"x": 14,
"y": 3
}
]
}
},
{
"id": "m06",
"name": "Silent Woods",
"playerCo": "andy",
"enemyCos": [
"grit"
],
"fog": true,
"production": true,
"startFunds": [
7000,
6000
],
"dayLimit": 35,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 3,
"aggression": 0.45,
"captureWeight": 0.3
},
"briefing": [
{
"speaker": "ethel",
"mood": "idle",
"text": "Fog of war, dear. You can only see what your units can see \u2014 and anything hiding in woods is invisible until you're right beside it."
},
{
"speaker": "jeff",
"mood": "idle",
"text": "I do love a foggy morning. You'll hear my shells before you ever see my guns."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "Can't see a thing out there... Bucky says use recon units. Bucky's smart. Big vision range on those."
}
],
"victoryLine": {
"speaker": "jeff",
"mood": "upset",
"text": "Found every last one of my hidey-holes, huh? That's some fine scouting. I tip my hat."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Ambushes hurt, don't they? Lead with cheap infantry, keep recon on the flanks, and never move blind down a road."
},
"map": {
"w": 16,
"h": 10,
"tiles": [
"q...w......w....",
"ff..w..ww..w...q",
"................",
"..w.ww....ww..ff",
"....w..mm..w....",
"....w..mm..w....",
"..w.ww....ww....",
"................",
"....w..ww..w....",
"....w......w...."
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 14,
"y": 3,
"owner": 1
},
{
"x": 15,
"y": 3,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "recon",
"x": 1,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "tank",
"x": 2,
"y": 2
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 2
},
{
"army": 1,
"type": "artillery",
"x": 13,
"y": 4
},
{
"army": 1,
"type": "tank",
"x": 13,
"y": 6
}
]
}
},
{
"id": "m07",
"name": "Landing Party",
"playerCo": "sami",
"enemyCos": [
"drake"
],
"fog": false,
"production": true,
"startFunds": [
12000,
4000
],
"dayLimit": 50,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 2,
"aggression": 0.4,
"captureWeight": 0.4
},
"briefing": [
{
"speaker": "schooner",
"mood": "idle",
"text": "Ahoy there, land lovers! Cap'n Schooner's the name. That channel between us belongs to me an' the fishes!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "This is Beth's specialty, dear. Her foot soldiers fight 30% harder and capture half again as fast."
},
{
"speaker": "beth",
"mood": "idle",
"text": "A beach landing? Now that's my kind of rodeo. Load 'em in the lander and let's ride the tide."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Landers carry two land units across the sea and unload on those pale shoal tiles. Guard them \u2014 they can't fight back!"
}
],
"victoryLine": {
"speaker": "schooner",
"mood": "upset",
"text": "Blimey! Boarded on me own beach! Ye fight like a squall, lass. The harbor's yers."
},
"defeatLine": {
"speaker": "beth",
"mood": "upset",
"text": "Lost too many boys in the surf. Next run, we shell that beach first and land where the navy ain't."
},
"map": {
"w": 16,
"h": 12,
"tiles": [
"q....hbbbbh....q",
"f....hbbbbh....f",
"f....hssssh....c",
".c...pssssh...c.",
".....hssssh.....",
"..w..hssssh..w..",
"..w..hssssh..w..",
".....hssssh.....",
".c...hssssp...c.",
"f....hssssh....c",
"f....hssssh....c",
"c....hbbbbh....c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 2,
"owner": 0
},
{
"x": 0,
"y": 9,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 5,
"y": 3,
"owner": 0
},
{
"x": 15,
"y": 0,
"owner": 1
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 15,
"y": 2,
"owner": 1
},
{
"x": 15,
"y": 9,
"owner": 1
},
{
"x": 15,
"y": 10,
"owner": 1
},
{
"x": 10,
"y": 8,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 1,
"y": 1
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 2
},
{
"army": 0,
"type": "tank",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "artillery",
"x": 1,
"y": 4
},
{
"army": 0,
"type": "lander",
"x": 6,
"y": 5,
"cargo": [
{
"type": "infantry"
},
{
"type": "mech"
}
]
},
{
"army": 0,
"type": "cruiser",
"x": 6,
"y": 4
},
{
"army": 0,
"type": "mdtank",
"x": 2,
"y": 10
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 2
},
{
"army": 1,
"type": "tank",
"x": 13,
"y": 9
},
{
"army": 1,
"type": "cruiser",
"x": 9,
"y": 6
}
]
}
},
{
"id": "m08",
"name": "High Seas",
"playerCo": "andy",
"enemyCos": [
"drake"
],
"fog": false,
"production": false,
"startFunds": [
0,
0
],
"dayLimit": 20,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 3,
"aggression": 0.55,
"captureWeight": 0.0
},
"briefing": [
{
"speaker": "schooner",
"mood": "idle",
"text": "So ye want the open water, do ye? Me fleet's been itchin' for a proper broadside. HARD TO STARBOARD!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Battleships shell from six squares away, cruisers hunt subs, and subs can dive to vanish. Dive early, surface to strike!"
},
{
"speaker": "maurice",
"mood": "idle",
"text": "A sea battle? Beavers are EXCELLENT swimmers. Just... nobody tell the submarines."
}
],
"victoryLine": {
"speaker": "schooner",
"mood": "upset",
"text": "Me fleet! Sunk to the last dinghy! Yer a saltier dog than I gave ye credit for, matey."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Keep your battleship behind the cruisers, dear, and remember a dived sub is invisible until something sails right beside it."
},
"map": {
"w": 18,
"h": 12,
"tiles": [
"ssssssssssssssssss",
"ssssssesssessssses",
"ss.hssssssssssssss",
"ssh.hsssssssssesss",
"sss.psssssssssssss",
"ssssssssseesssssss",
"sssssssseessssssss",
"sssssssssssssp.sss",
"sssesssssssssh.hss",
"ssssssssssssssh.ss",
"sessssessssssssses",
"ssssssssssssssssss"
],
"properties": [
{
"x": 4,
"y": 4,
"owner": 0
},
{
"x": 13,
"y": 7,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "battleship",
"x": 2,
"y": 6
},
{
"army": 0,
"type": "battleship",
"x": 2,
"y": 8
},
{
"army": 0,
"type": "cruiser",
"x": 4,
"y": 5
},
{
"army": 0,
"type": "cruiser",
"x": 3,
"y": 7
},
{
"army": 0,
"type": "sub",
"x": 5,
"y": 6
},
{
"army": 0,
"type": "sub",
"x": 5,
"y": 8
},
{
"army": 1,
"type": "battleship",
"x": 15,
"y": 5
},
{
"army": 1,
"type": "cruiser",
"x": 13,
"y": 5
},
{
"army": 1,
"type": "sub",
"x": 12,
"y": 6
}
]
}
},
{
"id": "m09",
"name": "Twin Harbors",
"playerCo": "max",
"enemyCos": [
"drake"
],
"fog": false,
"production": true,
"startFunds": [
12000,
5000
],
"dayLimit": 50,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 3,
"aggression": 0.5,
"captureWeight": 0.4
},
"briefing": [
{
"speaker": "schooner",
"mood": "idle",
"text": "Two harbors, one channel, and only one flag flyin' over both by sundown. I mean for it to be mine!"
},
{
"speaker": "natasha",
"mood": "idle",
"text": "He can keep the water. I only need the road to his front door."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "You can win on land or at sea, dear \u2014 but don't ignore either. A battleship parked off your coast ruins everyone's morning."
}
],
"victoryLine": {
"speaker": "schooner",
"mood": "upset",
"text": "Me own harbor, flying yer colors... Aye, fair's fair. The sea takes no sides."
},
"defeatLine": {
"speaker": "natasha",
"mood": "upset",
"text": "His ships ground our advance to a halt. We need our own fleet \u2014 or anti-ship artillery on that coast."
},
"map": {
"w": 20,
"h": 12,
"tiles": [
"q.c.....ssss.....c.q",
"ff......ssss......cf",
"........ssss........",
"..w.....psss........",
"........ssss....w...",
"...rrrrrbbbbrrrrr...",
"...r....ssss....r...",
"........ssss........",
"........sssp....w...",
"..w.....ssss........",
"ff......ssss......cc",
"c.......ssss.......c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 2,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 8,
"y": 3,
"owner": 0
},
{
"x": 19,
"y": 0,
"owner": 1
},
{
"x": 17,
"y": 0,
"owner": 1
},
{
"x": 18,
"y": 1,
"owner": 1
},
{
"x": 19,
"y": 1,
"owner": 1
},
{
"x": 18,
"y": 10,
"owner": 1
},
{
"x": 19,
"y": 10,
"owner": 1
},
{
"x": 11,
"y": 8,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 10
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 2
},
{
"army": 0,
"type": "cruiser",
"x": 9,
"y": 3
},
{
"army": 1,
"type": "infantry",
"x": 17,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 17,
"y": 10
},
{
"army": 1,
"type": "tank",
"x": 16,
"y": 2
},
{
"army": 1,
"type": "sub",
"x": 10,
"y": 8
},
{
"army": 0,
"type": "rockets",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "mdtank",
"x": 3,
"y": 1
}
]
}
},
{
"id": "m10",
"name": "Radar Station",
"playerCo": "andy",
"enemyCos": [
"sonja"
],
"fog": true,
"production": true,
"startFunds": [
11000,
6000
],
"dayLimit": 40,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 3,
"aggression": 0.4,
"captureWeight": 0.3
},
"briefing": [
{
"speaker": "nicole",
"mood": "idle",
"text": "Oh, cute \u2014 they sent the mechanic. I've already tapped your comms, mapped your patrols, and read your supply manifests. Twice."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "That's Nicole, dear. In fog she sees one square farther than anyone. Assume she's watching everything you do."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "Then let's give her something to watch! Bucky, do the confusing dance!"
}
],
"victoryLine": {
"speaker": "nicole",
"mood": "upset",
"text": "You... beat my intel with a BEAVER doing improv? Fine. Logging off. This round never happened."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "She saw every move before we made it. Screen your advance with infantry and keep your expensive units one step back."
},
"map": {
"w": 16,
"h": 11,
"tiles": [
"q...w.......w..q",
"ff..w..c....w.ff",
"........ww......",
"..ww....ww..c...",
"....m........w..",
".c..m...c...m..c",
"..w........m....",
"...c..ww....ww..",
"......ww........",
"ff.w....c..w..ff",
"c..w.......w...c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 9,
"owner": 0
},
{
"x": 1,
"y": 9,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 15,
"y": 0,
"owner": 1
},
{
"x": 14,
"y": 1,
"owner": 1
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 14,
"y": 9,
"owner": 1
},
{
"x": 15,
"y": 9,
"owner": 1
},
{
"x": 15,
"y": 10,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "recon",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "tank",
"x": 2,
"y": 9
},
{
"army": 1,
"type": "recon",
"x": 13,
"y": 8
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 1
},
{
"army": 1,
"type": "tank",
"x": 13,
"y": 2
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 0
}
]
}
},
{
"id": "m11",
"name": "Air Superiority",
"playerCo": "max",
"enemyCos": [
"eagle"
],
"fog": false,
"production": true,
"startFunds": [
13000,
7000
],
"dayLimit": 40,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 3,
"aggression": 0.55,
"captureWeight": 0.3
},
"briefing": [
{
"speaker": "nadia",
"mood": "idle",
"text": "New airspace detected. I've flown across galaxies \u2014 your little valley will take about a minute to conquer."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Nadia's air units hit 15% harder, but her navy is weak and copters fall right out of the sky to anti-air fire."
},
{
"speaker": "natasha",
"mood": "idle",
"text": "Then we build a ceiling of flak so thick she'll have to walk like the rest of us."
}
],
"victoryLine": {
"speaker": "nadia",
"mood": "upset",
"text": "Grounded... by surface dwellers? This planet's anti-air doctrine is... actually rather good. Noted."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Anti-air, dear, anti-air! One AA unit deletes a copter, and missiles reach five squares. Make her respect the ground."
},
"map": {
"w": 16,
"h": 10,
"tiles": [
"q....w....w....q",
"ff............ff",
"a.....c.......a.",
"....m......m....",
".c....rr......c.",
".....rrrr.......",
"....m......m....",
"a.....c.......a.",
"ff............ff",
"c....w....w....c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 2,
"owner": 0
},
{
"x": 0,
"y": 7,
"owner": 0
},
{
"x": 0,
"y": 8,
"owner": 0
},
{
"x": 1,
"y": 8,
"owner": 0
},
{
"x": 0,
"y": 9,
"owner": 0
},
{
"x": 15,
"y": 0,
"owner": 1
},
{
"x": 14,
"y": 1,
"owner": 1
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 14,
"y": 2,
"owner": 1
},
{
"x": 14,
"y": 7,
"owner": 1
},
{
"x": 14,
"y": 8,
"owner": 1
},
{
"x": 15,
"y": 8,
"owner": 1
},
{
"x": 15,
"y": 9,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "antiair",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "antiair",
"x": 2,
"y": 7
},
{
"army": 0,
"type": "missiles",
"x": 1,
"y": 4
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 4
},
{
"army": 1,
"type": "bcopter",
"x": 13,
"y": 3
},
{
"army": 1,
"type": "bcopter",
"x": 13,
"y": 6
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 1
},
{
"army": 1,
"type": "tank",
"x": 12,
"y": 4
}
]
}
},
{
"id": "m12",
"name": "Lightning War",
"playerCo": "max",
"enemyCos": [
"eagle"
],
"fog": false,
"production": true,
"startFunds": [
12000,
7000
],
"dayLimit": 50,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 3,
"aggression": 0.6,
"captureWeight": 0.35
},
"briefing": [
{
"speaker": "nadia",
"mood": "idle",
"text": "Round two, ground-crawler. This time I brought my whole wing \u2014 and when my power charges, every one of them strikes twice."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Her Lightning Strike lets her whole army move again in one turn. Never leave your artillery unguarded, dear."
},
{
"speaker": "natasha",
"mood": "idle",
"text": "Let her come. A stormfront breaks hardest on a mountain \u2014 and I am the mountain."
}
],
"victoryLine": {
"speaker": "nadia",
"mood": "upset",
"text": "My wing... clipped. You fight like a gravity well. I yield this sky \u2014 for now."
},
"defeatLine": {
"speaker": "natasha",
"mood": "upset",
"text": "She hit us twice in one breath. We dig in deeper next time \u2014 flak first, then the counterpunch."
},
"map": {
"w": 18,
"h": 12,
"tiles": [
"q.a.............aq",
"ff.....c.......ff.",
"..c.............c.",
"....w..mm..w......",
"...rrrrrrrrrrrr...",
"...r..........r...",
"...r..........r...",
"...rrrrrrrrrrrr...",
"....w..mm..w......",
"..c.............c.",
".ff.......c.....ff",
"c.a.............ac"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 2,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 11,
"owner": 0
},
{
"x": 2,
"y": 11,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 2,
"y": 10,
"owner": 0
},
{
"x": 17,
"y": 0,
"owner": 1
},
{
"x": 16,
"y": 0,
"owner": 1
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 16,
"y": 1,
"owner": 1
},
{
"x": 17,
"y": 11,
"owner": 1
},
{
"x": 16,
"y": 11,
"owner": 1
},
{
"x": 16,
"y": 10,
"owner": 1
},
{
"x": 17,
"y": 10,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "antiair",
"x": 3,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 10
},
{
"army": 0,
"type": "tank",
"x": 4,
"y": 5
},
{
"army": 0,
"type": "missiles",
"x": 2,
"y": 5
},
{
"army": 1,
"type": "bcopter",
"x": 14,
"y": 6
},
{
"army": 1,
"type": "infantry",
"x": 14,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 14,
"y": 10
},
{
"army": 1,
"type": "tank",
"x": 13,
"y": 6
}
]
}
},
{
"id": "m13",
"name": "Mountain Pass",
"playerCo": "sami",
"enemyCos": [
"kanbei"
],
"fog": false,
"production": false,
"startFunds": [
0,
0
],
"dayLimit": 20,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 3,
"aggression": 0.5,
"captureWeight": 0.0
},
"briefing": [
{
"speaker": "kage",
"mood": "idle",
"text": "I am Kage. You stand before the finest soldiers ever trained. Each is worth three of yours. Turn back with honor intact."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "He's not bluffing, dear \u2014 his units hit harder AND take less damage. But there are few of them, and mountains favor the humble foot soldier."
},
{
"speaker": "beth",
"mood": "idle",
"text": "Fancy armor, narrow pass, my mechs up on the ridge line... Partner, this is a turkey shoot waitin' to happen."
}
],
"victoryLine": {
"speaker": "kage",
"mood": "upset",
"text": "Defeated... by militia in the rocks. There is no shame in this lesson. You honor me, commander."
},
"defeatLine": {
"speaker": "beth",
"mood": "upset",
"text": "Them elite troops hit like a freight train head-on. Flank 'em through the peaks \u2014 bazookas don't care about armor plate."
},
"map": {
"w": 14,
"h": 10,
"tiles": [
"mmm.mm...mmmmm",
"mq........w..m",
"m..mm..m.....m",
".....m...m....",
"..m...m....m..",
"..m....m...m..",
"....m...m.....",
"m.....m......m",
"m..w.......q.m",
"mmmmm...mm.mmm"
],
"properties": [
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 11,
"y": 8,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "mech",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 2
},
{
"army": 0,
"type": "mech",
"x": 2,
"y": 3
},
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 1
},
{
"army": 0,
"type": "artillery",
"x": 1,
"y": 3
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "rockets",
"x": 4,
"y": 3
},
{
"army": 0,
"type": "mdtank",
"x": 3,
"y": 3
},
{
"army": 1,
"type": "mdtank",
"x": 11,
"y": 6
},
{
"army": 1,
"type": "mech",
"x": 12,
"y": 7
},
{
"army": 1,
"type": "infantry",
"x": 11,
"y": 7
}
]
}
},
{
"id": "m14",
"name": "Imperial Gambit",
"playerCo": "andy",
"enemyCos": [
"kanbei"
],
"fog": false,
"production": true,
"startFunds": [
16000,
5000
],
"dayLimit": 50,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 2,
"aggression": 0.5,
"captureWeight": 0.4
},
"briefing": [
{
"speaker": "kage",
"mood": "idle",
"text": "You bested my vanguard. Now face my treasury! ...Which my quartermaster informs me is somewhat strained. Elite soldiers are not cheap."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "There's his weakness, dear \u2014 everything Kage builds costs 20% extra. Out-produce him. Two of yours for every one of his."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "A building contest? Oh, you poor samurai. You've challenged a BEAVER to a building contest."
}
],
"victoryLine": {
"speaker": "kage",
"mood": "upset",
"text": "Quantity... has a quality of its own. My accountants warned me. The field is yours, master builder."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Don't trade one-for-one with elites, sweetie. Wear them down with artillery first, then swarm."
},
"map": {
"w": 18,
"h": 12,
"tiles": [
"q.c......w.....c.q",
"ff...............f",
"f.....c....c.....f",
"..w............w..",
"...rrrrrrrrrrrr...",
"...r...ww.....r...",
"...r.....ww...r...",
"...rrrrrrrrrrrr...",
"..w............w..",
"f.....c....c.....f",
"ff...............f",
"c.c......w.....c.c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 2,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 2,
"owner": 0
},
{
"x": 0,
"y": 9,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 0,
"y": 11,
"owner": 0
},
{
"x": 2,
"y": 11,
"owner": 0
},
{
"x": 17,
"y": 0,
"owner": 1
},
{
"x": 15,
"y": 0,
"owner": 1
},
{
"x": 17,
"y": 1,
"owner": 1
},
{
"x": 17,
"y": 2,
"owner": 1
},
{
"x": 17,
"y": 9,
"owner": 1
},
{
"x": 17,
"y": 10,
"owner": 1
},
{
"x": 17,
"y": 11,
"owner": 1
},
{
"x": 15,
"y": 11,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 1
},
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 10
},
{
"army": 0,
"type": "tank",
"x": 4,
"y": 2
},
{
"army": 1,
"type": "infantry",
"x": 14,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 14,
"y": 10
},
{
"army": 1,
"type": "tank",
"x": 13,
"y": 2
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 9
}
]
}
},
{
"id": "m15",
"name": "Ghost Protocol",
"playerCo": "sami",
"enemyCos": [
"sonja"
],
"fog": true,
"production": true,
"startFunds": [
12000,
6000
],
"dayLimit": 40,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 3,
"aggression": 0.5,
"captureWeight": 0.4
},
"briefing": [
{
"speaker": "nicole",
"mood": "idle",
"text": "Back for more? I've upgraded. New encryption, new sensor net, and a counter-protocol that strikes before you even finish attacking."
},
{
"speaker": "beth",
"mood": "idle",
"text": "City fightin' in the fog. My infantry were born for this. We'll take her HQ door by door."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Careful when her power charges, dear \u2014 her units will counterattack FIRST. Soften targets with artillery before you commit."
}
],
"victoryLine": {
"speaker": "nicole",
"mood": "upset",
"text": "You captured my actual physical HQ. With FEET. I can't firewall feet! This is so unfair."
},
"defeatLine": {
"speaker": "beth",
"mood": "upset",
"text": "Walked right into her counter-trap. Next time we scout every alley before the boys move in."
},
"map": {
"w": 16,
"h": 12,
"tiles": [
"q..w........w...",
"ff....c..c.....q",
"f.............ff",
"..c..w..w...c..f",
"....c....c......",
"..w...cc...w....",
"....w.cc..w.....",
"......c....c....",
"..c...w..w..c...",
"f...............",
"ff....c..c....ff",
"c..w........w..c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 2,
"owner": 0
},
{
"x": 0,
"y": 9,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 0,
"y": 11,
"owner": 0
},
{
"x": 15,
"y": 1,
"owner": 1
},
{
"x": 14,
"y": 2,
"owner": 1
},
{
"x": 15,
"y": 2,
"owner": 1
},
{
"x": 15,
"y": 3,
"owner": 1
},
{
"x": 14,
"y": 10,
"owner": 1
},
{
"x": 15,
"y": 10,
"owner": 1
},
{
"x": 15,
"y": 11,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "mech",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "recon",
"x": 2,
"y": 10
},
{
"army": 1,
"type": "infantry",
"x": 13,
"y": 2
},
{
"army": 1,
"type": "recon",
"x": 13,
"y": 10
},
{
"army": 1,
"type": "tank",
"x": 13,
"y": 3
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 0
}
]
}
},
{
"id": "m16",
"name": "The Long Watch",
"playerCo": "andy",
"enemyCos": [
"sonja"
],
"fog": true,
"production": true,
"startFunds": [
9000,
9000
],
"dayLimit": 26,
"objective": {
"type": "capturecount",
"n": 14
},
"aiProfile": {
"skill": 4,
"aggression": 0.45,
"captureWeight": 0.6
},
"briefing": [
{
"speaker": "nicole",
"mood": "idle",
"text": "This region's comm grid routes through those towns. Whoever holds ten nodes controls the network. Race you."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "A land grab in the fog! Ten properties wins it, dear. Infantry in transports cover ground twice as fast."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "Claiming territory IS the family business. Watch the master work."
}
],
"victoryLine": {
"speaker": "nicole",
"mood": "upset",
"text": "Network control: lost. To a rodent with a flag. I'm uninstalling this whole region."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "She out-claimed us, sweetie. Build APCs to ferry your infantry, and capture the middle towns first."
},
"map": {
"w": 18,
"h": 12,
"tiles": [
"q....w......w....q",
"ff..c........c..ff",
"..................",
"..c...c..c....c...",
"....w......w......",
".c....c..c.....c..",
"..c....cc....c....",
"....w......w......",
"...c..c..c....c...",
"..................",
"ff..c........c..ff",
"c....w......w....c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 0,
"y": 11,
"owner": 0
},
{
"x": 17,
"y": 0,
"owner": 1
},
{
"x": 16,
"y": 1,
"owner": 1
},
{
"x": 17,
"y": 1,
"owner": 1
},
{
"x": 16,
"y": 10,
"owner": 1
},
{
"x": 17,
"y": 10,
"owner": 1
},
{
"x": 17,
"y": 11,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 10
},
{
"army": 0,
"type": "apc",
"x": 3,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 15,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 15,
"y": 10
},
{
"army": 1,
"type": "apc",
"x": 14,
"y": 1
}
]
}
},
{
"id": "m17",
"name": "Old Rivals",
"playerCo": "max",
"enemyCos": [
"eagle"
],
"fog": false,
"production": false,
"startFunds": [
0,
0
],
"dayLimit": 18,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 4,
"aggression": 0.6,
"captureWeight": 0.0
},
"briefing": [
{
"speaker": "nadia",
"mood": "idle",
"text": "You. The loud one with the tanks. Before this war ends, we settle who owns the horizon \u2014 your armor or my wings. No factories. No reinforcements."
},
{
"speaker": "natasha",
"mood": "idle",
"text": "Finally. A duel worth my time. Bring your whole flock, star-child."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Everything you both have is already on the field, dears. Make every single shot count."
}
],
"victoryLine": {
"speaker": "nadia",
"mood": "upset",
"text": "The horizon is yours, Natasha. I don't say this to many carbon-based lifeforms: that was flying."
},
"defeatLine": {
"speaker": "natasha",
"mood": "upset",
"text": "She owned the sky and never left it. Keep the anti-air alive at ALL costs \u2014 they're the whole battle."
},
"map": {
"w": 16,
"h": 10,
"tiles": [
"w....w....w....w",
".q..............",
"..............q.",
"...m........m...",
".....rrrrrr.....",
".....rrrrrr.....",
"...m........m...",
"................",
"................",
"w....w....w....w"
],
"properties": [
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 14,
"y": 2,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "antiair",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "antiair",
"x": 2,
"y": 6
},
{
"army": 0,
"type": "missiles",
"x": 1,
"y": 4
},
{
"army": 0,
"type": "fighter",
"x": 3,
"y": 3
},
{
"army": 0,
"type": "tank",
"x": 3,
"y": 5
},
{
"army": 0,
"type": "tank",
"x": 2,
"y": 4
},
{
"army": 0,
"type": "mdtank",
"x": 2,
"y": 5
},
{
"army": 1,
"type": "fighter",
"x": 12,
"y": 3
},
{
"army": 1,
"type": "bomber",
"x": 13,
"y": 4
},
{
"army": 1,
"type": "bcopter",
"x": 12,
"y": 6
},
{
"army": 1,
"type": "bcopter",
"x": 13,
"y": 6
},
{
"army": 1,
"type": "tank",
"x": 12,
"y": 5
},
{
"army": 1,
"type": "antiair",
"x": 13,
"y": 5
}
]
}
},
{
"id": "m18",
"name": "Storm Warning",
"playerCo": "sami",
"enemyCos": [
"drake"
],
"fog": false,
"production": true,
"startFunds": [
17000,
3000
],
"dayLimit": 60,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 3,
"aggression": 0.4,
"captureWeight": 0.35
},
"briefing": [
{
"speaker": "schooner",
"mood": "idle",
"text": "Somethin's wrong with the sea itself, lass. Black machines in the deep... but a captain defends his waters FIRST. En garde!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "There's a storm behind this storm, dear. Beat Schooner quickly \u2014 I fear something worse is steering him."
},
{
"speaker": "beth",
"mood": "idle",
"text": "A grumpy sailor and black machines in the deep. Saddle up, boys \u2014 we're goin' in."
}
],
"victoryLine": {
"speaker": "schooner",
"mood": "upset",
"text": "Ye fought clean an' true. Now listen well \u2014 the machine that whispered to me fleet... it's comin' for us ALL."
},
"defeatLine": {
"speaker": "beth",
"mood": "upset",
"text": "That fog hid half his fleet. Cruisers up front, sub hunters wide \u2014 and never bunch up near the coast."
},
"map": {
"w": 18,
"h": 12,
"tiles": [
"q...w.ssssss......",
"ff....ssssss....q.",
"f.....sssess...cf.",
".c....ssssss....c.",
"......hbbbbh......",
"..w...hbbbbh..w...",
"......ssssss......",
".p....ssssss....p.",
"......sesss.......",
".c....ssssss...c..",
"ff....bbbbbb....ff",
"c...w.ssssss......"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 2,
"owner": 0
},
{
"x": 1,
"y": 7,
"owner": 0
},
{
"x": 0,
"y": 10,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 0,
"y": 11,
"owner": 0
},
{
"x": 16,
"y": 1,
"owner": 1
},
{
"x": 16,
"y": 2,
"owner": 1
},
{
"x": 16,
"y": 7,
"owner": 1
},
{
"x": 17,
"y": 10,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 2,
"y": 1
},
{
"army": 0,
"type": "tank",
"x": 2,
"y": 2
},
{
"army": 0,
"type": "cruiser",
"x": 7,
"y": 2
},
{
"army": 0,
"type": "battleship",
"x": 7,
"y": 6
},
{
"army": 1,
"type": "infantry",
"x": 15,
"y": 1
},
{
"army": 1,
"type": "tank",
"x": 14,
"y": 3
},
{
"army": 1,
"type": "sub",
"x": 10,
"y": 6
},
{
"army": 1,
"type": "cruiser",
"x": 10,
"y": 9
}
]
}
},
{
"id": "m19",
"name": "Machine Uprising",
"playerCo": "andy",
"enemyCos": [
"sturm"
],
"fog": false,
"production": true,
"startFunds": [
16000,
4000
],
"dayLimit": 50,
"objective": {
"type": "hq"
},
"aiProfile": {
"skill": 3,
"aggression": 0.4,
"captureWeight": 0.4
},
"briefing": [
{
"speaker": "klaxon",
"mood": "idle",
"text": "ANALYSIS COMPLETE. YOUR COMMANDERS: DEFEATED IN SIMULATION 10,000 OF 10,000 TIMES. SURRENDER TO OPTIMIZE REMAINING LIFESPAN."
},
{
"speaker": "ethel",
"mood": "idle",
"text": "So this is what was pulling the strings. Its machines ignore terrain costs entirely, dear \u2014 mountains, rivers, all of it."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "It ran ten thousand simulations... but did ANY of them include a beaver? That's what I thought. Let's go."
}
],
"victoryLine": {
"speaker": "klaxon",
"mood": "upset",
"text": "SIMULATION ERROR. ERROR. RODENT VARIABLE OUT OF BOUNDS. RECALCULATING... RETREATING... THIS IS NOT DEFEAT. THIS IS... STRATEGIC BUFFERING."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "It moves through mountains like they're roads \u2014 never assume you're safe behind terrain. Guard every approach."
},
"map": {
"w": 20,
"h": 14,
"tiles": [
"q.c......ww......c.q",
"ff.................f",
"f.....c......c.....f",
"..w.....mm......w..f",
"...c............c...",
"....rrrrrrrrrrrr....",
"....r..........r....",
"....r..........r....",
"....rrrrrrrrrrrr....",
"...c............c...",
"..w.....mm......w..f",
"f.....c......c.....f",
"ff.................f",
"c.c......ww......c.c"
],
"properties": [
{
"x": 0,
"y": 0,
"owner": 0
},
{
"x": 2,
"y": 0,
"owner": 0
},
{
"x": 0,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 0,
"y": 2,
"owner": 0
},
{
"x": 0,
"y": 11,
"owner": 0
},
{
"x": 0,
"y": 12,
"owner": 0
},
{
"x": 1,
"y": 12,
"owner": 0
},
{
"x": 0,
"y": 13,
"owner": 0
},
{
"x": 2,
"y": 13,
"owner": 0
},
{
"x": 19,
"y": 0,
"owner": 1
},
{
"x": 17,
"y": 0,
"owner": 1
},
{
"x": 19,
"y": 1,
"owner": 1
},
{
"x": 19,
"y": 2,
"owner": 1
},
{
"x": 19,
"y": 3,
"owner": 1
},
{
"x": 19,
"y": 10,
"owner": 1
},
{
"x": 19,
"y": 11,
"owner": 1
},
{
"x": 19,
"y": 12,
"owner": 1
},
{
"x": 19,
"y": 13,
"owner": 1
},
{
"x": 17,
"y": 13,
"owner": 1
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 1
},
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 12
},
{
"army": 0,
"type": "tank",
"x": 4,
"y": 2
},
{
"army": 0,
"type": "mdtank",
"x": 4,
"y": 11
},
{
"army": 0,
"type": "artillery",
"x": 3,
"y": 4
},
{
"army": 1,
"type": "infantry",
"x": 16,
"y": 1
},
{
"army": 1,
"type": "infantry",
"x": 16,
"y": 12
},
{
"army": 1,
"type": "mdtank",
"x": 15,
"y": 2
},
{
"army": 0,
"type": "antiair",
"x": 3,
"y": 3
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 6
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 2
},
{
"army": 0,
"type": "mdtank",
"x": 2,
"y": 2
}
]
}
},
{
"id": "m20",
"name": "Final Front",
"playerCo": "andy",
"enemyCos": [
"sturm",
"sonja"
],
"fog": false,
"production": true,
"startFunds": [
18000,
6000,
4000
],
"dayLimit": 40,
"objective": {
"type": "rout"
},
"aiProfile": {
"skill": 3,
"aggression": 0.55,
"captureWeight": 0.3
},
"briefing": [
{
"speaker": "klaxon",
"mood": "idle",
"text": "FINAL PROTOCOL ENGAGED. I HAVE ASSIMILATED YOUR HACKER'S NETWORK. HER MACHINES FIGHT FOR ME NOW. VICTORY PROBABILITY: 99.97%."
},
{
"speaker": "nicole",
"mood": "idle",
"text": "It's in my systems! I can't\u2014 listen, beaver-boy, my drones will shoot at you and I CANNOT stop them. Break the core and you break the link!"
},
{
"speaker": "ethel",
"mood": "idle",
"text": "Two armies against us, dear. This is everything we've learned in one battle. I am so very proud of you. Now go finish this."
},
{
"speaker": "maurice",
"mood": "idle",
"text": "For the forest. For the rivers. For every dam I ever built. Bucky \u2014 it's chompin' time."
}
],
"victoryLine": {
"speaker": "klaxon",
"mood": "upset",
"text": "CORE BREACH. PROBABILITY MODEL... INVALID. HOW. HOW DOES THE BEAVER ALWAYS\u2014 SIGNAL LOST."
},
"defeatLine": {
"speaker": "ethel",
"mood": "upset",
"text": "Two fronts is one too many if you split evenly, dear. Hold one flank with artillery and crush the other, then turn."
},
"map": {
"w": 20,
"h": 14,
"tiles": [
"wwwww..........wwwww",
"wq.................w",
"wf....c......c....qw",
"wf................fw",
"..c.....mm......c.f.",
"....rrrrrrrrrrrr....",
"....r..........r....",
"....r..........r....",
"....rrrrrrrrrrrr....",
"..c.....ww......c.f.",
"wf................fw",
"wf....c......c....qw",
"w..................w",
"wwwww..........wwwww"
],
"properties": [
{
"x": 1,
"y": 1,
"owner": 0
},
{
"x": 1,
"y": 2,
"owner": 0
},
{
"x": 1,
"y": 3,
"owner": 0
},
{
"x": 1,
"y": 10,
"owner": 0
},
{
"x": 1,
"y": 11,
"owner": 0
},
{
"x": 2,
"y": 4,
"owner": 0
},
{
"x": 2,
"y": 9,
"owner": 0
},
{
"x": 18,
"y": 2,
"owner": 1
},
{
"x": 18,
"y": 3,
"owner": 1
},
{
"x": 18,
"y": 4,
"owner": 1
},
{
"x": 16,
"y": 4,
"owner": 1
},
{
"x": 18,
"y": 11,
"owner": 2
},
{
"x": 18,
"y": 10,
"owner": 2
},
{
"x": 18,
"y": 9,
"owner": 2
},
{
"x": 16,
"y": 9,
"owner": 2
}
],
"units": [
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 2
},
{
"army": 0,
"type": "infantry",
"x": 3,
"y": 11
},
{
"army": 0,
"type": "tank",
"x": 4,
"y": 3
},
{
"army": 0,
"type": "tank",
"x": 4,
"y": 10
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 6
},
{
"army": 0,
"type": "artillery",
"x": 2,
"y": 7
},
{
"army": 0,
"type": "mdtank",
"x": 3,
"y": 6
},
{
"army": 1,
"type": "infantry",
"x": 16,
"y": 2
},
{
"army": 1,
"type": "mdtank",
"x": 15,
"y": 3
},
{
"army": 1,
"type": "tank",
"x": 16,
"y": 5
},
{
"army": 2,
"type": "infantry",
"x": 16,
"y": 11
},
{
"army": 2,
"type": "tank",
"x": 15,
"y": 10
},
{
"army": 2,
"type": "recon",
"x": 16,
"y": 8
},
{
"army": 0,
"type": "mech",
"x": 1,
"y": 1
},
{
"army": 0,
"type": "antiair",
"x": 2,
"y": 3
},
{
"army": 0,
"type": "rockets",
"x": 2,
"y": 2
}
]
}
}
]
}