aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/cfg/server/persistent_player_data_version_231.pdef
blob: c4af215ab6144dad0c26a6b01fbce21ab7babd81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
int initializedVersion
int announcementVersionSeen

int xp
int previousXP
int credits
int xp_match[20]
int xp_count[20]

int netWorth

bool        matchWin
bool        matchScoreEvent
bool        matchComplete
bool        matchSquadBonus

bool showGameSummary
bool regenShowNew
bool spawnAsTitan
bool haveSeenCustomCoop
bool factionGiftsFixed

bool isACheater
bool spendDoubleColiseumTickets

int privateMatchState

int playlistShuffle_seed
bool playlistShuffle_seedFlip
int playlistShuffle_curIndex

// we don't use titanClasses for this because it doesn't contain an entry that would equal null/none
string{16} lastFDTitanRef
int lastFDDifficulty

bool ultimateEdition

//#############################
// LISTS OF THINGS IN THE GAME
//#############################

//All game modes in the game, including riffs.
$ENUM_START gameModes
	tdm
	cp
	at
	ctf
	lts
	ps
	ffa
	coliseum
	aitdm
	speedball
	mfd
	ttdm
	fra
	fd
$ENUM_END

// enum used for stats. mp_box and mp_test_engagement_range are
// in this list so I can test stat tracking in those maps
// add new maps to the bottom of this list...DO NOT CHANGE ORDER!!
$ENUM_START maps
	mp_box
	mp_test_engagement_range

	// R2
	mp_forwardbase_kodai
	mp_grave
	mp_homestead
    mp_thaw
	mp_black_water_canal
	mp_eden
	mp_drydock
	mp_crashsite3
	mp_complex3
	mp_coliseum

	// R2 DLC
	mp_angel_city
	mp_colony02
	mp_relic02
	mp_glitch
	mp_lf_stacks
	mp_lf_meadow
	mp_lf_deck
	mp_lf_traffic
	mp_lf_township
	mp_lf_uma
	mp_coliseum_column
	mp_wargames
	mp_rise
$ENUM_END

$ENUM_START loadoutWeaponsAndAbilities
	NULL
	melee_pilot_emptyhanded
	melee_pilot_sword
    melee_titan_sword
    melee_titan_sword_aoe
    mp_ability_cloak
    mp_ability_grapple
    mp_ability_heal
    mp_ability_holopilot
    mp_ability_phase_rewind
    mp_ability_shifter
    mp_titanability_ammo_swap
    mp_titanability_basic_block
    mp_titanability_gun_shield
    mp_titanability_hover
    mp_titanability_laser_trip
    mp_titanability_particle_wall
    mp_titanability_phase_dash
    mp_titanability_power_shot
    mp_titanability_slow_trap
    mp_titanability_smoke
    mp_titanability_sonar_pulse
    mp_titanability_tether_trap
    mp_titanability_rearm
    mp_titancore_flame_wave
    mp_titancore_flight_core
    mp_titancore_laser_cannon
    mp_titancore_salvo_core
    mp_titancore_shift_core
    mp_titancore_siege_mode
    mp_titancore_upgrade
    mp_titanweapon_40mm
    mp_titanweapon_arc_wave
    mp_titanweapon_flame_wall
    mp_titanweapon_heat_shield
    mp_titanweapon_homing_rockets
    mp_titanweapon_dumbfire_rockets
    mp_titanweapon_laser_lite
    mp_titanweapon_leadwall
    mp_titanweapon_meteor
    mp_titanweapon_particle_accelerator
    mp_titanweapon_predator_cannon
    mp_titanweapon_rocket_launcher
    mp_titanweapon_rocketeer_rocketstream
    mp_titanweapon_salvo_rockets
    mp_titanweapon_sniper
    mp_titanweapon_sticky_40mm
    mp_titanweapon_stun_laser
    mp_titanweapon_tracker_rockets
    mp_titanweapon_vortex_shield
    mp_titanweapon_vortex_shield_ion
    mp_titanweapon_xo16
    mp_titanweapon_xo16_shorty
    mp_titanweapon_xo16_vanguard
    mp_weapon_alternator_smg
    mp_weapon_arc_launcher
    mp_weapon_autopistol
    mp_weapon_car
    mp_weapon_defender
    mp_weapon_deployable_cover
    mp_weapon_dmr
    mp_weapon_doubletake
    mp_weapon_epg
    mp_weapon_esaw
    mp_weapon_frag_drone
    mp_weapon_frag_grenade
    mp_weapon_g2
    mp_weapon_grenade_electric_smoke
    mp_weapon_grenade_emp
    mp_weapon_grenade_gravity
    mp_weapon_grenade_sonar
    mp_weapon_hemlok
    mp_weapon_hemlok_smg
    mp_weapon_lmg
    mp_weapon_lstar
    mp_weapon_mastiff
    mp_weapon_mgl
    mp_weapon_pulse_lmg
    mp_weapon_r97
    mp_weapon_rocket_launcher
    mp_weapon_rspn101
    mp_weapon_rspn101_og
    mp_weapon_satchel
    mp_weapon_semipistol
    mp_weapon_shotgun
    mp_weapon_shotgun_pistol
    mp_weapon_smart_pistol
    mp_weapon_smr
    mp_weapon_sniper
    mp_weapon_softball
    mp_weapon_thermite_grenade
    mp_weapon_vinson
    mp_weapon_wingman
	mp_weapon_wingman_n
	melee_titan_punch_ion
	melee_titan_punch_legion
	melee_titan_punch_northstar
	melee_titan_punch_scorch
	melee_titan_punch_tone
	melee_titan_punch_vanguard
