@@ -113,20 +113,13 @@ const ARCHER = 4;
113113const HAND_CANNONEER = 5 ;
114114const ELITE_SKIRMISHER = 6 ;
115115const SKIRMISHER = 7 ;
116- const LONGBOWMAN = 8 ;
117- const MANGUDAI = 11 ;
118116const FISHING_SHIP = 13 ;
119117const TRADE_COG = 17 ;
120118const WAR_GALLEY = 21 ;
121119const CROSSBOWMAN = 24 ;
122- const TEUTONIC_KNIGHT = 25 ;
123120const BOMBARD_CANNON = 36 ;
124121const KNIGHT = 38 ;
125122const CAVALRY_ARCHER = 39 ;
126- const CATAPHRACT = 40 ;
127- const HUSKARL = 41 ;
128- const JANISSARY = 46 ;
129- const CHU_KO_NU = 73 ;
130123const MILITIA = 74 ;
131124const MAN_AT_ARMS = 75 ;
132125const LONG_SWORDSMAN = 77 ;
@@ -136,15 +129,10 @@ const MONK = 125;
136129const TRADE_CART = 128 ;
137130const SLINGER = 185 ;
138131const IMPERIAL_CAMEL_RIDER = 207 ;
139- const WOAD_RAIDER = 232 ;
140- const WAR_ELEPHANT = 239 ;
141132const LONGBOAT = 250 ;
142133const SCORPION = 279 ;
143134const MANGONEL = 280 ;
144- const THROWING_AXEMAN = 281 ;
145- const MAMELUKE = 282 ;
146135const CAVALIER = 283 ;
147- const SAMURAI = 291 ;
148136const CAMEL_RIDER = 329 ;
149137const HEAVY_CAMEL_RIDER = 330 ;
150138const TREBUCHET = 331 ;
@@ -162,95 +150,37 @@ const ARBALESTER = 492;
162150const DEMOLITION_SHIP = 527 ;
163151const HEAVY_DEMO_SHIP = 528 ;
164152const FIRE_SHIP = 529 ;
165- const ELITE_LONGBOWMAN = 530 ;
166- const ELITE_THROWING_AXEMAN = 531 ;
167153const FAST_FIRE_SHIP = 532 ;
168154const ELITE_LONGBOAT = 533 ;
169- const ELITE_WOAD_RAIDER = 534 ;
170155const GALLEY = 539 ;
171156const HEAVY_SCORPION = 542 ;
172157const TRANSPORT_SHIP = 545 ;
173158const LIGHT_CAVALRY = 546 ;
174159const SIEGE_RAM = 548 ;
175160const ONAGER = 550 ;
176- const ELITE_CATAPHRACT = 553 ;
177- const ELITE_TEUTONIC_KNIGHT = 554 ;
178- const ELITE_HUSKARL = 555 ;
179- const ELITE_MAMELUKE = 556 ;
180- const ELITE_JANISSARY = 557 ;
181- const ELITE_WAR_ELEPHANT = 558 ;
182- const ELITE_CHU_KO_NU = 559 ;
183- const ELITE_SAMURAI = 560 ;
184- const ELITE_MANGUDAI = 561 ;
185161const CHAMPION = 567 ;
186162const PALADIN = 569 ;
187163const SIEGE_ONAGER = 588 ;
188164const ELITE_CANNON_GALLEON = 691 ;
189- const BERSERK = 692 ;
190- const ELITE_BERSERK = 694 ;
191- const JAGUAR_WARRIOR = 725 ;
192- const ELITE_JAGUAR_WARRIOR = 726 ;
193165const EAGLE_SCOUT = 751 ;
194166const ELITE_EAGLE_WARRIOR = 752 ;
195167const EAGLE_WARRIOR = 753 ;
196- const TARKAN = 755 ;
197- const ELITE_TARKAN = 757 ;
198- const PLUMED_ARCHER = 763 ;
199- const ELITE_PLUMED_ARCHER = 765 ;
200- const CONQUISTADOR = 771 ;
201- const ELITE_CONQUISTADOR = 773 ;
202168const MISSIONARY = 775 ;
203- const WAR_WAGON = 827 ;
204- const ELITE_WAR_WAGON = 829 ;
205169const TURTLE_SHIP = 831 ;
206170const ELITE_TURTLE_SHIP = 832 ;
207- const GENOESE_CROSSBOWMAN = 866 ;
208- const ELITE_GENOESE_CROSSBOWMAN = 868 ;
209- const MAGYAR_HUSZAR = 869 ;
210- const ELITE_MAGYAR_HUSZAR = 871 ;
211171const ELEPHANT_ARCHER = 873 ;
212172const ELITE_ELEPHANT_ARCHER = 875 ;
213- const BOYAR = 876 ;
214- const ELITE_BOYAR = 878 ;
215- const KAMAYUK = 879 ;
216- const ELITE_KAMAYUK = 881 ;
217173const CONDOTTIERO = 882 ;
218- const ORGAN_GUN = 1001 ;
219- const ELITE_ORGAN_GUN = 1003 ;
220174const CARAVEL = 1004 ;
221175const ELITE_CARAVEL = 1006 ;
222- const CAMEL_ARCHER = 1007 ;
223- const ELITE_CAMEL_ARCHER = 1009 ;
224176const GENITOUR = 1010 ;
225177const ELITE_GENITOUR = 1012 ;
226- const GBETO = 1013 ;
227- const ELITE_GBETO = 1015 ;
228- const SHOTEL_WARRIOR = 1016 ;
229- const ELITE_SHOTEL_WARRIOR = 1018 ;
230178const FIRE_GALLEY = 1103 ;
231179const DEMOLITION_RAFT = 1104 ;
232180const SIEGE_TOWER = 1105 ;
233- const BALLISTA_ELEPHANT = 1120 ;
234- const ELITE_BALLISTA_ELEPHANT = 1122 ;
235- const KARAMBIT_WARRIOR = 1123 ;
236- const ELITE_KARAMBIT_WARRIOR = 1125 ;
237- const ARAMBAI = 1126 ;
238- const ELITE_ARAMBAI = 1128 ;
239- const RATTAN_ARCHER = 1129 ;
240- const ELITE_RATTAN_ARCHER = 1131 ;
241181const BATTLE_ELEPHANT = 1132 ;
242182const ELITE_BATTLE_ELEPHANT = 1134 ;
243183const IMPERIAL_SKIRMISHER = 1155 ;
244- const KONNIK = 1225 ;
245- const ELITE_KONNIK = 1227 ;
246- const KESHIK = 1228 ;
247- const ELITE_KESHIK = 1230 ;
248- const KIPCHAK = 1231 ;
249- const ELITE_KIPCHAK = 1233 ;
250- const LEITIS = 1234 ;
251- const ELITE_LEITIS = 1236 ;
252- const DISMOUNTED_KONNIK = 1252 ;
253- const DISMOUNTED_ELITE_KONNIK = 1253 ;
254184const KONNIK_2 = 1254 ;
255185const ELITE_KONNIK_2 = 1255 ;
256186const BATTERING_RAM = 1258 ;
@@ -259,17 +189,9 @@ const DRAGON_FIRE_SHIP = 1302;
259189const STEPPE_LANCER = 1370 ;
260190const ELITE_STEPPE_LANCER = 1372 ;
261191const XOLOTL_WARRIOR = 1570 ;
262- const COUSTILLIER = 1655 ;
263- const ELITE_COUSTILLIER = 1657 ;
264- const SERJEANT = 1658 ;
265- const ELITE_SERJEANT = 1659 ;
266192const DSERJEANT = 1660 ;
267193const ELITE_DSERJEANT = 1661 ;
268194const FLEMISHPIKEMAN = 1699 ;
269- const OBUCH = 1701 ;
270- const ELITE_OBUCH = 1703 ;
271- const HUSSITE_WAGON = 1704 ;
272- const ELITE_HUSSITE_WAGON = 1706 ;
273195const WINGED_HUSSAR = 1707 ;
274196const HOUFNICE = 1709 ;
275197const FOLWARK = 1734 ;
@@ -305,38 +227,23 @@ const LIU_BEI = 1966;
305227const JIAN_SWORDSMAN = 1974 ;
306228const SUN_JIAN = 1978 ;
307229
308- const YEOMEN = 3 ;
309- const EL_DORADO = 4 ;
310- const FUROR_CELTICA = 5 ;
311- const DRILL = 6 ;
312- const MAHOUTS = 7 ;
313230const TOWN_WATCH = 8 ;
314- const ZEALOTRY = 9 ;
315- const ARTILLERY = 10 ;
316- const CRENELLATIONS = 11 ;
317231const CROP_ROTATION = 12 ;
318232const HEAVY_PLOW = 13 ;
319233const HORSE_COLLAR = 14 ;
320234const GUILDS = 15 ;
321- const ANARCHY = 16 ;
322235const BANKING = 17 ;
323- const ATHEISM = 21 ;
324236const LOOM = 22 ;
325237const COINAGE = 23 ;
326- const GARLAND_WARS = 24 ;
327238const HUSBANDRY = 39 ;
328239const FAITH = 45 ;
329240const DEVOTION = 46 ;
330241const CHEMISTRY = 47 ;
331242const CARAVAN = 48 ;
332- const BERSERKERGANG = 49 ;
333243const MASONRY = 50 ;
334244const ARCHITECTURE = 51 ;
335- const ROCKETRY = 52 ;
336245const TREADMILL_CRANE = 54 ;
337246const GOLD_MINING = 55 ;
338- const KATAPARUTO = 59 ;
339- const LOGISTICA = 61 ;
340247const KEEP_TECH = 63 ;
341248const BOMBARD_TOWER_TECH = 64 ;
342249const GILLNETS = 65 ;
@@ -349,7 +256,6 @@ const PLATE_MAIL_ARMOR = 77;
349256const PLATE_BARDING_ARMOR = 80 ;
350257const SCALE_BARDING_ARMOR = 81 ;
351258const CHAIN_BARDING_ARMOR = 82 ;
352- const BEARDED_AXE = 83 ;
353259const BALLISTICS = 93 ;
354260const FEUDAL_AGE = 101 ;
355261const CASTLE_AGE = 102 ;
@@ -393,73 +299,26 @@ const PARTHIAN_TACTICS = 436;
393299const THUMB_RING = 437 ;
394300const THEOCRACY = 438 ;
395301const HERESY = 439 ;
396- const SUPREMACY = 440 ;
397302const HERBAL_MEDICINE = 441 ;
398- const SHINKICHON = 445 ;
399- const PERFUSION = 457 ;
400- const ATLATL = 460 ;
401- const WARWOLF = 461 ;
402- const GREAT_WALL = 462 ;
403- const CHIEFTAINS = 463 ;
404- const GREEK_FIRE = 464 ;
405- const STRONGHOLD = 482 ;
406- const MARAUDERS = 483 ;
407- const YASAMA = 484 ;
408- const OBSIDIAN_ARROWS = 485 ;
409- const PANOKSEON = 486 ;
410- const NOMADS = 487 ;
411- const KAMANDARAN = 488 ;
412- const IRONCLAD = 489 ;
413- const MADRASAH = 490 ;
414- const SIPAHI = 491 ;
415- const INQUISITION = 492 ;
416- const CHIVALRY = 493 ;
417- const PAVISE = 494 ;
418- const SILK_ROAD = 499 ;
419- const SULTANS = 506 ;
420- const SHATAGNI = 507 ;
421- const ORTHODOXY = 512 ;
422- const DRUZHINA = 513 ;
423- const CORVINIAN_ARMY = 514 ;
424- const RECURVE_BOW = 515 ;
425- const ANDEAN_SLING = 516 ;
426- const FABRIC_SHIELDS = 517 ;
427- const CARRACK = 572 ;
428- const ARQUEBUS = 573 ;
429- const ROYAL_HEIRS = 574 ;
430- const TORSION_ENGINES = 575 ;
431- const TIGUI = 576 ;
432- const FARIMBA = 577 ;
433- const KASBAH = 578 ;
434- const MAGHRABI_CAMELS = 579 ;
435303const ARSON = 602 ;
436304const ARROWSLITS = 608 ;
437- const TUSK_SWORDS = 622 ;
438- const DOUBLE_CROSSBOW = 623 ;
439- const THALASSOCRACY = 624 ;
440- const FORCED_LEVY = 625 ;
441- const HOWDAH = 626 ;
442- const MANIPUR_CAVALRY = 627 ;
443- const CHATRAS = 628 ;
444- const PAPER_MONEY = 629 ;
445- const STIRRUPS = 685 ;
446- const BAGAINS = 686 ;
447- const SILK_ARMOR = 687 ;
448- const TIMURID_SIEGECRAFT = 688 ;
449- const STEPPE_HUSBANDRY = 689 ;
450- const CUMAN_MERCENARIES = 690 ;
451- const HILL_FORTS = 691 ;
452- const TOWER_SHIELDS = 692 ;
453- const SUPPLIES = 716 ;
454- const BURGUNDIAN_VINEYARDS = 754 ;
455- const FLEMISH_REVOLUTION = 755 ;
456- const FIRST_CRUSADE = 756 ;
457- const SCUTAGE = 757 ;
458305const GAMBESONS = 875 ;
459306const DOMESTICATION = 1014 ;
460307const PASTORALISM = 1013 ;
461308const TRANSHUMANCE = 1012 ;
462309
310+ // placeholders for upcoming naval rework
311+ const FISHING_LINES = - 1 ;
312+ const HULK = - 2 ;
313+ const WAR_HULK = - 3 ;
314+ const CARRACK = - 4 ;
315+ const MEDIUM_WARSHIPS = - 5 ;
316+ const HEAVY_WARSHIPS = - 6 ;
317+ const CLINKER_CONSTRUCTION = - 7 ;
318+ const CARVEL_HULL = - 8 ;
319+ const SIPHONS = - 9 ;
320+ const INCENDIARIES = - 10 ;
321+
463322const BUILDING_INDEX = [
464323 ARCHERY_RANGE ,
465324 BARRACKS ,
@@ -724,6 +583,7 @@ function getName(id, itemtype) {
724583 if ( id . toString ( ) . startsWith ( 'UNIQUE' ) ) {
725584 return id ;
726585 }
586+ if ( id < 0 ) return 'Placeholder' ;
727587 const languageNameId = data [ 'data' ] [ itemtype ] [ id ] [ 'LanguageNameId' ] ;
728588 return data [ 'strings' ] [ languageNameId ] ;
729589}
@@ -902,31 +762,34 @@ function getDefaultTree() {
902762 docklane . rows . dark_1 . push ( building ( DOCK ) ) ;
903763 docklane . rows . dark_2 . push ( unit ( FISHING_SHIP ) ) ;
904764 docklane . rows . dark_2 . push ( unit ( TRANSPORT_SHIP ) ) ;
765+ docklane . rows . feudal_1 . push ( tech ( FISHING_LINES ) ) ;
905766 docklane . rows . feudal_1 . push ( unit ( FIRE_GALLEY ) ) ;
906- docklane . rows . feudal_1 . push ( unit ( TRADE_COG ) ) ;
907- docklane . rows . feudal_1 . push ( unit ( DEMOLITION_RAFT ) ) ;
767+ docklane . rows . feudal_1 . push ( unit ( HULK ) ) ;
908768 docklane . rows . feudal_1 . push ( unit ( GALLEY ) ) ;
909- docklane . rows . castle_1 . push ( unit ( FIRE_SHIP ) ) ;
769+ docklane . rows . feudal_1 . push ( unit ( DEMOLITION_RAFT ) ) ;
770+ docklane . rows . feudal_1 . push ( unit ( TRADE_COG ) ) ;
910771 docklane . rows . castle_1 . push ( tech ( GILLNETS ) ) ;
911- docklane . rows . castle_1 . push ( unit ( DEMOLITION_SHIP ) ) ;
772+ docklane . rows . castle_1 . push ( unit ( FIRE_SHIP ) ) ;
773+ docklane . rows . castle_1 . push ( unit ( WAR_HULK ) ) ;
912774 docklane . rows . castle_1 . push ( unit ( WAR_GALLEY ) ) ;
775+ docklane . rows . castle_1 . push ( unit ( DEMOLITION_SHIP ) ) ;
913776 docklane . rows . castle_1 . push ( uniqueunit ( TURTLE_SHIP ) ) ;
914777 docklane . rows . castle_1 . push ( uniqueunit ( LONGBOAT ) ) ;
915778 docklane . rows . castle_1 . push ( uniqueunit ( CARAVEL ) ) ;
916- docklane . rows . castle_1 . push ( tech ( CAREENING ) ) ;
917- docklane . rows . imperial_1 . push ( unit ( FAST_FIRE_SHIP ) ) ;
779+ docklane . rows . castle_1 . push ( tech ( MEDIUM_WARSHIPS ) ) ;
918780 docklane . rows . imperial_1 . push ( uniqueunit ( DRAGON_FIRE_SHIP ) ) ;
919- docklane . rows . imperial_1 . push ( unit ( HEAVY_DEMO_SHIP ) ) ;
781+ docklane . rows . imperial_1 . push ( unit ( FAST_FIRE_SHIP ) ) ;
782+ docklane . rows . imperial_1 . push ( unit ( CARRACK ) ) ;
920783 docklane . rows . imperial_1 . push ( unit ( GALLEON ) ) ;
784+ docklane . rows . imperial_1 . push ( unit ( HEAVY_DEMO_SHIP ) ) ;
921785 docklane . rows . imperial_1 . push ( unit ( CANNON_GALLEON ) ) ;
922786 docklane . rows . imperial_1 . push ( uniqueunit ( ELITE_TURTLE_SHIP ) ) ;
923787 docklane . rows . imperial_1 . push ( uniqueunit ( ELITE_LONGBOAT ) ) ;
924788 docklane . rows . imperial_1 . push ( uniqueunit ( ELITE_CARAVEL ) ) ;
925- docklane . rows . imperial_1 . push ( tech ( DRY_DOCK ) ) ;
789+ docklane . rows . imperial_1 . push ( tech ( HEAVY_WARSHIPS ) ) ;
926790 docklane . rows . imperial_2 . push ( unit ( DROMON ) ) ;
927791 docklane . rows . imperial_2 . push ( uniqueunit ( LOU_CHUAN ) ) ;
928792 docklane . rows . imperial_2 . push ( uniqueunit ( THIRISADAI ) ) ;
929- docklane . rows . imperial_2 . push ( tech ( SHIPWRIGHT ) ) ;
930793 docklane . rows . imperial_2 . push ( unit ( ELITE_CANNON_GALLEON ) ) ;
931794 tree . lanes . push ( docklane ) ;
932795
@@ -945,12 +808,19 @@ function getDefaultTree() {
945808 universitylane . rows . castle_2 . push ( tech ( GUARD_TOWER_TECH ) ) ;
946809 universitylane . rows . castle_2 . push ( tech ( HEATED_SHOT ) ) ;
947810 universitylane . rows . castle_2 . push ( tech ( MURDER_HOLES ) ) ;
811+ universitylane . rows . castle_2 . push ( tech ( CAREENING ) ) ;
812+ universitylane . rows . castle_2 . push ( tech ( CLINKER_CONSTRUCTION ) ) ;
813+ universitylane . rows . castle_2 . push ( tech ( SIPHONS ) ) ;
948814 universitylane . rows . castle_2 . push ( tech ( TREADMILL_CRANE ) ) ;
949815 universitylane . rows . imperial_1 . push ( tech ( ARCHITECTURE ) ) ;
950816 universitylane . rows . imperial_1 . push ( tech ( CHEMISTRY ) ) ;
951817 universitylane . rows . imperial_1 . push ( tech ( SIEGE_ENGINEERS ) ) ;
952818 universitylane . rows . imperial_1 . push ( tech ( KEEP_TECH ) ) ;
953819 universitylane . rows . imperial_1 . push ( tech ( ARROWSLITS ) ) ;
820+ universitylane . rows . imperial_1 . push ( tech ( SHIPWRIGHT ) ) ;
821+ universitylane . rows . imperial_1 . push ( tech ( DRY_DOCK ) ) ;
822+ universitylane . rows . imperial_1 . push ( tech ( CARVEL_HULL ) ) ;
823+ universitylane . rows . imperial_1 . push ( tech ( INCENDIARIES ) ) ;
954824 universitylane . rows . imperial_2 . push ( tech ( BOMBARD_TOWER_TECH ) ) ;
955825 tree . lanes . push ( universitylane ) ;
956826
@@ -1197,13 +1067,16 @@ function getConnections() {
11971067 [ b ( DOCK ) , u ( GALLEY ) ] ,
11981068 [ u ( GALLEY ) , u ( WAR_GALLEY ) ] ,
11991069 [ u ( WAR_GALLEY ) , u ( GALLEON ) ] ,
1200- [ b ( DOCK ) , t ( CAREENING ) ] ,
1201- [ t ( CAREENING ) , t ( DRY_DOCK ) ] ,
12021070 [ b ( DOCK ) , b ( FISH_TRAP ) ] ,
1071+ [ t ( FISHING_LINES ) , t ( GILLNETS ) ] ,
1072+ [ b ( DOCK ) , u ( HULK ) ] ,
1073+ [ u ( HULK ) , u ( WAR_HULK ) ] ,
1074+ [ u ( WAR_HULK ) , u ( CARRACK ) ] ,
12031075 [ u ( FIRE_GALLEY ) , u ( FIRE_SHIP ) ] ,
12041076 [ u ( FIRE_SHIP ) , u ( FAST_FIRE_SHIP ) ] ,
12051077 [ u ( FIRE_SHIP ) , u ( DRAGON_FIRE_SHIP ) ] ,
1206- [ b ( DOCK ) , u ( CANNON_GALLEON ) ] ,
1078+ [ b ( DOCK ) , t ( MEDIUM_WARSHIPS ) ] ,
1079+ [ t ( MEDIUM_WARSHIPS ) , t ( HEAVY_WARSHIPS ) ] ,
12071080 [ u ( CANNON_GALLEON ) , u ( ELITE_CANNON_GALLEON ) ] ,
12081081 [ b ( WATCH_TOWER ) , b ( GUARD_TOWER ) ] ,
12091082 [ b ( GUARD_TOWER ) , b ( KEEP ) ] ,
@@ -1285,6 +1158,12 @@ function getConnections() {
12851158 [ t ( GUARD_TOWER_TECH ) , t ( KEEP_TECH ) ] ,
12861159 [ b ( UNIVERSITY ) , t ( HEATED_SHOT ) ] ,
12871160 [ b ( UNIVERSITY ) , t ( MURDER_HOLES ) ] ,
1161+ [ b ( UNIVERSITY ) , t ( CAREENING ) ] ,
1162+ [ t ( CAREENING ) , t ( DRY_DOCK ) ] ,
1163+ [ b ( UNIVERSITY ) , t ( CLINKER_CONSTRUCTION ) ] ,
1164+ [ t ( CLINKER_CONSTRUCTION ) , t ( CARVEL_HULL ) ] ,
1165+ [ b ( UNIVERSITY ) , t ( SIPHONS ) ] ,
1166+ [ t ( SIPHONS ) , t ( INCENDIARIES ) ] ,
12881167 [ b ( UNIVERSITY ) , t ( TREADMILL_CRANE ) ] ,
12891168 [ t ( CHEMISTRY ) , t ( BOMBARD_TOWER_TECH ) ] ,
12901169 [ b ( MINING_CAMP ) , t ( STONE_MINING ) ] ,
0 commit comments