Monthly Archives: February 2017

X-wing squads

Links: Horton Salm Squads , X-Wing Wiki , My Pilot Browser

I will post (rebel/resistance) X-wing squads I have played here.

** Big Nien Numb Squad ** (100)
1x T70 X-Wing Nien Numb (29), Push the Limit (3), R3-A2 (2)
2x A-Wing Prototype Pilot (17), Chardaan Refit (-2)
3x Z-95 Bandit Squadron Pilot (12)

This worked very well. Nien Numb is good at handling out stress. I tried to replace Nien Numb with Wedge Antilles but was less lucky. The idea is to have a large squad with some edge. For 34p there are many options to replace Nien Numb.

** Angry Chewbacca ** (100)
1x YT-1300 Chewbacca (42), Recon Specialist (3), Jan Ors (2), Millenium Falcon (1), Push the Limit (3)
2x B-Wing Blue Squadron Pilot (22), Fire Control System (2)

This is the new (Hereos of the Resistance) Chewbacca, but the old Millenium Falcon. The idea is that Chewbacca can make green maneuvers, Push the Limit and get 2xFocus + 1xEvade, or 1xFocus + 2xEvade every round. When the B-wings die Chewbacca gets a bonus shot. First time I used this squad I had 4xZ95 instead of B-wings, but they were not enough of a threat to keep the fire away from Chewbacca (and you do want Millenium Falcon left in the end).

** Very Aggressive B-wings ** (99)
1x B-wing Keyan Farlander (29), Fire Control System (2), Expose (4), Experimental Interface (3)
1x B-wing Nera Dantels (26)
 Fire Control System (2), Proton Torpedo (4), Extra Munitions (2), Guidance Chip (0), Trick Shot (0)
1x X-wing Biggs Darklighter (25), Integrated Astromech (0), R3 Astromech (2)

Keyan Farlander can use Experimental Interface to be stressed and Exposed, and then use his stress as a focus. Thanks to Biggs, enemy can’t fire at Keyan. Nera is a royal pain (save your torpedoes until you have nobody in your primary firing arc). Admittedly I flew this squad with the R4-D6 astromech, which sucked, because it does not cancel criticals, and did not help Biggs at all.

** Wedge and his crack team ** (100)
1x X-wing Wedge Antilles (29), Integrated Astromech (0), BB-8 (2), Adaptability (0)
1x A-wing Tycho Celchu (26), Chardaan Refit (-2), A-Wing Test Pilot (0), Push the Limit (3), Wired (1)
1x A-wing Jake Farrell (24), Chardaan Refit (-2), A-Wing Test Pilot (0), Adaptability (0), Trick Shot (0)
1x Z95 Airen Cracken (19)

I got this squad from my oppenent who wanted me to fly a good Wedge squad. The core idea is that 4 ships with 8 skill is very powerful in itself. And Airen helping Wedge to get two actions make Wedge a very hard hitter. While I like the idea, Wedge is not that good for the price and I would have wanted Push the Limit on Jake also.

** An odd squad ** (97+)
1x ARC-170 Braylen Stramm (25), Alliance Overhaul (0), Tactician (2), R3-A2 (2)
1x T70 X-Wing Jess Pava (25), Integrated Astromech (0), R2 Astromech (1), Pattern Analyzer (2)
2x A-wing Green Squadron (19)
 Chardaan Refit (-2), A-Wing Test Pilot (0), Push the Limit (3), Trick Shot (0)

Four competent ships, all with the same skill (3) allowing them to move and shoot in any order. Jess leads the way, the others staying within range 1, maximizing his special ability. At 97 points, there is room to replace Jess’s R2 and/or Trick Shot with something else. Braylen can deliver 1-2 stress which is a powerful and flexible weapon.

** Another Odd Squad ** (100)
1x ARC-170 Braylen Stramm (25), Alliance Overhaul (0), Tactician (2), R3-A2 (2)
1x X-wing T70 Jess Pava (25), Integrated Astromech (0), Targeting Astromech (2), Pattern Analyzer (2)
1x X-wing Tarn Mison (23), Integrated Astromech (0), R7 Astromech (2)
1x Tie Fighter Zeb Orrelios (13), Sabine’s Masterpiece (1), Hot Shot Blaster (3)

Another squad of four ships with skill 3. Tarn Mison with R7 is not bad and Jess Pava needs wingmen.

** Acrobatic X-wings ** (100)
1x T70 X-wing Ello Asty (30)
 Integrated Astromech (0), R2 Astromech (1), Push the Limit (3), Primed Thrusters (1)