$ENUM_END

$ENUM_START pilotMod
	NULL
	aog
	automatic_fire
	burn_mod_rspn101
	burn_mod_g2
	burn_mod_hemlok
	burn_mod_vinson
	burn_mod_lstar
	burn_mod_car
	burn_mod_r97
	burn_mod_alternator_smg
	burn_mod_lmg
	burn_mod_esaw
	burn_mod_pulse_lmg
	burn_mod_sniper
	burn_mod_dmr
	burn_mod_doubletake
	burn_mod_mastiff
	burn_mod_shotgun
	burn_mod_softball
	burn_mod_shotgun_pistol
	burn_mod_autopistol
	burn_mod_wingman
	burn_mod_semipistol
	burn_mod_smart_pistol
	burn_mod_emp_grenade
	burn_mod_frag_grenade
	burn_mod_satchel
	burn_mod_proximity_mine
	burn_mod_grenade_electric_smoke
	burn_mod_grenade_gravity
	burn_mod_thermite_grenade
	burn_mod_defender
	burn_mod_rocket_launcher
	burn_mod_arc_launcher
	burn_mod_smr
	burn_mod_mgl
	burst
	enhanced_targeting
	extended_ammo
	fast_lock
	fast_reload
	guided_missile
	hcog
	high_density
	holosight
	iron_sights
	long_fuse
	powered_magnets
	scope_4x
	scope_6x
	scope_8x
	scope_10x
	scope_12x
	silencer
	sniper_assist
	stabilizer
	single_shot
	slammer
	stabilized_warhead
	tank_buster
	amped_wall
	short_shift
	burn_mod_epg
	ricochet
	ar_trajectory
	redline_sight
	threat_scope
	smart_lock
	pro_screen
	delayed_shot
	pas_run_and_gun
	tactical_cdr_on_kill
	pas_fast_ads
	pas_fast_swap
	pas_fast_reload
	jump_kit
	quick_charge
	rocket_arena
$ENUM_END

$ENUM_START titanClasses
	ion
	scorch
	ronin
	tone
	northstar
	legion
	vanguard
$ENUM_END

$ENUM_START titanMod
	NULL
	accelerator
	afterburners
	arc_triple_threat
	burn_mod_titan_40mm
	burn_mod_titan_arc_cannon
	burn_mod_titan_sniper
	burn_mod_titan_triple_threat
	burn_mod_titan_xo16
	burn_mod_titan_dumbfire_rockets
	burn_mod_titan_homing_rockets
	burn_mod_titan_salvo_rockets
	burn_mod_titan_shoulder_rockets
	burn_mod_titan_vortex_shield
	burn_mod_titan_smoke
	burn_mod_titan_particle_wall
	burst
	capacitor
	extended_ammo
	fast_lock
	fast_reload
	instant_shot
	overcharge
	quick_shot
	rapid_fire_missiles
	stryder_sniper
$ENUM_END

$ENUM_START pilotPassive
	NULL
	pas_stealth_movement
	pas_ordnance_pack
	pas_power_cell
	pas_wallhang
	pas_fast_health_regen
	pas_minimap_ai
	pas_longer_bubble
	pas_run_and_gun
	pas_dead_mans_trigger
	pas_wall_runner
	pas_fast_hack
	pas_cloaked_wallrun
	pas_cloaked_wallhang
	pas_smoke_sight
	pas_fast_embark
	pas_cdr_on_kill
	pas_at_hunter
	pas_ordnance_beam
	pas_fast_rodeo
	pas_phase_eject
	pas_ads_hover
	pas_enemy_death_icons
	pas_off_the_grid
$ENUM_END

$ENUM_START pilotSuit
	medium
	geist
	stalker
	light
	heavy
	grapple
	nomad
$ENUM_END

$ENUM_START pilotRace
	race_human_male
	race_human_female
$ENUM_END

$ENUM_START pilotExecution
	execution_neck_snap
	execution_face_stab
	execution_backshot
	execution_combo
	execution_knockout
	execution_telefrag
	execution_stim
	execution_grapple
	execution_pulseblade
	execution_random
	execution_cloak
	execution_holopilot
	execution_ampedwall
$ENUM_END


$ENUM_START titanExecution
	execution_ion
	execution_ion_prime
	execution_tone
	execution_tone_prime
	execution_ronin
	execution_ronin_prime
	execution_northstar
	execution_northstar_prime
	execution_legion
	execution_legion_prime
	execution_vanguard
	execution_scorch
	execution_scorch_prime
	execution_random_0
	execution_random_1
	execution_random_2
	execution_random_3
	execution_random_4
	execution_random_5
	execution_random_6
