A summary of unit stats as of 2020-05-11 18:44:58 PDT. Some notes on this data:
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 0.50 | 8 | 6 | 7 | -- | 30% bonus damage vs melee damageincreasedtomelee30 |
30 | 5 |
| 2 | 1 | 0.50 | 10 | 8 | 7 | -- | 30% bonus damage vs melee damageincreasedtomelee30 |
6 | 7 |
| 3 | 1 | 0.50 | 11 | 8 | 7 | -- | 30% bonus damage vs melee damageincreasedtomelee30 |
7 | 8 |
| 4 | 1 | 0.50 | 12 | 10 | 7 | -- | 30% bonus damage vs melee damageincreasedtomelee30 |
8 | 9 |
| 5 | 1 | 0.50 | 14 | 11 | 7 | -- | 50% bonus damage vs melee damageincreasedtomelee50 |
9 | 10 |
| 6 | 1 | 0.50 | 16 | 13 | 7 | -- | 50% bonus damage vs melee damageincreasedtomelee50 |
10 | 11 |
| 7 | 1 | 0.50 | 18 | 14 | 7 | -- | 50% bonus damage vs melee damageincreasedtomelee50 |
15 | 12 |
| 8 | 1 | 0.50 | 22 | 18 | 7 | -- | 50% bonus damage vs melee damageincreasedtomelee50 |
20 | 13 |
| 9 | 1 | 0.50 | 24 | 19 | 7 | -- | 50% bonus damage vs melee damageincreasedtomelee50 |
25 | 14 |
| 10 | 1 | 0.50 | 28 | 22 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
30 | 15 |
| 11 | 1 | 0.50 | 29 | 22 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
35 | 16 |
| 12 | 1 | 0.50 | 30 | 24 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
40 | 17 |
| 13 | 1 | 0.50 | 31 | 24 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
45 | 18 |
| 14 | 1 | 0.50 | 32 | 26 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
50 | 19 |
| 15 | 1 | 0.50 | 33 | 26 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
55 | 20 |
| 16 | 1 | 0.50 | 33 | 27 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
60 | 22 |
| 17 | 1 | 0.50 | 34 | 27 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
65 | 24 |
| 18 | 1 | 0.50 | 35 | 29 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
70 | 26 |
| 19 | 1 | 0.50 | 37 | 29 | 7 | -- | 70% bonus damage vs melee damageincreasedtomelee70 |
75 | 28 |
| 20 | 1 | 0.50 | 38 | 30 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
100 | 30 |
| 21 | 1 | 0.50 | 39 | 30 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
120 | 40 |
| 22 | 1 | 0.50 | 40 | 32 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
140 | 60 |
| 23 | 1 | 0.50 | 41 | 34 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
160 | 60 |
| 24 | 1 | 0.50 | 42 | 34 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
180 | 70 |
| 25 | 1 | 0.50 | 44 | 35 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
200 | 80 |
| 26 | 1 | 0.50 | 45 | 35 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
220 | 90 |
| 27 | 1 | 0.50 | 46 | 37 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
240 | 100 |
| 28 | 1 | 0.50 | 48 | 38 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
260 | 115 |
| 29 | 1 | 0.50 | 49 | 40 | 7 | -- | 85% bonus damage vs melee damageincreasedtomelee85 |
280 | 130 |
| 30 | 1 | 0.50 | 51 | 40 | 7 | -- | 100% bonus damage vs melee damageincreasedtomelee100 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 2.5 | 1.00 | 20 | 222 | 0.5 | -- | Deals 60 Splash Damage |
50 | 10 |
| 2 | 2.5 | 1.00 | 20 | 230 | 0.5 | -- | Deals 60 Splash Damage |
12 | 10 |
| 3 | 2.5 | 1.00 | 20 | 236 | 0.5 | -- | Deals 60 Splash Damage |
14 | 10 |
| 4 | 2.5 | 1.00 | 23 | 240 | 0.5 | -- | Deals 60 Splash Damage |
16 | 10 |
| 5 | 2.5 | 1.00 | 23 | 250 | 0.5 | -- | Deals 80 Splash Damage |
18 | 10 |
| 6 | 2.5 | 1.00 | 23 | 254 | 0.5 | -- | Deals 80 Splash Damage |
20 | 10 |
| 7 | 2.5 | 1.00 | 25 | 256 | 0.5 | -- | Deals 80 Splash Damage |
30 | 10 |
| 8 | 2.5 | 1.00 | 25 | 258 | 0.5 | -- | Deals 80 Splash Damage |
40 | 10 |
| 9 | 2.5 | 1.00 | 25 | 260 | 0.5 | -- | Deals 80 Splash Damage |
50 | 10 |
| 10 | 2.5 | 1.00 | 28 | 262 | 0.5 | -- | Deals 120 Splash Damage |
60 | 10 |
| 11 | 2.5 | 1.00 | 28 | 264 | 0.5 | -- | Deals 120 Splash Damage |
70 | 15 |
| 12 | 2.5 | 1.00 | 28 | 268 | 0.5 | -- | Deals 120 Splash Damage |
80 | 15 |
| 13 | 2.5 | 1.00 | 30 | 272 | 0.5 | -- | Deals 120 Splash Damage |
90 | 15 |
| 14 | 2.5 | 1.00 | 30 | 276 | 0.5 | -- | Deals 120 Splash Damage |
100 | 15 |
| 15 | 2.5 | 1.00 | 30 | 280 | 0.5 | -- | Deals 120 Splash Damage |
110 | 15 |
| 16 | 2.5 | 1.00 | 33 | 284 | 0.5 | -- | Deals 120 Splash Damage |
120 | 15 |
| 17 | 2.5 | 1.00 | 33 | 288 | 0.5 | -- | Deals 120 Splash Damage |
130 | 15 |
| 18 | 2.5 | 1.00 | 33 | 292 | 0.5 | -- | Deals 120 Splash Damage |
140 | 15 |
| 19 | 2.5 | 1.00 | 35 | 296 | 0.5 | -- | Deals 120 Splash Damage |
150 | 15 |
| 20 | 2.5 | 1.00 | 35 | 300 | 0.5 | -- | Deals 120 Splash Damage |
200 | 15 |
| 21 | 2.5 | 1.00 | 35 | 304 | 0.5 | -- | Deals 120 Splash Damage |
220 | 20 |
| 22 | 2.5 | 1.00 | 38 | 308 | 0.5 | -- | Deals 120 Splash Damage |
240 | 20 |
| 23 | 2.5 | 1.00 | 38 | 312 | 0.5 | -- | Deals 120 Splash Damage |
260 | 20 |
| 24 | 2.5 | 1.00 | 38 | 316 | 0.5 | -- | Deals 120 Splash Damage |
280 | 20 |
| 25 | 2.5 | 1.00 | 40 | 320 | 0.5 | -- | Deals 120 Splash Damage |
300 | 20 |
| 26 | 2.5 | 1.00 | 40 | 324 | 0.5 | -- | Deals 120 Splash Damage |
320 | 20 |
| 27 | 2.5 | 1.00 | 40 | 328 | 0.5 | -- | Deals 120 Splash Damage |
340 | 20 |
| 28 | 2.5 | 1.00 | 43 | 332 | 0.5 | -- | Deals 120 Splash Damage |
360 | 20 |
| 29 | 2.5 | 1.00 | 43 | 336 | 0.5 | -- | Deals 120 Splash Damage |
380 | 20 |
| 30 | 2.5 | 1.00 | 45 | 340 | 0.5 | -- | Deals 120 Splash Damage |
400 | 20 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 34 | 21 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
30 | 5 |
| 2 | 1 | 1.00 | 39 | 23 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
6 | 7 |
| 3 | 1 | 1.00 | 45 | 29 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
7 | 8 |
| 4 | 1 | 1.00 | 52 | 31 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
8 | 9 |
| 5 | 1 | 1.00 | 59 | 36 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
9 | 10 |
| 6 | 1 | 1.00 | 61 | 38 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
10 | 11 |
| 7 | 1 | 1.00 | 62 | 39 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
15 | 12 |
| 8 | 1 | 1.00 | 63 | 40 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
20 | 13 |
| 9 | 1 | 1.00 | 64 | 42 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
25 | 14 |
| 10 | 1 | 1.00 | 65 | 42 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
30 | 15 |
| 11 | 1 | 1.00 | 65 | 43 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
35 | 16 |
| 12 | 1 | 1.00 | 66 | 44 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
40 | 17 |
| 13 | 1 | 1.00 | 67 | 46 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
45 | 18 |
| 14 | 1 | 1.00 | 68 | 48 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
50 | 19 |
| 15 | 1 | 1.00 | 69 | 49 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
55 | 20 |
| 16 | 1 | 1.00 | 70 | 51 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
60 | 22 |
| 17 | 1 | 1.00 | 72 | 52 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
65 | 24 |
| 18 | 1 | 1.00 | 74 | 53 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
70 | 26 |
| 19 | 1 | 1.00 | 76 | 55 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
75 | 28 |
| 20 | 1 | 1.00 | 79 | 57 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
100 | 30 |
| 21 | 1 | 1.00 | 81 | 59 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
120 | 40 |
| 22 | 1 | 1.00 | 83 | 60 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
140 | 60 |
| 23 | 1 | 1.00 | 86 | 62 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
160 | 60 |
| 24 | 1 | 1.00 | 88 | 64 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
180 | 70 |
| 25 | 1 | 1.00 | 91 | 66 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
200 | 80 |
| 26 | 1 | 1.00 | 92 | 67 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
220 | 90 |
| 27 | 1 | 1.00 | 93 | 68 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
240 | 100 |
| 28 | 1 | 1.00 | 94 | 69 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
260 | 115 |
| 29 | 1 | 1.00 | 95 | 70 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
280 | 130 |
| 30 | 1 | 1.00 | 96 | 71 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 102 | 42 | 1 | -- | Boost allied melee unit damage by 10% damageincreasedtoarmoredBarb10 |
30 | 5 |
| 2 | 1 | 1.00 | 105 | 43 | 1 | -- | Boost allied melee unit damage by 10% damageincreasedtoarmoredBarb10 |
6 | 7 |
| 3 | 1 | 1.00 | 108 | 44 | 1 | -- | Boost allied melee unit damage by 10% damageincreasedtoarmoredBarb10 |
7 | 8 |
| 4 | 1 | 1.00 | 112 | 46 | 1 | -- | Boost allied melee unit damage by 10% damageincreasedtoarmoredBarb10 |
8 | 9 |
| 5 | 1 | 1.00 | 115 | 47 | 1 | -- | Boost allied melee unit damage by 20% damageincreasedtoarmoredBarb20 |
9 | 10 |
| 6 | 1 | 1.00 | 119 | 49 | 1 | -- | Boost allied melee unit damage by 20% damageincreasedtoarmoredBarb20 |
10 | 11 |
| 7 | 1 | 1.00 | 122 | 50 | 1 | -- | Boost allied melee unit damage by 20% damageincreasedtoarmoredBarb20 |
15 | 12 |
| 8 | 1 | 1.00 | 126 | 52 | 1 | -- | Boost allied melee unit damage by 20% damageincreasedtoarmoredBarb20 |
20 | 13 |
| 9 | 1 | 1.00 | 130 | 53 | 1 | -- | Boost allied melee unit damage by 20% damageincreasedtoarmoredBarb20 |
25 | 14 |
| 10 | 1 | 1.00 | 134 | 55 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
30 | 15 |
| 11 | 1 | 1.00 | 138 | 57 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
35 | 16 |
| 12 | 1 | 1.00 | 142 | 59 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
40 | 17 |
| 13 | 1 | 1.00 | 147 | 61 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
45 | 18 |
| 14 | 1 | 1.00 | 151 | 62 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
50 | 19 |
| 15 | 1 | 1.00 | 156 | 64 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
55 | 20 |
| 16 | 1 | 1.00 | 161 | 66 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
60 | 22 |
| 17 | 1 | 1.00 | 166 | 69 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
65 | 24 |
| 18 | 1 | 1.00 | 171 | 71 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
70 | 26 |
| 19 | 1 | 1.00 | 176 | 73 | 1 | -- | Boost allied melee unit damage by 30% damageincreasedtoarmoredBarb30 |
75 | 28 |
| 20 | 1 | 1.00 | 178 | 74 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
100 | 30 |
| 21 | 1 | 1.00 | 180 | 75 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
120 | 40 |
| 22 | 1 | 1.00 | 182 | 76 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
140 | 60 |
| 23 | 1 | 1.00 | 184 | 77 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
160 | 60 |
| 24 | 1 | 1.00 | 186 | 78 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
180 | 70 |
| 25 | 1 | 1.00 | 188 | 79 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
200 | 80 |
| 26 | 1 | 1.00 | 190 | 80 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
220 | 90 |
| 27 | 1 | 1.00 | 192 | 81 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
240 | 100 |
| 28 | 1 | 1.00 | 194 | 82 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
260 | 115 |
| 29 | 1 | 1.00 | 196 | 83 | 1 | -- | Boost allied melee unit damage by 40% damageincreasedtoarmoredBarb40 |
280 | 130 |
| 30 | 1 | 1.00 | 199 | 85 | 1 | -- | Boost allied melee unit damage by 50% damageincreasedtoarmoredBarb40 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 0.50 | 32 | 10 | 4 | -- | 10% Bonus Damage vs Melee damageincreasedtomeleeBomber10 |
30 | 5 |
| 2 | 1 | 0.50 | 37 | 11 | 4 | -- | 10% Bonus Damage vs Melee damageincreasedtomeleeBomber10 |
6 | 7 |
| 3 | 1 | 0.50 | 43 | 14 | 4 | -- | 10% Bonus Damage vs Melee damageincreasedtomeleeBomber10 |
7 | 8 |
| 4 | 1 | 0.50 | 49 | 15 | 4 | -- | 10% Bonus Damage vs Melee damageincreasedtomeleeBomber10 |
8 | 9 |
| 5 | 1 | 0.50 | 56 | 18 | 4 | -- | 20% Bonus Damage vs Melee damageincreasedtomeleeBomber20 |
9 | 10 |
| 6 | 1 | 0.50 | 58 | 18 | 4 | -- | 20% Bonus Damage vs Melee damageincreasedtomeleeBomber20 |
10 | 11 |
| 7 | 1 | 0.50 | 59 | 19 | 4 | -- | 20% Bonus Damage vs Melee damageincreasedtomeleeBomber20 |
15 | 12 |
| 8 | 1 | 0.50 | 61 | 19 | 4 | -- | 20% Bonus Damage vs Melee damageincreasedtomeleeBomber20 |
20 | 13 |
| 9 | 1 | 0.50 | 63 | 20 | 4 | -- | 20% Bonus Damage vs Melee damageincreasedtomeleeBomber20 |
25 | 14 |
| 10 | 1 | 0.50 | 65 | 20 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
30 | 15 |
| 11 | 1 | 0.50 | 67 | 21 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
35 | 16 |
| 12 | 1 | 0.50 | 69 | 21 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
40 | 17 |
| 13 | 1 | 0.50 | 71 | 23 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
45 | 18 |
| 14 | 1 | 0.50 | 73 | 23 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
50 | 19 |
| 15 | 1 | 0.50 | 75 | 24 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
55 | 20 |
| 16 | 1 | 0.50 | 78 | 24 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
60 | 22 |
| 17 | 1 | 0.50 | 80 | 25 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
65 | 24 |
| 18 | 1 | 0.50 | 82 | 26 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
70 | 26 |
| 19 | 1 | 0.50 | 85 | 26 | 4 | -- | 30% Bonus Damage vs Melee damageincreasedtomeleeBomber30 |
75 | 28 |
| 20 | 1 | 0.50 | 87 | 28 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
100 | 30 |
| 21 | 1 | 0.50 | 90 | 28 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
120 | 40 |
| 22 | 1 | 0.50 | 93 | 29 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
140 | 60 |
| 23 | 1 | 0.50 | 95 | 30 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
160 | 60 |
| 24 | 1 | 0.50 | 98 | 31 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
180 | 70 |
| 25 | 1 | 0.50 | 101 | 31 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
200 | 80 |
| 26 | 1 | 0.50 | 102 | 31 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
220 | 90 |
| 27 | 1 | 0.50 | 103 | 31 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
240 | 100 |
| 28 | 1 | 0.50 | 104 | 32 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
260 | 115 |
| 29 | 1 | 0.50 | 105 | 32 | 4 | -- | 40% Bonus Damage vs Melee damageincreasedtomeleeBomber40 |
280 | 130 |
| 30 | 1 | 0.50 | 106 | 33 | 4 | -- | 50% Bonus Damage vs Melee damageincreasedtomeleeBomber50 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1.5 | 1.00 | 4 | 81 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
30 | 5 |
| 2 | 1.5 | 1.00 | 5 | 85 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
6 | 7 |
| 3 | 1.5 | 1.00 | 6 | 88 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
7 | 8 |
| 4 | 1.5 | 1.00 | 6 | 91 | 1 | -- | 10% Bonus Damage vs Armored damageincreasedtoarmoredBarb10 |
8 | 9 |
| 5 | 1.5 | 1.00 | 8 | 95 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
9 | 10 |
| 6 | 1.5 | 1.00 | 8 | 98 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
10 | 11 |
| 7 | 1.5 | 1.00 | 8 | 101 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
15 | 12 |
| 8 | 1.5 | 1.00 | 8 | 105 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
20 | 13 |
| 9 | 1.5 | 1.00 | 8 | 108 | 1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 |
25 | 14 |
| 10 | 1.5 | 1.00 | 8 | 111 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
30 | 15 |
| 11 | 1.5 | 1.00 | 9 | 115 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
35 | 16 |
| 12 | 1.5 | 1.00 | 9 | 118 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
40 | 17 |
| 13 | 1.5 | 1.00 | 10 | 120 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
45 | 18 |
| 14 | 1.5 | 1.00 | 10 | 125 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
50 | 19 |
| 15 | 1.5 | 1.00 | 10 | 127 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
55 | 20 |
| 16 | 1.5 | 1.00 | 10 | 133 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
60 | 22 |
| 17 | 1.5 | 1.00 | 11 | 137 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
65 | 24 |
| 18 | 1.5 | 1.00 | 11 | 140 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
70 | 26 |
| 19 | 1.5 | 1.00 | 11 | 144 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 |
75 | 28 |
| 20 | 1.5 | 1.00 | 12 | 150 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
100 | 30 |
| 21 | 1.5 | 1.00 | 12 | 154 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
120 | 40 |
| 22 | 1.5 | 1.00 | 12 | 157 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
140 | 60 |
| 23 | 1.5 | 1.00 | 13 | 162 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
160 | 60 |
| 24 | 1.5 | 1.00 | 13 | 167 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
180 | 70 |
| 25 | 1.5 | 1.00 | 13 | 172 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
200 | 80 |
| 26 | 1.5 | 1.00 | 13 | 174 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
220 | 90 |
| 27 | 1.5 | 1.00 | 13 | 176 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
240 | 100 |
| 28 | 1.5 | 1.00 | 13 | 178 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
260 | 115 |
| 29 | 1.5 | 1.00 | 13 | 180 | 1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
280 | 130 |
| 30 | 1.5 | 1.00 | 13 | 182 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 149 | 9 | 1 | -- | Boost allied armored unit defense by 10% damagereducedfromranged30 |
30 | 5 |
| 2 | 1 | 1.00 | 153 | 10 | 1 | -- | Boost allied armored unit defense by 10% damagereducedfromranged30 |
6 | 7 |
| 3 | 1 | 1.00 | 158 | 10 | 1 | -- | Boost allied armored unit defense by 10% damagereducedfromranged30 |
7 | 8 |
| 4 | 1 | 1.00 | 162 | 10 | 1 | -- | Boost allied armored unit defense by 10% damagereducedfromranged30 |
8 | 9 |
| 5 | 1 | 1.00 | 167 | 11 | 1 | -- | Boost allied armored unit defense by 20% damagereducedfromranged40 |
9 | 10 |
| 6 | 1 | 1.00 | 172 | 11 | 1 | -- | Boost allied armored unit defense by 20% damagereducedfromranged40 |
10 | 11 |
| 7 | 1 | 1.00 | 178 | 11 | 1 | -- | Boost allied armored unit defense by 20% damagereducedfromranged40 |
15 | 12 |
| 8 | 1 | 1.00 | 183 | 11 | 1 | -- | Boost allied armored unit defense by 20% damagereducedfromranged40 |
20 | 13 |
| 9 | 1 | 1.00 | 188 | 12 | 1 | -- | Boost allied armored unit defense by 20% damagereducedfromranged40 |
25 | 14 |
| 10 | 1 | 1.00 | 193 | 12 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
30 | 15 |
| 11 | 1 | 1.00 | 199 | 12 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
35 | 16 |
| 12 | 1 | 1.00 | 205 | 13 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
40 | 17 |
| 13 | 1 | 1.00 | 212 | 13 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
45 | 18 |
| 14 | 1 | 1.00 | 218 | 13 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
50 | 19 |
| 15 | 1 | 1.00 | 224 | 14 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
55 | 20 |
| 16 | 1 | 1.00 | 231 | 14 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
60 | 22 |
| 17 | 1 | 1.00 | 238 | 15 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
65 | 24 |
| 18 | 1 | 1.00 | 246 | 15 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
70 | 26 |
| 19 | 1 | 1.00 | 253 | 15 | 1 | -- | Boost allied armored unit defense by 30% damagereducedfromranged60 |
75 | 28 |
| 20 | 1 | 1.00 | 256 | 15 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
100 | 30 |
| 21 | 1 | 1.00 | 259 | 15 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
120 | 40 |
| 22 | 1 | 1.00 | 262 | 15 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
140 | 60 |
| 23 | 1 | 1.00 | 265 | 15 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
160 | 60 |
| 24 | 1 | 1.00 | 268 | 15 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
180 | 70 |
| 25 | 1 | 1.00 | 271 | 16 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
200 | 80 |
| 26 | 1 | 1.00 | 274 | 16 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
220 | 90 |
| 27 | 1 | 1.00 | 277 | 16 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
240 | 100 |
| 28 | 1 | 1.00 | 280 | 16 | 1 | -- | Boost allied armored unit defense by 40% damagereducedfromranged70 |
260 | 115 |
| 29 | 1 | 1.00 | 283 | 16 | 1 | -- | Boost allied armored unit defense by 50% damagereducedfromranged70 |
280 | 130 |
| 30 | 1 | 1.00 | 286 | 17 | 1 | -- | 80% Defense Bonus vs Range damagereducedfromranged80 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 0.50 | 16 | 0 | 3.5 | -- | Boost Ally Damage by 50% |
30 | 5 |
| 2 | 1 | 0.50 | 18 | 0 | 3.5 | -- | Boost Ally Damage by 50% |
6 | 7 |
| 3 | 1 | 0.50 | 21 | 0 | 3.5 | -- | Boost Ally Damage by 50% |
7 | 8 |
| 4 | 1 | 0.50 | 24 | 0 | 3.5 | -- | Boost Ally Damage by 50% |
8 | 9 |
| 5 | 1 | 0.50 | 28 | 0 | 3.5 | -- | Boost Ally Damage by 50% |
9 | 10 |
| 6 | 1 | 0.50 | 32 | 0 | 3.5 | -- | Boost Ally Damage by 70% |
10 | 11 |
| 7 | 1 | 0.50 | 37 | 0 | 3.5 | -- | Boost Ally Damage by 70% |
15 | 12 |
| 8 | 1 | 0.50 | 43 | 0 | 3.5 | -- | Boost Ally Damage by 70% |
20 | 13 |
| 9 | 1 | 0.50 | 49 | 0 | 3.5 | -- | Boost Ally Damage by 70% |
25 | 14 |
| 10 | 1 | 0.50 | 56 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
30 | 15 |
| 11 | 1 | 0.50 | 58 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
35 | 16 |
| 12 | 1 | 0.50 | 59 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
40 | 17 |
| 13 | 1 | 0.50 | 61 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
45 | 18 |
| 14 | 1 | 0.50 | 63 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
50 | 19 |
| 15 | 1 | 0.50 | 65 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
55 | 20 |
| 16 | 1 | 0.50 | 67 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
60 | 22 |
| 17 | 1 | 0.50 | 69 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
65 | 24 |
| 18 | 1 | 0.50 | 71 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
70 | 26 |
| 19 | 1 | 0.50 | 73 | 0 | 3.5 | -- | Boost Ally Damage by 80% |
75 | 28 |
| 20 | 1 | 0.50 | 75 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
100 | 30 |
| 21 | 1 | 0.50 | 78 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
120 | 40 |
| 22 | 1 | 0.50 | 80 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
140 | 60 |
| 23 | 1 | 0.50 | 82 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
160 | 60 |
| 24 | 1 | 0.50 | 85 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
180 | 70 |
| 25 | 1 | 0.50 | 87 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
200 | 80 |
| 26 | 1 | 0.50 | 90 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
220 | 90 |
| 27 | 1 | 0.50 | 93 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
240 | 100 |
| 28 | 1 | 0.50 | 95 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
260 | 115 |
| 29 | 1 | 0.50 | 98 | 0 | 3.5 | -- | Boost Ally Damage by 100% |
280 | 130 |
| 30 | 1 | 0.50 | 101 | 0 | 3.5 | -- | Boost Ally Damage by 120% |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 0.50 | 8 | 6 | 4 | -- | Flyer: Resists most ground melee attacks. damageincreasedtomelee |
30 | 5 |
| 2 | 1 | 0.50 | 9 | 7 | 4 | -- | Flyer: Resists most ground melee attacks. damageincreasedtomelee |
6 | 7 |
| 3 | 1 | 0.50 | 11 | 8 | 4 | -- | Flyer: Resists most ground melee attacks. damageincreasedtomelee |
7 | 8 |
| 4 | 1 | 0.50 | 12 | 10 | 4 | -- | Flyer: Resists most ground melee attacks. damageincreasedtomelee |
8 | 9 |
| 5 | 1 | 0.50 | 14 | 11 | 5 | -- | Flyer +1 Range damageincreasedtomelee |
9 | 10 |
| 6 | 1 | 0.50 | 15 | 13 | 5 | -- | Flyer +1 Range damageincreasedtomelee |
10 | 11 |
| 7 | 1 | 0.50 | 15 | 14 | 5 | -- | Flyer +1 Range damageincreasedtomelee |
15 | 12 |
| 8 | 1 | 0.50 | 15 | 18 | 5 | -- | Flyer +1 Range damageincreasedtomelee |
20 | 13 |
| 9 | 1 | 0.50 | 16 | 19 | 5 | -- | Flyer +1 Range damageincreasedtomelee |
25 | 14 |
| 10 | 1 | 0.50 | 17 | 22 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
30 | 15 |
| 11 | 1 | 0.50 | 17 | 23 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
35 | 16 |
| 12 | 1 | 0.50 | 18 | 24 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
40 | 17 |
| 13 | 1 | 0.50 | 18 | 25 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
45 | 18 |
| 14 | 1 | 0.50 | 19 | 26 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
50 | 19 |
| 15 | 1 | 0.50 | 20 | 26 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
55 | 20 |
| 16 | 1 | 0.50 | 20 | 27 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
60 | 22 |
| 17 | 1 | 0.50 | 21 | 28 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
65 | 24 |
| 18 | 1 | 0.50 | 21 | 29 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
70 | 26 |
| 19 | 1 | 0.50 | 22 | 30 | 6 | -- | Flyer +2 Range damageincreasedtomelee |
75 | 28 |
| 20 | 1 | 0.50 | 22 | 31 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
100 | 30 |
| 21 | 1 | 0.50 | 23 | 32 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
120 | 40 |
| 22 | 1 | 0.50 | 24 | 33 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
140 | 60 |
| 23 | 1 | 0.50 | 25 | 34 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
160 | 60 |
| 24 | 1 | 0.50 | 25 | 35 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
180 | 70 |
| 25 | 1 | 0.50 | 25 | 35 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
200 | 80 |
| 26 | 1 | 0.50 | 26 | 37 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
220 | 90 |
| 27 | 1 | 0.50 | 27 | 38 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
240 | 100 |
| 28 | 1 | 0.50 | 28 | 40 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
260 | 115 |
| 29 | 1 | 0.50 | 29 | 41 | 7 | -- | Flyer +3 Range damageincreasedtomelee |
280 | 130 |
| 30 | 1 | 0.50 | 30 | 42 | 8 | -- | Flyer +4 Range damageincreasedtomelee |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Heal | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1.3 | 0.20 | 16 | 3 | 3.5 | 4 | -- | Heal Allies for 4 HP |
30 | 5 |
| 2 | 1.3 | 0.20 | 18 | 3 | 3.5 | 4 | -- | Heal Allies for 4 HP |
6 | 7 |
| 3 | 1.3 | 0.20 | 22 | 3 | 3.5 | 4 | -- | Heal Allies for 4 HP |
7 | 8 |
| 4 | 1.3 | 0.20 | 24 | 3 | 3.5 | 4 | -- | Heal Allies for 4 HP |
8 | 9 |
| 5 | 1.3 | 0.20 | 28 | 3 | 3.5 | 8 | -- | Heal Allies for 8 HP |
9 | 10 |
| 6 | 1.3 | 0.20 | 29 | 3 | 3.5 | 8 | -- | Heal Allies for 8 HP |
10 | 11 |
| 7 | 1.3 | 0.20 | 30 | 3 | 3.5 | 8 | -- | Heal Allies for 8 HP |
15 | 12 |
| 8 | 1.3 | 0.20 | 31 | 3 | 3.5 | 8 | -- | Heal Allies for 8 HP |
20 | 13 |
| 9 | 1.3 | 0.20 | 32 | 3 | 3.5 | 8 | -- | Heal Allies for 8 HP |
25 | 14 |
| 10 | 1.3 | 0.20 | 33 | 3 | 3.5 | 16 | -- | Heal Allies for 16 HP |
30 | 15 |
| 11 | 1.3 | 0.20 | 24 | 3 | 3.5 | 16 | -- | Heal Allies for 16 HP |
35 | 16 |
| 12 | 1.3 | 0.20 | 35 | 3 | 3.5 | 16 | -- | Heal Allies for 16 HP |
40 | 17 |
| 13 | 1.3 | 0.20 | 36 | 3 | 3.5 | 16 | -- | Heal Allies for 16 HP |
45 | 18 |
| 14 | 1.3 | 0.20 | 37 | 3 | 3.5 | 16 | -- | Heal Allies for 16 HP |
50 | 19 |
| 15 | 1.3 | 0.20 | 38 | 3 | 3.5 | 16 | -- | Heal Allies for 16 HP |
55 | 20 |
| 16 | 1.3 | 0.20 | 39 | 4 | 3.5 | 16 | -- | Heal Allies for 16 HP |
60 | 22 |
| 17 | 1.3 | 0.20 | 40 | 4 | 3.5 | 16 | -- | Heal Allies for 16 HP |
65 | 24 |
| 18 | 1.3 | 0.20 | 41 | 4 | 3.5 | 16 | -- | Heal Allies for 16 HP |
70 | 26 |
| 19 | 1.3 | 0.20 | 42 | 4 | 3.5 | 16 | -- | Heal Allies for 16 HP |
75 | 28 |
| 20 | 1.3 | 0.20 | 44 | 4 | 3.5 | 32 | -- | Heal Allies for 32 HP |
100 | 30 |
| 21 | 1.3 | 0.20 | 45 | 4 | 3.5 | 32 | -- | Heal Allies for 32 HP |
120 | 40 |
| 22 | 1.3 | 0.20 | 46 | 4 | 3.5 | 32 | -- | Heal Allies for 32 HP |
140 | 60 |
| 23 | 1.3 | 0.20 | 48 | 4 | 3.5 | 32 | -- | Heal Allies for 32 HP |
160 | 60 |
| 24 | 1.3 | 0.20 | 49 | 5 | 3.5 | 32 | -- | Heal Allies for 32 HP |
180 | 70 |
| 25 | 1.3 | 0.20 | 51 | 5 | 3.5 | 32 | -- | Heal Allies for 32 HP |
200 | 80 |
| 26 | 1.3 | 0.20 | 52 | 5 | 3.5 | 32 | -- | Heal Allies for 32 HP |
220 | 90 |
| 27 | 1.3 | 0.20 | 53 | 5 | 3.5 | 32 | -- | Heal Allies for 32 HP |
240 | 100 |
| 28 | 1.3 | 0.20 | 54 | 5 | 3.5 | 32 | -- | Heal Allies for 32 HP |
260 | 115 |
| 29 | 1.3 | 0.20 | 55 | 5 | 3.5 | 32 | -- | Heal Allies for 32 HP |
280 | 130 |
| 30 | 1.3 | 0.20 | 56 | 5 | 3.5 | 64 | -- | Heal Allies for 64 HP |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 0.33 | 87 | 16 | 6 | -- | Fire deals 4dps for 5 seconds damageincreasedtomelee30 damageincreasedtoshadow100 |
50 | 10 |
| 2 | 1 | 0.33 | 90 | 18 | 6 | -- | Fire deals 4dps for 5 seconds damageincreasedtomelee30 damageincreasedtoshadow100 |
12 | 10 |
| 3 | 1 | 0.33 | 93 | 20 | 6 | -- | Fire deals 4dps for 5 seconds damageincreasedtomelee30 damageincreasedtoshadow100 |
14 | 10 |
| 4 | 1 | 0.33 | 95 | 22 | 6 | -- | Fire deals 4dps for 5 seconds damageincreasedtomelee30 damageincreasedtoshadow100 |
16 | 10 |
| 5 | 1 | 0.33 | 98 | 24 | 6 | -- | Fire deals 5dps for 5 seconds damageincreasedtomelee50 damageincreasedtoshadow100 |
18 | 10 |
| 6 | 1 | 0.33 | 101 | 26 | 6 | -- | Fire deals 5dps for 5 seconds damageincreasedtomelee50 damageincreasedtoshadow100 |
20 | 10 |
| 7 | 1 | 0.33 | 102 | 28 | 6 | -- | Fire deals 5dps for 5 seconds damageincreasedtomelee50 damageincreasedtoshadow100 |
30 | 10 |
| 8 | 1 | 0.33 | 103 | 30 | 6 | -- | Fire deals 5dps for 5 seconds damageincreasedtomelee50 damageincreasedtoshadow100 |
40 | 10 |
| 9 | 1 | 0.33 | 104 | 32 | 6 | -- | Fire deals 5dps for 5 seconds damageincreasedtomelee50 damageincreasedtoshadow100 |
50 | 10 |
| 10 | 1 | 0.33 | 105 | 32 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
60 | 10 |
| 11 | 1 | 0.33 | 107 | 34 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
70 | 15 |
| 12 | 1 | 0.33 | 109 | 36 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
80 | 15 |
| 13 | 1 | 0.33 | 111 | 38 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
90 | 15 |
| 14 | 1 | 0.33 | 113 | 40 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
100 | 15 |
| 15 | 1 | 0.33 | 115 | 42 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
110 | 15 |
| 16 | 1 | 0.33 | 117 | 44 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
120 | 15 |
| 17 | 1 | 0.33 | 119 | 46 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
130 | 15 |
| 18 | 1 | 0.33 | 121 | 48 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
140 | 15 |
| 19 | 1 | 0.33 | 123 | 50 | 6 | -- | Fire deals 6dps for 5 seconds damageincreasedtomelee70 damageincreasedtoshadow100 |
150 | 15 |
| 20 | 1 | 0.33 | 125 | 50 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
200 | 15 |
| 21 | 1 | 0.33 | 127 | 52 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
220 | 20 |
| 22 | 1 | 0.33 | 129 | 54 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
240 | 20 |
| 23 | 1 | 0.33 | 131 | 56 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
260 | 20 |
| 24 | 1 | 0.33 | 133 | 58 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
280 | 20 |
| 25 | 1 | 0.33 | 135 | 60 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
300 | 20 |
| 26 | 1 | 0.33 | 137 | 62 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
320 | 20 |
| 27 | 1 | 0.33 | 139 | 64 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
340 | 20 |
| 28 | 1 | 0.33 | 141 | 66 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
360 | 20 |
| 29 | 1 | 0.33 | 143 | 68 | 6 | -- | Fire deals 7dps for 5 seconds damageincreasedtomelee85 damageincreasedtoshadow100 |
380 | 20 |
| 30 | 1 | 0.33 | 145 | 70 | 6 | -- | Fire deals 8dps for 5 seconds damageincreasedtomelee100 damageincreasedtoshadow100 |
400 | 20 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 0.40 | 28 | 22 | 7 | -- | Boost allied ranged unit damage by 10% damageincreasedtomelee30 |
30 | 5 |
| 2 | 1 | 0.40 | 29 | 22 | 7 | -- | Boost allied ranged unit damage by 10% damageincreasedtomelee30 |
6 | 7 |
| 3 | 1 | 0.40 | 30 | 24 | 7 | -- | Boost allied ranged unit damage by 10% damageincreasedtomelee30 |
7 | 8 |
| 4 | 1 | 0.40 | 30 | 25 | 7 | -- | Boost allied ranged unit damage by 10% damageincreasedtomelee30 |
8 | 9 |
| 5 | 1 | 0.40 | 31 | 25 | 7 | -- | Boost allied ranged unit damage by 20% damageincreasedtomelee50 |
9 | 10 |
| 6 | 1 | 0.40 | 32 | 25 | 7 | -- | Boost allied ranged unit damage by 20% damageincreasedtomelee50 |
10 | 11 |
| 7 | 1 | 0.40 | 33 | 27 | 7 | -- | Boost allied ranged unit damage by 20% damageincreasedtomelee50 |
15 | 12 |
| 8 | 1 | 0.40 | 35 | 27 | 7 | -- | Boost allied ranged unit damage by 20% damageincreasedtomelee50 |
20 | 13 |
| 9 | 1 | 0.40 | 36 | 28 | 7 | -- | Boost allied ranged unit damage by 20% damageincreasedtomelee50 |
25 | 14 |
| 10 | 1 | 0.40 | 37 | 28 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
30 | 15 |
| 11 | 1 | 0.40 | 38 | 30 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
35 | 16 |
| 12 | 1 | 0.40 | 39 | 32 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
40 | 17 |
| 13 | 1 | 0.40 | 40 | 32 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
45 | 18 |
| 14 | 1 | 0.40 | 42 | 33 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
50 | 19 |
| 15 | 1 | 0.40 | 43 | 33 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
55 | 20 |
| 16 | 1 | 0.40 | 44 | 35 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
60 | 22 |
| 17 | 1 | 0.40 | 46 | 36 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
65 | 24 |
| 18 | 1 | 0.40 | 47 | 38 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
70 | 26 |
| 19 | 1 | 0.40 | 49 | 38 | 7 | -- | Boost allied ranged unit damage by 30% damageincreasedtomelee70 |
75 | 28 |
| 20 | 1 | 0.40 | 49 | 38 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
100 | 30 |
| 21 | 1 | 0.40 | 50 | 39 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
120 | 40 |
| 22 | 1 | 0.40 | 51 | 39 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
140 | 60 |
| 23 | 1 | 0.40 | 52 | 39 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
160 | 60 |
| 24 | 1 | 0.40 | 53 | 39 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
180 | 70 |
| 25 | 1 | 0.40 | 54 | 39 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
200 | 80 |
| 26 | 1 | 0.40 | 55 | 39 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
220 | 90 |
| 27 | 1 | 0.40 | 56 | 40 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
240 | 100 |
| 28 | 1 | 0.40 | 57 | 40 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
260 | 115 |
| 29 | 1 | 0.40 | 58 | 40 | 7 | -- | Boost allied ranged unit damage by 40% damageincreasedtomelee85 |
280 | 130 |
| 30 | 1 | 0.40 | 59 | 41 | 7 | -- | Boost allied ranged unit damage by 50% damageincreasedtomelee100 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 312 | 13 | 1 | -- | 30% Defense Bonus vs Range + Orc damagereducedfromranged30 doubleDamagetoOrc |
50 | 10 |
| 2 | 1 | 1.00 | 322 | 14 | 1 | -- | 30% Defense Bonus vs Range + Orc damagereducedfromranged30 doubleDamagetoOrc |
12 | 10 |
| 3 | 1 | 1.00 | 332 | 14 | 1 | -- | 30% Defense Bonus vs Range + Orc damagereducedfromranged30 doubleDamagetoOrc |
14 | 10 |
| 4 | 1 | 1.00 | 340 | 14 | 1 | -- | 30% Defense Bonus vs Range + Orc damagereducedfromranged30 doubleDamagetoOrc |
16 | 10 |
| 5 | 1 | 1.00 | 350 | 15 | 1 | -- | 40% Defense Bonus vs Range + Orc damagereducedfromranged40 doubleDamagetoOrc |
18 | 10 |
| 6 | 1 | 1.00 | 362 | 15 | 1 | -- | 40% Defense Bonus vs Range + Orc damagereducedfromranged40 doubleDamagetoOrc |
20 | 10 |
| 7 | 1 | 1.00 | 374 | 15 | 1 | -- | 40% Defense Bonus vs Range + Orc damagereducedfromranged40 doubleDamagetoOrc |
30 | 10 |
| 8 | 1 | 1.00 | 384 | 15 | 1 | -- | 40% Defense Bonus vs Range + Orc damagereducedfromranged40 doubleDamagetoOrc |
40 | 10 |
| 9 | 1 | 1.00 | 394 | 17 | 1 | -- | 40% Defense Bonus vs Range + Orc damagereducedfromranged40 doubleDamagetoOrc |
50 | 10 |
| 10 | 1 | 1.00 | 406 | 17 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
60 | 10 |
| 11 | 1 | 1.00 | 418 | 17 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
70 | 15 |
| 12 | 1 | 1.00 | 430 | 18 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
80 | 15 |
| 13 | 1 | 1.00 | 446 | 18 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
90 | 15 |
| 14 | 1 | 1.00 | 458 | 18 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
100 | 15 |
| 15 | 1 | 1.00 | 470 | 20 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
110 | 15 |
| 16 | 1 | 1.00 | 486 | 20 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
120 | 15 |
| 17 | 1 | 1.00 | 500 | 21 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
130 | 15 |
| 18 | 1 | 1.00 | 516 | 21 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
140 | 15 |
| 19 | 1 | 1.00 | 532 | 21 | 1 | -- | 60% Defense Bonus vs Range + Orc damagereducedfromranged60 doubleDamagetoOrc |
150 | 15 |
| 20 | 1 | 1.00 | 538 | 21 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
200 | 15 |
| 21 | 1 | 1.00 | 544 | 21 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
220 | 20 |
| 22 | 1 | 1.00 | 550 | 21 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
240 | 20 |
| 23 | 1 | 1.00 | 556 | 21 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
260 | 20 |
| 24 | 1 | 1.00 | 562 | 21 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
280 | 20 |
| 25 | 1 | 1.00 | 570 | 22 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
300 | 20 |
| 26 | 1 | 1.00 | 576 | 22 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
320 | 20 |
| 27 | 1 | 1.00 | 582 | 22 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
340 | 20 |
| 28 | 1 | 1.00 | 588 | 22 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
360 | 20 |
| 29 | 1 | 1.00 | 594 | 22 | 1 | -- | 70% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
380 | 20 |
| 30 | 1 | 1.00 | 600 | 24 | 1 | -- | 80% Defense Bonus vs Range + Orc damagereducedfromranged70 doubleDamagetoOrc |
400 | 20 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 66 | 3 | 1 | -- | 20% Healing Bonus healIncrease20 |
30 | 5 |
| 2 | 1 | 1.00 | 77 | 3 | 1 | -- | 20% Healing Bonus healIncrease20 |
6 | 7 |
| 3 | 1 | 1.00 | 88 | 3 | 1 | -- | 20% Healing Bonus healIncrease20 |
7 | 8 |
| 4 | 1 | 1.00 | 101 | 6 | 1 | -- | 20% Healing Bonus healIncrease20 |
8 | 9 |
| 5 | 1 | 1.00 | 114 | 6 | 1 | -- | 40% Healing Bonus healIncrease40 |
9 | 10 |
| 6 | 1 | 1.00 | 132 | 6 | 1 | -- | 40% Healing Bonus healIncrease40 |
10 | 11 |
| 7 | 1 | 1.00 | 152 | 6 | 1 | -- | 40% Healing Bonus healIncrease40 |
15 | 12 |
| 8 | 1 | 1.00 | 176 | 9 | 1 | -- | 40% Healing Bonus healIncrease40 |
20 | 13 |
| 9 | 1 | 1.00 | 202 | 9 | 1 | -- | 40% Healing Bonus healIncrease40 |
25 | 14 |
| 10 | 1 | 1.00 | 233 | 11 | 1 | -- | 60% Healing Bonus healIncrease60 |
30 | 15 |
| 11 | 1 | 1.00 | 240 | 11 | 1 | -- | 60% Healing Bonus healIncrease60 |
35 | 16 |
| 12 | 1 | 1.00 | 248 | 11 | 1 | -- | 60% Healing Bonus healIncrease60 |
40 | 17 |
| 13 | 1 | 1.00 | 255 | 13 | 1 | -- | 60% Healing Bonus healIncrease60 |
45 | 18 |
| 14 | 1 | 1.00 | 263 | 13 | 1 | -- | 60% Healing Bonus healIncrease60 |
50 | 19 |
| 15 | 1 | 1.00 | 271 | 13 | 1 | -- | 60% Healing Bonus healIncrease60 |
55 | 20 |
| 16 | 1 | 1.00 | 278 | 14 | 1 | -- | 60% Healing Bonus healIncrease60 |
60 | 22 |
| 17 | 1 | 1.00 | 287 | 14 | 1 | -- | 60% Healing Bonus healIncrease60 |
65 | 24 |
| 18 | 1 | 1.00 | 296 | 14 | 1 | -- | 60% Healing Bonus healIncrease60 |
70 | 26 |
| 19 | 1 | 1.00 | 305 | 14 | 1 | -- | 60% Healing Bonus healIncrease60 |
75 | 28 |
| 20 | 1 | 1.00 | 314 | 15 | 1 | -- | 80% Healing Bonus healIncrease80 |
100 | 30 |
| 21 | 1 | 1.00 | 322 | 15 | 1 | -- | 80% Healing Bonus healIncrease80 |
120 | 40 |
| 22 | 1 | 1.00 | 332 | 15 | 1 | -- | 80% Healing Bonus healIncrease80 |
140 | 60 |
| 23 | 1 | 1.00 | 342 | 15 | 1 | -- | 80% Healing Bonus healIncrease80 |
160 | 60 |
| 24 | 1 | 1.00 | 353 | 16 | 1 | -- | 80% Healing Bonus healIncrease80 |
180 | 70 |
| 25 | 1 | 1.00 | 363 | 16 | 1 | -- | 80% Healing Bonus healIncrease80 |
200 | 80 |
| 26 | 1 | 1.00 | 374 | 16 | 1 | -- | 80% Healing Bonus healIncrease80 |
220 | 90 |
| 27 | 1 | 1.00 | 385 | 16 | 1 | -- | 80% Healing Bonus healIncrease80 |
240 | 100 |
| 28 | 1 | 1.00 | 397 | 17 | 1 | -- | 80% Healing Bonus healIncrease80 |
260 | 115 |
| 29 | 1 | 1.00 | 409 | 17 | 1 | -- | 80% Healing Bonus healIncrease80 |
280 | 130 |
| 30 | 1 | 1.00 | 421 | 18 | 1 | -- | 100% Healing Bonus healIncrease100 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 2.5 | 1.00 | 8 | 16 | 1 | -- | Evade 50% of Ranged Damage damagereducedfromrangedRogue70 |
30 | 5 |
| 2 | 2.5 | 1.00 | 10 | 18 | 1 | -- | Evade 50% of Ranged Damage damagereducedfromrangedRogue70 |
6 | 7 |
| 3 | 2.5 | 1.00 | 10 | 22 | 1 | -- | Evade 50% of Ranged Damage damagereducedfromrangedRogue70 |
7 | 8 |
| 4 | 2.5 | 1.00 | 12 | 24 | 1 | -- | Evade 50% of Ranged Damage damagereducedfromrangedRogue70 |
8 | 9 |
| 5 | 2.5 | 1.00 | 14 | 28 | 1 | -- | Evade 60% of Ranged Damage damagereducedfromrangedRogue70 |
9 | 10 |
| 6 | 2.5 | 1.00 | 16 | 32 | 1 | -- | Evade 60% of Ranged Damage damagereducedfromrangedRogue70 |
10 | 11 |
| 7 | 2.5 | 1.00 | 18 | 38 | 1 | -- | Evade 60% of Ranged Damage damagereducedfromrangedRogue70 |
15 | 12 |
| 8 | 2.5 | 1.00 | 22 | 42 | 1 | -- | Evade 60% of Ranged Damage damagereducedfromrangedRogue70 |
20 | 13 |
| 9 | 2.5 | 1.00 | 24 | 48 | 1 | -- | Evade 60% of Ranged Damage damagereducedfromrangedRogue70 |
25 | 14 |
| 10 | 2.5 | 1.00 | 28 | 56 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
30 | 15 |
| 11 | 2.5 | 1.00 | 29 | 58 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
35 | 16 |
| 12 | 2.5 | 1.00 | 30 | 59 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
40 | 17 |
| 13 | 2.5 | 1.00 | 31 | 61 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
45 | 18 |
| 14 | 2.5 | 1.00 | 32 | 63 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
50 | 19 |
| 15 | 2.5 | 1.00 | 32 | 65 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
55 | 20 |
| 16 | 2.5 | 1.00 | 33 | 67 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
60 | 22 |
| 17 | 2.5 | 1.00 | 34 | 69 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
65 | 24 |
| 18 | 2.5 | 1.00 | 35 | 71 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
70 | 26 |
| 19 | 2.5 | 1.00 | 37 | 73 | 1 | -- | Evade 70% of Ranged Damage damagereducedfromrangedRogue80 |
75 | 28 |
| 20 | 2.5 | 1.00 | 38 | 75 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue80 |
100 | 30 |
| 21 | 2.5 | 1.00 | 39 | 78 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
120 | 40 |
| 22 | 2.5 | 1.00 | 40 | 80 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
140 | 60 |
| 23 | 2.5 | 1.00 | 41 | 82 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
160 | 60 |
| 24 | 2.5 | 1.00 | 42 | 85 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
180 | 70 |
| 25 | 2.5 | 1.00 | 44 | 87 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
200 | 80 |
| 26 | 2.5 | 1.00 | 45 | 90 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
220 | 90 |
| 27 | 2.5 | 1.00 | 46 | 93 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
240 | 100 |
| 28 | 2.5 | 1.00 | 48 | 95 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
260 | 115 |
| 29 | 2.5 | 1.00 | 49 | 98 | 1 | -- | Evade 80% of Ranged Damage damagereducedfromrangedRogue90 |
280 | 130 |
| 30 | 2.5 | 1.00 | 51 | 101 | 1 | -- | Evade 90% of Ranged Damage damagereducedfromrangedRogue90 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 60 | 2 | 1 | -- | 30% Defense Bonus vs Range damagereducedfromranged30 |
30 | 5 |
| 2 | 1 | 1.00 | 70 | 2 | 1 | -- | 30% Defense Bonus vs Range damagereducedfromranged30 |
6 | 7 |
| 3 | 1 | 1.00 | 80 | 2 | 1 | -- | 30% Defense Bonus vs Range damagereducedfromranged30 |
7 | 8 |
| 4 | 1 | 1.00 | 92 | 4 | 1 | -- | 30% Defense Bonus vs Range damagereducedfromranged30 |
8 | 9 |
| 5 | 1 | 1.00 | 104 | 4 | 1 | -- | 40% Defense Bonus vs Range damagereducedfromranged40 |
9 | 10 |
| 6 | 1 | 1.00 | 120 | 4 | 1 | -- | 40% Defense Bonus vs Range damagereducedfromranged40 |
10 | 11 |
| 7 | 1 | 1.00 | 138 | 4 | 1 | -- | 40% Defense Bonus vs Range damagereducedfromranged40 |
15 | 12 |
| 8 | 1 | 1.00 | 160 | 6 | 1 | -- | 40% Defense Bonus vs Range damagereducedfromranged40 |
20 | 13 |
| 9 | 1 | 1.00 | 184 | 6 | 1 | -- | 40% Defense Bonus vs Range damagereducedfromranged40 |
25 | 14 |
| 10 | 1 | 1.00 | 212 | 8 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
30 | 15 |
| 11 | 1 | 1.00 | 218 | 8 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
35 | 16 |
| 12 | 1 | 1.00 | 225 | 8 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
40 | 17 |
| 13 | 1 | 1.00 | 232 | 9 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
45 | 18 |
| 14 | 1 | 1.00 | 239 | 9 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
50 | 19 |
| 15 | 1 | 1.00 | 246 | 9 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
55 | 20 |
| 16 | 1 | 1.00 | 253 | 10 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
60 | 22 |
| 17 | 1 | 1.00 | 261 | 10 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
65 | 24 |
| 18 | 1 | 1.00 | 269 | 10 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
70 | 26 |
| 19 | 1 | 1.00 | 277 | 10 | 1 | -- | 60% Defense Bonus vs Range damagereducedfromranged60 |
75 | 28 |
| 20 | 1 | 1.00 | 285 | 11 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
100 | 30 |
| 21 | 1 | 1.00 | 293 | 11 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
120 | 40 |
| 22 | 1 | 1.00 | 302 | 11 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
140 | 60 |
| 23 | 1 | 1.00 | 311 | 12 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
160 | 60 |
| 24 | 1 | 1.00 | 321 | 12 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
180 | 70 |
| 25 | 1 | 1.00 | 330 | 12 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
200 | 80 |
| 26 | 1 | 1.00 | 340 | 13 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
220 | 90 |
| 27 | 1 | 1.00 | 350 | 13 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
240 | 100 |
| 28 | 1 | 1.00 | 361 | 14 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
260 | 115 |
| 29 | 1 | 1.00 | 372 | 14 | 1 | -- | 70% Defense Bonus vs Range damagereducedfromranged70 |
280 | 130 |
| 30 | 1 | 1.00 | 383 | 14 | 1 | -- | 80% Defense Bonus vs Range damagereducedfromranged80 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 198 | 40 | 1 | -- | 20% Damage boost to nearby allies doubleDamagetoUndead |
50 | 10 |
| 2 | 1 | 1.00 | 204 | 42 | 1 | -- | 20% Damage boost to nearby allies doubleDamagetoUndead |
12 | 10 |
| 3 | 1 | 1.00 | 210 | 44 | 1 | -- | 20% Damage boost to nearby allies doubleDamagetoUndead |
14 | 10 |
| 4 | 1 | 1.00 | 216 | 46 | 1 | -- | 20% Damage boost to nearby allies doubleDamagetoUndead |
16 | 10 |
| 5 | 1 | 1.00 | 222 | 48 | 1 | -- | 30% Damage boost to nearby allies doubleDamagetoUndead |
18 | 10 |
| 6 | 1 | 1.00 | 228 | 50 | 1 | -- | 30% Damage boost to nearby allies doubleDamagetoUndead |
20 | 10 |
| 7 | 1 | 1.00 | 237 | 52 | 1 | -- | 30% Damage boost to nearby allies doubleDamagetoUndead |
30 | 10 |
| 8 | 1 | 1.00 | 243 | 54 | 1 | -- | 30% Damage boost to nearby allies doubleDamagetoUndead |
40 | 10 |
| 9 | 1 | 1.00 | 249 | 56 | 1 | -- | 30% Damage boost to nearby allies doubleDamagetoUndead |
50 | 10 |
| 10 | 1 | 1.00 | 258 | 58 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
60 | 10 |
| 11 | 1 | 1.00 | 267 | 60 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
70 | 15 |
| 12 | 1 | 1.00 | 270 | 62 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
80 | 15 |
| 13 | 1 | 1.00 | 273 | 64 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
90 | 15 |
| 14 | 1 | 1.00 | 276 | 66 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
100 | 15 |
| 15 | 1 | 1.00 | 279 | 68 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
110 | 15 |
| 16 | 1 | 1.00 | 282 | 70 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
120 | 15 |
| 17 | 1 | 1.00 | 285 | 72 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
130 | 15 |
| 18 | 1 | 1.00 | 288 | 74 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
140 | 15 |
| 19 | 1 | 1.00 | 291 | 76 | 1 | -- | 50% Damage boost to nearby allies doubleDamagetoUndead |
150 | 15 |
| 20 | 1 | 1.00 | 294 | 78 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
200 | 15 |
| 21 | 1 | 1.00 | 297 | 80 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
220 | 20 |
| 22 | 1 | 1.00 | 300 | 82 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
240 | 20 |
| 23 | 1 | 1.00 | 303 | 84 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
260 | 20 |
| 24 | 1 | 1.00 | 306 | 86 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
280 | 20 |
| 25 | 1 | 1.00 | 309 | 88 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
300 | 20 |
| 26 | 1 | 1.00 | 312 | 90 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
320 | 20 |
| 27 | 1 | 1.00 | 315 | 92 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
340 | 20 |
| 28 | 1 | 1.00 | 318 | 94 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
360 | 20 |
| 29 | 1 | 1.00 | 321 | 96 | 1 | -- | 70% Damage boost to nearby allies doubleDamagetoUndead |
380 | 20 |
| 30 | 1 | 1.00 | 324 | 98 | 1 | -- | 85% Damage boost to nearby allies doubleDamagetoUndead |
400 | 20 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.67 | 178 | 46 | 1.1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 doubleDamagetoMonster |
50 | 10 |
| 2 | 1 | 1.67 | 184 | 48 | 1.1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 doubleDamagetoMonster |
12 | 10 |
| 3 | 1 | 1.67 | 189 | 51 | 1.1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 doubleDamagetoMonster |
14 | 10 |
| 4 | 1 | 1.67 | 194 | 53 | 1.1 | -- | 20% Bonus Damage vs Armored damageincreasedtoarmoredBarb20 doubleDamagetoMonster |
16 | 10 |
| 5 | 1 | 1.67 | 200 | 55 | 1.1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 doubleDamagetoMonster |
18 | 10 |
| 6 | 1 | 1.67 | 205 | 58 | 1.1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 doubleDamagetoMonster |
20 | 10 |
| 7 | 1 | 1.67 | 213 | 61 | 1.1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 doubleDamagetoMonster |
30 | 10 |
| 8 | 1 | 1.67 | 219 | 63 | 1.1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 doubleDamagetoMonster |
40 | 10 |
| 9 | 1 | 1.67 | 224 | 65 | 1.1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmoredBarb30 doubleDamagetoMonster |
50 | 10 |
| 10 | 1 | 1.67 | 232 | 67 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
60 | 10 |
| 11 | 1 | 1.67 | 240 | 69 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
70 | 15 |
| 12 | 1 | 1.67 | 243 | 72 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
80 | 15 |
| 13 | 1 | 1.67 | 246 | 74 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
90 | 15 |
| 14 | 1 | 1.67 | 248 | 76 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
100 | 15 |
| 15 | 1 | 1.67 | 251 | 78 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
110 | 15 |
| 16 | 1 | 1.67 | 254 | 81 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
120 | 15 |
| 17 | 1 | 1.67 | 257 | 84 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
130 | 15 |
| 18 | 1 | 1.67 | 259 | 86 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
140 | 15 |
| 19 | 1 | 1.67 | 262 | 88 | 1.1 | -- | 40% Bonus Damage vs Armored damageincreasedtoarmoredBarb40 doubleDamagetoMonster |
150 | 15 |
| 20 | 1 | 1.67 | 265 | 90 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
200 | 15 |
| 21 | 1 | 1.67 | 267 | 92 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
220 | 20 |
| 22 | 1 | 1.67 | 270 | 95 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
240 | 20 |
| 23 | 1 | 1.67 | 273 | 97 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
260 | 20 |
| 24 | 1 | 1.67 | 275 | 99 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
280 | 20 |
| 25 | 1 | 1.67 | 278 | 101 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
300 | 20 |
| 26 | 1 | 1.67 | 281 | 105 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
320 | 20 |
| 27 | 1 | 1.67 | 284 | 107 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
340 | 20 |
| 28 | 1 | 1.67 | 286 | 109 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
360 | 20 |
| 29 | 1 | 1.67 | 289 | 111 | 1.1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmoredBarb50 doubleDamagetoMonster |
380 | 20 |
| 30 | 1 | 1.67 | 292 | 113 | 1.1 | -- | 60% Bonus Damage vs Armored damageincreasedtoarmoredBarb60 doubleDamagetoMonster |
400 | 20 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | |||||
|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 28 | 12 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmored30 |
30 | 5 |
| 2 | 1 | 1.00 | 32 | 14 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmored30 |
6 | 7 |
| 3 | 1 | 1.00 | 37 | 16 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmored30 |
7 | 8 |
| 4 | 1 | 1.00 | 43 | 18 | 1 | -- | 30% Bonus Damage vs Armored damageincreasedtoarmored30 |
8 | 9 |
| 5 | 1 | 1.00 | 49 | 21 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmored50 |
9 | 10 |
| 6 | 1 | 1.00 | 56 | 24 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmored50 |
10 | 11 |
| 7 | 1 | 1.00 | 65 | 28 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmored50 |
15 | 12 |
| 8 | 1 | 1.00 | 74 | 32 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmored50 |
20 | 13 |
| 9 | 1 | 1.00 | 86 | 37 | 1 | -- | 50% Bonus Damage vs Armored damageincreasedtoarmored50 |
25 | 14 |
| 10 | 1 | 1.00 | 99 | 42 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
30 | 15 |
| 11 | 1 | 1.00 | 102 | 43 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
35 | 16 |
| 12 | 1 | 1.00 | 105 | 45 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
40 | 17 |
| 13 | 1 | 1.00 | 108 | 46 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
45 | 18 |
| 14 | 1 | 1.00 | 111 | 47 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
50 | 19 |
| 15 | 1 | 1.00 | 115 | 49 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
55 | 20 |
| 16 | 1 | 1.00 | 118 | 50 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
60 | 22 |
| 17 | 1 | 1.00 | 122 | 52 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
65 | 24 |
| 18 | 1 | 1.00 | 125 | 53 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
70 | 26 |
| 19 | 1 | 1.00 | 129 | 55 | 1 | -- | 70% Bonus Damage vs Armored damageincreasedtoarmored70 |
75 | 28 |
| 20 | 1 | 1.00 | 133 | 56 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
100 | 30 |
| 21 | 1 | 1.00 | 137 | 58 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
120 | 40 |
| 22 | 1 | 1.00 | 141 | 60 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
140 | 60 |
| 23 | 1 | 1.00 | 145 | 62 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
160 | 60 |
| 24 | 1 | 1.00 | 150 | 64 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
180 | 70 |
| 25 | 1 | 1.00 | 154 | 65 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
200 | 80 |
| 26 | 1 | 1.00 | 159 | 67 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
220 | 90 |
| 27 | 1 | 1.00 | 164 | 69 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
240 | 100 |
| 28 | 1 | 1.00 | 169 | 72 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
260 | 115 |
| 29 | 1 | 1.00 | 174 | 74 | 1 | -- | 85% Bonus Damage vs Armored damageincreasedtoarmored85 |
280 | 130 |
| 30 | 1 | 1.00 | 179 | 76 | 1 | -- | 100% Bonus Damage vs Armored damageincreasedtoarmored100 |
300 | 150 |
| Lvl | Spd | Atk Spd | Captain | Upgrade Cost | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| HP | Dam | Rng | Heal | Pow | Milestone Desc | Gold | Scrolls | |||
| 1 | 1 | 1.00 | 45 | 14 | 2 | 2 | -- | Heal nearby Allies for 1 HP every 6 seconds |
30 | 5 |
| 2 | 1 | 1.00 | 47 | 16 | 2 | 2 | -- | Heal nearby Allies for 1 HP every 6 seconds |
6 | 7 |
| 3 | 1 | 1.00 | 48 | 18 | 2 | 2 | -- | Heal nearby Allies for 1 HP every 6 seconds |
7 | 8 |
| 4 | 1 | 1.00 | 50 | 20 | 2 | 2 | -- | Heal nearby Allies for 1 HP every 6 seconds |
8 | 9 |
| 5 | 1 | 1.00 | 52 | 22 | 2 | 4 | -- | Heal nearby Allies for 2 HP every 6 seconds |
9 | 10 |
| 6 | 1 | 1.00 | 53 | 24 | 2 | 4 | -- | Heal nearby Allies for 2 HP every 6 seconds |
10 | 11 |
| 7 | 1 | 1.00 | 54 | 26 | 2 | 4 | -- | Heal nearby Allies for 2 HP every 6 seconds |
15 | 12 |
| 8 | 1 | 1.00 | 56 | 28 | 2 | 4 | -- | Heal nearby Allies for 2 HP every 6 seconds |
20 | 13 |
| 9 | 1 | 1.00 | 57 | 30 | 2 | 4 | -- | Heal nearby Allies for 2 HP every 6 seconds |
25 | 14 |
| 10 | 1 | 1.00 | 59 | 32 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
30 | 15 |
| 11 | 1 | 1.00 | 60 | 34 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
35 | 16 |
| 12 | 1 | 1.00 | 62 | 36 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
40 | 17 |
| 13 | 1 | 1.00 | 63 | 38 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
45 | 18 |
| 14 | 1 | 1.00 | 66 | 40 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
50 | 19 |
| 15 | 1 | 1.00 | 68 | 42 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
55 | 20 |
| 16 | 1 | 1.00 | 69 | 44 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
60 | 22 |
| 17 | 1 | 1.00 | 72 | 46 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
65 | 24 |
| 18 | 1 | 1.00 | 74 | 48 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
70 | 26 |
| 19 | 1 | 1.00 | 77 | 50 | 2 | 8 | -- | Heal nearby Allies for 4 HP every 6 seconds |
75 | 28 |
| 20 | 1 | 1.00 | 78 | 52 | 2 | 8 | -- | Heal nearby Allies for 8 HP every 6 seconds |
100 | 30 |
| 21 | 1 | 1.00 | 79 | 54 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
120 | 40 |
| 22 | 1 | 1.00 | 80 | 56 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
140 | 60 |
| 23 | 1 | 1.00 | 81 | 58 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
160 | 60 |
| 24 | 1 | 1.00 | 82 | 60 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
180 | 70 |
| 25 | 1 | 1.00 | 83 | 62 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
200 | 80 |
| 26 | 1 | 1.00 | 84 | 64 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
220 | 90 |
| 27 | 1 | 1.00 | 85 | 66 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
240 | 100 |
| 28 | 1 | 1.00 | 86 | 68 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
260 | 115 |
| 29 | 1 | 1.00 | 87 | 70 | 2 | 16 | -- | Heal nearby Allies for 8 HP every 6 seconds |
280 | 130 |
| 30 | 1 | 1.00 | 88 | 72 | 2 | 32 | -- | Heal nearby Allies for 16 HP every 6 seconds |
300 | 150 |


