{ "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 } ] } } ] }