$ENUM_END

$ENUM_START titanPassive
	NULL
	pas_enhanced_titan_ai
	pas_auto_eject
	pas_dash_recharge
	pas_defensive_core
	pas_shield_regen
	pas_assault_reactor
	pas_hyper_core
	pas_anti_rodeo
	pas_build_up_nuclear_core
	pas_offensive_autoload
	pas_offensive_hitnrun
	pas_offensive_regen
	pas_defensive_tacload
	pas_defensive_quickdash
	pas_defensive_domeshield
	pas_mobility_dash_capacity
	pas_warpfall
	pas_bubbleshield
	pas_ronin_weapon
	pas_northstar_weapon
	pas_ion_weapon
	pas_tone_weapon
	pas_scorch_weapon
	pas_legion_weapon
	pas_ion_tripwire
	pas_ion_vortex
	pas_ion_lasercannon
	pas_tone_rockets
	pas_tone_sonar
	pas_tone_wall
	pas_ronin_arcwave
	pas_ronin_phase
	pas_ronin_swordcore
	pas_northstar_cluster
	pas_northstar_trap
	pas_northstar_flightcore
	pas_scorch_firewall
	pas_scorch_shield
	pas_scorch_selfdmg
	pas_legion_spinup
	pas_legion_gunshield
	pas_legion_smartcore
	pas_ion_weapon_ads
	pas_tone_burst
	pas_legion_chargeshot
	pas_ronin_autoshift
	pas_northstar_optics
	pas_scorch_flamecore
	pas_vanguard_coremeter
	pas_vanguard_shield
	pas_vanguard_rearm
	pas_vanguard_doom
	pas_vanguard_core1
	pas_vanguard_core2
	pas_vanguard_core3
	pas_vanguard_core4
	pas_vanguard_core5
	pas_vanguard_core6
	pas_vanguard_core7
	pas_vanguard_core8
	pas_vanguard_core9
$ENUM_END

$ENUM_START titanIsPrimeTitan //Really should be bool, but script for loadouts is not easily set up to handle bools unfortunately...
	titan_is_not_prime
	titan_is_prime
$ENUM_END

$ENUM_START faction
	faction_apex
	faction_64
	faction_vinson
	faction_marauder
	faction_aces
	faction_ares
	faction_marvin
$ENUM_END

// This entire thing is legacy support for a DLC7 menu bug
$ENUM_START ownedEntitlements
	ET_DLC7_WEAPON_BUNDLE // BUNDLE MUST BE FIRST!!!!
	ET_DLC7_R201_WARPAINT
	ET_DLC7_G2A5_WARPAINT
	ET_DLC7_FLATLINE_WARPAINT
	ET_DLC7_CAR_WARPAINT
	ET_DLC7_ALTERNATOR_WARPAINT
	ET_DLC7_EVA8_WARPAINT
	ET_DLC7_WINGMAN_WARPAINT
	ET_DLC7_ARCHER_WARPAINT
$ENUM_END

//######################
//		LOADOUTS
//######################

$STRUCT_START spawnLoadout
	int		index
$STRUCT_END

$STRUCT_START pilotLoadout
	string{42}					name
	pilotSuit 					suit
	pilotRace					race
	pilotExecution 				execution
	loadoutWeaponsAndAbilities	primary
	pilotMod					primaryAttachment
	pilotMod					primaryMod1
	pilotMod					primaryMod2
	pilotMod					primaryMod3
	loadoutWeaponsAndAbilities	secondary
	pilotMod					secondaryMod1
	pilotMod					secondaryMod2
	pilotMod					secondaryMod3
	loadoutWeaponsAndAbilities	weapon3
	pilotMod					weapon3Mod1
	pilotMod					weapon3Mod2
	pilotMod					weapon3Mod3
	loadoutWeaponsAndAbilities	ordnance
	pilotPassive				passive1
	pilotPassive				passive2
	int                         skinIndex
	int                         camoIndex
	int                         primarySkinIndex
	int                         primaryCamoIndex
	int                         secondarySkinIndex
	int                         secondaryCamoIndex
	int                         weapon3SkinIndex
	int                         weapon3CamoIndex
$STRUCT_END

$STRUCT_START titanLoadout
	string{42}					name // TODO: No need for this in persistent data any more
	titanClasses				titanClass
	titanMod					primaryMod
	loadoutWeaponsAndAbilities	special
	loadoutWeaponsAndAbilities	antirodeo
	titanPassive				passive1
	titanPassive				passive2
	titanPassive				passive3
	titanPassive				passive4
	titanPassive				passive5
	titanPassive				passive6
	titanExecution 				titanExecution
	int                         skinIndex
	int                         camoIndex
	int                         decalIndex
	int                         primarySkinIndex
	int                         primaryCamoIndex
	titanIsPrimeTitan           isPrime //Really should be bool, but script for loadouts is not easily set up to handle bools unfortunately...
	int                         primeSkinIndex
	int                         primeCamoIndex
	int                         primeDecalIndex
	int                         showArmBadge
$STRUCT_END