Pixl: A Sea of CSS [part 5]
-
In part one of our tutorial, we got a pretty good start with a grid that refreshes gracefully based on a data array. The user can toggle a single colors on and off for each pixel.
-
In part two we added a color palette and mouse-dragging functionality to paint pixels more quickly.
-
In part three we created an image tray at the bottom of the screen where users could grab different-sized canvases of their pixel art to save on their PC.
-
In part four we questioned whether we ought to be using React after all, and we added support for saving canvas images in localStorage.
What’s happening today?
Now we’re going to push the project to the limit: we’ll add CSS styling to make the app responsive on multiple screen sizes using media queries and flexbox.
small, narrow screen
medium screen width
normal screen width
Media queries
A media query
allows us to define rules for styling elements differently depending on media type (e.g., print, screen, TV, braille) and a list of media features that include color
, width
, and device-aspect-ratio
. Media queries allow us to define a an element once in our HTML, and then make it appear differently depending on context.
Here’s a simple example.
div#colorDemo {
background-color: white;
}
@media all and (min-width: 500px) {
div#colorDemo {
background-color: gold;
}
}
Note how we define rules for #colorDemo twice: once for the smaller screen, and once for the larger screen. In mobile-first design, we make our app look good on smaller screens first, and then we set media queries to override this behavior on a larger screen: perhaps by widening the elements, or letting them take up additional columns.
This is done since styling for smaller screens is usually simpler. Most things end up being full-width and margins and padding do not come into play so much.
We can leverage media queries in JavaScript too to change our code dynamically. It looks quite similar to the CSS. The window
object has a matchMedia
method that allows us to add listeners to a given CSS query of interest.
// Create the query list.
var mediaQueryList = window.matchMedia("(min-width: 500px)");
function handleOrientationChange(mql) {
isLargeScreen = mql.matches ? true : false;
if (!isLargeScreen) {
// transition to small screen
redrawAtScale(0.8);
} else {
// transition to large screen
redrawAtScale(1);
}
}
// Add the callback function as a listener to the query list.
mediaQueryList.addListener(handleOrientationChange);
// Run the orientation change handler once.
handleOrientationChange(mediaQueryList);
We’ll add an event listener to our window width and use it to dynamically change the size of the grid and the size of the preview thumbnails.
We’ll also add some CSS to make the page look nice whether the screen is small or large.
First the HTML

