{ "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.25, "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": "Oh, and dear — see that empty city in the middle of the field? Walk infantry onto it and choose Capture to claim it. It won't win the day, but every property we hold pays the bills." }, { "speaker": "ethel", "mood": "idle", "text": "Now 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..", "....wc.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.5 }, "unlockedUnits": [ ["infantry", "mech", "recon", "tank", "apc", "artillery"], ["infantry", "mech", "recon", "tank", "apc", "artillery"] ], "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": 1, "aggression": 0.35, "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": 1, "aggression": 0.35, "captureWeight": 0.25 }, "unlockedUnits": [ ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank"], ["infantry", "mech", "recon", "tank", "apc", "artillery"] ], "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." }, { "speaker": "ethel", "mood": "idle", "text": "One more thing, dear \u2014 headquarters is releasing the MD Tank to your motor pool. It costs more to build, but it hits harder and shrugs off return fire. Perfect for cracking a dug-in position like Jeff's." } ], "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": 2, "aggression": 0.4, "captureWeight": 0.35 }, "unlockedUnits": [ ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank", "rockets", "antiair"], ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank"] ], "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!" }, { "speaker": "ethel", "mood": "idle", "text": "Before you head out: two new units are up for grabs. Rockets fire clear across the field without ever being fired back at, and the Anti-Air truck keeps our tanks safe from anything that flies. Build wisely." } ], "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": 2, "aggression": 0.4, "captureWeight": 0.3 }, "unlockedUnits": [ ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank", "rockets", "antiair", "missiles"], ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank", "rockets", "antiair"] ], "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." }, { "speaker": "ethel", "mood": "idle", "text": "And dear, we've cleared the Missile Launcher for production. It hits just as far as rockets, but its crew keeps a much longer eye on things \u2014 perfect for punching through all this fog." } ], "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.35 }, "unlockedUnits": [ ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank", "rockets", "antiair", "missiles", "lander", "cruiser"], ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank", "rockets", "antiair", "missiles"] ], "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!" }, { "speaker": "ethel", "mood": "idle", "text": "Oh \u2014 and both the Lander and the Cruiser are yours to build now, not just borrow. Keep that channel escorted and the beachhead is ours." } ], "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": 2, "aggression": 0.45, "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 }, "unlockedUnits": [ ["infantry", "mech", "recon", "tank", "mdtank", "apc", "artillery", "rockets", "antiair", "missiles", "fighter", "bomber", "bcopter", "tcopter", "battleship", "cruiser", "lander", "sub"], ["infantry", "mech", "recon", "tank", "apc", "artillery", "mdtank", "rockets", "antiair", "missiles", "lander", "cruiser"] ], "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." }, { "speaker": "ethel", "mood": "idle", "text": "Last thing, dear \u2014 the whole armory's open to you now. Battleships, submarines, even our air wing are standing by. Whatever the enemy throws at us, we can answer in kind." } ], "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 } ] } } ] }