$STRUCT_START recentUnlock
	int                         refGuid
	int                         parentRefGuid
	int							count
$STRUCT_END

int randomColiseumUnlocks
int randomPlayerLevelUnlocks
int randomTitanLevelUnlocks[titanClasses]
int randomWeaponLevelUnlocks[loadoutWeaponsAndAbilities]
int randomFactionLevelUnlocks[faction]

int doubleXP
int coliseumTickets
int coliseumWinStreak
int coliseumBestStreak
int coliseumTotalWins
int coliseumTotalLosses

recentUnlock recentUnlocks[10]

bool hasBeenIntroducedToComms
int lastCommsUseDate
int numTimesUsedComms
bool custom_emoji_initialized
int custom_emoji[4]

int burnmeterSlot

$STRUCT_START pveData
	int version
	int currency
	int currencyInLatestMatch
	int tacticalUnlocks[6]
	int feathersForMap[maps]
$STRUCT_END
pveData pve

faction factionChoice
faction enemyFaction

bool persistentRewards[32]
int consumableRewards[32]

spawnLoadout pilotSpawnLoadout
spawnLoadout titanSpawnLoadout

pilotLoadout activePilotLoadout
titanLoadout activeTitanLoadout
int activeTitanLoadoutIndex

pilotLoadout pilotLoadouts[10]
titanLoadout titanLoadouts[10]

bool pinTrackedEntitlements[ownedEntitlements]
bool newPinTrackedEntitlements[ownedEntitlements]

$ENUM_START unlockRefs
	edit_pilots // these two must come first
	edit_titans

	pilot_custom_loadout_1
	pilot_custom_loadout_2
	pilot_custom_loadout_3
	pilot_custom_loadout_4
	pilot_custom_loadout_5

	titan_custom_loadout_1
	titan_custom_loadout_2
	titan_custom_loadout_3
	titan_custom_loadout_4
	titan_custom_loadout_5

	burn_card_slot_1
	burn_card_slot_2
	burn_card_slot_3

	burn_card_pack_1
	burn_card_pack_2
	burn_card_pack_3
	burn_card_pack_4
	burn_card_pack_5

	challenges
$ENUM_END

//######################
//		BURN CARDS
//######################

$ENUM_START burnCard
	NULL
	bc_conscription
	bc_double_xp
	bc_free_xp
	bc_fast_cooldown1
	bc_fast_cooldown2
	bc_super_stim
	bc_super_cloak
	bc_super_sonar
	bc_summon_ogre
	bc_cloak_forever
	bc_stim_forever
	bc_sonar_forever
	bc_summon_stryder
	bc_spectre_virus
	bc_play_spectre
	bc_double_agent
	bc_minimap
	bc_summon_atlas
	bc_megaturrets
	bc_summon_dogfighter
	bc_wifi_spectre_hack
	bc_nuclear_core
	bc_core_charged
	bc_smart_pistol_m2
	bc_r97_m2
	bc_rspn101_m2
	bc_dmr_m2
	bc_shotgun_m2
	bc_lmg_m2
	bc_g2_m2
	bc_car_m2
	bc_hemlok_m2
	bc_sniper_m2
	bc_smr_m2
	bc_mgl_m2
	bc_defender_m2
	bc_rocket_launcher_m2
	bc_semipistol_m2
	bc_autopistol_m2
	bc_wingman_m2
	bc_satchel_m2
	bc_frag_m2
	bc_arc_m2
	bc_prox_m2
	bc_pilot_warning
	bc_rematch
	bc_minimap_scan
	bc_free_build_time_1
	bc_free_build_time_2
	bc_fast_build_1
	bc_fast_build_2
	bc_hunt_soldier
	bc_hunt_spectre
	bc_hunt_titan
	bc_hunt_pilot
	bc_auto_sonar
	bc_fast_movespeed
	bc_auto_refill
	bc_dice_ondeath
	bc_titan_40mm_m2
	bc_titan_arc_cannon_m2
	bc_titan_rocket_launcher_m2
	bc_titan_sniper_m2
	bc_titan_triple_threat_m2
	bc_titan_xo16_m2
	bc_titan_dumbfire_missile_m2
	bc_titan_homing_rockets_m2
	bc_titan_salvo_rockets_m2
	bc_titan_shoulder_rockets_m2
	bc_titan_vortex_shield_m2
	bc_titan_electric_smoke_m2
	bc_titan_shield_wall_m2
	bc_titan_melee_m2
	bc_extra_dash
	bc_lstar_m2
	bc_mastiff_m2
	bc_vinson_m2
$ENUM_END


$STRUCT_START struct_activeBurnCardData
	burnCard 	cardRef
	burnCard	lastCardRef
	bool 		clearOnStart // player has used this match long burn card
$STRUCT_END

$STRUCT_START struct_historyBurnCardData
	int		collected
	int		spent
$STRUCT_END

$STRUCT_START struct_blackMarketBurnCardUpgrades
	burnCard cardRef
$STRUCT_END

int activeBCID

int activeCallingCardIndex
int activeCallsignIconIndex
int activeCallsignIconStyleIndex