pixl
 // repo

<button id="randomPalette">rando</button>

<button id="reset">reset</button>

<input class="jscolor" id="swatch">

<canvas id="editor"></canvas>

<button id="saveImage">save image</button>
<button id="loadImages">load images</button>

<button id="getImage">get image</button>

transparent
<input id="transparent" type="checkbox" checked>

bgcolor <input class="jscolor" id="bgColor">

width
<select id="pxWidth">
<option value="16">16px</option>
<option value="32">32px</option>
<option value="64">64px</option>
<option value="128" selected>128px</option>
</select>

Styling this HTML
There are a few global styles.
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
background-color: #fff;
cursor: crosshair;
font-family: "Lekton", sans-serif;
}
body,
h1,
input,
button,
select {
font-family: "Lekton", sans-serif;
}
side note — box-sizing: border-box
Setting box-sizing: border-box
allows us to “unquirk” the typical CSS box sizing behavior
.
Without this setting, the width and height of elements will not be what you specify. Rather, elements will take the specified width and height as a base, adding on any padding and border that you specify (or, if you do not do a CSS reset, that a browser stylesheet has by default).
This can result in some strange behavior. Consider this box. Without border-box
set, it will display as 106x106 px instead of 100x100.
div#box {
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid black;
}
Now imagine that you have a div to hold a row of boxes, and you’d like to display six per line. Well, you can’t make it 600px, because it’s going to have to hold 600 + 6*6 = 636px of width total.
You could just resize the container div. But now imagine you want to tweak the padding slightly on your elements. You’ll have to go back and resize the container div.
Row by row
We have a large container wrapper that holds all of our rows. Here’s what the container looks like on narrower screens:
div#container {
display: flex;
flex-flow: column wrap;
width: 99%;
max-width: 680px;
border: 1px solid black;
margin: 0px auto;
padding: 10px 4px;
}
We set a maximum width in pixels so that the percentage width does not become too large on large screens.
We have a line of content for each “row” on the screen.
We create a row
class that is used to wrap individual rows of content. It looks the same on any type of screen size, and it scales automatically given that it’s a flexbox.
div.row {
display: flex;
flex-flow: row wrap;
align-items: center;
}
The rows are:
- Header
- Color Palette & Palette Controls
- localStorage Saved Images & Drawing Canvas
- Canvas Controls
- User-generated images to save to computer
Let’s describe row by row what the style will look like for large and small screens.
Header
When the screen is 450px or wider, we display the header.
div#header {
display: block;
font-size: 0.7em;
width: 90px;
border-bottom: 1px solid tomato;
user-select: none;
}
Otherwise, the header is hidden.
div#header { display: none; }
Color Palette & Palette Controls
The palette is a div container filled with color “chips”.
div#palette {
flex: 6;
padding: 8px;
flex-flow: row nowrap;
height: 32px;
display: flex;
align-items: center;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
user-select: none;
}
div.chip {
flex: 2;
width: auto;
height: 100%;
padding: 2px;
border-radius: 6px;
}
Chips can have a class activeColor
when they are selected. activeColor
gives a visual indication that the color is selected by spinning the chip around, raising it slightly, and giving it a box-shadow.
div.activeColor {
transform: rotate(-90deg) translateX(11px);
transition: 200ms all ease-in-out;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
The controls are a div container filled with control divs.
div#paletteControls {
display: flex;
flex: 1;
padding: 8px;
flex-flow: row nowrap;
height: 32px;
justify-content: center;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
user-select: none;
}
div.control {
flex: 0 1 auto;
padding: 2px;
align-self: center;
}
localStorage Saved Images & Drawing Canvas
The saved images are those that are stored in localStorage and can be retrieved for future editing. On small screens, they’ll appear as a single row across the top of the page. We set flex-flow
to row nowrap and overflow-x
to cause the container to scroll when there are too many images inside to appear at once.
div#savedImages {
flex: 0 1 auto;
display: none;
justify-content: flex-start;
align-items: center;
flex-flow: row nowrap;
overflow-x: scroll;
width: 90%;
margin: 4px auto;
}
For screens wider than 700px, we want the saved images to appear as a vertical column to the left of the canvas. Here, we set the flex-flow
to column and set a height on the div:
div#savedImages {
flex: 0 1 140px;
flex-flow: column;
height: 430px;
}
The canvas is where it all (well, all the drawing at least) happens.
div#canvas {
flex: 0 1 auto;
margin: 4px auto;
padding: 5px;
height: auto;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
canvas#editor {
margin: 4px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
Canvas Controls
The controls (buttons like save/load/get image and background settings) will all appear as a single row below the canvas.
div.controls {
flex: 0 1 auto;
margin: auto;
text-align: center;
font-size: 0.9em;
display: flex;
flex-flow: row nowrap;
justify-content: center;
align-items: center;
user-select: none;
}
User-generated images to save to computer
div#imageTray {
display: flex;
margin: auto;
width: 90%;
white-space: nowrap;
overflow-x: scroll;
padding: 5px;
transition: 200ms all ease-in;
user-select: none;
}
We set a few more styles everywhere the same:
input.jscolor {
cursor: grab;
}
button {
outline: none;
font-size: 0.9em;
max-width: 110px;
flex: 0 1 auto;
}
h1 {
display: inline;
font-size: 2em;
}
input#swatch {
max-width: 52px;
padding: 0px;
outline: none;
user-select: none;
flex: 0 1 auto;
}
input#bgColor {
width: 50px;
padding: 0px;
outline: none;
}
select#pxWidth {
width: 64px;
font-family: "Lekton", sans-serif;
font-size: 0.9em;
}
Canvas preview containers hold canvases saved in localStorage, or canvases that the user has generated with the “get image” button. These containers look the same everywhere. A little box-shadow makes them pop from the page, and a border on hover gives the user a hint that they are clickable and have associated actions.
div.cvs-preview {
position: relative;
flex: none;
margin: 5px;
border: 1px solid black;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
user-select: none;
}
div.cvs-preview:hover {
border: 1px solid gold;
}
Dynamically controlling row orientation
On largest screens, I want to have the controls displayed above the preview images. But on smaller screens, I want to. move the controls to the very bottom and display preview images closer to the canvas.
Flexbox allows you to dynamically switch the order of elements using the order
property. I number each row with an ID, row_0
through row_3
.
I can then swap the position of the last two rows on smaller screens like this:
#row_3 { order: 0; }
#row_2 { order: 1; }
On larger screens, I can flip the order back to normal.
#row_3 { order: 1; }
#row_2 { order: 0; }
Nice!
By using CSS flexbox judiciously, we’re able to define a simple, row-based layout that collapses to a single column of elements on smaller screens.
Making the canvas smaller/larger
We are able to toggle the canvas size and appearance using the JavaScript media query listener we defined earlier. Remember the handleOrientationChange
bit we wrote earlier?
We also wrote the method redrawAtScale
. This function does the following:
let WIDTH = 400;
let WIDTH_BASIS = 400; // px
let HEIGHT_BASIS = 400;
let HEIGHT = 400; // px
WIDTH = n * WIDTH_BASIS;
HEIGHT = n * HEIGHT_BASIS;
PREVIEW_IMAGE_SCALE = n;
getCanvasAndContext();
forceRedraw();
Whenever the screen size changes, we redraw the canvas and auxiliary canvases at a fixed ratio based on the initial height and width (the HEIGHT_BASIS
and WIDTH_BASIS
variables). By providing a breakpoint between screen sizes, we enable the user to access the app on different-sized devices.
There you have it. TIL about responsive design, flexbox, and mobile-first CSS!