1x T70 X-wing Snap Wexley (28), Integrated Astromech (0), Targeting Astromech (2),
 Pattern Analyzer (2), Proton Torpedoes (4), Adaptability (0)
1x T70 X-wing Blue Ace (27), Integrated Astromech (0), BB-8 (2)

These three X-wings are all capable of moving in very acrobatic ways, and still come out with focus and/or target lock.

** Alpha Strike ** (100)
1x A-wing Tycho Celchu (26), A-wing test pilot (0),
 Concussion Missiles (4), Push the Limit (3), Swarm Tactics (2), Guidance Chip (0)
1x Z-95 Airen Cracken (19), Concussion Missiles (4), Push The Limit (3), Guidance Chip (0)
1x Z-95 Lieutenant Blount (17), Assault Missiles (5), Guidance Chip (0), Veteran Instincts (2)
1x Z-95 Bandit Squadron Pilot (12), Concussion Missiles (4), Guidance Chip (0)

Tycho, Airen and Bandit should all shot with Target Lock+Focus at skill 8. Blount has no focus, but he cant miss. I lost with this squad but it was a funny game. In hindsight I would have been better off with Ion Pulse Missiles on Lieutenant Blount.

** Big Bad Boys ** (100)
1x YT-1300 Chewbacca (42), Millenium Falcon (1), Jan Ors (2), Kyle Katarn (3), Push the Limit (3)
1x YT-2400 Leebo (34), Outrider (5), Heavy Laser Cannon (7), Recon Specialist (3), Trick Shot (0)

This is the old Chewbacca and the old Millenium Falcon. You can typically get focus+evade on both ships every round. Chewbacca can even get 2 evade plus focus or target lock. My idea is to fly defensively, constantly making green maneuvers with Chewbacca, and you will make damage anyway. Your problem can be that your enemy will do everything to kill Leebo first and stay close enough to him to avoid his laser. It could be better to replace Heavy Laser Cannon with Mangler Cannon and add Stealth Device or a 3p Elite.

** X-wing swarm ** (100)
1x T70 X-wing Jess Pava (25), Targeting Astromech (2), Primed Thrusters (1)
1x T70 X-wing Blue Squadron Novice (24), R2 Astromech (1)
1x X-wing Tarn Mison (23), R7 Astromech (2)
1x X-wing Rookie Pilot (21), R2 Astromech (1)
 + Integrated Astromech (0) on all

You just can’t squeeze 5 X-wings into a 100p squad. 4 X-wings can be done, but the options are quite limited. This squads takes full advantage of Jess’s pilot ability. Tarn Mison with R7 is surprisingly good. You may prefer Pattern Analyzer (and a 1p Astromech) on Jess. The Rookie Pilot can use another Astromech as well (R5 comes to mind). It is not the easiest swarm to fly as you have two different skills and two different (although similar) maneuver dials: all 4 pilots different.

** The A-wing Aces Squad ** (99)
1x A-wing Tycho Celchu (26), Trick Shot (0)
1x A-wing Jake Farrell (24), Adaptability (0)
1x A-wing Arvel Crynyd (23)
1x A-wing Gemmer Sojan (22)
 + Chardaan Refit (-2), A-Wing Test Pilot (0), Push the Limit (3) on all

You can argue about a lot of things but this is the definite A-wing Aces Squad. You can of course put Veteran Instincts on Jake and Adaptability on Tycho for 100 points.

** AAAA-Etahn ** (99)
1x E-wing Etahn A’baht (32), R2-D2 (4), Push The Limit (3), Collision Detector (0)
4x A-wing Prototype Pilot (17), Chardaan Refit (-2)

After the BBB-Etahn below I thought I would make a better Etahn supporting a little A-wing swarm. Big mistake. Etahn is not worth the upgrades and pushing/stressing him is not pretty. This squad requires more than minor fixes to be good.

** BBB-Etahn ** (98)
1x E-wing Etahn A’baht (32)
3x B-wing Blue Squadron Pilot (22)

The idea here is simply to make good use of Etahns’ special ability. Also, with Barrel Roll, Etahn is quite capable of staying in formation with (or just behind) the slow B-wings. Possible upgrades for Etahn: Swarm Tactics, Elusiveness, Veteran Instincts, Wingman, Calculation, Crack Shot, Juke, Snap Shot, Trick Shot) R2-D6 (allows Trick Shot + 1p Elite), Collision Detector (free). When I played this squad I used Fire Control System but that is not good: Etahn fires first, gets Target Lock, then 3 B-wings fire and typically they want to fire at the same enemy until destroyed – Target Lock wasted. For the same reason I would not equip R3-A2.