int gen // as in, what generation player?


//#########################
// Faction XP
//#########################

int factionXP[faction]
int previousFactionXP[faction]

//#########################
// Titan XP
//#########################

int titanXP[titanClasses]
int previousTitanXP[titanClasses]

int fdTitanXP[titanClasses]
int fdPreviousTitanXP[titanClasses]

int titanFDUnlockPoints[titanClasses]
int previousFDUnlockPoints[titanClasses]

int fd_match[20]
int fd_count[20]
int titanClassLockState[titanClasses]

int fdTutorialBits
int fdPlaylistBits

//################################################
// CHAD'S STAT TRACKING STUFF - DON'T MESS WIT IT
//################################################


$STRUCT_START sMapStats
	int gamesJoined[gameModes]
	int gamesCompleted[gameModes]
	int gamesWon[gameModes]
	int gamesLost[gameModes]
	int topPlayerOnTeam[gameModes]
	int top3OnTeam[gameModes]
	float hoursPlayed[gameModes]
	int timesScored100AttritionPoints_byMap
	int winsByDifficulty[5]
	int matchesByDifficulty[5]
	int perfectMatchesByDifficulty[5]
$STRUCT_END

$STRUCT_START sGameStats
	int modesPlayed[gameModes]
	int previousModesPlayed[gameModes]
	int modesWon[gameModes]
	int mvp_total
	int gamesCompletedTotal
	int gamesWonTotal
	int gamesWonAsIMC
	int gamesWonAsMilitia
	int gamesCompletedAsIMC
	int gamesCompletedAsMilitia
	int pvpKills[gameModes]
	int timesKillDeathRatio2to1[gameModes]
	int timesKillDeathRatio2to1_pvp[gameModes]
	int timesScored100AttritionPoints_total
$STRUCT_END

$STRUCT_START sHoursPlayed
	float total
	float asTitan[titanClasses]
	float asPilot
	float asTitanTotal
	float dead
	float wallhanging
	float wallrunning
	float inAir
$STRUCT_END

$STRUCT_START sMilesTraveled
	float total
	float asTitan[titanClasses]
	float asPilot
	float asTitanTotal
	float wallrunning
	float inAir
	float ziplining
	float onFriendlyTitan
	float onEnemyTitan
$STRUCT_END

$STRUCT_START sWeaponStats
	float hoursUsed
	float hoursEquipped
	int shotsFired
	int shotsHit
	int headshots
	int critHits
	int titanDamage
$STRUCT_END

$STRUCT_START sWeaponKillStats
	int total
	int pilots
	int ejecting_pilots
	int spectres
	int marvins
	int grunts
	int ai
	int titansTotal
	int titans[titanClasses]
	int npcTitans[titanClasses]
	int assistsTotal
	int killingSprees
$STRUCT_END

$STRUCT_START sKillStats
	int total
	int totalWhileUsingBurnCard
	int titansWhileTitanBCActive
	int totalPVP
	int pilots
	int spectres
	int marvins
	int grunts
	int totalTitans
	int totalTitansWhileDoomed
	int totalPilots
	int totalNPC
	int asPilot
	int asTitan[titanClasses]
	int firstStrikes
	int ejectingPilots
	int whileEjecting
	int cloakedPilots
	int whileCloaked
	int wallrunningPilots
	int whileWallrunning
	int wallhangingPilots
	int whileWallhanging
	int pilotExecution
	int pilotExecutePilot
	int pilotExecutePilotByType[pilotExecution]
	int pilotKickMelee
	int pilotKickMeleePilot
	int titanMelee
	int titanMeleePilot
	int titanStepCrush
	int titanStepCrushPilot
	int titanExocutionIon
	int titanExocutionScorch
	int titanExocutionNorthstar
	int titanExocutionRonin
	int titanExocutionTone
	int titanExocutionLegion
	int titanExocutionVanguard
	int titanFallKill
	int petTitanKillsFollowMode
	int petTitanKillsGuardMode
	int rodeo_total
	int rodeo_stryder
	int rodeo_buddy
	int rodeo_atlas
	int rodeo_ogre
	int pilot_headshots_total
	int evacShips
	int flyers
	int nuclearCore
	int evacuatingEnemies
	int exportTrapKills
	int coopChallenge_NukeTitan_Kills
	int coopChallenge_MortarTitan_Kills
	int coopChallenge_EmpTitan_Kills
	int coopChallenge_BubbleShieldGrunt_Kills
	int coopChallenge_CloakDrone_Kills
	int coopChallenge_Dropship_Kills
	int coopChallenge_SuicideSpectre_Kills
	int coopChallenge_Turret_Kills
	int coopChallenge_Sniper_Kills
	int ampedVortexKills
	int meleeWhileCloaked
	int pilotKillsWhileUsingActiveRadarPulse
	int titanKillsAsPilot
	int pilotKillsWhileStimActive
	int pilotKillsAsTitan
	int totalAssists
	int killingSprees[titanClasses]
	int pilotKillsAsPilot
	int titanKillsAsTitan
    int telefragKils
    int grappleKills
    int throughAWallKills
    int distractedKills
    int pilotExecutePilotWhileCloaked
    int pilotKillsWithHoloPilotActive
    int pilotKillsWithAmpedWallActive