if result gets 1 the sentence is not sensitive if result gets 0 - the sentence is sensitive. You can pass as much as sentences Separated by full stop . .


---
layout: post
authors: ["Greg Wilson"]
title: Our Infrastructure
date: 2013-05-25
time: "09:00:00"
tags: ["Infrastructure"]
---
As described in these posts from
May,
and
October
2012
(which build on
this one
from April 2012),
we use a complicated collection of tools to manage our work:
-
Our web pages and blog posts are Jinja2 templates
stored in three GitHub repositories:
one for the main web site,
one for the Version 4 videos and slides,
and one for the Version 3 notes.
(We split material between repositories
because we didn't want people to have to download the earlier versions
in order to write a blog post—they're fairly large.
In practice,
though,
the web site compiler doesn't work if you don't have everything at hand.)
-
We use a 950-line Python script to compile those templates into HTML pages.
(We'd like to use Pelican,
a blog compiler written in Python,
but need a few patches to land before we can easily integrate the plugins we need.)
-
Our tutorial videos are on YouTube
and embedded in our web pages.
-
We use Google Analytics to watch web site traffic.
-
And Disqus for managing comments.
-
And the Open Badges infrastructure
for the digital badges we issue.
(More about this later.)
-
We use EventBrite to handle registration
about two thirds of the time;
the rest of the time,
hosts take care of it themselves
(typically with an internal system they're required to use).
-
Our site is hosted by Dreamhost.
Their service has been increasingly erratic over the past ten months,
so we're probably going to move to another hosting service this summer.
-
We use Mailman to manage mailing lists,
primarily because it's what Dreamhost provides.
Unfortunately,
what Dreamhost doesn't provide is access to Mailman's command-line API:
they host mailing lists on a different set of servers
than the ones used for web sites and shell access,
so we can't write scripts to synchronize mailing lists with our database.
This is another reason to move to another hosting service…
-
And speaking of databases,
we have yet another version control repository that holds our contact database
(as an SQL file we can load into SQLite),
notes about bootcamp prospects,
and other information that can't be public
(because it includes personal email addresses, phone numbers, and so on).
Using an SQLite database makes it really easy for us to ask questions like,
"Which bootcamp attendees in 2012 became instructors in 2013?",
but keeping it up to date is tedious.
-
Which reminds me that there are three other repos as well.
assets
stores all the "extra" public files that don't go into the web site,
such as the vector source for our logo
and the LaTeX and Markdown versions of our papers.
guide
holds the source for
the instructors' guide
that was supposed to be finished five months ago.
Like the web site itself,
it is written in HTML with Jinja2 templates
and compiled using a little Python script.
Finally,
boot-camps
holds actual teaching materials,
plus the web pages that instructors create for their bootcamps.
This repo is a mess right now,
and cleaning it up is
one of the major jobs
for our summer break.
-
We use a Google Map to display the locations of past and future bootcamps,
and a Google Calendar to display their dates.
A little bit of custom Javascript populates the former
using data extracted from bootcamp pages in the web site,
while our web site compilation script creates the .ics file
that fills the latter.
-
And oh yeah,
we tweet.
When we were using WordPress,
tweets were sent automatically when new blog posts appeared;
we do that manually now
(and sometimes forget).
We also sometimes forget to post notices about newly-announced bootcamps.
As you can tell,
there are a lot of moving parts.
Here are the steps involved in several common activities:
| Write and publish a blog post. |
-
Create a new branch in your clone of the GitHub website repo.
-
Write the post as an HTML file with a bit of Jinja2 boilerplate.
-
Run the compilation script to make sure it's valid, properly linked, etc.
-
Commit your changes, then send a pull request.
-
Once it's merged,
get an admin to log in to the server
and recompile the public-facing version of the web site.
-
Tweet about the post.
|
| Set up a new bootcamp. |
-
Create a new event on EventBrite.
-
(Optional) create a new mailing list for the instructors and helpers
(so that they can coordinate with each other),
and add the appropriate people to it.
-
Create a new branch in your clone of the GitHub website repo,
add an HTML page for the bootcamp,
send us a pull request,
and recompile the site on the server once it's merged
(or in other words,
do everything you'd do for a blog post).
Our calendar and map are automatically populated using this data.
-
Blog and tweet about the bootcamp so that people know they can register.
(We forget to do this sometimes.)
-
Create a new branch in the boot-camps repo
to hold teaching materials.
-
Add a page for the bootcamp to the
gh-pages branch of that repo
(because that's the way GitHub does things).
-
Update the notes we keep in the private administrators' repo for each prospect
to say that a bootcamp has been scheduled.
|
| Wrap up a bootcamp. |
-
Add participants names and email addresses to the SQLite database file.
-
Invite them to join the announcements mailing list
(by uploading their addresses to a widget in Dreamhost's online control panel,
which then sends the invites and handles responses).
-
Write a blog post about how it went.
(We sometimes forget this step too,
or people don't send us a post.)
-
|
| Add someone to the online study group. |
-
Add their name and email address to the SQLite database file.
-
Add them to the appropriate mailing list
(by hand,
since Dreamhost doesn't let us use the Mailman API).
-
Make them an author on the
teaching blog.
|
| Issue someone an instructor's badge. |
-
Add an entry to our SQLite database file.
-
Add an includable snippet of HTML describing them to the web site,
along with a photo of some kind,
that we can use on the roster page.
-
Add a line to the badge directory's index file
(which handles everything else).
|
There are far too many manual steps in these lists,
but I'm not sure what to replace it with.
WordPress didn't meet many of our needs,
and while customer relationship management packages like SugarCRM
would be useful for managing bootcamp prospects and attendees,
they don't handle blogging, event Registration, or badging.
It's tempting to build something ourselves,
but that way madness lies
we don't have the days needed to build, test, deploy, and maintain something.
Even if we did,
it always seems we'd be better off using them
to create new lesson material
or actually teach.
We can't go on like this,
but I honestly don't know what we should do instead.


{% extends "base.html" %} {% block body_block %} {% load static %}
| Suggestion No | Shortcuts |
|---|---|
| Suggestion 01 | Ctrl+Shift+1 |
| Suggestion 02 | Ctrl+Shift+2 |
| Suggestion 03 | Ctrl+Shift+3 |
| Suggestion 04 | Ctrl+Shift+4 |
| Suggestion 05 | Ctrl+Shift+5 |
| Suggestion 06 | Ctrl+Shift+6 |
| Suggestion 07 | Ctrl+Shift+7 |
| Suggestion 08 | Ctrl+Shift+8 |


On 10 January 2017, 10 new articles were published in 9 journals.
Media Coverage of Police Sexual Misconduct in Seven Cities: A Research Note
The Detection and Policing of Gun Crime: Challenges to the Effective Policing of Gun Crime in Europe
Exploring Critical Incidents and Postexposure Management in A Volunteer Fire Service
It's Time: A Meta-Analysis on the Self-Control-Deviance Link
The Relationship Between Crime and Stop, Question, and Frisk Rates in New York City Neighborhoods
To Veil Or Not to Veil: Detecting Lies in the Courtroom. A Comment on Leach Et al. (2016)
An Equal Right to Inherit? Women’s Land Rights, Customary Law and Constitutional Reform in Tanzania
How Rape Myths Are Used and Challenged in Rape and Sexual Assault Trials
Merely A Transit Country? Examining the Role of Uganda in the Transnational Illegal Ivory Trade


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Makes 12
Dietary
These little beauties are easier and quicker than a trip to the bakery. They're almost too easy.
Preheat the oven to 180C/350F/Gas 4. Grease the wells of a 12-hole muffin tray with butter.
In a pan, heat the egg yolks, sugar and cornflour over a low to medium heat, whisking continuously until thickened and well combined.
Add the vanilla seeds, then add the milk and cream in a thin stream, whisking continuously, until the mixture is thick, smooth and well combined.
Continue to stir the custard mixture until it comes to the boil, then remove from the heat and cover the surface with cling film. (This prevents a skin from forming on the custard.)
Roll out the puff pastry onto a clean work surface lightly dusted with flour and icing sugar. Cut the pastry in half and place one sheet on top of the other. Roll the pastry sheets up like a Swiss roll and cut the roll into twelve slices.
Lay each of the rolled pastry slices flat onto the work surface and roll out into 10cm/4in discs using a rolling pin.
Press a pastry disc into each of the wells of the prepared muffin tray. Divide the cooled custard equally among the pastry cases.
Transfer the muffin tray to the oven and bake the tarts for 18-20 minutes, or until the custard has set and is pale golden-brown and the pastry is crisp and golden-brown. Allow to cool in the tin.


From<EMAIL_ADDRESS>RE: Cargo Chief Load Notification: You Won!, Load
#2,000,834, Pick up Feb 24, 2012, From Gilroy, CA to Menasha, WI
Attached:
Load_2,000,834_Bill_of_Lading_Feb_24_2012.PDF
John,
Congratulations, your
binding quotation was selected to haul the load below. Please remember that you are getting paid by Cargo Chief, not by the party below.
What: 4 Pallets,
Strawberries, Ea. 48” L 40” W 48” H, No Stack, 2,000 pounds, Class 50
5
Drums, Jam stock, Ea. 20” L 20” W 72” H, No Stack, 6,000 pounds, Class 50
Destination Tracking Not Required
Ready for Pick Up: Feb 24, 2012
Origin: 109 Plow Street, Green barn #3, Gilroy, CA,
95020, Jay Smith,<PHONE_NUMBER><EMAIL_ADDRESS>Pick Up: 9-5
M-Sat, Dock or Forklift
Stop
1 in Transit: 4500 Commercial Street, Door 4, Milwaukee, WI 51932, John Brown,
414-564-8989<EMAIL_ADDRESS>Appointment
Required, Dock or Forklift,
Convention Center/Tradeshow
Destination: 311 Cleveland Street, Door 2, Menasha, WI
54952, Terry Werner,<PHONE_NUMBER><EMAIL_ADDRESS>Appointment
Required, Dock or Forklift
When
you arrive at the Origin, please present the attached Bill of Lading and start
to haul the load.
If you have questions, please call or email your Cargo
Chief representative, Dan Wagner, at<PHONE_NUMBER> or<EMAIL_ADDRESS>Please
reply to this email and enter “Confirmed” so we know you are set to haul this
load.
Cargo
Chief


Task 1 40% Complete
Task 2 20% Complete
Task 3 60% Complete
Task 4 80% Complete
Example block-level help text here.
email@example.com


Logo Here
Make running a TFTP server as simple as clicking a button!
Current Connections: {{ data.conns }}


Plugin Information |
|---|
View Quality Gates on the plugin site for more information. |
The current version of this plugin may not be safe to use. Please review the following warnings before use:
This plugin will fail the build whenever the Quality Gates criteria in the Sonar analysis aren't met (the project Quality Gates status is different than "Passed").
Requirements
Jenkins
Jenkins version 1.532 or newer is required.
Sonar
Working with all the versions of Sonar.
Setup
1. Global Configuration
1.1. No Sonar Instance Configured
If there isn't any instance configured the Global Configuration will look like this:
And the plugin will be running with default Sonar Instance. Which contains the following values: URL='http//localhost:9000', Username='admin' and Password='admin'.
1.2. One Sonar Instance Configured
- Name - Specify the value of the name, so that is not empty. Configurations with duplicated values for the name will not be saved.
- SonarQube Server URL - Specify the URL of your Sonar instance URL format for HTTP protocol is any legal http address, e.g. http://myhost.com:9000
- SonarQube account login - Specify the username for your account on this instance of Sonar, otherwise Quality Gates Plugin won't be able to get the necessary data if anonymous access is disabled for your project. If not specified the default Sonar username will be used.
- SonarQube account password - Specify the password for your account on this instance of Sonar, otherwise Quality Gates Plugin won't be able to get the necessary data if anonymous access is disabled for your project. If not specified the default Sonar password will be used.
1.3. Two or more Sonar Instances Configured
If you have two or more configurations for Sonar Instances in the Global Configuration you will need to choose one of them in your job configuration.
2. Job Configuration
Quality Gates Plugin needs a SonarQube code analysis so it can check its Quality Gates status. In order to get the latest quality gates status from the most recent Sonar analysis, Quality Gates Plugin should be put below SonarQube plugin in the post-build step of the job if you use the older version of SonarQube analysis or if you use the Standalone SonarQube Analysis in the build step of the job just put our plugin in the post-build step.
2.1. No Sonar Instance in the Global Configuration
- When using the older SonarQube way of analysis in the post-build step:
Project Key - To get the Project Key go to your Sonar instance (login if necessary) and click on the project whose key you need. You will be redirected to an URL like this: 'http://myhost.:9000/overview?id=123'.
Another click on the project name will redirect you to the same view with the URL looking like this: 'http://localhost:9000/overview?id=com.company%3AMyProject'.
ex: 'com.company%3AMyProject' is your Project Key - When using the Standalone SonarQube Analysis as a build step: When using the Standalone SonarQube Analysis as a build step:
You define your own Project Key in the 'sonar-project.properties' file of your project or directly in the 'Analysis properties' textbox of the Standalone SonarQube Analysis
2.2. One Sonar Instance in the Global Configuration
- Project Key - same as above.
2.3. Two or more Sonar Instances in the Global Configuration
- Sonar instance 'Name' - Choose the configuration for the Sonar Instance that you want to associate with this build.
- Project Key - same as above.
Attachments:
Screenshot_2.png (image/png)
Screenshot_2.png (image/png)
Screenshot_1.png (image/png)
Screenshot_3.jpg (image/jpeg)
Screenshot_5.png (image/png)
Screenshot_6.png (image/png)
Screenshot_3.png (image/png)
1.jpg (image/jpeg)
image2018-1-26 10:23:5.png (image/png)
Sin título.png (image/png)


Ohio State's 2015 College Football Playoff National Champions roster map built with Leaflet and designed with Bootstrap. Application uses AngularJS for two way data-binding. View Application - View Source
Chase a hound dog through Oregon and explore the unique scenery. Along your journey, hints are provided to assist with the search. Help bring Lady home. Created using Leaflet and Bootstrap. View Application - View Source
Interpolation using Turf.js to visualize February's cold weather patterns. View Application - View Blog Post
Discover which states have had the highest percentage of storms resulting in injury/death (1996-2014). Application built using PostGIS and Leaflet. Data provided by NOAA. View Application - View Blog Post
ClassyBrew is an Open Source solution to bulding thematic maps and graphics. It uses proven statistical methods and color theory palettes to help you represent your data faster and more accurately. View Example - View Source
This application showcases Flickr images from every National Park in the U.S. Created in honor of National Park Week and Earth Day. Built using QGIS, Leaflet, Turf.js, jQuery, Bootstrap, Lightbox, and Flickr API. View Application - View Blog Post
Esri's Koop, ArcGIS API for JavaScript, Bootstrap Map JS, and new Smart Mapping functionality are used to represent various storm types as heat maps. Data provided by NOAA. View Application - View Source
Explore the 10 highest peaks of greater North America. This 360 degree virtual tour offers breathtaking views. Constructed using the new Esri JavaScript API 4.0 Beta 1. View Application - View Source
AGStoSHP.js is an open source library created to download ArcGIS Server Map and Feature Services into: Geoservices JSON, GeoJSON, and Shapefile formats. This allows developers and analysts to point the script at external services and save them on their local computers.View on GitHub


I am an experienced PHP developer and is learning front-end technology now.
I am an ambitious person with a Master of Information Technology Degree.
I am a quick learner and always willing to learn new techniques.
SkillsI am an experienced and passionate Web Developer.
Need a web developer for your new project? That's great! Give me a call or send me an email and I will get back to you as soon as possible!
0449 633 095


2020/2021 Senior¶
The problem¶
Construct a Numeral Hex Triangle according to the following rules. You will be given three positive integers:
s, a starting number;
d, a delta (the amount by which to increase each number in the triangle);
and r the number of rows.
The numbers s and d will be in hexadecimal.
1. The first row contains the number s.
2. Each of the next rows has one more number than the previous row.
3. Each number in the triangle is d more than the previous number in the triangle.
Solution 1¶
Sum all digits at the last row.
def sumHex(n):
s = 0
while n > 0:
s += n % 16;
n //= 16
return s
def sol1(s:str, d:str, r:str) -> str:
s = int(s, 16)
d = int(d, 16)
r = int(r, 10)
sr0 = s + r * (r - 1) // 2 * d
shex = 0
for i in range(r):
shex += sumHex(sr0 + i * d)
while shex >= 16:
shex = sumHex(shex)
return '{:X}'.format(shex)
See source of solution 1.
Solution 2¶
Lemma¶
In radix R, digit root of number N, \(D_R(N) \equiv N \pmod {R-1}\),
where \(\equiv\) is modular equivalence.
A digit root is the digits sum of N. If the sum has more than 1 digit, repeat sum the digits until only 1 digit.
Proof:
For a 2-digits R radix number n, \(n = R\cdot a + b\),
where \(a, b \in {0, 1, ..., R-1}\).
E.g. for hexadecimal digit root,
It’s obvious if a k-1 digit number \(n\) hold the property, the k digit number \(R \cdot a + n\) also hold the property.
Reference
The DigitSum of a Number and Its Remainder for Division by Nine, San José State University
def sol2(s: str, d: str, r: str) -> str:
s = int(s, 16)
d = int(d, 16)
r = int(r, 10)
sr0 = s + r * (r - 1) // 2 * d
sr = r * sr0 + r * (r - 1) // 2 * d
sr = sr % 15
return '{:X}'.format(15 if sr == 0 else sr)
AMC10 A, 2018, Problem 19¶
What if we only care about units digit?
Problem
A number m is randomly selected from the set \(\{11,13,15,17,19\}\), and a number n is randomly selected from \(\{1999, 2000, 2001, ..., 2018\}\). What is the probability that \(m ^ n\) has a units digit of 1?
- Hint
No matter what’s the product is, only the units digit’s product matter. So only the least digit is 1 can be the correct answer. Now the question can be simplified as finding how many of \(1^{1}, 1^{2}, \cdots\) or \(\require{cancel}\cancel{3^1}, \cancel{3^2}, \cancel{3^3}, 3^{4}, \cdots\), and so on.
LeetCode 258. Add Digits¶
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
Example: Input: 38 Output: 2 Explanation: The process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
Follow up: Could you do it without any loop/recursion in O(1) runtime?


Technical blog
In the first 5 weeks or "sprints" of the Dev Academy programme, I will be learning HTML, CSS and Javascript. You can review some of the concepts I've learnt in the following posts.
In the first 5 weeks or "sprints" of the Dev Academy programme, I will be learning HTML, CSS and Javascript. You can review some of the concepts I've learnt in the following posts.


|
Deuersprech-Kompilierer
Der originale Deuersprech-Kompilierer
|
Öffentliche Methoden | |
| parse_action_row () | |
| void | compute_default () |
Öffentliche, statische Methoden | |
| static int | size () |
Öffentliche Attribute | |
| parse_action | under_term [] |
| int | default_reduce |
Statische, geschützte Attribute | |
| static int | _size = 0 |
| static int | reduction_count [] = null |
This class represents one row (corresponding to one machine state) of the parse action table.
|
inline |
Simple constructor. Note: this should not be used until the number of terminals in the grammar has been established.
|
inline |
Compute the default (reduce) action for this row and store it in default_reduce. In the case of non-zero default we will have the effect of replacing all errors by that reduction. This may cause us to do erroneous reduces, but will never cause us to shift past the point of the error and never cause an incorrect parse. -1 will be used to encode the fact that no reduction can be used as a default (in which case error will be used).
|
inlinestatic |
Number of columns (terminals) in every row.
|
staticprotected |
Number of columns (terminals) in every row.
| int java_cup.parse_action_row.default_reduce |
Default (reduce) action for this row. -1 will represent default of error.
|
staticprotected |
Table of reduction counts (reused by compute_default()).
| parse_action java_cup.parse_action_row.under_term[] |
Actual action entries for the row.


after party
oh! there isn't any after party added yet.
gdg codelab
venue 4
vote
guru sorocaba #13
o bretão pub
view
add an after party


GEOG*3480
GIS and Spatial Analysis
Geospatial Data
Part 3: Data Collection
John Lindsay
Fall 2015
Readings
- Jensen and Jensen Chapter 3
Introduction
- If a GIS is a system for analyzing geospatial data, then we
must consider where we can acquire the data used by the GIS.
- We may classify the various data sources as in situ
and remote sensing data collection sources.
In situ Data Collection Methods
- GPS/Land surveying
- Ground-based sampling (census)
- Digitization of hard-copy data
Remotely Sensed Data Collection Methods
- Aerial photography
- Multispectral/hyperspectral
- Thermal infrared imaging
- LiDAR (laser scanning)
- Radar (active microwave)
- Sonar (used for bathymmetry)
Satellite Navigation Systems
Remotely Sensed Data Sources