** XXX-Etahn ** (100)
1x E-wing Etahn A’baht (32), R2 Astromech (1), Collision Detector (1), Crack Shot (1)
3x X-wing Rookie Pilot (21), R2 Astromech (1), Integrated Astromech (0)

This is simple and old fashined, but quite balanced. The R2 Astromechs make it easy to fly the E-wing together with the X-wing (and the price of occational K-turns is not so bad). Etahns’ special ability comes to good use. Four ships with 3 attack dice is always a threat.

** Basic T70s ** (100)
3x T70 X-wing Blue Squadron Pilot (24)
 Integrated Astromech (0), Targeting Astromech (2), Primed Thrusters (1)
1x Z95 Airen Cracken (19), Trick Shot (0)
 or
1x A-wing Green Squadron (19)
 Chardaan Refit (-2), A-Wing Test Pilot (0), Adaptability (0), Intimidation (2)

The A-wing could use Elusiveness, Expert Handling or Juke instead depending on your preference. Adaptability gives it the same skill as the X-wings for easy maneuvering. The squad does not require much presentation. However, compared to the naked 24p Blue Squadron Pilot, the 3-card-3-p upgrades makes a lot of difference.

** K-wing support ** (100)
1x K-wing Warden Squadron Pilot (23), Sabine Wren (2), Advanced SLAM (2)
 Ion Bombs (2), Conner Net (4), Extra Munitions (2)
1x E-wing Etahn A’bath (32), Fire Control System (2), R2 Astromech (1), Push The Limit (3)
1x X-wing Garven Dreis (26), R2 Astromech (1), Integrated Astromech (0)

This one lost big time. I need more practice with the K-wing wanted to try out pilots I never used before.

** 6-6-6 ** (100)
1x ARC-170 Shara Bay (28), Weapons Engineer (3), Alliance Overhaul (0), Trick Shot (0)
1x B-wing Ibtisam (28), Advanced Sensors (3), Cool Hand (1)
1x K-wing Esege Tuketu (28), Twin Laser Turret (6), Recon Specialist (3)

Another squad that lost. The 6-6-6 PS is a gamble and turned out a bit unlucky twice. The idea here is very simply to have 3 aggressive ships that can take a lot of damage, and share Focus and Target Locks. Ibtisam with Advanced Sensors is quite unpredictable and Twin Laser Turret is usually good. Perhaps I need more practice with the K-wing or with this squad, or perhaps everything is a little too expensive and none of the ships reach their full potential.

** Mixed swarm ** (100)
1x Tie Fighter Sabine Wren (15), Crack Shot (1)
4x A-wing Prototype Pilot (17), Chardaan Refit (-2)
2x Z-95 Bandit Squadron Pilot (12)

If you want a swarm of 6-7 ships you don’t have so many options. Also, you may not own 8 Headhunters or 6 A-wings. I think the extra cost for the A-wings are worth it, but if you want to make it to 7 ships you need to add Headhunters. I was not happy with Sabines performance; she ended up first blocking and then being blocked by my own ships all the time. Fly the A-wings (same dial and skill) in one swarm and the Headhunters in their own little swarm. If you use Sabine, have a plan so she stays behind the others. If you have another A-wing you can use it instead of Sabine. If you have another Z95 you get 4p for upgrades: vectored thrusters for 2 Headhunters come to mind but there are other options (a missile, a shield upgrade, 2x autothrusters).

** Poe Power X-wings ** (98)
1x T70 X-wing Poe Dameron (33),
 Autothrusters (2), Push the Limit (3), R5-P9 (3), Black One (1), Pattern Analyzer (2)
1x X-wing Garven Dreis (26), M9-G8 (3), Integrated Astromech (0)
1x X-wing Tarn Mison (23), R7 Astromech (2), Integrated Astromech (0)

I have seen that many people fly very powerful Poe (or Corran Horn) and my thought has always been that its a very sensitive squad with so many points on one pilot. In this squad Poe is 44 points so you can basically replace him with two X-wings or two B-wings. I have to admit that Poe did not disappoint. With Push the Limit Poe can almost always Focus, and with Poes special ability he can often keep that Focus and exchange it for a shield in the end of the turn. With Boost (and a green 3 straight maneuver) you can often stay quite far away from your enemy and with Autothrusters you are hard to hit at range 3. However, at least I can’t Push the Limit and fly green maneuvers all the time, and I did find use for Pattern Analyzer (which I typically don’t see in such Poe configurations). It does make sense to include Autothrusters (rather than Integrated Astromech) as they help to protect Poe when he needs to regenerate shields. Tarn Mison with R7 is very good on his own. Garven Dreis is there to give Poe extra focus if/when he needs it, and Garven is arguably the weakest link in this squad.