$STRUCT_END

$STRUCT_START sDeathStats
	int total
	int totalPVP
	int asPilot
	int asTitan[titanClasses]
	int byPilots
	int bySpectres
	int byGrunts
	int byTitans[titanClasses]
	int byNPCTitans[titanClasses]
	int suicides
	int whileEjecting
$STRUCT_END

$STRUCT_START sMiscStats
	int titanFalls
	int titanFallsFirst
	int titanEmbarks
	int rodeos
	int rodeosFromEject
	int timesEjected
	int timesEjectedNuclear
	int burnCardsEarned
	int burnCardsSpent
	int boostsActivated
	int spectreLeeches
	int spectreLeechesByMap[maps]
	int evacsAttempted
	int evacsSurvived
	int flagsCaptured
	int flagsReturned
	int arcCannonMultiKills
	int gruntsConscripted
	int hardpointsCaptured
	int challengeTiersCompleted
	int challengesCompleted
	int dailyChallengesCompleted
	int timesLastTitanRemaining
	int killingSprees
	int coopChallengesCompleted
	int forgedCertificationsUsed
	int regenForgedCertificationsUsed
$STRUCT_END


$STRUCT_START sFDStats
	int arcMinesPlaced
	int turretsPlaced
	int rodeos
	int rodeoNukes
	int arcMineZaps
	int turretKills
	int harvesterBoosts
	int wavesComplete
	int easyWins
	int normalWins
	int hardWins
	int masterWins
	int insaneWins
	int highestTitanFDLevel
$STRUCT_END


$STRUCT_START sTitanStats
    int pilots
	int titansTotal
    int ejections
    int titansWhileDoomed
	int titanDamage
	int titansAsPrime
	int pilotsAsPrime
	int executionsAsPrime
	int coresEarned
	int matchesByDifficulty[5]
	int perfectMatchesByDifficulty[5]
$STRUCT_END

sGameStats gameStats
sMapStats mapStats[maps]
sHoursPlayed timeStats
sMilesTraveled distanceStats
sWeaponStats weaponStats[loadoutWeaponsAndAbilities]
sWeaponKillStats weaponKillStats[loadoutWeaponsAndAbilities]
sKillStats killStats
sDeathStats deathStats
sMiscStats miscStats
sFDStats fdStats
sTitanStats titanStats[titanClasses]

float kdratio_lifetime
float kdratio_lifetime_pvp
float kdratio_match[10]
float kdratiopvp_match[10]

int winStreak
int highestWinStreakEver
bool winStreakIsDraws
int winLossHistory[10]	// int instead of bool so we can have win, loss, and draw
int winLossHistorySize

int mostProjectilesCollectedInVortex
int blackMarketItemsBought

bool respawnKillInfected


//#########################
// 		WEAPONS
//#########################

$STRUCT_START weaponMain
	sWeaponStats weaponStats
	sWeaponKillStats weaponKillStats

	int weaponXP
	int previousWeaponXP

	int proScreenKills
	int previousProScreenKills

	// bitfields
	int newMods
	int unlockedMods
	int newWeaponSkins[5]
	int unlockedWeaponSkins[5]
	int newPrimeWeaponSkins[6]
	int unlockedPrimeWeaponSkins[6]
	int newFeatures
	int unlockedFeatures
$STRUCT_END

$STRUCT_START weaponOffhand
	sWeaponStats weaponStats
	sWeaponKillStats weaponKillStats
$STRUCT_END

$STRUCT_START titanMain
	// bitfields
	int newPassives[2]
	int unlockedPassives[2]
	int newSkins[5]
	int unlockedSkins[5]
	int newPrimeSkins[2] //TODO: These are warpaints, not prime titan related and should be renamed next game! Too late since we shipped with it
	int unlockedPrimeSkins[2] //TODO: These are warpaints, not prime titan related and should be renamed next game! Too late since we shipped with it
	int newWeaponSkins[5]
	int unlockedWeaponSkins[5]
	int newPrimeWeaponSkins
	int unlockedPrimeWeaponSkins
	int newTitanDecals[3]
	int unlockedTitanDecals[3]
	int newPrimeTitanDecals
	int unlockedPrimeTitanDecals
	int unlockedFDUpgrades[2]
	int newFDUpgrades[2]
$STRUCT_END

weaponMain pilotWeapons[35]
weaponOffhand pilotOffhands[35]
weaponMain titanWeapons[15]
weaponOffhand titanOffhands[30]

titanMain titanChassis[12]

bool hasSeenStore

// bitfields
int newPilotSkins[5]
int unlockedPilotSkins[5]
int newPrimePilotSkins
int unlockedPrimePilotSkins

int newPilotWeapons[2]
int unlockedPilotWeapons[2]
int newPilotOffhands[2]
int unlockedPilotOffhands[2]
int newPilotPassives
int unlockedPilotPassives

int newTitanOffhands[2]
int unlockedTitanOffhands[2]
int newTitanPassives
int unlockedTitanPassives
int newTitanChassis
int unlockedTitanChassis
int newPrimeTitans
int unlockedPrimeTitans
int newPilotSuits
int unlockedPilotSuits
int newPilotExecutions
int unlockedPilotExecutions

int unlockedFeatures[2]
int newFeatures[2]

int unlockedBoosts
int newBoosts

int unlockedFactions
int newFactions

int unlockedCallingCards[16]
int newCallingCards[16]

int unlockedCallsignIcons[7]
int newCallsignIcons[7]

int unlockedCommsIcons[5]
int newCommsIcons[5]

int newTitanExecutions
int unlockedTitanExecutions

//#########################
// 		CHALLENGES
//#########################

$ENUM_START challenge
	NULL
	// General

	ch_games_played
	ch_games_won
	ch_games_mvp
	ch_titan_falls
	ch_rodeos
	ch_times_ejected
	ch_spectres_leeched

	// Time

	ch_hours_played
	ch_hours_played_pilot
	ch_hours_played_titan
	ch_hours_wallhang

	// Distance

	ch_dist_total
	ch_dist_pilot
	ch_dist_titan
	ch_dist_wallrun
	ch_dist_inair
	ch_dist_zipline
	ch_dist_on_friendly_titan
	ch_dist_on_enemy_titan

	// Kills

	ch_grunt_kills
	ch_spectre_kills
	ch_marvin_kills
	ch_first_strikes
	ch_ejecting_pilot_kills
	ch_kills_while_ejecting
	ch_cloaked_pilot_kills
	ch_kills_while_cloaked
	ch_wallrunning_pilot_kills
	ch_wallhanging_pilot_kills
	ch_kills_while_wallrunning
	ch_kills_while_wallhanging
	ch_pilotExecutePilot
	ch_pilotKickMelee
	ch_pilotKickMeleePilot
	ch_titanMelee
	ch_titanMeleePilot
	ch_titanStepCrush
	ch_titanStepCrushPilot
	ch_titanExocutionStryder
	ch_titanExocutionBuddy
	ch_titanExocutionAtlas
	ch_titanExocutionOgre
	ch_titanFallKill
	ch_petTitanKillsFollowMode
	ch_petTitanKillsGuardMode
	ch_rodeo_kills

	// Titan Primary

	ch_40mm_kills
	ch_40mm_pilot_kills
	ch_40mm_titan_kills
	ch_40mm_spectre_kills
	ch_40mm_grunt_kills
	ch_40mm_hours_used
	ch_40mm_crits

	ch_xo16_kills
	ch_xo16_pilot_kills
	ch_xo16_titan_kills
	ch_xo16_spectre_kills
	ch_xo16_grunt_kills
	ch_xo16_hours_used
	ch_xo16_headshots
	ch_xo16_crits

	ch_titan_sniper_kills
	ch_titan_sniper_pilot_kills
	ch_titan_sniper_titan_kills
	ch_titan_sniper_spectre_kills
	ch_titan_sniper_grunt_kills
	ch_titan_sniper_hours_used
	ch_titan_sniper_crits

	ch_rocket_launcher_kills
	ch_rocket_launcher_pilot_kills
	ch_rocket_launcher_titan_kills
	ch_rocket_launcher_spectre_kills
	ch_rocket_launcher_grunt_kills
	ch_rocket_launcher_hours_used

	ch_triple_threat_kills
	ch_triple_threat_pilot_kills
	ch_triple_threat_titan_kills
	ch_triple_threat_spectre_kills
	ch_triple_threat_grunt_kills
	ch_triple_threat_hours_used

	// Titan Ordnance

	ch_salvo_rockets_kills
	ch_salvo_rockets_pilot_kills
	ch_salvo_rockets_titan_kills
	ch_salvo_rockets_spectre_kills
	ch_salvo_rockets_grunt_kills
	ch_salvo_rockets_hours_used

	ch_homing_rockets_titan_kills
	ch_homing_rockets_hours_used

	ch_dumbfire_rockets_kills
	ch_dumbfire_rockets_pilot_kills
	ch_dumbfire_rockets_titan_kills
	ch_dumbfire_rockets_spectre_kills
	ch_dumbfire_rockets_grunt_kills
	ch_dumbfire_rockets_hours_used

	ch_shoulder_rockets_titan_kills
	ch_shoulder_rockets_hours_used

	// Pilot Primary

	ch_smart_pistol_kills
	ch_smart_pistol_pilot_kills
	ch_smart_pistol_spectre_kills
	ch_smart_pistol_grunt_kills
	ch_smart_pistol_hours_used

	ch_shotgun_kills
	ch_shotgun_pilot_kills
	ch_shotgun_spectre_kills
	ch_shotgun_grunt_kills
	ch_shotgun_hours_used

	ch_r97_kills
	ch_r97_pilot_kills
	ch_r97_spectre_kills
	ch_r97_grunt_kills
	ch_r97_hours_used
	ch_r97_headshots

	ch_car_kills
	ch_car_pilot_kills
	ch_car_spectre_kills
	ch_car_grunt_kills
	ch_car_hours_used
	ch_car_headshots

	ch_lmg_kills
	ch_lmg_pilot_kills
	ch_lmg_spectre_kills
	ch_lmg_grunt_kills
	ch_lmg_hours_used
	ch_lmg_headshots

	ch_rspn101_kills
	ch_rspn101_pilot_kills
	ch_rspn101_spectre_kills
	ch_rspn101_grunt_kills
	ch_rspn101_hours_used
	ch_rspn101_headshots

	ch_hemlok_kills
	ch_hemlok_pilot_kills
	ch_hemlok_spectre_kills
	ch_hemlok_grunt_kills
	ch_hemlok_hours_used
	ch_hemlok_headshots

	ch_g2_kills
	ch_g2_pilot_kills
	ch_g2_spectre_kills
	ch_g2_grunt_kills
	ch_g2_hours_used
	ch_g2_headshots

	ch_dmr_kills
	ch_dmr_pilot_kills
	ch_dmr_spectre_kills
	ch_dmr_grunt_kills
	ch_dmr_hours_used
	ch_dmr_headshots

	ch_sniper_kills
	ch_sniper_pilot_kills
	ch_sniper_spectre_kills
	ch_sniper_grunt_kills
	ch_sniper_hours_used

	// Pilot Secondary

	ch_smr_titan_kills
	ch_smr_crits

	ch_mgl_titan_kills

	ch_archer_titan_kills

	ch_defender_titan_kills
	ch_defender_crits

	// Pilot Ordnance

	ch_frag_grenade_throws
	ch_frag_grenade_kills
	ch_frag_grenade_pilot_kills
	ch_frag_grenade_grunt_kills

	ch_emp_grenade_throws
	ch_emp_grenade_kills
	ch_emp_grenade_pilot_kills
	ch_emp_grenade_grunt_kills
	ch_emp_grenade_spectre_kills

	ch_proximity_mine_throws
	ch_proximity_mine_kills
	ch_proximity_mine_pilot_kills
	ch_proximity_mine_grunt_kills

	ch_satchel_throws
	ch_satchel_kills
	ch_satchel_pilot_kills
	ch_satchel_grunt_kills