** Suicide Squad ** (100)
1x ARC-170 Braylen Stramm (25), Alliance Overhaul (0), Tactician (2), R3-A2 (2)
1x X-wing Tarn Mison (23), Integrated Astromech (0), R7 Astromech (2)
2x X-wing Rookie Pilot (21), Integrated Astromech (0), Targeting Astromech (2)

My idea was to have 4 rather similar ships with 3 attack dice and to have firepower and hull on my side. It was a royal catastrophy. The X-wing does need a fix. I commanded the squad badly. And Braylen Stramm is too much of an obvious target and too easy to take out.

Sort strings without case sensitivity

In JavaScript, I wanted to sort arrays of strings without caring about case. It was more complicated than I first thought.

The background is that I present lists like this in a GUI:

  • AMD
  • Apple
  • Gigabyte
  • IBM
  • Intel
  • Microsoft
  • MSI
  • Nokia
  • Samsung
  • Sony

I want AMD and MSI (spelled in all caps) to be sorted without respect to case. Standard sort() would put MSI before Microsoft.

Obviously I am not the first one wanting to do this and I found an article on stackoverflow. It suggests the following solution:

Use toLowerCase()
You can make your own string compare function that uses toLowerCase and send it as an argument to sort():

function cmpCaseless(a,b) {
    a = a.toLowerCase();
    b = b.toLowerCase();
    if ( a < b ) return -1;
    if ( a > b ) return  1;
    return 0;
}

myStringArray.sort(cmpCaseless);

This has a number of problems. The article above mentions that it is not stable. That is probably true in some cases but I was of course worried about performance: making two String objects for each compare should make the garbage collector quite busy, not to mention the waste of copying and lowercasing potentially quite long stings when usually the first character is enought. When I started experimenting I found another more critical flaw though: in Swedish we have three extra characters in the alphabet; Å,Ä,Ö, in that order. The above cmpCaseless orders Ä,Å,Ö, which sounds like a little problem, but it is simply unacceptable.

Use localeCompare
There is a more competent (or so I thought, read on) way to compare strings in JavaScript: the localeCompare function. This one simply treats A,Å,Ä and O,Ö as the same character, which is far more unacceptable than the toLowerCase problem.

However, it also has a “locales” option (a second optional argument). If I set it to ‘sv’ I get the sort order that I want, but performance is horrible. And I still have to use toLowerCase as well as localeCompare:

function localeCompare(a,b) {
    return a.toLowerCase().localeCompare(b.toLowerCase());
}

function localeCompare_sv(a,b) {
    return a.toLowerCase().localeCompare(b.toLowerCase(), 'sv');
}

localeCompare() has an extra options argument with a “sensitivity” parameter, but it is no good for our purpuses.

Rolling my own
Of course, I ended up building my own function to do caseless string compare. The strategy is to compare one character at a time, not making any new String objects, and fallback to localeCompare if both characters are above the 127 ASCII characters:

function custom(a,b) {
    var i, al, bl, l;
    var ac, bc;
    al = a.length;
    bl = b.length;
    l = al < bl ? al : bl;
        
    for ( i=0 ; i<l ; i++ ) {
        ac = a.codePointAt(i);  // or charCodeAt() for better compability
        bc = b.codePointAt(i);
        if ( 64 < ac && ac < 91 ) ac += 32;
        if ( 64 < bc && bc < 91 ) bc += 32;
        if ( ac !== bc ) { 
            if ( 127 < ac && 127 < bc ) {
                ac = a.substr(i,1).toLowerCase();
                bc = b.substr(i,1).toLowerCase();
                if ( ac !== bc ) return ac.localeCompare(bc);
            } else {
                return ac-bc;
            }
        }
    }
    return al-bl;
}

One fascinating thing is that here I can use localeCompare() without 'sv'.

Test for yourself
I built a simple webpage where you can test everything yourself.

Conclusion
Defining a string sort order is not trivial, when you dont just have ASCII characters. If you look at the ascii table you see that non alphabetic characters are spread out:

  • SPACE, #, 1-9, and many more come before both A-Z and a-z
  • Underscore: _, and a few other characters come after A-Z but before a-z
  • Pipe: | and a few other characters come after A-Z and a-z

When it comes to characters behind ASCII 127, it just gets more complicated: how do you sort european language latin letters, greek letters and arrows and other symbols?

For this reason, I think it makes sense to define your own sorting function and clearly define the behaviour for the characters you know that you care about. If it really matters in your application.

My function above is significantly faster than the options.

Disclaimer
These results can probably be inconsistent over different web browsers.