$ENUM_END

$ENUM_START dailychallenge
	NULL
	// Dailies

	ch_daily_xo16_pilot_kills
	ch_daily_emp_grenade_kills
	ch_daily_kills_nuclear_core
$ENUM_END

$STRUCT_START eChallenge
	float progress
	float previousProgress
$STRUCT_END

eChallenge challenges[challenge]
eChallenge dailychallenges[dailychallenge]

$STRUCT_START activeDailyChallenge
	dailychallenge ref
	int day
$STRUCT_END

activeDailyChallenge activeDailyChallenges[9]	// holds the players daily challenge refs

int trackedChallenges[3]
int EOGTrackedChallenges[3]
string{64} trackedChallengeRefs[3]
string{64} EOGTrackedChallengeRefs[3]
int dailyChallengeDayIndex
bool newDailyChallenges

//#########################
//    Post Game
//#########################

bool isPostGameScoreboardValid

$STRUCT_START ePostGamePlayer
	string{32}	name
	string{22}	xuid
	int 		level
	int 		gen
	int 		team
	int 		scores[4]
	bool 		playingRanked
	int 		rank
	int         callsignIconIndex
	float		matchPerformance
$STRUCT_END

$STRUCT_START ePostGameData
	int 		gameMode
	int 		map
	string{22}	myXuid
	int 		myTeam
	int 		maxTeamSize
	faction 	factionIMC
	faction 	factionMCOR
	int 		scoreIMC
	int 		scoreMCOR
	bool		teams
	bool 		privateMatch
	bool   		ranked
	bool		hadMatchLossProtection
	recentUnlock    challengeUnlocks[6]
	ePostGamePlayer players[16]
$STRUCT_END

ePostGameData postGameData

//#########################
//    FD Awards
//#########################

bool isFDPostGameScoreboardValid

$STRUCT_START eFDPostGamePlayer
	string{32}	name
	string{22}	xuid
	int 		awardId
	float 		awardValue
	int 		suitIndex
$STRUCT_END

$STRUCT_START eFDPostGameData
	int 		gameMode
	int 		map
	int 		myIndex
	int 		numPlayers
	eFDPostGamePlayer players[4]
$STRUCT_END

eFDPostGameData postGameDataFD

// Track Gooser progress ( ejecting pilot kills ) before requirements changed so we can reward these players later if they did it the hard way
int previousGooserProgress


//#########################
// GAME HISTORY
//#########################

// If these are size adjusted, re-initialize with InitPlayerMapHistory() and InitPlayerModeHistory()
int mapHistory[24]
int modeHistory[10]
string{32} lastPlaylist

//#########################
// Dailies
//#########################

int lastDailyMatchVictory
int lastTimePlayed
int lastTimeLoggedIn

$STRUCT_START struct_ranked
	bool isPlayingRanked
	int currentRank // deprecated but still used by code - need to fix
$STRUCT_END

int abandonCountForMode[gameModes]
gameModes lastAbandonedMode
int lastAbandonTime

struct_ranked ranked