mirror of
https://github.com/R2Northstar/NorthstarMods
synced 2026-08-25 12:29:17 -04:00
10618 lines
No EOL
413 KiB
Text
10618 lines
No EOL
413 KiB
Text
untyped
|
|
|
|
global function InitItems
|
|
global function InitUnlock
|
|
|
|
global function ItemDefined
|
|
global function IsRefValid
|
|
global function IsUnlockValid
|
|
global function SubitemDefined
|
|
|
|
global function IsDisabledRef
|
|
|
|
global function GetIconForTitanClass
|
|
|
|
global function GetItemData
|
|
global function GetItemType
|
|
global function GetItemMenuAnimClass
|
|
global function GetItemId
|
|
global function GetItemName
|
|
global function GetItemLongName
|
|
global function GetItemDescription
|
|
global function GetItemLongDescription
|
|
global function GetItemPersistenceId
|
|
global function GetItemDisplayDataFromGuid
|
|
#if UI
|
|
global function GetItemUnlockReqText
|
|
global function GetUnlockProgressText
|
|
global function GetUnlockProgressFrac
|
|
global function Player_GetRecentUnlock
|
|
global function Player_GetRecentUnlockCount
|
|
global function IsItemPurchasableEntitlement
|
|
global function GetPurchasableEntitlementMenu
|
|
#endif
|
|
global function GetItemImage
|
|
global function GetItemCost
|
|
global function GetSubItemClipSizeStat
|
|
global function GetPlayerDecalUnlockData
|
|
global function GetItemStat
|
|
global function GetModdedItemStat
|
|
global function GetSubitemStat
|
|
global function GetTitanStat
|
|
global function GetImage
|
|
global function GetAllWeaponsByType
|
|
global function GetItemTypeName
|
|
global function GetItemRefTypeName
|
|
global function GetItemRequiresPrime
|
|
|
|
global function IsItemInEntitlementUnlock
|
|
global function GetEntitlementIds
|
|
|
|
global function GetItemImageAspect
|
|
|
|
global function GetItemUnlockType
|
|
global function GetSubItemUnlockType
|
|
|
|
global function GetItemDisplayData
|
|
|
|
global function GetRefFromItem
|
|
|
|
global function GetUnlockLevelReq
|
|
global function GetUnlockLevelReqWithParent
|
|
|
|
global function GetSubitemDisplayData
|
|
global function GetSubitemType
|
|
global function GetSubitemId
|
|
global function GetSubitemName
|
|
global function GetSubitemDescription
|
|
global function GetSubitemLongDescription
|
|
global function GetSubitemImage
|
|
global function GetSubitemCost
|
|
|
|
global function HasSubitem
|
|
|
|
global function GetAllItemsOfType
|
|
global function GetAllItemRefsOfType
|
|
global function GetVisibleItemsOfType
|
|
global function GetVisibleItemsOfTypeForCategory
|
|
global function GetVisibleItemsOfTypeWithoutEntitlements
|
|
global function GetVisibleItemsOfTypeMatchingEntitlementID
|
|
global function GetIndexForUnlockItem
|
|
global function GetAllItemRefs
|
|
global function GetAllSubitemRefs
|
|
global function GetDisplaySubItemsOfType
|
|
|
|
global function GetAllRefsOfType
|
|
global function GetRandomItemRefOfType
|
|
|
|
global function GetItemRefOfTypeByIndex
|
|
global function GetItemIndexOfTypeByRef
|
|
|
|
global function ItemSupportsAttachments
|
|
global function ItemSupportsAttachment
|
|
global function ItemSupportsMods
|
|
|
|
global function ItemTypeSupportsAttachments
|
|
global function ItemTypeSupportsMods
|
|
|
|
global function IsItemTypeMod
|
|
global function IsItemTypeAttachment
|
|
|
|
global function IsSubItemType
|
|
|
|
global function IsItemLocked
|
|
global function IsSubItemLocked
|
|
|
|
global function IsItemOwned
|
|
global function IsSubItemOwned
|
|
|
|
global function IsItemLockedForPlayer
|
|
global function IsItemLockedForWeapon
|
|
global function IsItemLockedForTitan
|
|
|
|
global function IsItemLockedForPlayerLevel
|
|
global function IsItemLockedForWeaponLevel
|
|
global function IsItemLockedForTitanLevel
|
|
global function IsItemLockedForFDTitanLevel
|
|
|
|
global function GetItemPersistenceStruct
|
|
global function IsItemNew
|
|
|
|
global function GetOwnedEliteWeaponSkins
|
|
global function GetStatUnlockStatVal
|
|
#if UI
|
|
global function UpdateCachedNewItems
|
|
global function GetCachedNewItemsVar
|
|
global function ClearNewStatus
|
|
global function HasAnyNewPilotItems
|
|
global function HasAnyNewTitanItems
|
|
global function HasAnyNewBoosts
|
|
global function HasAnyNewDpadCommsIcons
|
|
global function HasAnyNewFactions
|
|
global function HasAnyNewCallsignBanners
|
|
global function HasAnyNewCallsignPatches
|
|
global function HasAnyNewArmoryItems
|
|
global function ButtonShouldShowNew
|
|
global function RefHasAnyNewSubitem
|
|
global function HasAnyNewItemOfCategory
|
|
global function GetStatUnlockProgress
|
|
global function GetStatUnlockProgressFrac
|
|
#endif
|
|
#if UI || CLIENT
|
|
global function GetStatUnlockReq
|
|
#endif
|
|
#if SERVER
|
|
global function SetItemNewStatus
|
|
global function SetItemOwned
|
|
global function ClearItemOwned
|
|
global function CodeCallback_GivePersistentItem
|
|
global function Player_AddRecentUnlock
|
|
global function PersistenceCleanup
|
|
global function GetNoseArtRefFromTitanClassAndPersistenceValue
|
|
global function GetSkinRefFromTitanClassAndPersistenceValue
|
|
global function UnlockUltimateEdition
|
|
#endif
|
|
global function GetSkinRefFromWeaponRefAndPersistenceValue
|
|
global function GetUnlockItemsForPlayerLevels
|
|
global function GetUnlockItemsForTitanLevels
|
|
global function GetNextUnlockForTitanLevel
|
|
global function GetUnlockItemsForWeaponLevels
|
|
global function GetNextUnlockForWeaponLevel
|
|
global function GetUnlockItemsForFactionLevels
|
|
global function GetUnlockItemsForPlayerLevel
|
|
global function GetUnlockItemsForTitanLevel
|
|
global function GetUnlockItemsForWeaponLevel
|
|
global function GetUnlockItemsForFactionLevel
|
|
|
|
global function GetUnlockItemsForFDTitanLevel
|
|
global function GetUnlockItemsForFDTitanLevels
|
|
global function GetNextUnlockForFDTitanLevel
|
|
global function FD_GetUpgradesForTitanClass
|
|
|
|
global function GetUnlockItemsForPlayerRawLevel
|
|
|
|
global function GetTitanCoreIcon
|
|
|
|
global function DidPlayerBuyItemFromBlackMarket
|
|
|
|
global function GetDisplayNameFromItemType
|
|
global function PrintItemData
|
|
global function PrintItems
|
|
|
|
global function CheckItemUnlockType
|
|
|
|
global function CreateWeaponData
|
|
|
|
global function GetSuitAndGenderBasedSetFile
|
|
global function GetSuitBasedTactical
|
|
//global function GetSuitBasedDefaultPassive
|
|
global function GetWeaponBasedDefaultMod
|
|
|
|
global function GetTitanLoadoutPropertyPassiveType
|
|
global function GetTitanLoadoutPropertyExecutionType
|
|
global function GetPrimeTitanSetFileFromNonPrimeSetFile
|
|
|
|
global function CheckEverythingUnlockedAchievement
|
|
|
|
global function DevFindItemByName
|
|
global function DEV_GetEnumStringFromIndex
|
|
|
|
global function ItemReport
|
|
global function UnlockReport
|
|
global function UnlockDump
|
|
|
|
#if SERVER
|
|
global function Player_SetDoubleXPCount
|
|
global function Player_SetColiseumTicketCount
|
|
|
|
global function Player_GiveColiseumTickets
|
|
global function Player_GiveDoubleXP
|
|
global function Player_GiveCredits
|
|
global function Player_ActivateDoubleXP
|
|
global function Player_GiveFDUnlockPoints
|
|
|
|
global function AwardCredits
|
|
#endif
|
|
|
|
global function Player_GetColiseumTicketCount
|
|
global function Player_GetDoubleXPCount
|
|
|
|
global function GetWeaponForTitan
|
|
global function GetTitanForWeapon
|
|
|
|
global function StringHash
|
|
|
|
global function RefreshSortedElems
|
|
global function GetSortedIndex
|
|
|
|
global function SortItemsAlphabetically
|
|
global function ItemsInSameMenuCategory
|
|
global function GetTitanLoadoutIconFD
|
|
|
|
global function GetTitanPrimeBg
|
|
|
|
global function GetItemRefsForEntitlements
|
|
|
|
global function WeaponWarpaint_GetByIndex
|
|
|
|
#if DEV
|
|
global function GenerateValidateDataTableCRCText
|
|
global function GenerateAllValidateDataTableCRCCheckText
|
|
#endif
|
|
|
|
// northstar additional global funcs, some of these are new, some are preexisting ones i'm making global for modularity reasons
|
|
global function AddCallback_OnRegisterCustomItems
|
|
|
|
global function CreateGenericSubItemData
|
|
global function CreateGenericItem
|
|
global function CreateModData
|
|
global function CreatePassiveData
|
|
global function CreatePilotSuitData
|
|
global function CreateTitanExecutionData
|
|
global function CreateTitanData
|
|
global function CreatePrimeTitanData
|
|
global function CreateNoseArtData
|
|
global function CreateSkinData
|
|
global function CreateFDTitanUpgradeData
|
|
global function CreateBaseItemData
|
|
global function CreateWeaponSkinData
|
|
|
|
global const MOD_ICON_NONE = $"ui/menu/items/mod_icons/none"
|
|
|
|
global enum eUnlockType
|
|
{
|
|
DISABLED,
|
|
PLAYER_LEVEL,
|
|
TITAN_LEVEL,
|
|
WEAPON_LEVEL,
|
|
FACTION_LEVEL,
|
|
ENTITLEMENT,
|
|
PERSISTENT_ITEM,
|
|
STAT,
|
|
RANDOM,
|
|
FD_UNLOCK_POINTS,
|
|
}
|
|
|
|
|
|
global struct PurchaseData
|
|
{
|
|
string purchaseMenu
|
|
}
|
|
|
|
global struct ChildUnlock
|
|
{
|
|
int unlockType = eUnlockType.DISABLED
|
|
int unlockLevel = 1
|
|
float unlockFloatVal = 0
|
|
int unlockIntVal = 0
|
|
array<int> entitlementIds
|
|
int cost
|
|
string additionalRef
|
|
table additionalData
|
|
PurchaseData purchaseData
|
|
}
|
|
|
|
global struct Unlock
|
|
{
|
|
int unlockType = eUnlockType.DISABLED
|
|
int unlockLevel = 1
|
|
float unlockFloatVal = 0
|
|
int unlockIntVal = 0
|
|
array<int> entitlementIds
|
|
table<string, ChildUnlock> child
|
|
int cost
|
|
string parentRef
|
|
string additionalRef
|
|
table additionalData
|
|
PurchaseData purchaseData
|
|
}
|
|
|
|
|
|
global struct GlobalItemRef
|
|
{
|
|
int guid
|
|
string ref
|
|
int itemType
|
|
|
|
bool hidden // TODO: remove
|
|
}
|
|
|
|
|
|
struct modCommonDef
|
|
{
|
|
string modType
|
|
string name
|
|
string description
|
|
asset image
|
|
int dataTableIndex
|
|
int cost
|
|
int costSniper
|
|
int costPistol
|
|
int costAT
|
|
}
|
|
|
|
|
|
global struct ItemDisplayData
|
|
{
|
|
int itemType
|
|
string ref
|
|
string parentRef
|
|
|
|
string name
|
|
string desc
|
|
string longdesc
|
|
asset image
|
|
int imageAtlas
|
|
int persistenceId
|
|
|
|
bool hidden
|
|
bool reqPrime
|
|
int slot
|
|
|
|
table< var, var > i
|
|
}
|
|
|
|
global struct SubItemData
|
|
{
|
|
int itemType // TODO: temp until PRIMARY_MOD/ATTACHEMENT/SECONDARY are gone
|
|
string ref
|
|
string parentRef
|
|
int cost
|
|
int slot
|
|
|
|
table< var, var > i
|
|
}
|
|
|
|
|
|
global struct ItemData
|
|
{
|
|
// GlobalItemRef& globalItemRef if we do this, we should remove itemType and ref.
|
|
|
|
int itemType
|
|
string ref
|
|
string parentRef
|
|
|
|
string name
|
|
string longname
|
|
string desc
|
|
string longdesc
|
|
asset image
|
|
int imageAtlas
|
|
|
|
int cost
|
|
|
|
bool hidden
|
|
bool reqPrime
|
|
int slot
|
|
|
|
string persistenceStruct
|
|
int persistenceId
|
|
|
|
table< string, SubItemData > subitems
|
|
|
|
table< var, var > i
|
|
}
|
|
|
|
struct
|
|
{
|
|
array<GlobalItemRef> allItems
|
|
table< string, int > itemRefToGuid
|
|
table< int, string > guidToItemRef
|
|
|
|
table<string, ItemData> itemData
|
|
table< int, array<string> > itemsOfType
|
|
table<string, ItemData> itemsWithPersistenceStruct
|
|
|
|
array<GlobalItemRef>[eItemTypes.COUNT] globalItemRefsOfType
|
|
|
|
table < string, ItemDisplayData > displayDataCache
|
|
|
|
table <string, int> cachedNewItems
|
|
|
|
table<string, Unlock> unlocks
|
|
table<string, Unlock> entitlementUnlocks
|
|
|
|
table<string, array<int> > sortedElems
|
|
|
|
table<string, table<int, string> > titanClassAndPersistenceValueToNoseArtRefTable //Primarily used to speed up validation of persistence data
|
|
table<string, table<int, string> > titanClassAndPersistenceValueToSkinRefTable //Primarily used to speed up validation of persistence data
|
|
table<string, table<int, string> > weaponRefAndPersistenceValueToSkinRefTable //Primarily used to speed up validation of persistence data
|
|
|
|
// northstar custom hooks
|
|
array<void functionref()> itemRegistrationCallbacks
|
|
} file
|
|
|
|
void function InitItems()
|
|
{
|
|
file.unlocks = {}
|
|
file.entitlementUnlocks = {}
|
|
|
|
file.allItems = []
|
|
file.itemRefToGuid = {}
|
|
file.guidToItemRef = {}
|
|
file.guidToItemRef[0] <- "reserved"
|
|
|
|
file.itemData = {}
|
|
file.itemsOfType = {}
|
|
|
|
file.displayDataCache = {}
|
|
|
|
for ( int i = 0; i < eItemTypes.COUNT; i++ )
|
|
{
|
|
file.itemsOfType[ i ] <- []
|
|
file.globalItemRefsOfType[ i ] = []
|
|
}
|
|
|
|
#if SERVER
|
|
AddClientCommandCallback( "BuyItem", ClientCommand_BuyItem )
|
|
AddClientCommandCallback( "BuyTicket", ClientCommand_BuyTicket )
|
|
AddClientCommandCallback( "ClearNewStatus", ClientCommand_ClearNewStatus )
|
|
AddClientCommandCallback( "UseDoubleXP", ClientCommand_UseDoubleXP )
|
|
AddClientCommandCallback( "DEV_GiveFDUnlockPoint", ClientCommand_DEV_GiveFDUnlockPoint )
|
|
AddClientCommandCallback( "DEV_ResetTitanProgression", ClientCommand_DEV_ResetTitanProgression )
|
|
#endif
|
|
|
|
#if UI
|
|
uiGlobal.itemsInitialized = true
|
|
#endif
|
|
|
|
#if CLIENT
|
|
ClearItemTypes();
|
|
#endif
|
|
|
|
if ( IsSingleplayer() )
|
|
{
|
|
InitTitanWeaponDataSP()
|
|
return
|
|
}
|
|
|
|
#if DEV
|
|
//Updated with DLC 4
|
|
ValidateDataTableCRC( $"datatable/burn_meter_rewards.rpak", 13, -195196861 )
|
|
ValidateDataTableCRC( $"datatable/calling_cards.rpak", 379, -93927632 )
|
|
ValidateDataTableCRC( $"datatable/callsign_icons.rpak", 167, 2015621078 )
|
|
ValidateDataTableCRC( $"datatable/camo_skins.rpak", 140, -320502469 )
|
|
ValidateDataTableCRC( $"datatable/faction_leaders.rpak", 7, -686839648 )
|
|
ValidateDataTableCRC( $"datatable/features_mp.rpak", 18, 1879135085 )
|
|
ValidateDataTableCRC( $"datatable/pilot_abilities.rpak", 15, 2112045689 )
|
|
ValidateDataTableCRC( $"datatable/pilot_executions.rpak", 10, 1341275658 )
|
|
ValidateDataTableCRC( $"datatable/pilot_passives.rpak", 8, 981112716 )
|
|
ValidateDataTableCRC( $"datatable/pilot_properties.rpak", 7, -1114320894 )
|
|
ValidateDataTableCRC( $"datatable/pilot_weapon_features.rpak", 4, 439636371 )
|
|
ValidateDataTableCRC( $"datatable/pilot_weapon_mods.rpak", 249, 2010060417 )
|
|
ValidateDataTableCRC( $"datatable/pilot_weapon_mods_common.rpak", 25, -761470088 )
|
|
ValidateDataTableCRC( $"datatable/pilot_weapons.rpak", 32, 1625188373 )
|
|
ValidateDataTableCRC( $"datatable/playlist_items.rpak", 19, -1360623070 )
|
|
ValidateDataTableCRC( $"datatable/titan_nose_art.rpak", 150, 1922555441 )
|
|
ValidateDataTableCRC( $"datatable/titan_passives.rpak", 51, 1139205682 )
|
|
ValidateDataTableCRC( $"datatable/titan_primary_mods.rpak", 0, 0 )
|
|
ValidateDataTableCRC( $"datatable/titan_primary_mods_common.rpak", 0, 0 )
|
|
ValidateDataTableCRC( $"datatable/titan_properties.rpak", 8, -1270130815 )
|
|
ValidateDataTableCRC( $"datatable/titan_skins.rpak", 42, 1057626784 )
|
|
ValidateDataTableCRC( $"datatable/titan_voices.rpak", 8, -1605184394 )
|
|
ValidateDataTableCRC( $"datatable/titans_mp.rpak", 7, 420442720 )
|
|
#endif
|
|
|
|
var dataTable
|
|
int numRows
|
|
|
|
////////////////////
|
|
//CAMO SKINS DATA
|
|
////////////////////
|
|
//CreateBaseItemData( eItemTypes.FEATURE, "no_item", true )
|
|
|
|
dataTable = GetDataTable( $"datatable/camo_skins.rpak" )
|
|
table<int, int> categoryCounts = {}
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string camoRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_REF_COLUMN_NAME ) )
|
|
string pilotCamoRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_PILOT_REF_COLUMN_NAME ) )
|
|
string titanCamoRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_TITAN_REF_COLUMN_NAME ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_IMAGE_COLUMN_NAME ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_NAME_COLUMN_NAME ) )
|
|
string desc = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_DESCRIPTION_COLUMN_NAME ) )
|
|
int pilotCost = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_PILOT_COST_COLUMN_NAME ) )
|
|
int categoryId = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, CAMO_CATEGORY_COLUMN_NAME ) )
|
|
|
|
if ( !(categoryId in categoryCounts) )
|
|
categoryCounts[categoryId] <- 0
|
|
|
|
categoryCounts[categoryId]++
|
|
|
|
int datatableIndex = row
|
|
|
|
const bool IS_HIDDEN_ARG = false
|
|
|
|
ItemData item
|
|
item = CreateGenericItem( datatableIndex, eItemTypes.CAMO_SKIN_PILOT, pilotCamoRef, name, desc, desc, image, pilotCost, IS_HIDDEN_ARG )
|
|
item.imageAtlas = IMAGE_ATLAS_CAMO
|
|
item.i.categoryId <- categoryId
|
|
|
|
item = CreateGenericItem( datatableIndex, eItemTypes.CAMO_SKIN_TITAN, titanCamoRef, name, desc, desc, image, 0, IS_HIDDEN_ARG )
|
|
item.imageAtlas = IMAGE_ATLAS_CAMO
|
|
item.i.categoryId <- categoryId
|
|
|
|
item = CreateGenericItem( datatableIndex, eItemTypes.CAMO_SKIN, camoRef, name, desc, desc, image, 0, IS_HIDDEN_ARG )
|
|
item.imageAtlas = IMAGE_ATLAS_CAMO
|
|
item.i.categoryId <- categoryId
|
|
}
|
|
|
|
InitTitanWeaponDataMP()
|
|
|
|
////////////////////
|
|
//PILOT WEAPON DATA
|
|
////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_weapons.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "itemRef" ) )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) ) ]
|
|
bool hidden = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "hidden" ) )
|
|
string xpPerLevelType = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "xpPerLevelType" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
WeaponSetXPPerLevelType( itemRef, xpPerLevelType )
|
|
|
|
CreateWeaponData( i, itemType, hidden, itemRef, true, cost )
|
|
|
|
var camoSkinsDataTable = GetDataTable( $"datatable/camo_skins.rpak" )
|
|
for ( int camoRow = 0; camoRow < GetDatatableRowCount( camoSkinsDataTable ); camoRow++ )
|
|
{
|
|
string camoRef = GetDataTableString( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_REF_COLUMN_NAME ) )
|
|
int weaponCamoCost = GetDataTableInt( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_PILOT_WEAPON_COST_COLUMN_NAME ) )
|
|
int categoryId = GetDataTableInt( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_CATEGORY_COLUMN_NAME ) )
|
|
|
|
CreateGenericSubItemData( eItemTypes.CAMO_SKIN, itemRef, camoRef, weaponCamoCost, { categoryId = categoryId } )
|
|
}
|
|
}
|
|
|
|
SetupWeaponSkinData()
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_abilities.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "itemRef" ) )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) ) ]
|
|
bool isDamageSource = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "damageSource" ) )
|
|
bool hidden = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "hidden" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
CreateWeaponData( i, itemType, hidden, itemRef, isDamageSource, cost )
|
|
}
|
|
|
|
////////////////////////
|
|
//PILOT MODS/ATTACHMENTS
|
|
////////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_weapon_mods_common.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
table<string, modCommonDef> modCommonTable
|
|
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
modCommonDef modCommon
|
|
modCommon.modType = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_COMMON_TYPE_COLUMN )
|
|
Assert( modCommon.modType == "attachment" || modCommon.modType == "mod" || modCommon.modType == "mod3" )
|
|
|
|
modCommon.name = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_COMMON_NAME_COLUMN )
|
|
modCommon.description = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_COMMON_DESCRIPTION_COLUMN )
|
|
modCommon.image = GetDataTableAsset( dataTable, i, PILOT_WEAPON_MOD_COMMON_IMAGE_COLUMN )
|
|
modCommon.cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
modCommon.costSniper = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "costSniper" ) )
|
|
modCommon.costPistol = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "costPistol" ) )
|
|
modCommon.costAT = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "costAT" ) )
|
|
|
|
modCommon.dataTableIndex = i
|
|
|
|
string itemRef = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_COMMON_COLUMN )
|
|
modCommonTable[ itemRef ] <- modCommon
|
|
|
|
ItemData modCommonData
|
|
if ( modCommon.modType == "attachment" )
|
|
modCommonData = CreateBaseItemData( eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT, itemRef, false )
|
|
else
|
|
modCommonData = CreateBaseItemData( eItemTypes.SUB_PILOT_WEAPON_MOD, itemRef, false )
|
|
|
|
modCommonData.name = modCommon.name
|
|
modCommonData.longname = modCommon.name
|
|
modCommonData.desc = modCommon.description
|
|
modCommonData.image = modCommon.image
|
|
modCommonData.persistenceId = modCommon.dataTableIndex
|
|
modCommonData.imageAtlas = IMAGE_ATLAS_MENU
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_weapon_mods.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
var weaponTable = GetDataTable( $"datatable/pilot_weapons.rpak" )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string mod = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_COLUMN )
|
|
string weapon = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_WEAPON_COLUMN )
|
|
bool hidden = GetDataTableBool( dataTable, i, PILOT_WEAPON_MOD_HIDDEN_COLUMN )
|
|
|
|
int typeRow = GetDataTableRowMatchingStringValue( weaponTable, GetDataTableColumnByName( weaponTable, "itemRef" ), weapon )
|
|
int weaponType = eItemTypes[ GetDataTableString( weaponTable, typeRow, GetDataTableColumnByName( weaponTable, "type" ) ) ]
|
|
|
|
int cost
|
|
string xpPerLevelType = GetDataTableString( weaponTable, typeRow, GetDataTableColumnByName( weaponTable, "xpPerLevelType" ) )
|
|
switch ( xpPerLevelType )
|
|
{
|
|
case "sniper":
|
|
cost = modCommonTable[ mod ].costSniper
|
|
break
|
|
|
|
case "pistol":
|
|
cost = modCommonTable[ mod ].costPistol
|
|
break
|
|
|
|
case "antititan":
|
|
cost = modCommonTable[ mod ].costAT
|
|
break
|
|
|
|
default:
|
|
cost = modCommonTable[ mod ].cost
|
|
}
|
|
|
|
if ( modCommonTable[ mod ].modType == "attachment" )
|
|
{
|
|
Assert( weaponType == eItemTypes.PILOT_PRIMARY )
|
|
|
|
CreateModData( eItemTypes.PILOT_PRIMARY_ATTACHMENT, weapon, mod, cost )
|
|
}
|
|
else if ( modCommonTable[ mod ].modType == "mod" )
|
|
{
|
|
Assert( weaponType == eItemTypes.PILOT_PRIMARY || weaponType == eItemTypes.PILOT_SECONDARY )
|
|
int itemType = weaponType == eItemTypes.PILOT_PRIMARY ? eItemTypes.PILOT_PRIMARY_MOD : eItemTypes.PILOT_SECONDARY_MOD
|
|
|
|
int damageDisplay = GetDataTableInt( dataTable, i, PILOT_WEAPON_MOD_DAMAGEDISPLAY_COLUMN )
|
|
int accuracyDisplay = GetDataTableInt( dataTable, i, PILOT_WEAPON_MOD_ACCURACYDISPLAY_COLUMN )
|
|
int rangeDisplay = GetDataTableInt( dataTable, i, PILOT_WEAPON_MOD_RANGEDISPLAY_COLUMN )
|
|
int fireRateDisplay = GetDataTableInt( dataTable, i, PILOT_WEAPON_MOD_FIRERATEDISPLAY_COLUMN )
|
|
int clipSizeDisplay = GetDataTableInt( dataTable, i, PILOT_WEAPON_MOD_CLIPSIZEDISPLAY_COLUMN )
|
|
|
|
CreateModData( itemType, weapon, mod, cost, damageDisplay, accuracyDisplay, rangeDisplay, fireRateDisplay, clipSizeDisplay )
|
|
}
|
|
else
|
|
{
|
|
Assert( modCommonTable[ mod ].modType == "mod3" )
|
|
CreateModData( eItemTypes.PILOT_WEAPON_MOD3, weapon, mod, cost )
|
|
}
|
|
}
|
|
|
|
/////////////////////
|
|
//PILOT PASSIVE DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_passives.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "passive" ) )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) ) ]
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "name" ) )
|
|
string description = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "description" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "image" ) )
|
|
bool hidden = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "hidden" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
CreatePassiveData( i, itemType, hidden, itemRef, name, description, description, image, cost )
|
|
}
|
|
|
|
/////////////////////
|
|
//SUIT DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_properties.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "image" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
CreatePilotSuitData( i, eItemTypes.PILOT_SUIT, itemRef, image, cost )
|
|
}
|
|
|
|
CreateBaseItemData( eItemTypes.RACE, "race_human_male", false )
|
|
CreateBaseItemData( eItemTypes.RACE, "race_human_female", false )
|
|
|
|
/////////////////////
|
|
//PILOT EXECUTION DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_executions.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string ref = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "ref" ) )
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "name" ) )
|
|
string description = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "description" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "image" ) )
|
|
bool hidden = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "hidden" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
if ( IsDisabledRef( ref ) )
|
|
continue
|
|
|
|
CreatePassiveData( i, eItemTypes.PILOT_EXECUTION, hidden, ref, name, description, description, image, cost )
|
|
}
|
|
/////////////////////
|
|
//TITAN EXECUTION DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_executions.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
bool hidden = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "hidden" ) )
|
|
if ( hidden == true )
|
|
continue
|
|
|
|
string ref = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "ref" ) )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) ) ]
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "name" ) )
|
|
string description = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "description" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "image" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
bool reqPrime = GetDataTableBool( dataTable, i, GetDataTableColumnByName( dataTable, "reqPrime" ) )
|
|
|
|
if ( IsDisabledRef( ref ) )
|
|
continue
|
|
|
|
CreateTitanExecutionData( i, itemType, hidden, ref, name, description, description, image, cost, reqPrime )
|
|
}
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/features_mp.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
int featureIndex = 0
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string featureRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "featureRef" ) )
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "featureName" ) )
|
|
string desc = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "featureDesc" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "featureIcon" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
string specificType = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "specificType" ) )
|
|
|
|
const bool IS_HIDDEN_ARG = false
|
|
ItemData featureItem = CreateGenericItem( featureIndex, eItemTypes.FEATURE, featureRef, name, desc, "", image, cost, IS_HIDDEN_ARG )
|
|
featureItem.i.specificType <- specificType
|
|
|
|
featureIndex++
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/playlist_items.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string playlistRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "playlist" ) )
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "name" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "image" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
const bool IS_HIDDEN_ARG = false
|
|
ItemData featureItem = CreateGenericItem( featureIndex, eItemTypes.FEATURE, playlistRef, name, "", "", image, cost, IS_HIDDEN_ARG )
|
|
featureItem.i.specificType <- "#ITEM_TYPE_PLAYLIST"
|
|
featureItem.i.isPlaylist <- true
|
|
|
|
featureIndex++
|
|
}
|
|
|
|
//{
|
|
// int featureIndex = 0
|
|
// int gameModeCount = PersistenceGetEnumCount( "gameModes" )
|
|
// for ( int modeIndex = 0; modeIndex < gameModeCount; modeIndex++ )
|
|
// {
|
|
// string gameModeRef = PersistenceGetEnumItemNameForIndex( "gameModes", modeIndex )
|
|
// if ( !IsRefValid( gameModeRef ) )
|
|
// {
|
|
// string name = GameMode_GetName( gameModeRef )
|
|
// string desc = GameMode_GetDesc( gameModeRef )
|
|
// asset image = GameMode_GetIcon( gameModeRef )
|
|
// int cost = 0
|
|
//
|
|
// CreateGenericItem( featureIndex, eItemTypes.GAME_MODE, gameModeRef, name, desc, "", image, cost )
|
|
// featureIndex++
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_weapon_features.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string featureRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "featureRef" ) )
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "featureName" ) )
|
|
string desc = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "featureDesc" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "featureIcon" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
int dataTableIndex = i
|
|
const bool IS_HIDDEN_ARG = false
|
|
CreateGenericItem( dataTableIndex, eItemTypes.WEAPON_FEATURE, featureRef, name, desc, "", image, cost, IS_HIDDEN_ARG )
|
|
}
|
|
|
|
/////////////////////
|
|
//PILOT SECONDARY MOD SLOTS
|
|
/////////////////////
|
|
dataTable = GetDataTable( $"datatable/pilot_weapons.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string weaponRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "itemRef" ) )
|
|
int weaponType = eItemTypes[ GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) ) ]
|
|
if ( weaponType == eItemTypes.PILOT_PRIMARY )
|
|
{
|
|
CreateGenericSubItemData( eItemTypes.WEAPON_FEATURE, weaponRef, "primarymod2", file.itemData["primarymod2"].cost )
|
|
CreateGenericSubItemData( eItemTypes.WEAPON_FEATURE, weaponRef, "primarymod3", file.itemData["primarymod3"].cost )
|
|
}
|
|
else
|
|
{
|
|
CreateGenericSubItemData( eItemTypes.WEAPON_FEATURE, weaponRef, "secondarymod2", file.itemData["secondarymod2"].cost )
|
|
CreateGenericSubItemData( eItemTypes.WEAPON_FEATURE, weaponRef, "secondarymod3", file.itemData["secondarymod3"].cost )
|
|
}
|
|
}
|
|
|
|
/////////////////////
|
|
//FACTION DATA
|
|
/////////////////////
|
|
dataTable = GetDataTable( $"datatable/faction_leaders.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string factionRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "persistenceRef" ) )
|
|
asset logo = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "logo" ) )
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "factionName" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
ItemData item = CreateBaseItemData( eItemTypes.FACTION, factionRef, false )
|
|
item.image = logo
|
|
item.name = name
|
|
item.cost = cost
|
|
item.imageAtlas = IMAGE_ATLAS_FACTION_LOGO
|
|
item.persistenceId = i
|
|
}
|
|
|
|
/////////////////
|
|
//TITAN MOD DATA
|
|
/////////////////
|
|
dataTable = GetDataTable( $"datatable/titan_primary_mods_common.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
modCommonTable.clear()
|
|
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
modCommonDef modCommon
|
|
modCommon.name = GetDataTableString( dataTable, i, TITAN_PRIMARY_MOD_COMMON_NAME_COLUMN )
|
|
modCommon.description = GetDataTableString( dataTable, i, TITAN_PRIMARY_MOD_COMMON_DESCRIPTION_COLUMN )
|
|
modCommon.image = GetDataTableAsset( dataTable, i, TITAN_PRIMARY_MOD_COMMON_IMAGE_COLUMN )
|
|
|
|
modCommon.dataTableIndex = i
|
|
|
|
string itemRef = GetDataTableString( dataTable, i, TITAN_PRIMARY_MOD_COMMON_COLUMN )
|
|
modCommonTable[ itemRef ] <- modCommon
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_primary_mods.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string mod = GetDataTableString( dataTable, i, TITAN_PRIMARY_MOD_COLUMN )
|
|
string weapon = GetDataTableString( dataTable, i, TITAN_PRIMARY_MOD_WEAPON_COLUMN )
|
|
|
|
string name = modCommonTable[ mod ].name
|
|
string description = modCommonTable[ mod ].description
|
|
asset image = modCommonTable[ mod ].image
|
|
int dataTableIndex = modCommonTable[ mod ].dataTableIndex
|
|
|
|
int damageDisplay = GetDataTableInt( dataTable, i, TITAN_PRIMARY_MOD_DAMAGEDISPLAY_COLUMN )
|
|
int accuracyDisplay = GetDataTableInt( dataTable, i, TITAN_PRIMARY_MOD_ACCURACYDISPLAY_COLUMN )
|
|
int rangeDisplay = GetDataTableInt( dataTable, i, TITAN_PRIMARY_MOD_RANGEDISPLAY_COLUMN )
|
|
int fireRateDisplay = GetDataTableInt( dataTable, i, TITAN_PRIMARY_MOD_FIRERATEDISPLAY_COLUMN )
|
|
int clipSizeDisplay = GetDataTableInt( dataTable, i, TITAN_PRIMARY_MOD_CLIPSIZEDISPLAY_COLUMN )
|
|
|
|
bool hidden = GetDataTableBool( dataTable, i, TITAN_PRIMARY_MOD_HIDDEN_COLUMN )
|
|
|
|
// CreateModData( dataTableIndex, eItemTypes.TITAN_PRIMARY_MOD, weapon, mod, name, description, description, image, damageDisplay, accuracyDisplay, rangeDisplay, fireRateDisplay, clipSizeDisplay )
|
|
}
|
|
|
|
/////////////////////
|
|
//TITAN PASSIVE DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_passives.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, TITAN_PASSIVE_COLUMN )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, i, TITAN_PASSIVE_TYPE_COLUMN ) ]
|
|
string name = GetDataTableString( dataTable, i, TITAN_PASSIVE_NAME_COLUMN )
|
|
string description = GetDataTableString( dataTable, i, TITAN_PASSIVE_DESCRIPTION_COLUMN )
|
|
string longDescription = GetDataTableString( dataTable, i, TITAN_PASSIVE_LONGDESCRIPTION_COLUMN )
|
|
asset image = GetDataTableAsset( dataTable, i, TITAN_PASSIVE_IMAGE_COLUMN )
|
|
bool hidden = GetDataTableBool( dataTable, i, TITAN_PASSIVE_HIDDEN_COLUMN )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
CreatePassiveData( i, itemType, hidden, itemRef, name, description, longDescription, image, cost )
|
|
}
|
|
|
|
/////////////////////
|
|
//TITAN OS DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_voices.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, TITAN_VOICE_COLUMN )
|
|
string name = GetDataTableString( dataTable, i, TITAN_VOICE_NAME_COLUMN )
|
|
string description = GetDataTableString( dataTable, i, TITAN_VOICE_DESCRIPTION_COLUMN )
|
|
asset image = GetDataTableAsset( dataTable, i, TITAN_VOICE_IMAGE_COLUMN )
|
|
bool hidden = GetDataTableBool( dataTable, i, TITAN_VOICE_HIDDEN_COLUMN )
|
|
|
|
const bool IS_HIDDEN_ARG = false
|
|
CreateGenericItem( i, eItemTypes.TITAN_OS, itemRef, name, description, description, image, 0, IS_HIDDEN_ARG )
|
|
}
|
|
|
|
|
|
var titanPropertiesDataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
var titansMpDataTable = GetDataTable( $"datatable/titans_mp.rpak" )
|
|
numRows = GetDatatableRowCount( titansMpDataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string titanRef = GetDataTableString( titansMpDataTable, i, GetDataTableColumnByName( titansMpDataTable, "titanRef" ) )
|
|
int cost = GetDataTableInt( titansMpDataTable, i, GetDataTableColumnByName( titansMpDataTable, "cost" ) )
|
|
asset image = GetDataTableAsset( titansMpDataTable, i, GetDataTableColumnByName( titansMpDataTable, "image" ) )
|
|
asset coreIcon = GetDataTableAsset( titansMpDataTable, i, GetDataTableColumnByName( titansMpDataTable, "coreIcon" ) )
|
|
|
|
if ( IsDisabledRef( titanRef ) )
|
|
continue
|
|
|
|
CreateTitanData( i, titanRef, cost, image, coreIcon )
|
|
|
|
ItemData itemData = GetItemData( titanRef )
|
|
int passive1Type = expect int( itemData.i.passive1Type )
|
|
int passive2Type = expect int( itemData.i.passive2Type )
|
|
int passive3Type = expect int( itemData.i.passive3Type )
|
|
int passive4Type = expect int( itemData.i.passive4Type )
|
|
int passive5Type = expect int( itemData.i.passive5Type )
|
|
int passive6Type = expect int( itemData.i.passive6Type )
|
|
|
|
{
|
|
array<ItemData> items = GetAllItemsOfType( passive1Type )
|
|
foreach ( item in items )
|
|
{
|
|
CreateGenericSubItemData( passive1Type, titanRef, item.ref, GetItemCost( item.ref ) )
|
|
}
|
|
}
|
|
|
|
if ( passive1Type != passive2Type )
|
|
{
|
|
array<ItemData> items = GetAllItemsOfType( passive2Type )
|
|
foreach ( item in items )
|
|
{
|
|
CreateGenericSubItemData( passive2Type, titanRef, item.ref, GetItemCost( item.ref ) )
|
|
}
|
|
}
|
|
|
|
if ( passive3Type != passive1Type && passive3Type != passive2Type )
|
|
{
|
|
array<ItemData> items = GetAllItemsOfType( passive3Type )
|
|
foreach ( item in items )
|
|
{
|
|
CreateGenericSubItemData( passive3Type, titanRef, item.ref, GetItemCost( item.ref ) )
|
|
}
|
|
}
|
|
|
|
array<ItemData> passive4items = GetAllItemsOfType( passive4Type )
|
|
foreach ( item in passive4items )
|
|
{
|
|
CreateGenericSubItemData( passive4Type, titanRef, item.ref, GetItemCost( item.ref ) )
|
|
}
|
|
|
|
array<ItemData> passive5items = GetAllItemsOfType( passive5Type )
|
|
foreach ( item in passive5items )
|
|
{
|
|
CreateGenericSubItemData( passive5Type, titanRef, item.ref, GetItemCost( item.ref ) )
|
|
}
|
|
|
|
array<ItemData> passive6items = GetAllItemsOfType( passive6Type )
|
|
foreach ( item in passive6items )
|
|
{
|
|
CreateGenericSubItemData( passive6Type, titanRef, item.ref, GetItemCost( item.ref ) )
|
|
}
|
|
|
|
{
|
|
var camoSkinsDataTable = GetDataTable( $"datatable/camo_skins.rpak" )
|
|
for ( int camoRow = 0; camoRow < GetDatatableRowCount( camoSkinsDataTable ); camoRow++ )
|
|
{
|
|
string camoRef = GetDataTableString( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_REF_COLUMN_NAME ) )
|
|
string titanCamoRef = GetDataTableString( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_TITAN_REF_COLUMN_NAME ) )
|
|
int titanWeaponCost = GetDataTableInt( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_TITAN_WEAPON_COST_COLUMN_NAME ) )
|
|
int titanCost = GetDataTableInt( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_TITAN_COST_COLUMN_NAME ) )
|
|
int categoryId = GetDataTableInt( camoSkinsDataTable, camoRow, GetDataTableColumnByName( camoSkinsDataTable, CAMO_CATEGORY_COLUMN_NAME ) )
|
|
|
|
CreateGenericSubItemData( eItemTypes.CAMO_SKIN, titanRef, camoRef, titanWeaponCost, { categoryId = categoryId } )
|
|
CreateGenericSubItemData( eItemTypes.CAMO_SKIN_TITAN, titanRef, titanCamoRef, titanCost, { categoryId = categoryId } )
|
|
}
|
|
}
|
|
|
|
#if SERVER || CLIENT
|
|
int propertyRow = GetDataTableRowMatchingStringValue( titanPropertiesDataTable, GetDataTableColumnByName( titanPropertiesDataTable, "titanRef" ), titanRef )
|
|
string setFile = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "setFile" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "bodymodel" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "armsmodel" ) )
|
|
string primeSetFile = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "primeSetFile" ) )
|
|
if ( primeSetFile != "" )
|
|
{
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( primeSetFile, "bodymodel" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( primeSetFile, "armsmodel" ) )
|
|
}
|
|
#endif
|
|
|
|
//string primary = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "primary" ) )
|
|
//string melee = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "melee" ) )
|
|
//string ordnance = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "ordnance" ) )
|
|
//string special = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "special" ) )
|
|
//string antirodeo = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "antirodeo" ) )
|
|
//string coreAbility = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "coreAbility" ) )
|
|
}
|
|
|
|
//////////////////////////
|
|
// DLC1
|
|
//////////////////////////
|
|
//Need to be moved up here for prime_titan_nose_art to work
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "ion_prime", "ion", true )
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "tone_prime", "tone", true )
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "scorch_prime", "scorch", true )
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "legion_prime", "legion", true )
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "ronin_prime", "ronin", true )
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "northstar_prime", "northstar", true )
|
|
CreatePrimeTitanData( eItemTypes.PRIME_TITAN, "vanguard_prime", "vanguard", true )
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_nose_art.rpak" )
|
|
table<string, int> decalIndexTable
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string titanRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "titanRef" ) )
|
|
string ref = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "ref" ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, "image" ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "name" ) )
|
|
int cost = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
if ( IsDisabledRef( titanRef ) )
|
|
continue
|
|
|
|
if ( !( titanRef in decalIndexTable ) )
|
|
decalIndexTable[titanRef] <- 0
|
|
else
|
|
decalIndexTable[titanRef]++
|
|
|
|
//CreateGenericItem( datatableIndex, eItemTypes.TITAN_NOSE_ART, ref, name, "", "", image )
|
|
//CreateBaseItemData( eItemTypes.TITAN_NOSE_ART, ref, false )
|
|
CreateNoseArtData( decalIndexTable[titanRef], eItemTypes.TITAN_NOSE_ART, false, ref, name, image, decalIndexTable[titanRef] )
|
|
CreateGenericSubItemData( eItemTypes.TITAN_NOSE_ART, titanRef, ref, cost )
|
|
|
|
|
|
if ( !( titanRef in file.titanClassAndPersistenceValueToNoseArtRefTable ) )
|
|
file.titanClassAndPersistenceValueToNoseArtRefTable[ titanRef ] <- {}
|
|
|
|
file.titanClassAndPersistenceValueToNoseArtRefTable[ titanRef ][ decalIndexTable[titanRef] ] <- ref
|
|
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_skins.rpak" )
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string titanRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "titanRef" ) )
|
|
string ref = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "ref" ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, "image" ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "name" ) )
|
|
int cost = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
int skinIndex = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "skinIndex" ) )
|
|
int datatableIndex = row
|
|
|
|
if ( IsDisabledRef( titanRef ) || IsDisabledRef( ref ) )
|
|
continue
|
|
|
|
CreateSkinData( datatableIndex, eItemTypes.TITAN_WARPAINT, false, ref, name, image, skinIndex )
|
|
CreateGenericSubItemData( eItemTypes.TITAN_WARPAINT, titanRef, ref, cost, { skinIndex = skinIndex } )
|
|
|
|
if ( !( titanRef in file.titanClassAndPersistenceValueToSkinRefTable ) )
|
|
file.titanClassAndPersistenceValueToSkinRefTable[ titanRef ] <- {}
|
|
|
|
file.titanClassAndPersistenceValueToSkinRefTable[ titanRef ][ skinIndex ] <- ref
|
|
}
|
|
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/calling_cards.rpak" )
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string cardRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CALLING_CARD_REF_COLUMN_NAME ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CALLING_CARD_NAME_COLUMN_NAME ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, CALLING_CARD_IMAGE_COLUMN_NAME ) )
|
|
int cost = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
bool isHidden = false
|
|
if ( cost < 0 )
|
|
{
|
|
isHidden = true
|
|
cost = 0
|
|
}
|
|
|
|
string desc = "Undefined"
|
|
string longdesc = "Undefined"
|
|
|
|
int datatableIndex = row
|
|
|
|
CreateGenericItem( datatableIndex, eItemTypes.CALLING_CARD, cardRef, name, desc, longdesc, image, cost, isHidden )
|
|
GetItemData( cardRef ).imageAtlas = IMAGE_ATLAS_CALLINGCARD
|
|
}
|
|
}
|
|
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/callsign_icons.rpak" )
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string iconRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CALLSIGN_ICON_REF_COLUMN_NAME ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, CALLSIGN_ICON_NAME_COLUMN_NAME ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, CALLSIGN_ICON_IMAGE_COLUMN_NAME ) )
|
|
int cost = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
bool isHidden = false
|
|
if ( cost < 0 )
|
|
{
|
|
isHidden = true
|
|
cost = 0
|
|
}
|
|
|
|
string desc = "Undefined"
|
|
string longdesc = "Undefined"
|
|
|
|
int datatableIndex = row
|
|
|
|
if ( IsDisabledRef( iconRef ) )
|
|
continue
|
|
|
|
CreateGenericItem( datatableIndex, eItemTypes.CALLSIGN_ICON, iconRef, name, desc, longdesc, image, cost, isHidden )
|
|
GetItemData( iconRef ).imageAtlas = IMAGE_ATLAS_CALLINGCARD
|
|
}
|
|
}
|
|
|
|
/////////////////////
|
|
// NON-LOADOUT WEAPONS
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/non_loadout_weapons.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string weapon = GetDataTableString( dataTable, i, NON_LOADOUT_WEAPON_COLUMN )
|
|
|
|
#if SERVER || CLIENT
|
|
if ( !IsDisabledRef( weapon ) )
|
|
PrecacheWeapon( weapon )
|
|
#endif
|
|
//CreateWeaponData( i, eItemTypes.NOT_LOADOUT, true, weapon, true )
|
|
}
|
|
|
|
/////////////////////
|
|
// NON-LOADOUT MODS
|
|
/////////////////////
|
|
|
|
//dataTable = GetDataTable( $"datatable/non_loadout_mods.rpak" )
|
|
//numRows = GetDatatableRowCount( dataTable )
|
|
//for ( int i = 0; i < numRows; i++ )
|
|
//{
|
|
// string mod = GetDataTableString( dataTable, i, NON_LOADOUT_MOD_COLUMN )
|
|
// string parentItem = GetDataTableString( dataTable, i, NON_LOADOUT_MOD_PARENT_COLUMN )
|
|
// string name = GetDataTableString( dataTable, i, NON_LOADOUT_MOD_NAME_COLUMN )
|
|
// string description = GetDataTableString( dataTable, i, NON_LOADOUT_MOD_DESCRIPTION_COLUMN )
|
|
// asset image = GetDataTableAsset( dataTable, i, NON_LOADOUT_MOD_IMAGE_COLUMN )
|
|
//
|
|
// CreateModData( -1, eItemTypes.NOT_LOADOUT, parentItem, mod, name, description, description, image )
|
|
//}
|
|
|
|
/////////////////////
|
|
//BURN METER REWARD DATA
|
|
/////////////////////
|
|
|
|
dataTable = GetDataTable( $"datatable/burn_meter_rewards.rpak" )
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, BURN_REF_COLUMN_NAME ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, BURN_NAME_COLUMN_NAME ) )
|
|
string description = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, BURN_NAME_COLUMN_NAME ) )
|
|
int cost = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, "image" ) )
|
|
|
|
if ( IsDisabledRef( itemRef ) )
|
|
continue
|
|
|
|
// Why does the server need this? Client script error happens otherwise.
|
|
#if SERVER || CLIENT
|
|
asset model = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, "model" ) )
|
|
PrecacheModel( model )
|
|
#endif // SERVER || CLIENT
|
|
|
|
bool hidden = !GetDataTableBool( dataTable, row, GetDataTableColumnByName( dataTable, "selectable" ) )
|
|
CreateGenericItem( row, eItemTypes.BURN_METER_REWARD, itemRef, name, description, description, image, cost, hidden )
|
|
}
|
|
|
|
InitRandomUnlocks()
|
|
|
|
SetupFrontierDefenseItems()
|
|
|
|
InitUnlocks()
|
|
|
|
foreach ( item in file.itemData )
|
|
{
|
|
if ( item.persistenceStruct != "" )
|
|
file.itemsWithPersistenceStruct[ item.persistenceStruct ] <- item
|
|
}
|
|
|
|
// northstar hook: custom item registrations
|
|
foreach ( void functionref() callback in file.itemRegistrationCallbacks )
|
|
callback()
|
|
|
|
// Sort some items based on unlock level
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_PRIMARY].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_SECONDARY].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_SPECIAL].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_ORDNANCE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_PASSIVE1].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_PASSIVE2].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.PILOT_SUIT].sort( SortByUnlockLevel )
|
|
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_PRIMARY].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_ORDNANCE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_SPECIAL].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_GENERAL_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_TITANFALL_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_RONIN_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_NORTHSTAR_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_ION_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_TONE_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_SCORCH_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_LEGION_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_VANGUARD_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_UPGRADE1_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_UPGRADE2_PASSIVE].sort( SortByUnlockLevel )
|
|
file.globalItemRefsOfType[eItemTypes.TITAN_UPGRADE3_PASSIVE].sort( SortByUnlockLevel )
|
|
|
|
#if !UI
|
|
// Non-player weapons
|
|
#if SERVER || CLIENT
|
|
PrecacheWeapon( "mp_weapon_yh803" )
|
|
PrecacheWeapon( "mp_weapon_yh803_bullet" )
|
|
PrecacheWeapon( "mp_weapon_yh803_bullet_overcharged" )
|
|
PrecacheWeapon( "mp_weapon_super_spectre" )
|
|
PrecacheWeapon( "mp_weapon_dronebeam" )
|
|
PrecacheWeapon( "mp_weapon_dronerocket" )
|
|
PrecacheWeapon( "mp_weapon_droneplasma" )
|
|
PrecacheWeapon( "mp_weapon_turretplasma" )
|
|
PrecacheWeapon( "mp_weapon_turretplasma_mega" )
|
|
PrecacheWeapon( "mp_weapon_turretlaser_mega_fort_war" )
|
|
PrecacheWeapon( "mp_weapon_turretlaser_mega" )
|
|
PrecacheWeapon( "mp_weapon_gunship_launcher" )
|
|
PrecacheWeapon( "mp_weapon_gunship_turret" )
|
|
PrecacheWeapon( "mp_weapon_gunship_missile" )
|
|
|
|
// NPC weapons
|
|
PrecacheWeapon( "mp_weapon_mega_turret" )
|
|
PrecacheWeapon( "mp_weapon_spectre_spawner" )
|
|
|
|
PrecacheWeapon( "mp_weapon_engineer_turret" )
|
|
PrecacheWeapon( "mp_weapon_engineer_combat_drone" )
|
|
#endif
|
|
|
|
#if DEV && ( SERVER || CLIENT )
|
|
PrecacheWeapon( "weapon_cubemap" )
|
|
#endif
|
|
|
|
#if CLIENT
|
|
PrecacheHUDMaterial( MOD_ICON_NONE )
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
void function AddCallback_OnRegisterCustomItems( void functionref() callback )
|
|
{
|
|
file.itemRegistrationCallbacks.append( callback )
|
|
}
|
|
|
|
void function InitUnlocks()
|
|
{
|
|
InitUnlock( "race_human_male", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "race_human_female", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
InitUnlock( "speedball", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
var dataTable = GetDataTable( $"datatable/unlocks_player_level.rpak" )
|
|
int numRows = GetDatatableRowCount( dataTable )
|
|
for ( int column = 1; column <= 13; column++ )
|
|
{
|
|
for ( int row = 0; row < numRows; row++ )
|
|
{
|
|
string unlockField = GetDataTableString( dataTable, row, column )
|
|
array<string> unlockArray = SplitAndStripUnlockField( unlockField )
|
|
|
|
foreach ( unlock in unlockArray )
|
|
{
|
|
if ( unlock != "" )
|
|
{
|
|
if ( unlock != "random" && !ItemDefined( unlock ) )
|
|
{
|
|
#if DEV && DEVSCRIPTS
|
|
CodeWarning( unlock + " does not appear to be a valid eItemType" )
|
|
#else
|
|
continue
|
|
#endif
|
|
}
|
|
|
|
InitUnlock( unlock, "", eUnlockType.PLAYER_LEVEL, row + 1 )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/unlocks_titan_level.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
int column = 1
|
|
while ( true )
|
|
{
|
|
string titanRef = GetDataTableString( dataTable, 0, column )
|
|
if ( titanRef == "END" )
|
|
break
|
|
|
|
if ( IsDisabledRef( titanRef ) )
|
|
{
|
|
column++
|
|
continue
|
|
}
|
|
|
|
for ( int row = 1; row < numRows; row++ )
|
|
{
|
|
string unlockField = GetDataTableString( dataTable, row, column )
|
|
array<string> unlockArray = SplitAndStripUnlockField( unlockField )
|
|
|
|
foreach ( unlock in unlockArray )
|
|
{
|
|
if ( unlock != "" )
|
|
InitUnlock( unlock, titanRef, eUnlockType.TITAN_LEVEL, row )
|
|
}
|
|
}
|
|
|
|
column++
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/unlocks_faction_level.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
int NUM_FACTIONS = GetAllItemRefsOfType( eItemTypes.FACTION ).len()
|
|
for ( int column = 1; column <= NUM_FACTIONS; column++ )
|
|
{
|
|
string additionalRef = GetDataTableString( dataTable, 0, column )
|
|
|
|
for ( int row = 1; row < numRows; row++ )
|
|
{
|
|
string unlockField = GetDataTableString( dataTable, row, column )
|
|
array<string> unlockArray = SplitAndStripUnlockField( unlockField )
|
|
|
|
foreach ( unlock in unlockArray )
|
|
{
|
|
if ( unlock != "" )
|
|
{
|
|
string parentRef
|
|
var periodPos = unlock.find( "." )
|
|
if ( periodPos != null )
|
|
{
|
|
parentRef = unlock.slice( 0, periodPos )
|
|
unlock = unlock.slice( periodPos + 1 )
|
|
}
|
|
|
|
InitUnlock( unlock, parentRef, eUnlockType.FACTION_LEVEL, row, 0, additionalRef )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var titanLoadoutsDataTable = GetDataTable( $"datatable/default_titan_loadouts.rpak" )
|
|
var titanPropertiesDataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
var titansMpDataTable = GetDataTable( $"datatable/titans_mp.rpak" )
|
|
numRows = GetDatatableRowCount( titansMpDataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string titanRef = GetDataTableString( titansMpDataTable, i, GetDataTableColumnByName( titansMpDataTable, "titanRef" ) )
|
|
|
|
if ( IsDisabledRef( titanRef ) )
|
|
continue
|
|
|
|
int propertyRow = GetDataTableRowMatchingStringValue( titanPropertiesDataTable, GetDataTableColumnByName( titanPropertiesDataTable, "titanRef" ), titanRef )
|
|
|
|
string primary = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "primary" ) )
|
|
InitUnlock( primary, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
|
|
//string melee = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "melee" ) )
|
|
//InitUnlock( melee, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
|
|
string ordnance = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "ordnance" ) )
|
|
InitUnlock( ordnance, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
|
|
string special = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "special" ) )
|
|
InitUnlock( special, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
|
|
string antirodeo = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "antirodeo" ) )
|
|
InitUnlock( antirodeo, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
|
|
string coreAbility = GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "coreAbility" ) )
|
|
InitUnlock( coreAbility, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
|
|
InitUnlock( "mp_titanweapon_vortex_shield", titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
InitUnlock( "mp_titanweapon_rocketeer_rocketstream", titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
InitUnlock( "mp_titanweapon_shoulder_rockets", titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
InitUnlock( "mp_titanweapon_salvo_rockets", titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
InitUnlock( "mp_titanweapon_homing_rockets", titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
InitUnlock( "mp_titanweapon_xo16_shorty", titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
//
|
|
//{
|
|
// int passive1Type = GetTitanProperty_Passive1Type( titanRef )
|
|
// array<ItemData> items = GetAllItemsOfType( passive1Type )
|
|
// foreach ( item in items )
|
|
// {
|
|
// InitUnlock( item.ref, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
// }
|
|
//}
|
|
//
|
|
//{
|
|
// int passive2Type = GetTitanProperty_Passive2Type( titanRef )
|
|
// array<ItemData> items = GetAllItemsOfType( passive1Type )
|
|
// foreach ( item in items )
|
|
// {
|
|
// InitUnlock( item.ref, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
// }
|
|
//}
|
|
//{
|
|
// int passive3Type = GetTitanProperty_Passive3Type( titanRef )
|
|
// array<ItemData> items = GetAllItemsOfType( passive1Type )
|
|
// foreach ( item in items )
|
|
// {
|
|
// InitUnlock( item.ref, titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
// }
|
|
//}
|
|
//int loadoutRow = GetDataTableRowMatchingStringValue( titanLoadoutsDataTable, GetDataTableColumnByName( titanLoadoutsDataTable, "titanRef" ), titanRef )
|
|
//InitUnlock( GetDataTableString( titanLoadoutsDataTable, i, GetDataTableColumnByName( titanLoadoutsDataTable, "passive1" ) ), titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
//InitUnlock( GetDataTableString( titanLoadoutsDataTable, i, GetDataTableColumnByName( titanLoadoutsDataTable, "passive2" ) ), titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
//InitUnlock( GetDataTableString( titanLoadoutsDataTable, i, GetDataTableColumnByName( titanLoadoutsDataTable, "passive3" ) ), titanRef, eUnlockType.TITAN_LEVEL, 1 )
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/default_pilot_loadouts.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < NUM_PERSISTENT_PILOT_LOADOUTS; i++ )
|
|
{
|
|
PilotLoadoutDef loadout
|
|
loadout.name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "name" ) )
|
|
loadout.suit = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "suit" ) )
|
|
loadout.race = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "race" ) )
|
|
loadout.primary = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "primary" ) )
|
|
loadout.primaryAttachment = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "primaryAttachment" ) )
|
|
loadout.primaryMod1 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "primaryMod1" ) )
|
|
loadout.primaryMod2 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "primaryMod2" ) )
|
|
loadout.primaryMod3 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "primaryMod3" ) )
|
|
loadout.secondary = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "secondary" ) )
|
|
loadout.secondaryMod1 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "secondaryMod1" ) )
|
|
loadout.secondaryMod2 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "secondaryMod2" ) )
|
|
loadout.secondaryMod3 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "secondaryMod3" ) )
|
|
loadout.weapon3 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "weapon3" ) )
|
|
loadout.weapon3Mod1 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "weapon3Mod1" ) )
|
|
loadout.weapon3Mod2 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "weapon3Mod2" ) )
|
|
loadout.weapon3Mod3 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "weapon3Mod3" ) )
|
|
loadout.ordnance = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "ordnance" ) )
|
|
loadout.passive1 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "passive1" ) )
|
|
loadout.passive2 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "passive2" ) )
|
|
|
|
UpdateDerivedPilotLoadoutData( loadout )
|
|
|
|
if ( !(loadout.suit in file.unlocks) )
|
|
InitUnlock( loadout.suit, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
if ( !(loadout.primary in file.unlocks) )
|
|
{
|
|
InitUnlock( loadout.primary, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
if ( loadout.primaryAttachment != "" )
|
|
InitUnlock( loadout.primaryAttachment, loadout.primary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( loadout.primaryMod1 != "" )
|
|
InitUnlock( loadout.primaryMod1, loadout.primary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( loadout.primaryMod2 != "" )
|
|
InitUnlock( loadout.primaryMod2, loadout.primary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( loadout.primaryMod3 != "" )
|
|
InitUnlock( loadout.primaryMod3, loadout.primary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
}
|
|
|
|
if ( !(loadout.secondary in file.unlocks) )
|
|
{
|
|
InitUnlock( loadout.secondary, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
if ( loadout.secondaryMod1 != "" )
|
|
InitUnlock( loadout.secondaryMod1, loadout.secondary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( loadout.secondaryMod2 != "" )
|
|
InitUnlock( loadout.secondaryMod2, loadout.secondary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( loadout.secondaryMod3 != "" )
|
|
InitUnlock( loadout.secondaryMod3, loadout.secondary, eUnlockType.WEAPON_LEVEL, 1 )
|
|
}
|
|
|
|
if ( !(loadout.special in file.unlocks) )
|
|
InitUnlock( loadout.special, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
if ( !(loadout.ordnance in file.unlocks) )
|
|
InitUnlock( loadout.ordnance, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
if ( !(loadout.passive1 in file.unlocks) )
|
|
InitUnlock( loadout.passive1, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
if ( !(loadout.passive2 in file.unlocks) )
|
|
InitUnlock( loadout.passive2, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_weapons.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "itemRef" ) )
|
|
|
|
string defaultAttachment = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "defaultAttachment" ) )
|
|
string defaultMod1 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "defaultMod1" ) )
|
|
string defaultMod2 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "defaultMod2" ) )
|
|
string defaultMod3 = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "defaultMod3" ) )
|
|
|
|
if ( defaultAttachment != "" )
|
|
InitUnlock( defaultAttachment, itemRef, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( defaultMod1 != "" )
|
|
InitUnlock( defaultMod1, itemRef, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( defaultMod2 != "" )
|
|
InitUnlock( defaultMod2, itemRef, eUnlockType.WEAPON_LEVEL, 1 )
|
|
if ( defaultMod3 != "" )
|
|
InitUnlock( defaultMod3, itemRef, eUnlockType.WEAPON_LEVEL, 1 )
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/unlocks_weapon_level_pilot.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
column = 1
|
|
while ( true )
|
|
{
|
|
string weaponRef = GetDataTableString( dataTable, 0, column )
|
|
if ( weaponRef == "END" )
|
|
break
|
|
|
|
for ( int row = 1; row < numRows; row++ )
|
|
{
|
|
string unlockField = GetDataTableString( dataTable, row, column )
|
|
array<string> unlockArray = SplitAndStripUnlockField( unlockField )
|
|
|
|
foreach ( unlock in unlockArray )
|
|
{
|
|
if ( unlock != "" )
|
|
InitUnlock( unlock, weaponRef, eUnlockType.WEAPON_LEVEL, row )
|
|
}
|
|
}
|
|
|
|
column++
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/pilot_weapon_mods.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
var weaponTable = GetDataTable( $"datatable/pilot_weapons.rpak" )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string mod = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_COLUMN )
|
|
string weapon = GetDataTableString( dataTable, i, PILOT_WEAPON_MOD_WEAPON_COLUMN )
|
|
Assert( weapon in file.unlocks, "Weapon " + weapon + " does not exist in the unlock datatables." )
|
|
Assert( mod in file.unlocks[ weapon ].child, "Mod " + mod + " for weapon " + weapon + " does not exist in the unlock datatables." )
|
|
}
|
|
|
|
int titanClassEnumCount = PersistenceGetEnumCount( "titanClasses" )
|
|
array<string> pilotWeaponRefs = GetAllItemRefsOfType( eItemTypes.PILOT_PRIMARY )
|
|
pilotWeaponRefs.extend( GetAllItemRefsOfType( eItemTypes.PILOT_SECONDARY ) )
|
|
|
|
|
|
//////////////////////////
|
|
// DEV
|
|
//////////////////////////
|
|
InitUnlock( "gc_icon_respawn_dev", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
//////////////////////////
|
|
// SP
|
|
//////////////////////////
|
|
InitUnlock( "callsign_103_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_103_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_103_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
//////////////////////////
|
|
// Tech Test
|
|
//////////////////////////
|
|
InitUnlock( "callsign_105_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
//////////////////////////
|
|
// Email Signup
|
|
//////////////////////////
|
|
InitUnlock( "callsign_104_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_104_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_104_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
InitUnlock( "callsign_goodboy", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
|
|
InitUnlock( "callsign_contest_01", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_02", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_03", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_04", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_05", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_06", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_07", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_08", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_09", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_contest_10", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
|
|
//////////////////////////
|
|
// Holidays
|
|
//////////////////////////
|
|
InitUnlock( "callsign_126_col", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_127_col", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_130_col", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
InitUnlock( "callsign_131_col", "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
//InitUnlock( "callsign_126_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 ) //Unlocked in-game or via advocate gifts
|
|
//InitUnlock( "callsign_127_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 ) //Unlocked in-game or via advocate gifts
|
|
|
|
//////////////////////////
|
|
// Reserved for future use
|
|
//////////////////////////
|
|
InitUnlock( "callsign_65_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_14_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_14_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
InitUnlock( "callsign_129_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_132_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_133_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_134_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_135_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_136_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_137_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_125_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_126_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_127_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_129_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_130_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_131_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_132_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_133_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_134_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_135_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_136_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_137_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_125_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_126_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_127_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_129_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_130_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_131_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_132_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_133_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_134_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_135_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_136_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_137_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_125_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_128_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_129_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_130_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_131_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_132_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_133_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_134_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_135_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_136_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_137_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_138_col_prism", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_140_col", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_140_col_fire", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_140_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
// InitUnlock( "callsign_14_col_gold", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_38_col_gold", "", eUnlockType.PLAYER_LEVEL, 2500 )
|
|
InitUnlock( "callsign_33_col_gold", "", eUnlockType.PLAYER_LEVEL, 5000 )
|
|
|
|
InitUnlock( "gc_icon_blank", "", eUnlockType.PLAYER_LEVEL, 451 )
|
|
|
|
InitUnlock( "callsign_regen_10_col", "", eUnlockType.PLAYER_LEVEL, 451 )
|
|
InitUnlock( "callsign_regen_10_col_prism", "", eUnlockType.PLAYER_LEVEL, 950 )
|
|
InitUnlock( "callsign_regen_20_col", "", eUnlockType.PLAYER_LEVEL, 951 )
|
|
InitUnlock( "callsign_regen_20_col_prism", "", eUnlockType.PLAYER_LEVEL, 1450 )
|
|
InitUnlock( "callsign_regen_30_col", "", eUnlockType.PLAYER_LEVEL, 1451 )
|
|
InitUnlock( "callsign_regen_30_col_prism", "", eUnlockType.PLAYER_LEVEL, 1950 )
|
|
InitUnlock( "callsign_regen_40_col", "", eUnlockType.PLAYER_LEVEL, 1951 )
|
|
InitUnlock( "callsign_regen_40_col_prism", "", eUnlockType.PLAYER_LEVEL, 2450 )
|
|
InitUnlock( "callsign_regen_50_col", "", eUnlockType.PLAYER_LEVEL, 2451 )
|
|
InitUnlock( "callsign_regen_50_col_prism", "", eUnlockType.PLAYER_LEVEL, 2950 )
|
|
InitUnlock( "callsign_regen_60_col", "", eUnlockType.PLAYER_LEVEL, 2951 )
|
|
InitUnlock( "callsign_regen_60_col_prism", "", eUnlockType.PLAYER_LEVEL, 3450 )
|
|
InitUnlock( "callsign_regen_70_col", "", eUnlockType.PLAYER_LEVEL, 3451 )
|
|
InitUnlock( "callsign_regen_70_col_prism", "", eUnlockType.PLAYER_LEVEL, 3950 )
|
|
InitUnlock( "callsign_regen_80_col", "", eUnlockType.PLAYER_LEVEL, 3951 )
|
|
InitUnlock( "callsign_regen_80_col_prism", "", eUnlockType.PLAYER_LEVEL, 4450 )
|
|
InitUnlock( "callsign_regen_90_col", "", eUnlockType.PLAYER_LEVEL, 4451 )
|
|
InitUnlock( "callsign_regen_90_col_prism", "", eUnlockType.PLAYER_LEVEL, 4950 )
|
|
InitUnlock( "callsign_regen_100_col", "", eUnlockType.PLAYER_LEVEL, 4951 )
|
|
InitUnlock( "callsign_regen_100_col_prism", "", eUnlockType.PLAYER_LEVEL, 5000 )
|
|
|
|
|
|
InitUnlock( "gc_icon_deuce", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
for ( int i = 0; i < titanClassEnumCount; i++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", i )
|
|
|
|
if ( IsDisabledRef( titanClass ) )
|
|
continue
|
|
|
|
if ( titanClass != "" )
|
|
{
|
|
InitUnlock( "titan_camo_skin09", titanClass, eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "camo_skin09", titanClass, eUnlockType.PERSISTENT_ITEM, 0 )
|
|
}
|
|
}
|
|
|
|
InitUnlock( "pilot_camo_skin09", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
InitUnlock( "camo_skin09", weaponClassName, eUnlockType.PERSISTENT_ITEM, 0 )
|
|
}
|
|
//////////////////////////
|
|
// CHALLENGES
|
|
//////////////////////////
|
|
// InitUnlockForStatInt( "titan_camo_skin67", "ion", 100, "misc_stats", "titanFalls" )
|
|
|
|
////////////////// CALLSIGN CHALLENGES //////////////////////////////////////////////////////////////////
|
|
|
|
//Live Fire Wins
|
|
InitUnlockForStatInt( "callsign_142_col", "", 5, "game_stats", "mode_won", "speedball" )
|
|
InitUnlockForStatInt( "callsign_142_col_fire", "", 10, "game_stats", "mode_won", "speedball" )
|
|
InitUnlockForStatInt( "callsign_142_col_gold", "", 20, "game_stats", "mode_won", "speedball" )
|
|
InitUnlockForStatInt( "callsign_138_col", "", 35, "game_stats", "mode_won", "speedball" )
|
|
InitUnlockForStatInt( "callsign_138_col_fire", "", 50, "game_stats", "mode_won", "speedball" )
|
|
InitUnlockForStatInt( "callsign_138_col_gold", "", 100, "game_stats", "mode_won", "speedball" )
|
|
//Live Fire Played
|
|
InitUnlockForStatInt( "callsign_141_col", "", 2, "game_stats", "mode_played", "speedball" )
|
|
InitUnlockForStatInt( "callsign_141_col_fire", "", 5, "game_stats", "mode_played", "speedball" )
|
|
InitUnlockForStatInt( "callsign_141_col_gold", "", 15, "game_stats", "mode_played", "speedball" )
|
|
//Live Fire Kills
|
|
InitUnlockForStatInt( "gc_icon_threebullets", "", 3, "game_stats", "pvp_kills_by_mode", "speedball" )
|
|
InitUnlockForStatInt( "gc_icon_prowlerhead", "", 10, "game_stats", "pvp_kills_by_mode", "speedball" )
|
|
InitUnlockForStatInt( "gc_icon_shuriken", "", 25, "game_stats", "pvp_kills_by_mode", "speedball" )
|
|
InitUnlockForStatInt( "gc_icon_squid", "", 50, "game_stats", "pvp_kills_by_mode", "speedball" )
|
|
InitUnlockForStatInt( "gc_icon_tick", "", 100, "game_stats", "pvp_kills_by_mode", "speedball" )
|
|
InitUnlockForStatInt( "gc_icon_scythe", "", 250, "game_stats", "pvp_kills_by_mode", "speedball" )
|
|
|
|
InitUnlockForStatInt( "gc_icon_fd_normal", "", 10, "fd_stats", "normalWins" )
|
|
InitUnlockForStatInt( "gc_icon_fd_hard", "", 10, "fd_stats", "hardWins" )
|
|
InitUnlockForStatInt( "gc_icon_fd_master", "", 10, "fd_stats", "masterWins" )
|
|
InitUnlockForStatInt( "gc_icon_fd_insane", "", 10, "fd_stats", "insaneWins" )
|
|
|
|
InitUnlockForStatInt( "fd_hard", "", 5, "fd_stats", "highestTitanFDLevel" )
|
|
InitUnlockForStatInt( "fd_master", "", 11, "fd_stats", "highestTitanFDLevel" )
|
|
InitUnlockForStatInt( "fd_insane", "", 14, "fd_stats", "highestTitanFDLevel" )
|
|
|
|
//Distance
|
|
InitUnlockForStatFloat( "callsign_97_col", "", 40.0, "distance_stats", "total" )
|
|
InitUnlockForStatFloat( "callsign_97_col_fire", "", 400.0, "distance_stats", "total" )
|
|
InitUnlockForStatFloat( "callsign_97_col_gold", "", 4000.0, "distance_stats", "total" )
|
|
//Wallrun Distance
|
|
InitUnlockForStatFloat( "callsign_99_col", "", 5.0, "distance_stats", "asPilot" )
|
|
InitUnlockForStatFloat( "callsign_99_col_fire", "", 10.0, "distance_stats", "asPilot" )
|
|
InitUnlockForStatFloat( "callsign_99_col_gold", "", 25.0, "distance_stats", "asPilot" )
|
|
//Headshots
|
|
InitUnlockForStatInt( "callsign_04_col", "", 50, "kills_stats", "pilot_headshots_total" )
|
|
InitUnlockForStatInt( "callsign_04_col_fire", "", 100, "kills_stats", "pilot_headshots_total" )
|
|
InitUnlockForStatInt( "callsign_04_col_gold", "", 250, "kills_stats", "pilot_headshots_total" )
|
|
//MVP
|
|
InitUnlockForStatInt( "gc_icon_pro", "", 10, "game_stats", "mvp_total" )
|
|
//Evac
|
|
InitUnlockForStatInt( "gc_icon_balloon", "", 5, "misc_stats", "evacsSurvived" )
|
|
//First Strike
|
|
InitUnlockForStatInt( "gc_icon_vip", "", 5, "kills_stats", "firstStrikes" )
|
|
//Eject
|
|
InitUnlockForStatInt( "gc_icon_bat", "", 3, "kills_stats", "ejectingPilots" )
|
|
//Titanfall Kills
|
|
InitUnlockForStatInt( "gc_icon_apostrophe", "", 3, "kills_stats", "titanFallKill" )
|
|
//Rodeo Kills
|
|
InitUnlockForStatInt( "gc_icon_cowboy_hat", "", 3, "kills_stats", "rodeo_total" )
|
|
//First to Fall
|
|
InitUnlockForStatInt( "gc_icon_striketwice", "", 3, "misc_stats", "titanFallsFirst" )
|
|
//Titanfalls
|
|
InitUnlockForStatInt( "callsign_23_col", "", 15, "misc_stats", "titanFalls" )
|
|
InitUnlockForStatInt( "callsign_23_col_fire", "", 50, "misc_stats", "titanFalls" )
|
|
InitUnlockForStatInt( "callsign_23_col_gold", "", 150, "misc_stats", "titanFalls" )
|
|
// ////////////////// PILOT CHALLENGES //////////////////
|
|
|
|
//Pilot Kills
|
|
InitUnlockForStatInt( "pilot_camo_skin67", "", 100, "kills_stats", "pilots" )
|
|
InitUnlockForStatInt( "pilot_camo_skin65", "", 500, "kills_stats", "pilots" )
|
|
InitUnlockForStatInt( "pilot_camo_skin66", "", 1000, "kills_stats", "pilots" )
|
|
InitUnlockForStatInt( "pilot_camo_skin64", "", 2500, "kills_stats", "pilots" )
|
|
InitUnlockForStatInt( "pilot_camo_skin63", "", 5000, "kills_stats", "pilots" )
|
|
//Kill Spree 3
|
|
InitUnlockForStatInt( "pilot_camo_skin13", "", 10, "misc_stats", "killingSprees" )
|
|
InitUnlockForStatInt( "pilot_camo_skin07", "", 25, "misc_stats", "killingSprees" )
|
|
InitUnlockForStatInt( "pilot_camo_skin87", "", 100, "misc_stats", "killingSprees" )
|
|
//Pilot Executions
|
|
InitUnlockForStatInt( "pilot_camo_skin60", "", 3, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "pilot_camo_skin61", "", 5, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "pilot_camo_skin62", "", 10, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "pilot_camo_skin59", "", 25, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "execution_telefrag", "", 50, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "execution_stim", "", 10, "kills_stats", "pilotExecutePilotUsing_execution_telefrag" )
|
|
InitUnlockForStatInt( "execution_grapple", "", 75, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "execution_pulseblade", "", 10, "weapon_kill_stats", "pilots" , "mp_weapon_grenade_sonar" )
|
|
InitUnlockForStatInt( "execution_random", "", 0, "kills_stats", "pilotExecutePilot" )
|
|
InitUnlockForStatInt( "execution_cloak", "", 10, "kills_stats", "pilotExecutePilotWhileCloaked" )
|
|
InitUnlockForStatInt( "execution_holopilot", "", 20, "kills_stats", "pilotKillsWithHoloPilotActive" )
|
|
InitUnlockForStatInt( "execution_ampedwall", "", 5, "kills_stats", "pilotKillsWithAmpedWallActive" )
|
|
|
|
//Distance
|
|
InitUnlockForStatFloat( "pilot_camo_skin56", "", 100.0, "distance_stats", "asPilot" )
|
|
InitUnlockForStatFloat( "pilot_camo_skin58", "", 250.0, "distance_stats", "asPilot" )
|
|
InitUnlockForStatFloat( "pilot_camo_skin55", "", 500.0, "distance_stats", "asPilot" )
|
|
InitUnlockForStatFloat( "pilot_camo_skin57", "", 1000.0, "distance_stats", "asPilot" )
|
|
InitUnlockForStatFloat( "pilot_camo_skin91", "", 2500.0, "distance_stats", "asPilot" )
|
|
//Wallrun Distance
|
|
InitUnlockForStatFloat( "pilot_camo_skin93", "", 2.0, "distance_stats", "wallrunning" )
|
|
InitUnlockForStatFloat( "pilot_camo_skin94", "", 20.0, "distance_stats", "wallrunning" )
|
|
InitUnlockForStatFloat( "pilot_camo_skin85", "", 200.0, "distance_stats", "wallrunning" )
|
|
//Pilot Headshot Kills
|
|
// InitUnlockForStatInt( "pilot_camo_skin56", "", 25, "kills_stats", "pilot_headshots_total" )
|
|
// InitUnlockForStatInt( "pilot_camo_skin57", "", 100, "kills_stats", "pilot_headshots_total" )
|
|
// InitUnlockForStatInt( "pilot_camo_skin85", "", 250, "kills_stats", "pilot_headshots_total" )
|
|
// //Assists
|
|
// InitUnlockForStatInt( "pilot_camo_skin93", "", 5, "misc_stats", "killingSprees" )
|
|
// InitUnlockForStatInt( "pilot_camo_skin94", "", 15, "misc_stats", "killingSprees" )
|
|
// InitUnlockForStatInt( "pilot_camo_skin85", "", 30, "misc_stats", "killingSprees" )
|
|
|
|
|
|
// ////////////////// PILOT WEAPON CHALLENGES //////////////////
|
|
|
|
//Pilot Weapon Kills
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_rspn101", 100, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_rspn101", 250, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_rspn101", 500, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_rspn101", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_rspn101", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_rspn101_og", 100, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_rspn101_og", 250, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_rspn101_og", 500, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_rspn101_og", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_rspn101_og", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_rspn101_og" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_hemlok", 100, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_hemlok", 250, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_hemlok", 500, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_hemlok", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_hemlok", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_g2", 100, "weapon_kill_stats", "pilots" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_g2", 250, "weapon_kill_stats", "pilots" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_g2", 500, "weapon_kill_stats", "pilots" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_g2", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_g2", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_g2" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_vinson", 100, "weapon_kill_stats", "pilots" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_vinson", 250, "weapon_kill_stats", "pilots" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_vinson", 500, "weapon_kill_stats", "pilots" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_vinson", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_vinson", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_vinson" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_car", 100, "weapon_kill_stats", "pilots" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_car", 250, "weapon_kill_stats", "pilots" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_car", 500, "weapon_kill_stats", "pilots" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_car", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_car", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_car" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_r97", 100, "weapon_kill_stats", "pilots" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_r97", 250, "weapon_kill_stats", "pilots" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_r97", 500, "weapon_kill_stats", "pilots" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_r97", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_r97", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_r97" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_alternator_smg", 100, "weapon_kill_stats", "pilots" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_alternator_smg", 250, "weapon_kill_stats", "pilots" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_alternator_smg", 500, "weapon_kill_stats", "pilots" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_alternator_smg", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_alternator_smg", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_alternator_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_hemlok_smg", 100, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_hemlok_smg", 250, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_hemlok_smg", 500, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_hemlok_smg", 1000, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_hemlok_smg", 2500, "weapon_kill_stats", "pilots" , "mp_weapon_hemlok_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_lmg", 100, "weapon_kill_stats", "pilots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_lmg", 250, "weapon_kill_stats", "pilots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_lmg", 500, "weapon_kill_stats", "pilots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_lmg", 1000, "weapon_kill_stats", "pilots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_lmg", 2500, "weapon_kill_stats", "pilots", "mp_weapon_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_lstar", 100, "weapon_kill_stats", "pilots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_lstar", 250, "weapon_kill_stats", "pilots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_lstar", 500, "weapon_kill_stats", "pilots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_lstar", 1000, "weapon_kill_stats", "pilots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_lstar", 2500, "weapon_kill_stats", "pilots", "mp_weapon_lstar" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_esaw", 100, "weapon_kill_stats", "pilots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_esaw", 250, "weapon_kill_stats", "pilots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_esaw", 500, "weapon_kill_stats", "pilots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_esaw", 1000, "weapon_kill_stats", "pilots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_esaw", 2500, "weapon_kill_stats", "pilots", "mp_weapon_esaw" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_shotgun", 100, "weapon_kill_stats", "pilots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_shotgun", 250, "weapon_kill_stats", "pilots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_shotgun", 500, "weapon_kill_stats", "pilots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_shotgun", 1000, "weapon_kill_stats", "pilots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_shotgun", 2500, "weapon_kill_stats", "pilots", "mp_weapon_shotgun" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_mastiff", 100, "weapon_kill_stats", "pilots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_mastiff", 250, "weapon_kill_stats", "pilots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_mastiff", 500, "weapon_kill_stats", "pilots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_mastiff", 1000, "weapon_kill_stats", "pilots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_mastiff", 2500, "weapon_kill_stats", "pilots", "mp_weapon_mastiff" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_doubletake", 100, "weapon_kill_stats", "pilots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_doubletake", 250, "weapon_kill_stats", "pilots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_doubletake", 500, "weapon_kill_stats", "pilots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_doubletake", 1000, "weapon_kill_stats", "pilots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_doubletake", 2500, "weapon_kill_stats", "pilots", "mp_weapon_doubletake" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_sniper", 100, "weapon_kill_stats", "pilots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_sniper", 250, "weapon_kill_stats", "pilots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_sniper", 500, "weapon_kill_stats", "pilots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_sniper", 1000, "weapon_kill_stats", "pilots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_sniper", 2500, "weapon_kill_stats", "pilots", "mp_weapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_dmr", 100, "weapon_kill_stats", "pilots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_dmr", 250, "weapon_kill_stats", "pilots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_dmr", 500, "weapon_kill_stats", "pilots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_dmr", 1000, "weapon_kill_stats", "pilots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_dmr", 2500, "weapon_kill_stats", "pilots", "mp_weapon_dmr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_epg", 100, "weapon_kill_stats", "pilots", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_epg", 250, "weapon_kill_stats", "pilots", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_epg", 500, "weapon_kill_stats", "pilots", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_epg", 1000, "weapon_kill_stats", "pilots", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_epg", 2500, "weapon_kill_stats", "pilots", "mp_weapon_epg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_softball", 100, "weapon_kill_stats", "pilots", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_softball", 250, "weapon_kill_stats", "pilots", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_softball", 500, "weapon_kill_stats", "pilots", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_softball", 1000, "weapon_kill_stats", "pilots", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_softball", 2500, "weapon_kill_stats", "pilots", "mp_weapon_softball" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_smr", 100, "weapon_kill_stats", "pilots", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_smr", 250, "weapon_kill_stats", "pilots", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_smr", 500, "weapon_kill_stats", "pilots", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_smr", 1000, "weapon_kill_stats", "pilots", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_smr", 2500, "weapon_kill_stats", "pilots", "mp_weapon_smr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_pulse_lmg", 100, "weapon_kill_stats", "pilots", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_pulse_lmg", 250, "weapon_kill_stats", "pilots", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_pulse_lmg", 500, "weapon_kill_stats", "pilots", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_pulse_lmg", 1000, "weapon_kill_stats", "pilots", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_pulse_lmg", 2500, "weapon_kill_stats", "pilots", "mp_weapon_pulse_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_autopistol", 100, "weapon_kill_stats", "pilots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_autopistol", 250, "weapon_kill_stats", "pilots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_autopistol", 500, "weapon_kill_stats", "pilots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_autopistol", 1000, "weapon_kill_stats", "pilots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_autopistol", 2500, "weapon_kill_stats", "pilots", "mp_weapon_autopistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_semipistol", 100, "weapon_kill_stats", "pilots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_semipistol", 250, "weapon_kill_stats", "pilots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_semipistol", 500, "weapon_kill_stats", "pilots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_semipistol", 1000, "weapon_kill_stats", "pilots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_semipistol", 2500, "weapon_kill_stats", "pilots", "mp_weapon_semipistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_shotgun_pistol", 100, "weapon_kill_stats", "pilots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_shotgun_pistol", 250, "weapon_kill_stats", "pilots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_shotgun_pistol", 500, "weapon_kill_stats", "pilots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_shotgun_pistol", 1000, "weapon_kill_stats", "pilots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_shotgun_pistol", 2500, "weapon_kill_stats", "pilots", "mp_weapon_shotgun_pistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_wingman", 100, "weapon_kill_stats", "pilots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_wingman", 250, "weapon_kill_stats", "pilots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_wingman", 500, "weapon_kill_stats", "pilots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_wingman", 1000, "weapon_kill_stats", "pilots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_wingman", 2500, "weapon_kill_stats", "pilots", "mp_weapon_wingman" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_wingman_n", 100, "weapon_kill_stats", "pilots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_wingman_n", 250, "weapon_kill_stats", "pilots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_wingman_n", 500, "weapon_kill_stats", "pilots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_wingman_n", 1000, "weapon_kill_stats", "pilots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_wingman_n", 2500, "weapon_kill_stats", "pilots", "mp_weapon_wingman_n" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_defender", 2, "weapon_kill_stats", "titansTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_defender", 20, "weapon_kill_stats", "titansTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_defender", 100, "weapon_kill_stats", "titansTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_defender", 200, "weapon_kill_stats", "titansTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_defender", 500, "weapon_kill_stats", "titansTotal", "mp_weapon_defender" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_mgl", 2, "weapon_kill_stats", "titansTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_mgl", 20, "weapon_kill_stats", "titansTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_mgl", 100,"weapon_kill_stats", "titansTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_mgl", 200, "weapon_kill_stats", "titansTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_mgl", 500, "weapon_kill_stats", "titansTotal", "mp_weapon_mgl" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_arc_launcher", 2, "weapon_kill_stats", "titansTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_arc_launcher", 20, "weapon_kill_stats", "titansTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_arc_launcher", 100,"weapon_kill_stats", "titansTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_arc_launcher", 200, "weapon_kill_stats", "titansTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_arc_launcher", 500, "weapon_kill_stats", "titansTotal", "mp_weapon_arc_launcher" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "mp_weapon_rocket_launcher", 2, "weapon_kill_stats", "titansTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin65", "mp_weapon_rocket_launcher", 20, "weapon_kill_stats", "titansTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin66", "mp_weapon_rocket_launcher", 100,"weapon_kill_stats", "titansTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin64", "mp_weapon_rocket_launcher", 200, "weapon_kill_stats", "titansTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin63", "mp_weapon_rocket_launcher", 500, "weapon_kill_stats", "titansTotal", "mp_weapon_rocket_launcher" )
|
|
//Pilot Weapon Assists
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_rspn101", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_rspn101", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_rspn101", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_rspn101", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_rspn101", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_rspn101_og", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_rspn101_og", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_rspn101_og", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_rspn101_og", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_rspn101_og", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_rspn101_og" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_hemlok", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_hemlok", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_hemlok", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_hemlok", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_hemlok", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_g2", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_g2", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_g2", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_g2", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_g2", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_g2" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_vinson", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_vinson", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_vinson", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_vinson", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_vinson", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_vinson" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_car", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_car", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_car", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_car", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_car", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_car" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_r97", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_r97", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_r97", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_r97", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_r97", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_r97" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_alternator_smg", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_alternator_smg", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_alternator_smg", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_alternator_smg", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_alternator_smg", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_alternator_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_hemlok_smg", 10, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_hemlok_smg", 100, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_hemlok_smg", 500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_hemlok_smg", 1000, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_hemlok_smg", 2500, "weapon_kill_stats", "assistsTotal" , "mp_weapon_hemlok_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_lmg", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_lmg", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_lmg", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_lmg", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_lmg", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_lstar", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_lstar", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_lstar", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_lstar", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_lstar", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_lstar" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_esaw", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_esaw", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_esaw", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_esaw", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_esaw", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_esaw" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_shotgun", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_shotgun", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_shotgun", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_shotgun", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_shotgun", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_mastiff", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_mastiff", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_mastiff", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_mastiff", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_mastiff", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_mastiff" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_doubletake", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_doubletake", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_doubletake", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_doubletake", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_doubletake", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_doubletake" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_sniper", 10, "weapon_stats", "shotsHit", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_sniper", 100, "weapon_stats", "shotsHit", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_sniper", 500, "weapon_stats", "shotsHit", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_sniper", 1000, "weapon_stats", "shotsHit", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_sniper", 2500, "weapon_stats", "shotsHit", "mp_weapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_dmr", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_dmr", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_dmr", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_dmr", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_dmr", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_dmr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_epg", 5, "weapon_kill_stats", "assistsTotal", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_epg", 50, "weapon_kill_stats", "assistsTotal", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_epg", 250, "weapon_kill_stats", "assistsTotal", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_epg", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_epg", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_epg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_softball", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_softball", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_softball", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_softball", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_softball", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_softball" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_smr", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_smr", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_smr", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_smr", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_smr", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_smr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_pulse_lmg", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_pulse_lmg", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_pulse_lmg", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_pulse_lmg", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_pulse_lmg", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_pulse_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_autopistol", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_autopistol", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_autopistol", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_autopistol", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_autopistol", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_autopistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_semipistol", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_semipistol", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_semipistol", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_semipistol", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_semipistol", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_semipistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_shotgun_pistol", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_shotgun_pistol", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_shotgun_pistol", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_shotgun_pistol", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_shotgun_pistol", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_shotgun_pistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_wingman", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_wingman", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_wingman", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_wingman", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_wingman", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_wingman_n", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_wingman_n", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_wingman_n", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_wingman_n", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_wingman_n", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_wingman_n" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_defender", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_defender", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_defender", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_defender", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_defender", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_defender" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_mgl", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_mgl", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_mgl", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_mgl", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_mgl", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_mgl" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_arc_launcher", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_arc_launcher", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_arc_launcher", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_arc_launcher", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_arc_launcher", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_arc_launcher" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "mp_weapon_rocket_launcher", 10, "weapon_kill_stats", "assistsTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin58", "mp_weapon_rocket_launcher", 100, "weapon_kill_stats", "assistsTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin55", "mp_weapon_rocket_launcher", 500, "weapon_kill_stats", "assistsTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin57", "mp_weapon_rocket_launcher", 1000, "weapon_kill_stats", "assistsTotal", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin91", "mp_weapon_rocket_launcher", 2500, "weapon_kill_stats", "assistsTotal", "mp_weapon_rocket_launcher" )
|
|
//Pilot Weapon SPREE
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_rspn101", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_rspn101", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_rspn101", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_rspn101", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_rspn101", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_rspn101_og", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_rspn101_og", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_rspn101_og", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_rspn101_og", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_rspn101_og", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_rspn101_og" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_hemlok", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_hemlok", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_hemlok", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_hemlok", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_hemlok", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_g2", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_g2", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_g2", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_g2", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_g2", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_g2" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_vinson", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_vinson", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_vinson", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_vinson", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_vinson", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_vinson" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_car", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_car", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_car", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_car", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_car", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_car" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_r97", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_r97", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_r97", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_r97", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_r97", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_r97" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_alternator_smg", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_alternator_smg", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_alternator_smg", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_alternator_smg", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_alternator_smg", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_alternator_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_hemlok_smg", 2, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_hemlok_smg", 5, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_hemlok_smg", 10, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_hemlok_smg", 25, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_hemlok_smg", 50, "weapon_kill_stats", "killingSprees" , "mp_weapon_hemlok_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_lmg", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_lmg", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_lmg", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_lmg", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_lmg", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_lstar", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_lstar", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_lstar", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_lstar", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_lstar", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_lstar" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_esaw", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_esaw", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_esaw", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_esaw", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_esaw", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_esaw" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_shotgun", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_shotgun", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_shotgun", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_shotgun", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_shotgun", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_mastiff", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_mastiff", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_mastiff", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_mastiff", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_mastiff", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_mastiff" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_doubletake", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_doubletake", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_doubletake", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_doubletake", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_doubletake", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_doubletake" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_sniper", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_sniper", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_sniper", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_sniper", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_sniper", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_dmr", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_dmr", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_dmr", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_dmr", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_dmr", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_dmr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_epg", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_epg", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_epg", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_epg", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_epg", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_epg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_softball", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_softball", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_softball", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_softball", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_softball", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_softball" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_smr", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_smr", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_smr", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_smr", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_smr", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_smr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_pulse_lmg", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_pulse_lmg", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_pulse_lmg", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_pulse_lmg", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_pulse_lmg", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_pulse_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_autopistol", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_autopistol", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_autopistol", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_autopistol", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_autopistol", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_autopistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_semipistol", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_semipistol", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_semipistol", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_semipistol", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_semipistol", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_semipistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_shotgun_pistol", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_shotgun_pistol", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_shotgun_pistol", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_shotgun_pistol", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_shotgun_pistol", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_shotgun_pistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_wingman", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_wingman", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_wingman", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_wingman", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_wingman", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_wingman_n", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_wingman_n", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_wingman_n", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_wingman_n", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_wingman_n", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_wingman_n" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_defender", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_defender", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_defender", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_defender", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_defender", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_defender" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_mgl", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_mgl", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_mgl", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_mgl", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_mgl", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_mgl" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_arc_launcher", 2, "weapon_kill_stats", "killingSprees", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_arc_launcher", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_arc_launcher", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_arc_launcher", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_arc_launcher", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_arc_launcher" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "mp_weapon_rocket_launcher", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin94", "mp_weapon_rocket_launcher", 5, "weapon_kill_stats", "killingSprees", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin13", "mp_weapon_rocket_launcher", 10, "weapon_kill_stats", "killingSprees", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin07", "mp_weapon_rocket_launcher", 25, "weapon_kill_stats", "killingSprees", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin85", "mp_weapon_rocket_launcher", 50, "weapon_kill_stats", "killingSprees", "mp_weapon_rocket_launcher" )
|
|
//Pilot Weapon Headshot
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_rspn101", 10, "weapon_stats", "headshots", "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_rspn101", 25, "weapon_stats", "headshots", "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_rspn101", 50, "weapon_stats", "headshots", "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_rspn101", 100, "weapon_stats", "headshots", "mp_weapon_rspn101" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_rspn101", 250, "weapon_stats", "headshots", "mp_weapon_rspn101" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_rspn101_og", 10, "weapon_stats", "headshots", "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_rspn101_og", 25, "weapon_stats", "headshots", "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_rspn101_og", 50, "weapon_stats", "headshots", "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_rspn101_og", 100, "weapon_stats", "headshots", "mp_weapon_rspn101_og" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_rspn101_og", 250, "weapon_stats", "headshots", "mp_weapon_rspn101_og" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_hemlok", 10, "weapon_stats", "headshots", "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_hemlok", 25, "weapon_stats", "headshots", "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_hemlok", 50, "weapon_stats", "headshots", "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_hemlok", 100, "weapon_stats", "headshots", "mp_weapon_hemlok" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_hemlok", 250, "weapon_stats", "headshots", "mp_weapon_hemlok" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_g2", 10, "weapon_stats", "headshots", "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_g2", 25, "weapon_stats", "headshots", "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_g2", 50, "weapon_stats", "headshots", "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_g2", 100, "weapon_stats", "headshots", "mp_weapon_g2" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_g2", 250, "weapon_stats", "headshots", "mp_weapon_g2" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_vinson", 10, "weapon_stats", "headshots", "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_vinson", 25, "weapon_stats", "headshots", "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_vinson", 50, "weapon_stats", "headshots", "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_vinson", 100, "weapon_stats", "headshots", "mp_weapon_vinson" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_vinson", 250, "weapon_stats", "headshots", "mp_weapon_vinson" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_car", 10, "weapon_stats", "headshots", "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_car", 25, "weapon_stats", "headshots", "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_car", 50, "weapon_stats", "headshots", "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_car", 100, "weapon_stats", "headshots", "mp_weapon_car" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_car", 250, "weapon_stats", "headshots", "mp_weapon_car" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_r97", 10, "weapon_stats", "headshots", "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_r97", 25, "weapon_stats", "headshots", "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_r97", 50, "weapon_stats", "headshots", "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_r97", 100, "weapon_stats", "headshots", "mp_weapon_r97" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_r97", 250, "weapon_stats", "headshots", "mp_weapon_r97" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_alternator_smg", 10, "weapon_stats", "headshots", "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_alternator_smg", 25, "weapon_stats", "headshots", "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_alternator_smg", 50, "weapon_stats", "headshots", "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_alternator_smg", 100, "weapon_stats", "headshots", "mp_weapon_alternator_smg" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_alternator_smg", 250, "weapon_stats", "headshots", "mp_weapon_alternator_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_hemlok_smg", 10, "weapon_stats", "headshots", "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_hemlok_smg", 25, "weapon_stats", "headshots", "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_hemlok_smg", 50, "weapon_stats", "headshots", "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_hemlok_smg", 100, "weapon_stats", "headshots", "mp_weapon_hemlok_smg" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_hemlok_smg", 250, "weapon_stats", "headshots", "mp_weapon_hemlok_smg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_lmg", 10, "weapon_stats", "headshots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_lmg", 25, "weapon_stats", "headshots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_lmg", 50, "weapon_stats", "headshots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_lmg", 100, "weapon_stats", "headshots", "mp_weapon_lmg" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_lmg", 250, "weapon_stats", "headshots", "mp_weapon_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_lstar", 10, "weapon_stats", "headshots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_lstar", 25, "weapon_stats", "headshots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_lstar", 50, "weapon_stats", "headshots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_lstar", 100, "weapon_stats", "headshots", "mp_weapon_lstar" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_lstar", 250, "weapon_stats", "headshots", "mp_weapon_lstar" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_esaw", 10, "weapon_stats", "headshots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_esaw", 25, "weapon_stats", "headshots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_esaw", 50, "weapon_stats", "headshots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_esaw", 100, "weapon_stats", "headshots", "mp_weapon_esaw" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_esaw", 250, "weapon_stats", "headshots", "mp_weapon_esaw" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_shotgun", 10, "weapon_stats", "headshots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_shotgun", 25, "weapon_stats", "headshots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_shotgun", 50, "weapon_stats", "headshots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_shotgun", 100, "weapon_stats", "headshots", "mp_weapon_shotgun" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_shotgun", 250, "weapon_stats", "headshots", "mp_weapon_shotgun" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_mastiff", 10, "weapon_stats", "headshots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_mastiff", 25, "weapon_stats", "headshots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_mastiff", 50, "weapon_stats", "headshots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_mastiff", 100, "weapon_stats", "headshots", "mp_weapon_mastiff" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_mastiff", 250, "weapon_stats", "headshots", "mp_weapon_mastiff" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_sniper", 10, "weapon_stats", "headshots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_sniper", 25, "weapon_stats", "headshots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_sniper", 50, "weapon_stats", "headshots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_sniper", 100, "weapon_stats", "headshots", "mp_weapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_sniper", 250, "weapon_stats", "headshots", "mp_weapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_doubletake", 10, "weapon_stats", "headshots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_doubletake", 25, "weapon_stats", "headshots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_doubletake", 50, "weapon_stats", "headshots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_doubletake", 100, "weapon_stats", "headshots", "mp_weapon_doubletake" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_doubletake", 250, "weapon_stats", "headshots", "mp_weapon_doubletake" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_dmr", 10, "weapon_stats", "headshots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_dmr", 25, "weapon_stats", "headshots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_dmr", 50, "weapon_stats", "headshots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_dmr", 100, "weapon_stats", "headshots", "mp_weapon_dmr" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_dmr", 250, "weapon_stats", "headshots", "mp_weapon_dmr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_autopistol", 5, "weapon_stats", "headshots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_autopistol", 10, "weapon_stats", "headshots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_autopistol", 25, "weapon_stats", "headshots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_autopistol", 50, "weapon_stats", "headshots", "mp_weapon_autopistol" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_autopistol", 100, "weapon_stats", "headshots", "mp_weapon_autopistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_semipistol", 5, "weapon_stats", "headshots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_semipistol", 10, "weapon_stats", "headshots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_semipistol", 25, "weapon_stats", "headshots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_semipistol", 50, "weapon_stats", "headshots", "mp_weapon_semipistol" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_semipistol", 100, "weapon_stats", "headshots", "mp_weapon_semipistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_shotgun_pistol", 5, "weapon_stats", "headshots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_shotgun_pistol", 10, "weapon_stats", "headshots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_shotgun_pistol", 25, "weapon_stats", "headshots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_shotgun_pistol", 50, "weapon_stats", "headshots", "mp_weapon_shotgun_pistol" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_shotgun_pistol", 100, "weapon_stats", "headshots", "mp_weapon_shotgun_pistol" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_wingman", 5, "weapon_stats", "headshots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_wingman", 10, "weapon_stats", "headshots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_wingman", 25, "weapon_stats", "headshots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_wingman", 50, "weapon_stats", "headshots", "mp_weapon_wingman" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_wingman", 100, "weapon_stats", "headshots", "mp_weapon_wingman" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_wingman_n", 5, "weapon_stats", "headshots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_wingman_n", 10, "weapon_stats", "headshots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_wingman_n", 25, "weapon_stats", "headshots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_wingman_n", 50, "weapon_stats", "headshots", "mp_weapon_wingman_n" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_wingman_n", 100, "weapon_stats", "headshots", "mp_weapon_wingman_n" )
|
|
|
|
//Shots hit for Grenadier and AT rather than headshots
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_epg", 25, "weapon_stats", "shotsHit", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_epg", 100, "weapon_stats", "shotsHit", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_epg", 250, "weapon_stats", "shotsHit", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_epg", 500, "weapon_stats", "shotsHit", "mp_weapon_epg" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_epg", 1000, "weapon_stats", "shotsHit", "mp_weapon_epg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_softball", 20, "weapon_stats", "shotsHit", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_softball", 50, "weapon_stats", "shotsHit", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_softball", 100, "weapon_stats", "shotsHit", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_softball", 250, "weapon_stats", "shotsHit", "mp_weapon_softball" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_softball", 500, "weapon_stats", "shotsHit", "mp_weapon_softball" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_smr", 50, "weapon_stats", "shotsHit", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_smr", 250, "weapon_stats", "shotsHit", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_smr", 500, "weapon_stats", "shotsHit", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_smr", 1000, "weapon_stats", "shotsHit", "mp_weapon_smr" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_smr", 2500, "weapon_stats", "shotsHit", "mp_weapon_smr" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_pulse_lmg", 100, "weapon_stats", "shotsHit", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_pulse_lmg", 500, "weapon_stats", "shotsHit", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_pulse_lmg", 1000, "weapon_stats", "shotsHit", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_pulse_lmg", 2500, "weapon_stats", "shotsHit", "mp_weapon_pulse_lmg" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_pulse_lmg", 5000, "weapon_stats", "shotsHit", "mp_weapon_pulse_lmg" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_defender", 20, "weapon_stats", "shotsHit", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_defender", 50, "weapon_stats", "shotsHit", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_defender", 100, "weapon_stats", "shotsHit", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_defender", 250, "weapon_stats", "shotsHit", "mp_weapon_defender" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_defender", 500, "weapon_stats", "shotsHit", "mp_weapon_defender" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_mgl", 50, "weapon_stats", "shotsHit", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_mgl", 250, "weapon_stats", "shotsHit", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_mgl", 500, "weapon_stats", "shotsHit", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_mgl", 1000, "weapon_stats", "shotsHit", "mp_weapon_mgl" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_mgl", 2500, "weapon_stats", "shotsHit", "mp_weapon_mgl" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_arc_launcher", 20, "weapon_stats", "shotsHit", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_arc_launcher", 50, "weapon_stats", "shotsHit", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_arc_launcher", 100, "weapon_stats", "shotsHit", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_arc_launcher", 250, "weapon_stats", "shotsHit", "mp_weapon_arc_launcher" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_arc_launcher", 500, "weapon_stats", "shotsHit", "mp_weapon_arc_launcher" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "mp_weapon_rocket_launcher", 10, "weapon_stats", "shotsHit", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin61", "mp_weapon_rocket_launcher", 25, "weapon_stats", "shotsHit", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin62", "mp_weapon_rocket_launcher", 50, "weapon_stats", "shotsHit", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin59", "mp_weapon_rocket_launcher", 100, "weapon_stats", "shotsHit", "mp_weapon_rocket_launcher" )
|
|
InitUnlockForStatInt( "camo_skin87", "mp_weapon_rocket_launcher", 250, "weapon_stats", "shotsHit", "mp_weapon_rocket_launcher" )
|
|
|
|
// ////////////////// Titan CHALLENGES //////////////////
|
|
|
|
//Titan killing Titans
|
|
InitUnlockForStatInt( "titan_camo_skin67", "ion", 10, "titan_stats", "titansTotal", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "ion", 50, "titan_stats", "titansTotal", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "ion", 100, "titan_stats", "titansTotal", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "ion", 250, "titan_stats", "titansTotal", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "ion", 500, "titan_stats", "titansTotal", "ion" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin67", "scorch", 10, "titan_stats", "titansTotal", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "scorch", 50, "titan_stats", "titansTotal", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "scorch", 100, "titan_stats", "titansTotal", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "scorch", 250, "titan_stats", "titansTotal", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "scorch", 500, "titan_stats", "titansTotal", "scorch" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin67", "vanguard", 10, "titan_stats", "titansTotal", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "vanguard", 50, "titan_stats", "titansTotal", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "vanguard", 100, "titan_stats", "titansTotal", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "vanguard", 250, "titan_stats", "titansTotal", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "vanguard", 500, "titan_stats", "titansTotal", "vanguard" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin67", "northstar", 10, "titan_stats", "titansTotal", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "northstar", 50, "titan_stats", "titansTotal", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "northstar", 100, "titan_stats", "titansTotal", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "northstar", 250, "titan_stats", "titansTotal", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "northstar", 500, "titan_stats", "titansTotal", "northstar" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin67", "ronin", 10, "titan_stats", "titansTotal", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "ronin", 50, "titan_stats", "titansTotal", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "ronin", 100, "titan_stats", "titansTotal", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "ronin", 250, "titan_stats", "titansTotal", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "ronin", 500, "titan_stats", "titansTotal", "ronin" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin67", "tone", 10, "titan_stats", "titansTotal", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "tone", 50, "titan_stats", "titansTotal", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "tone", 100, "titan_stats", "titansTotal", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "tone", 250, "titan_stats", "titansTotal", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "tone", 500, "titan_stats", "titansTotal", "tone" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin67", "legion", 10, "titan_stats", "titansTotal", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin65", "legion", 50, "titan_stats", "titansTotal", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin66", "legion", 100, "titan_stats", "titansTotal", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin64", "legion", 250, "titan_stats", "titansTotal", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin63", "legion", 500, "titan_stats", "titansTotal", "legion" )
|
|
|
|
//Titan killing Pilots
|
|
InitUnlockForStatInt( "titan_camo_skin60", "ion", 20, "titan_stats", "pilots", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "ion", 100, "titan_stats", "pilots", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "ion", 200, "titan_stats", "pilots", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "ion", 500, "titan_stats", "pilots", "ion" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin60", "scorch", 20, "titan_stats", "pilots", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "scorch", 100,"titan_stats", "pilots", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "scorch", 200, "titan_stats", "pilots", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "scorch", 500, "titan_stats", "pilots", "scorch" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin60", "vanguard", 20, "titan_stats", "pilots", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "vanguard", 100,"titan_stats", "pilots", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "vanguard", 200, "titan_stats", "pilots", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "vanguard", 500, "titan_stats", "pilots", "vanguard" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin60", "northstar", 20, "titan_stats", "pilots", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "northstar", 100,"titan_stats", "pilots", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "northstar", 200, "titan_stats", "pilots", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "northstar", 500, "titan_stats", "pilots", "northstar" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin60", "ronin", 20, "titan_stats", "pilots", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "ronin", 100,"titan_stats", "pilots", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "ronin", 200, "titan_stats", "pilots", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "ronin", 500, "titan_stats", "pilots", "ronin" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin60", "tone", 20, "titan_stats", "pilots", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "tone", 100,"titan_stats", "pilots", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "tone", 200, "titan_stats", "pilots", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "tone", 500, "titan_stats", "pilots", "tone" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin60", "legion", 20, "titan_stats", "pilots", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin61", "legion", 100,"titan_stats", "pilots", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin62", "legion", 200, "titan_stats", "pilots", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin59", "legion", 500, "titan_stats", "pilots", "legion" )
|
|
//TITAN DMG
|
|
InitUnlockForStatInt( "titan_camo_skin56", "ion", 300000, "titan_stats", "titanDamage", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "ion", 600000, "titan_stats", "titanDamage", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "ion", 1500000, "titan_stats", "titanDamage", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "ion", 3000000, "titan_stats", "titanDamage", "ion" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "ion", 5000000, "titan_stats", "titanDamage", "ion" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin56", "scorch", 300000, "titan_stats", "titanDamage", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "scorch", 600000, "titan_stats", "titanDamage", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "scorch", 1500000, "titan_stats", "titanDamage", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "scorch", 3000000, "titan_stats", "titanDamage", "scorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "scorch", 5000000, "titan_stats", "titanDamage", "scorch" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin56", "vanguard", 300000, "titan_stats", "titanDamage", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "vanguard", 600000, "titan_stats", "titanDamage", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "vanguard", 1500000, "titan_stats", "titanDamage", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "vanguard", 3000000, "titan_stats", "titanDamage", "vanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "vanguard", 5000000, "titan_stats", "titanDamage", "vanguard" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin56", "northstar", 300000, "titan_stats", "titanDamage", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "northstar", 600000, "titan_stats", "titanDamage", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "northstar", 1500000, "titan_stats", "titanDamage", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "northstar", 3000000, "titan_stats", "titanDamage", "northstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "northstar", 5000000, "titan_stats", "titanDamage", "northstar" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin56", "ronin", 300000, "titan_stats", "titanDamage", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "ronin", 600000, "titan_stats", "titanDamage", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "ronin", 1500000, "titan_stats", "titanDamage", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "ronin", 3000000, "titan_stats", "titanDamage", "ronin" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "ronin", 5000000, "titan_stats", "titanDamage", "ronin" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin56", "tone", 300000, "titan_stats", "titanDamage", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "tone", 600000, "titan_stats", "titanDamage", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "tone", 1500000, "titan_stats", "titanDamage", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "tone", 3000000, "titan_stats", "titanDamage", "tone" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "tone", 5000000, "titan_stats", "titanDamage", "tone" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin56", "legion", 600000, "titan_stats", "titanDamage", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin58", "legion", 1500000,"titan_stats", "titanDamage", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin55", "legion", 3000000, "titan_stats", "titanDamage", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin57", "legion", 5000000, "titan_stats", "titanDamage", "legion" )
|
|
InitUnlockForStatInt( "titan_camo_skin91", "legion", 7500000, "titan_stats", "titanDamage", "legion" )
|
|
//Titan DISTANCE
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "ion", 15, "distance_stats", "asTitan_ion" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "ion", 50, "distance_stats", "asTitan_ion" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "ion", 150, "distance_stats", "asTitan_ion" )
|
|
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "scorch", 15, "distance_stats", "asTitan_scorch" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "scorch", 50, "distance_stats", "asTitan_scorch" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "scorch", 150, "distance_stats", "asTitan_scorch" )
|
|
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "vanguard", 15, "distance_stats", "asTitan_vanguard" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "vanguard", 50, "distance_stats", "asTitan_vanguard" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "vanguard", 150, "distance_stats", "asTitan_vanguard" )
|
|
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "northstar", 15, "distance_stats", "asTitan_northstar" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "northstar", 50, "distance_stats", "asTitan_northstar" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "northstar", 150, "distance_stats", "asTitan_northstar" )
|
|
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "ronin", 15, "distance_stats", "asTitan_ronin" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "ronin", 50, "distance_stats", "asTitan_ronin" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "ronin", 150, "distance_stats", "asTitan_ronin" )
|
|
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "tone", 15, "distance_stats", "asTitan_tone" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "tone", 50, "distance_stats", "asTitan_tone" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "tone", 150, "distance_stats", "asTitan_tone" )
|
|
|
|
InitUnlockForStatFloat( "titan_camo_skin13", "legion", 15, "distance_stats", "asTitan_legion" )
|
|
InitUnlockForStatFloat( "titan_camo_skin07", "legion", 50, "distance_stats", "asTitan_legion" )
|
|
InitUnlockForStatFloat( "titan_camo_skin87", "legion", 150, "distance_stats", "asTitan_legion" )
|
|
|
|
//Titan Executions
|
|
InitUnlockForStatInt( "titan_camo_skin93", "ion", 3, "kills_stats", "titanExocutionIon" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "ion", 10, "kills_stats", "titanExocutionIon" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "ion", 25, "kills_stats", "titanExocutionIon" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin93", "scorch", 3, "kills_stats", "titanExocutionScorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "scorch", 10, "kills_stats", "titanExocutionScorch" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "scorch", 25, "kills_stats", "titanExocutionScorch" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin93", "vanguard", 3, "kills_stats", "titanExocutionVanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "vanguard", 10, "kills_stats", "titanExocutionVanguard" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "vanguard", 25, "kills_stats", "titanExocutionVanguard" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin93", "northstar", 3, "kills_stats", "titanExocutionNorthstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "northstar", 10, "kills_stats", "titanExocutionNorthstar" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "northstar", 25, "kills_stats", "titanExocutionNorthstar" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin93", "ronin", 3, "kills_stats", "titanExocutionRonin" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "ronin", 10, "kills_stats", "titanExocutionRonin" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "ronin", 25, "kills_stats", "titanExocutionRonin" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin93", "tone", 3, "kills_stats", "titanExocutionTone" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "tone", 10, "kills_stats", "titanExocutionTone" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "tone", 25, "kills_stats", "titanExocutionTone" )
|
|
|
|
InitUnlockForStatInt( "titan_camo_skin93", "legion", 3, "kills_stats", "titanExocutionLegion" )
|
|
InitUnlockForStatInt( "titan_camo_skin94", "legion", 10, "kills_stats", "titanExocutionLegion" )
|
|
InitUnlockForStatInt( "titan_camo_skin85", "legion", 25, "kills_stats", "titanExocutionLegion" )
|
|
|
|
//Titan Sprees for Warpaint
|
|
InitUnlockForStatInt( "ion_skin_01", "ion", 30, "kills_stats", "killingSpressAs_ion" )
|
|
InitUnlockForStatInt( "ion_skin_02", "ion", 100, "kills_stats", "killingSpressAs_ion" )
|
|
|
|
InitUnlockForStatInt( "scorch_skin_01", "scorch", 30, "kills_stats", "killingSpressAs_scorch" )
|
|
InitUnlockForStatInt( "scorch_skin_02", "scorch", 100, "kills_stats", "killingSpressAs_scorch" )
|
|
|
|
//InitUnlockForStatInt( "vanguard_skin_01", "vanguard", 30, "kills_stats", "killingSpressAs_vanguard" )
|
|
//InitUnlockForStatInt( "vanguard_skin_02", "vanguard", 100, "kills_stats", "killingSpressAs_vanguard" )
|
|
//InitUnlockForStatInt( "vanguard_skin_03", "vanguard", 100, "kills_stats", "killingSpressAs_vanguard" )
|
|
|
|
InitUnlockForStatInt( "northstar_skin_01", "northstar", 30, "kills_stats", "killingSpressAs_northstar" )
|
|
InitUnlockForStatInt( "northstar_skin_02", "northstar", 65, "kills_stats", "killingSpressAs_northstar" )
|
|
InitUnlockForStatInt( "northstar_skin_03", "northstar", 100, "kills_stats", "killingSpressAs_northstar" )
|
|
|
|
InitUnlockForStatInt( "ronin_skin_01", "ronin", 30, "kills_stats", "killingSpressAs_ronin" )
|
|
InitUnlockForStatInt( "ronin_skin_02", "ronin", 65, "kills_stats", "killingSpressAs_ronin" )
|
|
InitUnlockForStatInt( "ronin_skin_03", "ronin", 100, "kills_stats", "killingSpressAs_ronin" )
|
|
|
|
InitUnlockForStatInt( "tone_skin_01", "tone", 30, "kills_stats", "killingSpressAs_tone" )
|
|
InitUnlockForStatInt( "tone_skin_02", "tone", 65, "kills_stats", "killingSpressAs_tone" )
|
|
InitUnlockForStatInt( "tone_skin_03", "tone", 100, "kills_stats", "killingSpressAs_tone" )
|
|
|
|
InitUnlockForStatInt( "legion_skin_01", "legion", 30, "kills_stats", "killingSpressAs_legion" )
|
|
InitUnlockForStatInt( "legion_skin_02", "legion", 65, "kills_stats", "killingSpressAs_legion" )
|
|
InitUnlockForStatInt( "legion_skin_03", "legion", 100, "kills_stats", "killingSpressAs_legion" )
|
|
|
|
|
|
// ////////////////// Titan Weapon CHALLENGES //////////////////
|
|
|
|
//Titan killing Titans for Weapon
|
|
InitUnlockForStatInt( "camo_skin67", "ion", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin65", "ion", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin66", "ion", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin64", "ion", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin63", "ion", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_particle_accelerator" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "scorch", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin65", "scorch", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin66", "scorch", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin64", "scorch", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin63", "scorch", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_meteor" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "vanguard", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin65", "vanguard", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin66", "vanguard", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin64", "vanguard", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin63", "vanguard", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_xo16_vanguard" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "northstar", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin65", "northstar", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin66", "northstar", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin64", "northstar", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin63", "northstar", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "ronin", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin65", "ronin", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin66", "ronin", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin64", "ronin", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin63", "ronin", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_leadwall" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "tone", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin65", "tone", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin66", "tone", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin64", "tone", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin63", "tone", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_sticky_40mm" )
|
|
|
|
InitUnlockForStatInt( "camo_skin67", "legion", 5, "weapon_kill_stats", "titansTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin65", "legion", 15, "weapon_kill_stats", "titansTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin66", "legion", 30, "weapon_kill_stats", "titansTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin64", "legion", 75, "weapon_kill_stats", "titansTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin63", "legion", 150, "weapon_kill_stats", "titansTotal", "mp_titanweapon_predator_cannon" )
|
|
//Titan Weapon killing Pilots
|
|
InitUnlockForStatInt( "camo_skin60", "ion", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_particle_accelerator")
|
|
InitUnlockForStatInt( "camo_skin61", "ion", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_particle_accelerator")
|
|
InitUnlockForStatInt( "camo_skin62", "ion", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin59", "ion", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin87", "ion", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_particle_accelerator" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "scorch", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_meteor")
|
|
InitUnlockForStatInt( "camo_skin61", "scorch", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_meteor")
|
|
InitUnlockForStatInt( "camo_skin62", "scorch", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin59", "scorch", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin87", "scorch", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_meteor" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "vanguard", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_xo16_vanguard")
|
|
InitUnlockForStatInt( "camo_skin61", "vanguard", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_xo16_vanguard")
|
|
InitUnlockForStatInt( "camo_skin62", "vanguard", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin59", "vanguard", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin87", "vanguard", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_xo16_vanguard" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "northstar", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_sniper")
|
|
InitUnlockForStatInt( "camo_skin61", "northstar", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_sniper")
|
|
InitUnlockForStatInt( "camo_skin62", "northstar", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin59", "northstar", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin87", "northstar", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "ronin", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_leadwall")
|
|
InitUnlockForStatInt( "camo_skin61", "ronin", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_leadwall")
|
|
InitUnlockForStatInt( "camo_skin62", "ronin", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin59", "ronin", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin87", "ronin", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_leadwall" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "tone", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_sticky_40mm")
|
|
InitUnlockForStatInt( "camo_skin61", "tone", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_sticky_40mm")
|
|
InitUnlockForStatInt( "camo_skin62", "tone", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin59", "tone", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin87", "tone", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_sticky_40mm" )
|
|
|
|
InitUnlockForStatInt( "camo_skin60", "legion", 10, "weapon_kill_stats", "pilots", "mp_titanweapon_predator_cannon")
|
|
InitUnlockForStatInt( "camo_skin61", "legion", 25, "weapon_kill_stats", "pilots", "mp_titanweapon_predator_cannon")
|
|
InitUnlockForStatInt( "camo_skin62", "legion", 50, "weapon_kill_stats", "pilots", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin59", "legion", 100, "weapon_kill_stats", "pilots", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin87", "legion", 250, "weapon_kill_stats", "pilots", "mp_titanweapon_predator_cannon" )
|
|
//Titan assists Titans for Weapon
|
|
InitUnlockForStatInt( "camo_skin56", "ion", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin58", "ion", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin55", "ion", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin57", "ion", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin91", "ion", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_particle_accelerator" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "scorch", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin58", "scorch", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin55", "scorch", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin57", "scorch", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin91", "scorch", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_meteor" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "vanguard", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin58", "vanguard", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin55", "vanguard", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin57", "vanguard", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin91", "vanguard", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_xo16_vanguard" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "northstar", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin58", "northstar", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin55", "northstar", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin57", "northstar", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin91", "northstar", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "ronin", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin58", "ronin", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin55", "ronin", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin57", "ronin", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin91", "ronin", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_leadwall" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "tone", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin58", "tone", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin55", "tone", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin57", "tone", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin91", "tone", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_sticky_40mm" )
|
|
|
|
InitUnlockForStatInt( "camo_skin56", "legion", 5, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin58", "legion", 15, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin55", "legion", 30, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin57", "legion", 75, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin91", "legion", 150, "weapon_kill_stats", "assistsTotal", "mp_titanweapon_predator_cannon" )
|
|
|
|
//Titan damage for weapon
|
|
InitUnlockForStatInt( "camo_skin93", "ion", 50000, "weapon_stats", "titanDamage", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin94", "ion", 100000, "weapon_stats", "titanDamage", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin13", "ion", 250000, "weapon_stats", "titanDamage", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin07", "ion", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_particle_accelerator" )
|
|
InitUnlockForStatInt( "camo_skin85", "ion", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_particle_accelerator" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "scorch", 50000, "weapon_stats", "titanDamage", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin94", "scorch", 100000,"weapon_stats", "titanDamage", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin13", "scorch", 250000, "weapon_stats", "titanDamage", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin07", "scorch", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_meteor" )
|
|
InitUnlockForStatInt( "camo_skin85", "scorch", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_meteor" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "vanguard", 50000, "weapon_stats", "titanDamage", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin94", "vanguard", 100000,"weapon_stats", "titanDamage", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin13", "vanguard", 250000, "weapon_stats", "titanDamage", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin07", "vanguard", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_xo16_vanguard" )
|
|
InitUnlockForStatInt( "camo_skin85", "vanguard", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_xo16_vanguard" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "northstar", 50000, "weapon_stats", "titanDamage", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin94", "northstar", 100000,"weapon_stats", "titanDamage", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin13", "northstar", 250000, "weapon_stats", "titanDamage", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin07", "northstar", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_sniper" )
|
|
InitUnlockForStatInt( "camo_skin85", "northstar", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_sniper" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "ronin", 50000, "weapon_stats", "titanDamage", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin94", "ronin", 100000,"weapon_stats", "titanDamage", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin13", "ronin", 250000, "weapon_stats", "titanDamage", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin07", "ronin", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_leadwall" )
|
|
InitUnlockForStatInt( "camo_skin85", "ronin", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_leadwall" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "tone", 50000, "weapon_stats", "titanDamage", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin94", "tone", 100000,"weapon_stats", "titanDamage", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin13", "tone", 250000, "weapon_stats", "titanDamage", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin07", "tone", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_sticky_40mm" )
|
|
InitUnlockForStatInt( "camo_skin85", "tone", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_sticky_40mm" )
|
|
|
|
InitUnlockForStatInt( "camo_skin93", "legion", 100000, "weapon_stats", "titanDamage", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin94", "legion", 200000,"weapon_stats", "titanDamage", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin13", "legion", 500000, "weapon_stats", "titanDamage", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin07", "legion", 1000000, "weapon_stats", "titanDamage", "mp_titanweapon_predator_cannon" )
|
|
InitUnlockForStatInt( "camo_skin85", "legion", 2000000, "weapon_stats", "titanDamage", "mp_titanweapon_predator_cannon" )
|
|
|
|
//////////////////////////
|
|
// DELUXE ENTITLEMENTS
|
|
//////////////////////////
|
|
InitUnlockAsEntitlement( "ion_skin_04", "ion", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "scorch_skin_04", "scorch", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "northstar_skin_04", "northstar", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "tone_skin_04", "tone", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "ronin_skin_04", "ronin", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "legion_skin_04", "legion", ET_DELUXE_EDITION )
|
|
|
|
InitUnlockAsEntitlement( "ion_prime", "", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "scorch_prime", "", ET_DELUXE_EDITION )
|
|
|
|
InitUnlockAsEntitlement( "ion_nose_art_07", "ion", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_07", "scorch", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_07", "northstar", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "tone_nose_art_10", "tone", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_07", "ronin", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_07", "legion", ET_DELUXE_EDITION )
|
|
|
|
for ( int i = 0; i < titanClassEnumCount; i++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", i )
|
|
if ( titanClass != "" )
|
|
{
|
|
InitUnlockAsEntitlement( "titan_camo_skin10", titanClass, ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "camo_skin10", titanClass, ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "titan_camo_skin92", titanClass, ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "camo_skin92", titanClass, ET_DELUXE_EDITION )
|
|
}
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "pilot_camo_skin10", "", ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "pilot_camo_skin92", "", ET_DELUXE_EDITION )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
InitUnlockAsEntitlement( "camo_skin10", weaponClassName, ET_DELUXE_EDITION )
|
|
InitUnlockAsEntitlement( "camo_skin92", weaponClassName, ET_DELUXE_EDITION )
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "callsign_14_col_gold", "", ET_DELUXE_EDITION )
|
|
|
|
//////////////////////////
|
|
// PREORDER ENTITLEMENTS
|
|
//////////////////////////
|
|
InitUnlockAsEntitlement( "mp_angel_city", "", ET_PREORDER )
|
|
InitUnlockAsEntitlement( "angel_city_247", "", ET_PREORDER )
|
|
InitUnlockAsEntitlement( "scorch_skin_03", "scorch", ET_PREORDER )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_06", "scorch", ET_PREORDER )
|
|
InitUnlockAsEntitlement( "callsign_71_col_gold", "", ET_PREORDER )
|
|
|
|
//////////////////////////
|
|
// BF1
|
|
//////////////////////////
|
|
InitUnlockAsEntitlement( "ion_skin_06", "ion", ET_BF1 )
|
|
|
|
//////////////////////////
|
|
// DLC1
|
|
//////////////////////////
|
|
InitUnlockAsEntitlement( "ion_prime", "", ET_DLC1_PRIME_ION )
|
|
InitUnlockAsEntitlement( "scorch_prime", "", ET_DLC1_PRIME_SCORCH )
|
|
InitUnlockAsEntitlement( "vanguard_prime", "", ET_DLC5_PRIME_TONE ) // TODO: Entitlement is incorrect here
|
|
|
|
InitUnlockAsEntitlement( "ion_nose_art_17", "ion", ET_DLC1_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_18", "ion", ET_DLC1_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_19", "ion", ET_DLC1_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_20", "ion", ET_DLC1_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_21", "ion", ET_DLC1_ION )
|
|
InitUnlockAsEntitlement( "ion_skin_10", "ion", ET_DLC1_ION, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "scorch_nose_art_15", "scorch", ET_DLC1_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_16", "scorch", ET_DLC1_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_17", "scorch", ET_DLC1_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_18", "scorch", ET_DLC1_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_19", "scorch", ET_DLC1_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_skin_07", "scorch", ET_DLC1_SCORCH, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "ronin_nose_art_16", "ronin", ET_DLC1_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_17", "ronin", ET_DLC1_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_18", "ronin", ET_DLC1_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_19", "ronin", ET_DLC1_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_20", "ronin", ET_DLC1_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_skin_10", "ronin", ET_DLC1_RONIN, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "tone_nose_art_17", "tone", ET_DLC1_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_18", "tone", ET_DLC1_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_19", "tone", ET_DLC1_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_20", "tone", ET_DLC1_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_21", "tone", ET_DLC1_TONE )
|
|
InitUnlockAsEntitlement( "tone_skin_06", "tone", ET_DLC1_TONE, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "northstar_nose_art_18", "northstar", ET_DLC1_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_19", "northstar", ET_DLC1_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_20", "northstar", ET_DLC1_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_21", "northstar", ET_DLC1_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_22", "northstar", ET_DLC1_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_skin_10", "northstar", ET_DLC1_NORTHSTAR, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "legion_nose_art_17", "legion", ET_DLC1_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_18", "legion", ET_DLC1_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_19", "legion", ET_DLC1_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_20", "legion", ET_DLC1_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_21", "legion", ET_DLC1_LEGION )
|
|
InitUnlockAsEntitlement( "legion_skin_07", "legion", ET_DLC1_LEGION, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "callsign_106_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_107_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_108_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_109_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_110_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_111_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_112_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_113_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_114_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_115_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_116_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_117_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_118_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_119_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_120_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_121_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_122_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_123_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_124_col", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_125_col", "", ET_DLC1_CALLSIGN )
|
|
|
|
InitUnlockAsEntitlement( "gc_icon_64", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_aces", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_alien", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_apex", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_ares", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_controller", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_drone", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_heartbreaker", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_hexes", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_kodai", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_lastimosa", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_lawai", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_mcor", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_phoenix", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_pilot", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_robot", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_sentry", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_super_spectre", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_vinson", "", ET_DLC1_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_wonyeon", "", ET_DLC1_CALLSIGN )
|
|
|
|
|
|
for ( int i = 101; i <= 120; i++ )
|
|
{
|
|
for ( int j = 0; j < titanClassEnumCount; j++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", j )
|
|
if ( titanClass != "" )
|
|
{
|
|
InitUnlockAsEntitlement( "titan_camo_skin" + i, titanClass, ET_DLC1_CAMO )
|
|
InitUnlockAsEntitlement( "camo_skin" + i, titanClass, ET_DLC1_CAMO )
|
|
}
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "pilot_camo_skin" + i, "", ET_DLC1_CAMO )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
InitUnlockAsEntitlement( "camo_skin" + i, weaponClassName, ET_DLC1_CAMO )
|
|
}
|
|
}
|
|
|
|
InitFrontierDefenseUnlocks()
|
|
|
|
//////////////////////////
|
|
// DLC3
|
|
//////////////////////////
|
|
InitUnlockAsEntitlement( "legion_prime", "", ET_DLC3_PRIME_LEGION )
|
|
InitUnlockAsEntitlement( "northstar_prime", "", ET_DLC3_PRIME_NORTHSTAR )
|
|
|
|
InitUnlockAsEntitlement( "ion_nose_art_22", "ion", ET_DLC3_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_23", "ion", ET_DLC3_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_24", "ion", ET_DLC3_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_25", "ion", ET_DLC3_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_26", "ion", ET_DLC3_ION )
|
|
InitUnlockAsEntitlement( "ion_skin_11", "ion", ET_DLC3_ION, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "scorch_nose_art_20", "scorch", ET_DLC3_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_21", "scorch", ET_DLC3_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_22", "scorch", ET_DLC3_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_23", "scorch", ET_DLC3_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_24", "scorch", ET_DLC3_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_skin_08", "scorch", ET_DLC3_SCORCH, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "ronin_nose_art_21", "ronin", ET_DLC3_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_22", "ronin", ET_DLC3_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_23", "ronin", ET_DLC3_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_24", "ronin", ET_DLC3_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_25", "ronin", ET_DLC3_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_skin_11", "ronin", ET_DLC3_RONIN, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "tone_nose_art_22", "tone", ET_DLC3_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_23", "tone", ET_DLC3_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_24", "tone", ET_DLC3_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_25", "tone", ET_DLC3_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_26", "tone", ET_DLC3_TONE )
|
|
InitUnlockAsEntitlement( "tone_skin_07", "tone", ET_DLC3_TONE, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "northstar_nose_art_23", "northstar", ET_DLC3_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_24", "northstar", ET_DLC3_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_25", "northstar", ET_DLC3_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_26", "northstar", ET_DLC3_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_27", "northstar", ET_DLC3_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_skin_11", "northstar", ET_DLC3_NORTHSTAR, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "legion_nose_art_22", "legion", ET_DLC3_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_23", "legion", ET_DLC3_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_24", "legion", ET_DLC3_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_25", "legion", ET_DLC3_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_26", "legion", ET_DLC3_LEGION )
|
|
InitUnlockAsEntitlement( "legion_skin_08", "legion", ET_DLC3_LEGION, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "gc_icon_balance", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_boot", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_bt_eye", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_buzzsaw", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_crossed_lighting", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_flying_bullet", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_hammer2", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_keyboard", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_lightbulb", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_narwhal", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_peace", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_pilot2", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_robot_eye", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_srs", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_starline", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_taco", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_thumbdown", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_thumbup", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_treble", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_vanguard", "", ET_DLC3_CALLSIGN )
|
|
|
|
for ( int i = 121; i <= 140; i++ )
|
|
{
|
|
for ( int j = 0; j < titanClassEnumCount; j++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", j )
|
|
if ( titanClass != "" )
|
|
{
|
|
InitUnlockAsEntitlement( "titan_camo_skin" + i, titanClass, ET_DLC3_CAMO )
|
|
InitUnlockAsEntitlement( "camo_skin" + i, titanClass, ET_DLC3_CAMO )
|
|
}
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "pilot_camo_skin" + i, "", ET_DLC3_CAMO )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
InitUnlockAsEntitlement( "camo_skin" + i, weaponClassName, ET_DLC3_CAMO )
|
|
}
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "callsign_143_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_144_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_145_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_146_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_147_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_148_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_149_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_150_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_151_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_152_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_153_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_154_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_155_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_156_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_157_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_158_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_159_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_160_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_161_col", "", ET_DLC3_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_162_col", "", ET_DLC3_CALLSIGN )
|
|
|
|
//////////////////////////
|
|
// DLC5
|
|
//////////////////////////
|
|
InitUnlockAsEntitlement( "tone_prime", "", ET_DLC5_PRIME_TONE )
|
|
InitUnlockAsEntitlement( "ronin_prime", "", ET_DLC5_PRIME_RONIN )
|
|
|
|
InitUnlockAsEntitlement( "ion_nose_art_27", "ion", ET_DLC5_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_28", "ion", ET_DLC5_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_29", "ion", ET_DLC5_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_30", "ion", ET_DLC5_ION )
|
|
InitUnlockAsEntitlement( "ion_nose_art_31", "ion", ET_DLC5_ION )
|
|
InitUnlockAsEntitlement( "ion_skin_07", "ion", ET_DLC5_ION, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "scorch_nose_art_25", "scorch", ET_DLC5_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_26", "scorch", ET_DLC5_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_27", "scorch", ET_DLC5_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_28", "scorch", ET_DLC5_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_nose_art_29", "scorch", ET_DLC5_SCORCH )
|
|
InitUnlockAsEntitlement( "scorch_skin_06", "scorch", ET_DLC5_SCORCH, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "ronin_nose_art_26", "ronin", ET_DLC5_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_27", "ronin", ET_DLC5_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_28", "ronin", ET_DLC5_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_29", "ronin", ET_DLC5_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_nose_art_30", "ronin", ET_DLC5_RONIN )
|
|
InitUnlockAsEntitlement( "ronin_skin_07", "ronin", ET_DLC5_RONIN, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "tone_nose_art_27", "tone", ET_DLC5_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_28", "tone", ET_DLC5_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_29", "tone", ET_DLC5_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_30", "tone", ET_DLC5_TONE )
|
|
InitUnlockAsEntitlement( "tone_nose_art_31", "tone", ET_DLC5_TONE )
|
|
InitUnlockAsEntitlement( "tone_skin_08", "tone", ET_DLC5_TONE, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "northstar_nose_art_28", "northstar", ET_DLC5_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_29", "northstar", ET_DLC5_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_30", "northstar", ET_DLC5_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_31", "northstar", ET_DLC5_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_nose_art_32", "northstar", ET_DLC5_NORTHSTAR )
|
|
InitUnlockAsEntitlement( "northstar_skin_06", "northstar", ET_DLC5_NORTHSTAR, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "legion_nose_art_27", "legion", ET_DLC5_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_28", "legion", ET_DLC5_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_29", "legion", ET_DLC5_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_30", "legion", ET_DLC5_LEGION )
|
|
InitUnlockAsEntitlement( "legion_nose_art_31", "legion", ET_DLC5_LEGION )
|
|
InitUnlockAsEntitlement( "legion_skin_09", "legion", ET_DLC5_LEGION, "StoreMenu_Customization" )
|
|
|
|
InitUnlockAsEntitlement( "gc_icon_monarch_dlc5", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_militia", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_militia_alt", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_imc", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_hammond", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_tri_chevron", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_pilot_circle", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_x", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_nessie", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_spicy", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_crown", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_pawn", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_excite", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_duck", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_sock", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_rabbit", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_peanut", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_clock", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_shamrock", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "gc_icon_trident", "", ET_DLC5_CALLSIGN )
|
|
|
|
for ( int i = 141; i <= 160; i++ )
|
|
{
|
|
for ( int j = 0; j < titanClassEnumCount; j++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", j )
|
|
if ( titanClass != "" )
|
|
{
|
|
InitUnlockAsEntitlement( "titan_camo_skin" + i, titanClass, ET_DLC5_CAMO )
|
|
InitUnlockAsEntitlement( "camo_skin" + i, titanClass, ET_DLC5_CAMO )
|
|
}
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "pilot_camo_skin" + i, "", ET_DLC5_CAMO )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
InitUnlockAsEntitlement( "camo_skin" + i, weaponClassName, ET_DLC5_CAMO )
|
|
}
|
|
}
|
|
|
|
InitUnlockAsEntitlement( "callsign_166_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_167_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_168_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_169_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_170_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_171_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_172_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_173_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_174_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_175_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_176_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_177_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_178_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_179_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_180_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_181_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_182_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_183_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_184_col", "", ET_DLC5_CALLSIGN )
|
|
InitUnlockAsEntitlement( "callsign_185_col", "", ET_DLC5_CALLSIGN )
|
|
|
|
InitUnlockAsEntitlement( "skin_rspn101_wasteland", "mp_weapon_rspn101", ET_DLC7_R201_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_g2_masterwork", "mp_weapon_g2", ET_DLC7_G2A5_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_vinson_blue_fade", "mp_weapon_vinson", ET_DLC7_FLATLINE_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_car_crimson_fury", "mp_weapon_car", ET_DLC7_CAR_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_alternator_patriot", "mp_weapon_alternator_smg", ET_DLC7_ALTERNATOR_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_shotgun_badlands", "mp_weapon_shotgun", ET_DLC7_EVA8_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_wingman_aqua_fade", "mp_weapon_wingman", ET_DLC7_WINGMAN_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_rocket_launcher_psych_spectre", "mp_weapon_rocket_launcher", ET_DLC7_ARCHER_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
|
|
InitUnlockAsEntitlement( "ion_skin_fd", "ion", ET_DLC7_ION_WARPAINT )
|
|
InitUnlockAsEntitlement( "scorch_skin_fd", "scorch", ET_DLC7_SCORCH_WARPAINT )
|
|
InitUnlockAsEntitlement( "northstar_skin_fd", "northstar", ET_DLC7_NORTHSTAR_WARPAINT )
|
|
InitUnlockAsEntitlement( "ronin_skin_fd", "ronin", ET_DLC7_RONIN_WARPAINT )
|
|
InitUnlockAsEntitlement( "tone_skin_fd", "tone", ET_DLC7_TONE_WARPAINT )
|
|
InitUnlockAsEntitlement( "legion_skin_fd", "legion", ET_DLC7_LEGION_WARPAINT )
|
|
InitUnlockAsEntitlement( "monarch_skin_fd", "vanguard", ET_DLC7_MONARCH_WARPAINT )
|
|
|
|
InitUnlockAsEntitlement( "callsign_fd_ion_dynamic", "", ET_DLC7_ION_WARPAINT )
|
|
InitUnlockAsEntitlement( "callsign_fd_scorch_dynamic", "", ET_DLC7_SCORCH_WARPAINT )
|
|
InitUnlockAsEntitlement( "callsign_fd_northstar_dynamic", "", ET_DLC7_NORTHSTAR_WARPAINT )
|
|
InitUnlockAsEntitlement( "callsign_fd_ronin_dynamic", "", ET_DLC7_RONIN_WARPAINT )
|
|
InitUnlockAsEntitlement( "callsign_fd_tone_dynamic", "", ET_DLC7_TONE_WARPAINT )
|
|
InitUnlockAsEntitlement( "callsign_fd_legion_dynamic", "", ET_DLC7_LEGION_WARPAINT )
|
|
InitUnlockAsEntitlement( "callsign_fd_monarch_dynamic", "", ET_DLC7_MONARCH_WARPAINT )
|
|
|
|
InitUnlock( "callsign_fd_ion_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_ion_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_ion_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_tone_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_tone_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_tone_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_scorch_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_scorch_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_scorch_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_legion_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_legion_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_legion_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_ronin_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_ronin_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_ronin_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_northstar_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_northstar_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_northstar_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_monarch_hard", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_monarch_master", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
InitUnlock( "callsign_fd_monarch_insane", "", eUnlockType.PERSISTENT_ITEM, 0 )
|
|
|
|
InitUnlockForStatInt( "classic_music", "", 10, "game_stats", "mode_won", "fd" )
|
|
|
|
InitUnlockForStatInt( "burnmeter_at_turret_weapon_infinite", "", 2, "fd_stats", "arcMinesPlaced" )
|
|
InitUnlockForStatInt( "burnmeter_ap_turret_weapon_infinite", "", 2, "fd_stats", "arcMinesPlaced" )
|
|
InitUnlockForStatInt( "burnmeter_rodeo_grenade", "", 3, "fd_stats", "rodeos" )
|
|
InitUnlockForStatInt( "burnmeter_harvester_shield", "", 3, "fd_stats", "wavesComplete" )
|
|
|
|
InitUnlockAsEntitlement( "skin_rspn101_patriot", "mp_weapon_rspn101", ET_DLC8_R201_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_hemlok_mochi", "mp_weapon_hemlok", ET_DLC8_HEMLOK_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_r97_purple_fade", "mp_weapon_r97", ET_DLC8_R97_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_kraber_masterwork", "mp_weapon_sniper", ET_DLC8_KRABER_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_spitfire_lead_farmer", "mp_weapon_lmg", ET_DLC8_SPITFIRE_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_devotion_rspn_customs", "mp_weapon_esaw", ET_DLC8_DEVOTION_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_mozambique_crimson_fury", "mp_weapon_shotgun_pistol", ET_DLC8_MOZAMBIQUE_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_thunderbolt_8bit", "mp_weapon_arc_launcher", ET_DLC8_THUNDERBOLT_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
|
|
InitUnlockAsEntitlement( "skin_lstar_heatsink", "mp_weapon_lstar", ET_DLC9_LSTAR_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_mastiff_crimson_fury", "mp_weapon_mastiff", ET_DLC9_MASTIFF_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_sidewinder_masterwork", "mp_weapon_smr", ET_DLC9_SIDEWINDER_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_rspn101_halloween", "mp_weapon_rspn101", ET_DLC9_R201_WARPAINT )
|
|
InitUnlockAsEntitlement( "skin_car_halloween", "mp_weapon_car", ET_DLC9_CAR_WARPAINT )
|
|
InitUnlockAsEntitlement( "skin_spitfire_halloween", "mp_weapon_lmg", ET_DLC9_SPITFIRE_WARPAINT )
|
|
|
|
InitUnlockAsEntitlement( "skin_rspn101_og_blue_fade", "mp_weapon_rspn101_og", ET_DLC10_R101_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_vinson_badlands", "mp_weapon_vinson", ET_DLC10_FLATLINE_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_volt_heatsink", "mp_weapon_hemlok_smg", ET_DLC10_VOLT_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_alternator_headhunter", "mp_weapon_alternator_smg", ET_DLC10_ALTERNATOR_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_softball_masterwork", "mp_weapon_softball", ET_DLC10_SOFTBALL_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_epg_mrvn", "mp_weapon_epg", ET_DLC10_EPG1_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
|
|
InitUnlockAsEntitlement( "skin_dmr_phantom", "mp_weapon_dmr", ET_DLC11_DMR_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_doubletake_masterwork", "mp_weapon_doubletake", ET_DLC11_DOUBLETAKE_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_g2_purple_fade", "mp_weapon_g2", ET_DLC11_G2A5_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_coldwar_heatsink", "mp_weapon_pulse_lmg", ET_DLC11_COLDWAR_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_r97_sky", "mp_weapon_r97", ET_DLC11_R97_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
InitUnlockAsEntitlement( "skin_rspn101_crimson_fury", "mp_weapon_rspn101", ET_DLC11_R101_WARPAINT, "StoreMenu_WeaponSkins" )
|
|
|
|
array<ItemData> burnMeterRewards = GetAllItemsOfType( eItemTypes.BURN_METER_REWARD )
|
|
foreach ( ItemData item in burnMeterRewards )
|
|
{
|
|
if ( !IsUnlockValid( item.ref ) )
|
|
InitUnlock( item.ref, "", eUnlockType.PLAYER_LEVEL, 1 )
|
|
}
|
|
|
|
#if DEV && SERVER && DEVSCRIPTS
|
|
array<string> ignoreList = [ "titanos_ronin",
|
|
"mp_titanweapon_vortex_shield",
|
|
"mp_titanweapon_rocketeer_rocketstream",
|
|
"melee_pilot_arena",
|
|
"mp_titanweapon_shoulder_rockets",
|
|
"mp_titancore_dash_core",
|
|
"mp_titanability_smoke",
|
|
"melee_pilot_sword",
|
|
"mp_titanweapon_salvo_rockets",
|
|
"mp_titancore_amp_core",
|
|
"advocate_gift",
|
|
"random",
|
|
"default",
|
|
"mp_titanability_rocketeer_ammo_swap",
|
|
"titanos_scorch",
|
|
"double_xp",
|
|
"titanos_ion",
|
|
"fnf",
|
|
"melee_pilot_emptyhanded",
|
|
"mp_titanweapon_homing_rockets",
|
|
"private_match",
|
|
"credit_award_5x",
|
|
"titanos_bt",
|
|
"mp_titanweapon_xo16_shorty",
|
|
"titanos_northstar",
|
|
"titanos_tone",
|
|
"titanos_legion",
|
|
"titanos_vanguard",
|
|
"varietypack",
|
|
"mp_titanweapon_stun_laser",
|
|
"mp_titanability_rearm",
|
|
"mp_titancore_upgrade",
|
|
"ronin.pas_vanguard_core8",
|
|
"ronin.pas_vanguard_core9",
|
|
"ronin.pas_vanguard_core2",
|
|
"ronin.pas_vanguard_core5",
|
|
"ronin.pas_vanguard_core3",
|
|
"ronin.pas_vanguard_core6",
|
|
"ion.pas_vanguard_core8",
|
|
"ion.pas_vanguard_core6",
|
|
"ion.pas_vanguard_core9",
|
|
"ion.pas_vanguard_core2",
|
|
"ion.pas_vanguard_core5",
|
|
"ion.pas_vanguard_core3",
|
|
"legion.pas_vanguard_core8",
|
|
"legion.pas_vanguard_core9",
|
|
"legion.pas_vanguard_core2",
|
|
"legion.pas_vanguard_core5",
|
|
"legion.pas_vanguard_core6",
|
|
"legion.pas_vanguard_core3",
|
|
"scorch.pas_vanguard_core8",
|
|
"scorch.pas_vanguard_core6",
|
|
"scorch.pas_vanguard_core9",
|
|
"scorch.pas_vanguard_core2",
|
|
"scorch.pas_vanguard_core5",
|
|
"scorch.pas_vanguard_core3",
|
|
"tone.pas_vanguard_core8",
|
|
"tone.pas_vanguard_core9",
|
|
"tone.pas_vanguard_core2",
|
|
"tone.pas_vanguard_core5",
|
|
"tone.pas_vanguard_core6",
|
|
"tone.pas_vanguard_core3",
|
|
"northstar.pas_vanguard_core8",
|
|
"northstar.pas_vanguard_core9",
|
|
"northstar.pas_vanguard_core2",
|
|
"northstar.pas_vanguard_core5",
|
|
"northstar.pas_vanguard_core3",
|
|
"northstar.pas_vanguard_core6", ]
|
|
|
|
foreach ( item in file.itemData )
|
|
{
|
|
if ( ignoreList.contains( item.ref ) )
|
|
continue
|
|
|
|
if ( IsSubItemType( GetItemType( item.ref ) ) )
|
|
continue
|
|
|
|
if ( item.ref in file.entitlementUnlocks )
|
|
continue
|
|
|
|
if ( IsDisabledRef( item.ref ) )
|
|
continue
|
|
|
|
if ( ( item.ref in file.unlocks ) || IsItemInRandomUnlocks( item.ref ) )
|
|
{
|
|
foreach ( subItem in item.subitems )
|
|
{
|
|
if ( subItem.ref in file.unlocks[ item.ref ].child || IsItemInRandomUnlocks( subItem.ref, item.ref ) || IsItemInEntitlementUnlock( subItem.ref, item.ref ) )
|
|
continue
|
|
|
|
if ( ignoreList.contains( item.ref + "." + subItem.ref ) )
|
|
continue
|
|
|
|
CodeWarning( "Not in unlocks " + item.ref + "." + subItem.ref )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CodeWarning( "Not in unlocks " + item.ref )
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
#if SERVER
|
|
void function UnlockTarget( entity player )
|
|
{
|
|
int titanClassEnumCount = PersistenceGetEnumCount( "titanClasses" )
|
|
array<string> pilotWeaponRefs = GetAllItemRefsOfType( eItemTypes.PILOT_PRIMARY )
|
|
pilotWeaponRefs.extend( GetAllItemRefsOfType( eItemTypes.PILOT_SECONDARY ) )
|
|
|
|
//////////////////////////
|
|
// TARGET
|
|
//////////////////////////
|
|
for ( int i = 0; i < titanClassEnumCount; i++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", i )
|
|
if ( titanClass != "" )
|
|
{
|
|
SetItemOwned( player, "titan_camo_skin08", titanClass, true )
|
|
SetItemOwned( player, "camo_skin08", titanClass, true )
|
|
}
|
|
}
|
|
|
|
SetItemOwned( player, "pilot_camo_skin08", "", true )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
SetItemOwned( player, "camo_skin08", weaponClassName, true )
|
|
}
|
|
}
|
|
|
|
void function ClearTargetNew( entity player )
|
|
{
|
|
// early out if we don't own target skins
|
|
if ( !IsItemOwned( player, "pilot_camo_skin08" ) )
|
|
return
|
|
|
|
int titanClassEnumCount = PersistenceGetEnumCount( "titanClasses" )
|
|
array<string> pilotWeaponRefs = GetAllItemRefsOfType( eItemTypes.PILOT_PRIMARY )
|
|
pilotWeaponRefs.extend( GetAllItemRefsOfType( eItemTypes.PILOT_SECONDARY ) )
|
|
|
|
for ( int i = 0; i < titanClassEnumCount; i++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", i )
|
|
if ( titanClass != "" )
|
|
{
|
|
if ( IsItemLocked( player, titanClass ) )
|
|
{
|
|
SetItemNewStatus( player, "titan_camo_skin08", titanClass, false )
|
|
SetItemNewStatus( player, "camo_skin08", titanClass, false )
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
if ( IsItemLocked( player, weaponClassName ) )
|
|
SetItemNewStatus( player, "camo_skin08", weaponClassName, false )
|
|
}
|
|
}
|
|
|
|
void function FixupLevelCamosForRegen( entity player )
|
|
{
|
|
if ( player.GetGen() <= 1 )
|
|
return
|
|
|
|
int maxPlayerLevel = GetMaxPlayerLevel()
|
|
|
|
array<ItemData> camoSkins = GetAllItemsOfType( eItemTypes.CAMO_SKIN_PILOT )
|
|
foreach ( ItemData camoData in camoSkins )
|
|
{
|
|
if ( IsItemInEntitlementUnlock( camoData.ref ) )
|
|
continue
|
|
|
|
if ( IsItemInRandomUnlocks( camoData.ref ) )
|
|
continue
|
|
|
|
if ( GetItemUnlockType( camoData.ref ) != eUnlockType.PLAYER_LEVEL )
|
|
continue
|
|
|
|
if ( GetUnlockLevelReq( camoData.ref ) > maxPlayerLevel )
|
|
continue
|
|
|
|
SetItemOwned( player, camoData.ref, "", false )
|
|
}
|
|
}
|
|
|
|
void function UnlockBWW( entity player )
|
|
{
|
|
//////////////////////////
|
|
// BWW
|
|
//////////////////////////
|
|
SetItemOwned( player, "ion_nose_art_05", "ion", true )
|
|
}
|
|
|
|
void function UnlockDEW( entity player )
|
|
{
|
|
int titanClassEnumCount = PersistenceGetEnumCount( "titanClasses" )
|
|
array<string> pilotWeaponRefs = GetAllItemRefsOfType( eItemTypes.PILOT_PRIMARY )
|
|
pilotWeaponRefs.extend( GetAllItemRefsOfType( eItemTypes.PILOT_SECONDARY ) )
|
|
|
|
//////////////////////////
|
|
// Mountain Dew
|
|
//////////////////////////
|
|
SetItemOwned( player, "execution_face_stab", "", true )
|
|
SetItemOwned( player, "ion_skin_03", "ion", true )
|
|
SetItemOwned( player, "callsign_70_col_gold", "", true )
|
|
|
|
for ( int i = 0; i < titanClassEnumCount; i++ )
|
|
{
|
|
string titanClass = PersistenceGetEnumItemNameForIndex( "titanClasses", i )
|
|
if ( titanClass != "" )
|
|
{
|
|
SetItemOwned( player, "titan_camo_skin09", titanClass, true )
|
|
SetItemOwned( player, "camo_skin09", titanClass, true )
|
|
}
|
|
}
|
|
|
|
SetItemOwned( player, "pilot_camo_skin09", "", true )
|
|
|
|
foreach ( weaponClassName in pilotWeaponRefs )
|
|
{
|
|
SetItemOwned( player, "camo_skin09", weaponClassName, true )
|
|
}
|
|
}
|
|
#endif
|
|
|
|
void function InitTitanWeaponDataMP()
|
|
{
|
|
////////////////////
|
|
//TITAN WEAPON DATA
|
|
////////////////////
|
|
|
|
var dataTable = GetDataTable( $"datatable/titan_primary_weapons.rpak" )
|
|
int numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, TITAN_PRIMARY_COLUMN )
|
|
bool hidden = GetDataTableBool( dataTable, i, TITAN_PRIMARY_HIDDEN_COLUMN )
|
|
|
|
if ( IsDisabledRef( itemRef ) )
|
|
continue
|
|
|
|
CreateWeaponData( i, eItemTypes.TITAN_PRIMARY, hidden, itemRef, true, 0 )
|
|
}
|
|
|
|
dataTable = GetDataTable( $"datatable/titan_abilities.rpak" )
|
|
numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
string itemRef = GetDataTableString( dataTable, i, TITAN_ABILITY_COLUMN )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, i, TITAN_ABILITY_TYPE_COLUMN ) ]
|
|
bool isDamageSource = GetDataTableBool( dataTable, i, TITAN_ABILITY_DAMAGESOURCE_COLUMN )
|
|
bool hidden = GetDataTableBool( dataTable, i, TITAN_ABILITY_HIDDEN_COLUMN )
|
|
|
|
if ( IsDisabledRef( itemRef ) )
|
|
continue
|
|
|
|
CreateWeaponData( i, itemType, hidden, itemRef, isDamageSource, 0 )
|
|
}
|
|
}
|
|
|
|
|
|
void function InitTitanWeaponDataSP()
|
|
{
|
|
////////////////////
|
|
//TITAN WEAPON DATA
|
|
////////////////////
|
|
|
|
array<TitanLoadoutDef> loadouts = GetAllowedTitanLoadouts()
|
|
|
|
var dataTable = GetDataTable( $"datatable/titan_abilities.rpak" )
|
|
int abilityColumn = GetDataTableColumnByName( dataTable, "itemRef" )
|
|
int abilityTypeColumn = GetDataTableColumnByName( dataTable, "type" )
|
|
int isDamageSourceColumn = GetDataTableColumnByName( dataTable, "damageSource" )
|
|
|
|
table<string, bool> loaded
|
|
|
|
foreach ( loadoutIndex, loadout in loadouts )
|
|
{
|
|
string itemRef = loadout.primary
|
|
if ( !(itemRef in loaded) )
|
|
{
|
|
loaded[ itemRef ] <- true
|
|
CreateWeaponData( loadoutIndex, eItemTypes.TITAN_PRIMARY, false, itemRef, true )
|
|
}
|
|
|
|
string ability
|
|
int row
|
|
int itemType
|
|
bool isDamageSource
|
|
|
|
ability = loadout.coreAbility
|
|
if ( !(ability in loaded) )
|
|
{
|
|
loaded[ ability ] <- true
|
|
row = GetDataTableRowMatchingStringValue( dataTable, abilityColumn, ability )
|
|
itemType = eItemTypes[ GetDataTableString( dataTable, row, abilityTypeColumn ) ]
|
|
isDamageSource = GetDataTableBool( dataTable, row, isDamageSourceColumn )
|
|
CreateWeaponData( row, itemType, false, ability, isDamageSource )
|
|
}
|
|
|
|
ability = loadout.special
|
|
if ( !(ability in loaded) )
|
|
{
|
|
loaded[ ability ] <- true
|
|
row = GetDataTableRowMatchingStringValue( dataTable, abilityColumn, ability )
|
|
itemType = eItemTypes[ GetDataTableString( dataTable, row, abilityTypeColumn ) ]
|
|
isDamageSource = GetDataTableBool( dataTable, row, isDamageSourceColumn )
|
|
CreateWeaponData( row, itemType, false, ability, isDamageSource )
|
|
}
|
|
|
|
ability = loadout.antirodeo
|
|
if ( !(ability in loaded) )
|
|
{
|
|
loaded[ ability ] <- true
|
|
row = GetDataTableRowMatchingStringValue( dataTable, abilityColumn, ability )
|
|
itemType = eItemTypes[ GetDataTableString( dataTable, row, abilityTypeColumn ) ]
|
|
isDamageSource = GetDataTableBool( dataTable, row, isDamageSourceColumn )
|
|
CreateWeaponData( row, itemType, false, ability, isDamageSource )
|
|
}
|
|
|
|
ability = loadout.ordnance
|
|
if ( !(ability in loaded) )
|
|
{
|
|
loaded[ ability ] <- true
|
|
row = GetDataTableRowMatchingStringValue( dataTable, abilityColumn, ability )
|
|
itemType = eItemTypes[ GetDataTableString( dataTable, row, abilityTypeColumn ) ]
|
|
isDamageSource = GetDataTableBool( dataTable, row, isDamageSourceColumn )
|
|
CreateWeaponData( row, itemType, false, ability, isDamageSource )
|
|
}
|
|
}
|
|
}
|
|
|
|
array<string> function SplitAndStripUnlockField( string unlockField )
|
|
{
|
|
array<string> unlockArray = split( unlockField, "," )
|
|
|
|
foreach ( i, unlock in unlockArray )
|
|
{
|
|
unlockArray[ i ] = strip( unlock )
|
|
}
|
|
|
|
return unlockArray
|
|
}
|
|
|
|
void function InitUnlock( string ref, string parentRef, int unlockType, int unlockLevel, int cost = 0, string additionalRef = "" )
|
|
{
|
|
if ( ref == "random" )
|
|
{
|
|
if ( unlockType == eUnlockType.FACTION_LEVEL )
|
|
AppendRandomUnlock( unlockType, unlockLevel, additionalRef )
|
|
else
|
|
AppendRandomUnlock( unlockType, unlockLevel, parentRef )
|
|
return
|
|
}
|
|
|
|
if ( IsDisabledRef( ref ) || IsDisabledRef( parentRef ) )
|
|
return
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
|
|
if ( parentRef == "" )
|
|
{
|
|
Assert( !(ref in file.unlocks), "Duplicate unlock entry " + ref )
|
|
Assert( unlockType == eUnlockType.PLAYER_LEVEL || unlockType == eUnlockType.DISABLED || unlockType == eUnlockType.ENTITLEMENT || unlockType == eUnlockType.PERSISTENT_ITEM || unlockType == eUnlockType.FACTION_LEVEL || unlockType == eUnlockType.FD_UNLOCK_POINTS, "Cannot specify a parentRef for an item that unlocks with player level" )
|
|
|
|
Unlock unlock
|
|
unlock.unlockType = unlockType
|
|
unlock.unlockLevel = unlockLevel
|
|
unlock.cost = cost
|
|
unlock.additionalRef = additionalRef
|
|
|
|
file.unlocks[ ref ] <- unlock
|
|
}
|
|
else if ( IsSubItemType( itemData.itemType ) )
|
|
{
|
|
Assert( HasSubitem( parentRef, ref ), "Item " + parentRef + " does not have a " + ref + " subitem" )
|
|
ChildUnlock childUnlock
|
|
childUnlock.unlockType = unlockType
|
|
childUnlock.unlockLevel = unlockLevel
|
|
childUnlock.cost = cost
|
|
childUnlock.additionalRef = additionalRef
|
|
|
|
// Assert( !(ref in file.unlocks[parentRef].child) )
|
|
if ( !(parentRef in file.unlocks) )
|
|
{
|
|
//CodeWarning( "Unassigned parent reference: " + parentRef + " for child " + ref )
|
|
Unlock unlock
|
|
unlock.unlockType = eUnlockType.PLAYER_LEVEL
|
|
unlock.unlockLevel = 1
|
|
|
|
file.unlocks[ parentRef ] <- unlock
|
|
}
|
|
|
|
#if DEV
|
|
if ( ref in file.unlocks[ parentRef ].child )
|
|
CodeWarning( "Duplicate unlock entry " + parentRef + "." + ref )
|
|
//Assert( !(ref in file.unlocks[ parentRef ].child), "Duplicate unlock entry " + ref )
|
|
#endif
|
|
|
|
file.unlocks[ parentRef ].child[ ref ] <- childUnlock
|
|
}
|
|
else
|
|
{
|
|
Assert( !HasSubitem( parentRef, ref ), "Item " + parentRef + " uses " + ref + " as a subitem" )
|
|
|
|
Unlock unlock
|
|
unlock.unlockType = unlockType
|
|
unlock.unlockLevel = unlockLevel
|
|
unlock.cost = cost
|
|
unlock.parentRef = parentRef
|
|
unlock.additionalRef = additionalRef
|
|
|
|
file.unlocks[ ref ] <- unlock
|
|
}
|
|
}
|
|
|
|
//int function GetPlayerStatInt( entity player, string category, string alias, string subAlias = "" )
|
|
|
|
void function InitUnlockForStatInt( string ref, string parentRef, int statValue, string statCategory, string statAlias, string statSubAlias = "" )
|
|
{
|
|
Assert ( GetStatVarType( statCategory, statAlias, statSubAlias ) == ePlayerStatType.INT )
|
|
|
|
if ( IsDisabledRef( ref ) || IsDisabledRef( parentRef ) )
|
|
return
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
Assert( HasSubitem( parentRef, ref ), "Item " + parentRef + " does not have a " + ref + " subitem" )
|
|
|
|
ChildUnlock childUnlock
|
|
childUnlock.unlockType = eUnlockType.STAT
|
|
childUnlock.unlockLevel = 0
|
|
childUnlock.cost = 0
|
|
childUnlock.unlockIntVal = statValue
|
|
childUnlock.unlockFloatVal = -1
|
|
childUnlock.additionalRef = GetStatVar( statCategory, statAlias, statSubAlias )
|
|
childUnlock.additionalData.statCategory <- statCategory
|
|
childUnlock.additionalData.statAlias <- statAlias
|
|
childUnlock.additionalData.statSubAlias <- statSubAlias
|
|
childUnlock.additionalData.statVar <- GetStatVar( statCategory, statAlias, statSubAlias )
|
|
childUnlock.additionalData.statType <- GetStatVarType( statCategory, statAlias, statSubAlias )
|
|
childUnlock.additionalData.statUnlockValue <- statValue
|
|
|
|
Assert( parentRef in file.unlocks )
|
|
|
|
#if DEV
|
|
if ( ref in file.unlocks[ parentRef ].child )
|
|
CodeWarning( "Duplicate unlock entry " + parentRef + "." + ref )
|
|
#endif
|
|
|
|
#if SERVER
|
|
AddStatCallback( statCategory, statAlias, statSubAlias, StatsCallback_SubItemUnlockUpdate, ref + "," + parentRef )
|
|
#endif
|
|
|
|
file.unlocks[ parentRef ].child[ ref ] <- childUnlock
|
|
}
|
|
else
|
|
{
|
|
Unlock unlock
|
|
unlock.unlockType = eUnlockType.STAT
|
|
unlock.parentRef = parentRef
|
|
unlock.unlockLevel = 0
|
|
unlock.cost = 0
|
|
unlock.unlockIntVal = statValue
|
|
unlock.unlockFloatVal = -1
|
|
unlock.additionalRef = GetStatVar( statCategory, statAlias, statSubAlias )
|
|
unlock.additionalData.statCategory <- statCategory
|
|
unlock.additionalData.statAlias <- statAlias
|
|
unlock.additionalData.statSubAlias <- statSubAlias
|
|
unlock.additionalData.statVar <- GetStatVar( statCategory, statAlias, statSubAlias )
|
|
unlock.additionalData.statType <- GetStatVarType( statCategory, statAlias, statSubAlias )
|
|
unlock.additionalData.statUnlockValue <- statValue
|
|
|
|
#if SERVER
|
|
AddStatCallback( statCategory, statAlias, statSubAlias, StatsCallback_ItemUnlockUpdate, ref )
|
|
#endif
|
|
|
|
file.unlocks[ ref ] <- unlock
|
|
}
|
|
}
|
|
|
|
void function InitUnlockForStatFloat( string ref, string parentRef, float statValue, string statCategory, string statAlias, string statSubAlias = "" )
|
|
{
|
|
Assert ( GetStatVarType( statCategory, statAlias, statSubAlias ) == ePlayerStatType.FLOAT )
|
|
|
|
if ( IsDisabledRef( ref ) || IsDisabledRef( parentRef ) )
|
|
return
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
Assert( HasSubitem( parentRef, ref ), "Item " + parentRef + " does not have a " + ref + " subitem" )
|
|
|
|
ChildUnlock childUnlock
|
|
childUnlock.unlockType = eUnlockType.STAT
|
|
childUnlock.unlockLevel = 0
|
|
childUnlock.cost = 0
|
|
childUnlock.unlockIntVal = -1
|
|
childUnlock.unlockFloatVal = statValue
|
|
childUnlock.additionalRef = GetStatVar( statCategory, statAlias, statSubAlias )
|
|
childUnlock.additionalData.statCategory <- statCategory
|
|
childUnlock.additionalData.statAlias <- statAlias
|
|
childUnlock.additionalData.statSubAlias <- statSubAlias
|
|
childUnlock.additionalData.statVar <- GetStatVar( statCategory, statAlias, statSubAlias )
|
|
childUnlock.additionalData.statType <- GetStatVarType( statCategory, statAlias, statSubAlias )
|
|
childUnlock.additionalData.statUnlockValue <- statValue
|
|
|
|
Assert( parentRef in file.unlocks )
|
|
|
|
#if DEV
|
|
if ( ref in file.unlocks[ parentRef ].child )
|
|
CodeWarning( "Duplicate unlock entry " + parentRef + "." + ref )
|
|
#endif
|
|
|
|
#if SERVER
|
|
AddStatCallback( statCategory, statAlias, statSubAlias, StatsCallback_SubItemUnlockUpdate, ref + "," + parentRef )
|
|
#endif
|
|
|
|
file.unlocks[ parentRef ].child[ ref ] <- childUnlock
|
|
}
|
|
else
|
|
{
|
|
Unlock unlock
|
|
unlock.unlockType = eUnlockType.STAT
|
|
unlock.parentRef = parentRef
|
|
unlock.unlockLevel = 0
|
|
unlock.cost = 0
|
|
unlock.unlockIntVal = -1
|
|
unlock.unlockFloatVal = statValue
|
|
unlock.additionalRef = GetStatVar( statCategory, statAlias, statSubAlias )
|
|
unlock.additionalData.statCategory <- statCategory
|
|
unlock.additionalData.statAlias <- statAlias
|
|
unlock.additionalData.statSubAlias <- statSubAlias
|
|
unlock.additionalData.statVar <- GetStatVar( statCategory, statAlias, statSubAlias )
|
|
unlock.additionalData.statType <- GetStatVarType( statCategory, statAlias, statSubAlias )
|
|
unlock.additionalData.statUnlockValue <- statValue
|
|
|
|
#if SERVER
|
|
AddStatCallback( statCategory, statAlias, statSubAlias, StatsCallback_ItemUnlockUpdate, ref )
|
|
#endif
|
|
|
|
file.unlocks[ ref ] <- unlock
|
|
}
|
|
}
|
|
|
|
ItemData function CreateBaseItemData( int itemType, string ref, bool hidden )
|
|
{
|
|
Assert( ref == ref.tolower() )
|
|
Assert( !(ref in file.itemData), "Already defined item ref " + ref )
|
|
|
|
GlobalItemRef globalItemRef
|
|
globalItemRef.ref = ref
|
|
globalItemRef.itemType = itemType
|
|
globalItemRef.hidden = hidden
|
|
globalItemRef.guid = StringHash( ref )
|
|
file.allItems.append( globalItemRef )
|
|
file.itemRefToGuid[ref] <- globalItemRef.guid
|
|
Assert( !(globalItemRef.guid in file.guidToItemRef), "duplicate hash for refs " + file.guidToItemRef[globalItemRef.guid] + " and " + ref )
|
|
file.guidToItemRef[globalItemRef.guid] <- ref
|
|
|
|
ItemData item
|
|
item.itemType = itemType
|
|
item.ref = ref
|
|
item.hidden = hidden
|
|
|
|
file.itemData[ref] <- item
|
|
file.itemsOfType[ itemType ].append( ref )
|
|
|
|
file.globalItemRefsOfType[ itemType ].append( globalItemRef )
|
|
|
|
return item
|
|
}
|
|
|
|
void function CreatePrimeTitanData( int itemType, string ref, string nonPrimeRef, bool hidden )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.persistenceStruct = GetItemPersistenceStruct( nonPrimeRef )
|
|
item.persistenceId = GetItemPersistenceId( nonPrimeRef )
|
|
}
|
|
|
|
void function CreateWeaponData( int dataTableIndex, int itemType, bool hidden, string ref, bool isDamageSource, int cost = 0 )
|
|
{
|
|
#if !UI
|
|
#if SERVER || CLIENT
|
|
PrecacheWeapon( ref )
|
|
#endif
|
|
PROTO_PrecacheTrapFX( ref )
|
|
#endif
|
|
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.name = expect string( GetWeaponInfoFileKeyField_GlobalNotNull( ref, "shortprintname" ) )
|
|
item.longname = expect string( GetWeaponInfoFileKeyField_GlobalNotNull( ref, "printname" ) )
|
|
item.desc = expect string( GetWeaponInfoFileKeyField_GlobalNotNull( ref, "description" ) )
|
|
item.longdesc = expect string( GetWeaponInfoFileKeyField_GlobalNotNull( ref, "longdesc" ) )
|
|
item.cost = cost
|
|
|
|
asset image = GetWeaponInfoFileKeyFieldAsset_Global( ref, "menu_icon" )
|
|
if ( image == $"" )
|
|
image = $"ui/temp"
|
|
|
|
item.image = image
|
|
|
|
switch ( item.itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
string stringVal = GetWeaponInfoFileKeyField_GlobalString( ref, "menu_category" )
|
|
item.i.menuCategory <- MenuCategoryStringToEnumValue( stringVal )
|
|
|
|
stringVal = GetWeaponInfoFileKeyField_GlobalString( ref, "menu_anim_class" )
|
|
item.i.menuAnimClass <- MenuAnimClassStringToEnumValue( stringVal )
|
|
|
|
item.persistenceStruct = "pilotWeapons[" + dataTableIndex + "]"
|
|
break
|
|
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
item.persistenceStruct = "pilotOffhands[" + dataTableIndex + "]"
|
|
break
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
item.imageAtlas = IMAGE_ATLAS_HUD
|
|
item.persistenceStruct = "pilotOffhands[" + dataTableIndex + "]"
|
|
break
|
|
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
item.persistenceStruct = "titanWeapons[" + dataTableIndex + "]"
|
|
break
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
case eItemTypes.TITAN_CORE_ABILITY:
|
|
item.imageAtlas = IMAGE_ATLAS_HUD
|
|
item.persistenceStruct = "titanOffhands[" + dataTableIndex + "]"
|
|
break
|
|
}
|
|
|
|
item.persistenceId = dataTableIndex
|
|
|
|
// some weapons are really abilities and don't have these values
|
|
item.i.statDamage <- int( GetWeaponInfoFileKeyField_GlobalFloat( ref, "stat_damage" ) ) // TODO: Code makes these float though everywhere expects int
|
|
item.i.statRange <- int( GetWeaponInfoFileKeyField_GlobalFloat( ref, "stat_range" ) )
|
|
item.i.statAccuracy <- int( GetWeaponInfoFileKeyField_GlobalFloat( ref, "stat_accuracy" ) )
|
|
item.i.statFireRate <- int( GetWeaponInfoFileKeyField_GlobalFloat( ref, "stat_rof" ) )
|
|
item.i.statClipSize <- GetWeaponInfoFileKeyField_GlobalInt( ref, "ammo_clip_size" )
|
|
|
|
if ( itemType != eItemTypes.NOT_LOADOUT )
|
|
{
|
|
//UpdateChallengeRewardItems( ref, null, itemType, challengeReq, challengeTier )
|
|
|
|
// Register the item itemType so the "bot_loadout" console command auto-complete
|
|
// knows about it. Client only. If this auto-complete breaks then the item
|
|
// itemType enum may be desynced between .nut and C++ source code. See Glenn.
|
|
//#if CLIENT
|
|
// RegisterItemType( itemType, ref )
|
|
//#endif
|
|
|
|
#if SERVER || CLIENT
|
|
if ( isDamageSource )
|
|
RegisterWeaponDamageSourceName( ref, expect string( GetWeaponInfoFileKeyField_GlobalNotNull( ref, "shortprintname" ) ) )
|
|
#endif
|
|
}
|
|
}
|
|
|
|
void function CreatePilotSuitData( int datatableIndex, int itemType, string ref, asset image, int cost = 0 )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, false )
|
|
item.image = image
|
|
item.persistenceId = datatableIndex
|
|
item.cost = cost
|
|
|
|
#if SERVER || CLIENT
|
|
string setFile
|
|
setFile = GetSuitAndGenderBasedSetFile( ref, "race_human_male" )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "bodymodel" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "armsmodel" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "cockpitmodel" ) )
|
|
|
|
setFile = GetSuitAndGenderBasedSetFile( ref, "race_human_female" )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "bodymodel" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "armsmodel" ) )
|
|
PrecacheModel( GetPlayerSettingsAssetForClassName( setFile, "cockpitmodel" ) )
|
|
#endif
|
|
}
|
|
|
|
|
|
#if !UI
|
|
void function PROTO_PrecacheTrapFX( ref )
|
|
{
|
|
asset trapWarningFriendlyFX = GetWeaponInfoFileKeyFieldAsset_Global( ref, "trap_warning_friendly_fx" )
|
|
if ( trapWarningFriendlyFX != $"" )
|
|
PrecacheParticleSystem( trapWarningFriendlyFX )
|
|
|
|
asset trapWarningEnemyFX = GetWeaponInfoFileKeyFieldAsset_Global( ref, "trap_warning_enemy_fx" )
|
|
if ( trapWarningEnemyFX != $"" )
|
|
PrecacheParticleSystem( trapWarningEnemyFX )
|
|
|
|
var trapWarningOwnerFX = GetWeaponInfoFileKeyFieldAsset_Global( ref, "trap_warning_owner_fx" )
|
|
if ( trapWarningOwnerFX != $"" )
|
|
PrecacheParticleSystem( trapWarningOwnerFX )
|
|
}
|
|
#endif
|
|
|
|
int function GetUnlockLevelReq( string ref )
|
|
{
|
|
if ( ref in file.unlocks )
|
|
return file.unlocks[ ref ].unlockLevel
|
|
|
|
return 0
|
|
}
|
|
|
|
int function GetUnlockLevelReqWithParent( string ref, string parentRef = "" )
|
|
{
|
|
if ( parentRef in file.unlocks )
|
|
{
|
|
if ( ref in file.unlocks[ parentRef ].child )
|
|
return file.unlocks[ parentRef ].child[ ref ].unlockLevel
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
bool function ItemDefined( string ref )
|
|
{
|
|
return ref in file.itemData
|
|
}
|
|
|
|
ItemData function GetItemData( string ref )
|
|
{
|
|
return file.itemData[ref]
|
|
}
|
|
|
|
int function GetItemType( string ref )
|
|
{
|
|
return file.itemData[ref].itemType
|
|
}
|
|
|
|
int function GetItemMenuAnimClass( string ref )
|
|
{
|
|
return expect int ( file.itemData[ref].i.menuAnimClass )
|
|
}
|
|
|
|
int function GetItemId( string ref )
|
|
{
|
|
return file.itemRefToGuid[ref]
|
|
}
|
|
|
|
string function GetItemName( string ref )
|
|
{
|
|
return file.itemData[ref].name
|
|
}
|
|
|
|
string function GetItemLongName( string ref )
|
|
{
|
|
return file.itemData[ref].longname
|
|
}
|
|
|
|
string function GetItemDescription( string ref )
|
|
{
|
|
return file.itemData[ref].desc
|
|
}
|
|
|
|
string function GetItemLongDescription( string ref )
|
|
{
|
|
return file.itemData[ref].longdesc
|
|
}
|
|
|
|
bool function IsItemPurchasableEntitlement( string ref, string parentRef = "" )
|
|
{
|
|
if ( !IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
return false
|
|
|
|
string fullRef = GetFullRef( ref, parentRef )
|
|
Assert( fullRef in file.entitlementUnlocks )
|
|
|
|
if ( file.entitlementUnlocks[fullRef].purchaseData.purchaseMenu != "" )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
float function GetStatUnlockStatVal( string ref, string parentRef = "" )
|
|
{
|
|
int statType
|
|
string statVar
|
|
string statCategory
|
|
string statAlias
|
|
string statSubAlias
|
|
float statVal
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
ChildUnlock unlock = file.unlocks[ parentRef ].child[ref]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
statVal = float( unlock.unlockIntVal )
|
|
else
|
|
statVal = unlock.unlockFloatVal
|
|
}
|
|
else
|
|
{
|
|
Unlock unlock = file.unlocks[ ref ]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
statVal = float( unlock.unlockIntVal )
|
|
else
|
|
statVal = unlock.unlockFloatVal
|
|
}
|
|
|
|
return statVal
|
|
}
|
|
|
|
#if UI
|
|
|
|
string function GetPurchasableEntitlementMenu( string ref, string parentRef )
|
|
{
|
|
Assert ( IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
|
|
string fullRef = GetFullRef( ref, parentRef )
|
|
Assert( fullRef in file.entitlementUnlocks )
|
|
|
|
return file.entitlementUnlocks[fullRef].purchaseData.purchaseMenu
|
|
}
|
|
|
|
string function GetItemUnlockReqText( string ref, string parentRef = "", bool alwaysShow = false )
|
|
{
|
|
entity player = GetUIPlayer()
|
|
if ( !IsValid( player ) )
|
|
return ""
|
|
|
|
if ( IsItemInRandomUnlocks( ref, parentRef ) )
|
|
return "#UNLOCK_RANDOM"
|
|
|
|
string unlockReq = ""
|
|
|
|
int itemType = GetItemType( ref )
|
|
int unlockType
|
|
int unlockLevel
|
|
bool isUnlocked
|
|
|
|
if ( IsSubItemType( itemType ) )
|
|
{
|
|
isUnlocked = !IsSubItemLocked( player, ref, parentRef )
|
|
if ( !IsSubItemLocked( player, ref, parentRef ) && !alwaysShow )
|
|
return ""
|
|
|
|
if ( IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
{
|
|
//if ( !isUnlocked && !DevEverythingUnlocked() )
|
|
// CodeWarning( ref + " needs to be hidden since it's an entitlement unlock" )
|
|
if ( IsItemPurchasableEntitlement( ref, parentRef ) )
|
|
return "#ITEM_TYPE_STORE_PURCHASE"
|
|
else
|
|
return ""
|
|
}
|
|
|
|
unlockType = GetSubItemUnlockType( ref, parentRef )
|
|
unlockLevel = GetUnlockLevelReqWithParent( ref, parentRef )
|
|
}
|
|
else
|
|
{
|
|
isUnlocked = !IsItemLocked( player, ref )
|
|
if ( !IsItemLocked( player, ref ) && !alwaysShow )
|
|
return ""
|
|
|
|
if ( IsItemInEntitlementUnlock( ref ) )
|
|
{
|
|
//if ( !isUnlocked && !DevEverythingUnlocked() )
|
|
//CodeWarning( ref + " needs to be hidden since it's an entitlement unlock" )
|
|
if ( IsItemPurchasableEntitlement( ref ) )
|
|
return "#ITEM_TYPE_STORE_PURCHASE"
|
|
else
|
|
return ""
|
|
}
|
|
|
|
unlockType = GetItemUnlockType( ref )
|
|
unlockLevel = GetUnlockLevelReq( ref )
|
|
}
|
|
|
|
switch ( unlockType )
|
|
{
|
|
case eUnlockType.PLAYER_LEVEL:
|
|
int gen = player.GetGen()
|
|
string level = PlayerXPDisplayGenAndLevelForRawLevel( unlockLevel )
|
|
if ( gen <= 1 && unlockLevel > GetMaxPlayerLevel() )
|
|
{
|
|
unlockReq = Localize( "#UNLOCK_PLAYER_LEVEL_REGEN" )
|
|
}
|
|
else
|
|
{
|
|
if ( isUnlocked )
|
|
unlockReq = Localize( "#UNLOCKED_PLAYER_LEVEL", level )
|
|
else
|
|
unlockReq = Localize( "#UNLOCK_PLAYER_LEVEL", level )
|
|
}
|
|
break
|
|
|
|
case eUnlockType.TITAN_LEVEL:
|
|
if ( parentRef == "" )
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ ref ].parentRef != "" )
|
|
parentRef = file.unlocks[ ref ].parentRef
|
|
}
|
|
|
|
string level = TitanGetDisplayGenAndLevelForRawLevel( unlockLevel )
|
|
if ( TitanGetGen( player, parentRef ) <= 1 && unlockLevel > TitanGetMaxLevel( parentRef ) )
|
|
{
|
|
unlockReq = Localize( "#UNLOCK_TITAN_LEVEL_REGEN", Localize( GetItemName( parentRef ) ) )
|
|
}
|
|
else
|
|
{
|
|
if ( isUnlocked )
|
|
unlockReq = Localize( "#UNLOCKED_TITAN_LEVEL", Localize( GetItemName( parentRef ) ), level )
|
|
else
|
|
unlockReq = Localize( "#UNLOCK_TITAN_LEVEL", Localize( GetItemName( parentRef ) ), level )
|
|
}
|
|
|
|
break
|
|
|
|
case eUnlockType.FD_UNLOCK_POINTS:
|
|
if ( parentRef == "" )
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ ref ].parentRef != "" )
|
|
parentRef = file.unlocks[ ref ].parentRef
|
|
}
|
|
|
|
if ( isUnlocked )
|
|
unlockReq = Localize( "#UNLOCKED_FD_LEVEL", Localize( GetItemName( parentRef ) ), unlockLevel )
|
|
else
|
|
unlockReq = Localize( "#UNLOCK_FD_LEVEL", Localize( GetItemName( parentRef ) ), unlockLevel )
|
|
break
|
|
|
|
|
|
case eUnlockType.WEAPON_LEVEL:
|
|
if ( parentRef == "" )
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ ref ].parentRef != "" )
|
|
parentRef = file.unlocks[ ref ].parentRef
|
|
}
|
|
|
|
string level = WeaponGetDisplayGenAndLevelForRawLevel( unlockLevel )
|
|
if ( WeaponGetGen( player, parentRef ) <= 1 && unlockLevel > WeaponGetMaxLevel( parentRef ) )
|
|
{
|
|
unlockReq = Localize( "#UNLOCK_WEAPON_LEVEL_REGEN", Localize( GetItemName( parentRef ) ) )
|
|
}
|
|
else
|
|
{
|
|
if ( isUnlocked )
|
|
unlockReq = Localize( "#UNLOCKED_WEAPON_LEVEL", Localize( GetItemName( parentRef ) ), level )
|
|
else
|
|
unlockReq = Localize( "#UNLOCK_WEAPON_LEVEL", Localize( GetItemName( parentRef ) ), level )
|
|
}
|
|
break
|
|
|
|
case eUnlockType.FACTION_LEVEL:
|
|
string level = FactionGetDisplayGenAndLevelForRawLevel( unlockLevel )
|
|
|
|
string factionRef
|
|
string factionName
|
|
if ( IsSubItemType( itemType ) )
|
|
factionRef = file.unlocks[ parentRef ].child[ ref ].additionalRef
|
|
else
|
|
factionRef = file.unlocks[ ref ].additionalRef
|
|
|
|
factionName = Localize( file.itemData[factionRef].name )
|
|
if ( FactionGetGen( player, factionRef ) <= 1 && unlockLevel > FactionGetMaxLevel( factionRef ) )
|
|
{
|
|
unlockReq = Localize( "#UNLOCK_FACTION_LEVEL_REGEN", factionName )
|
|
}
|
|
else
|
|
{
|
|
if ( isUnlocked )
|
|
unlockReq = Localize( "#UNLOCKED_FACTION_LEVEL", factionName, level )
|
|
else
|
|
unlockReq = Localize( "#UNLOCK_FACTION_LEVEL", factionName, level )
|
|
}
|
|
break
|
|
|
|
case eUnlockType.STAT:
|
|
unlockReq = GetStatUnlockReq( ref, parentRef )
|
|
break
|
|
}
|
|
|
|
return unlockReq
|
|
}
|
|
|
|
string function GetUnlockProgressText( string ref, string parentRef = "" )
|
|
{
|
|
entity player = GetUIPlayer()
|
|
if ( !IsValid( player ) )
|
|
return ""
|
|
|
|
if ( IsItemInRandomUnlocks( ref, parentRef ) )
|
|
return ""
|
|
|
|
int itemType = GetItemType( ref )
|
|
int unlockType
|
|
int unlockLevel
|
|
|
|
if ( IsSubItemType( itemType ) )
|
|
{
|
|
if ( !IsSubItemLocked( player, ref, parentRef ) )
|
|
return ""
|
|
|
|
if ( IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
return ""
|
|
|
|
unlockType = GetSubItemUnlockType( ref, parentRef )
|
|
unlockLevel = GetUnlockLevelReqWithParent( ref, parentRef )
|
|
}
|
|
else
|
|
{
|
|
if ( !IsItemLocked( player, ref ) )
|
|
return ""
|
|
|
|
if ( IsItemInEntitlementUnlock( ref ) )
|
|
return ""
|
|
|
|
unlockType = GetItemUnlockType( ref )
|
|
unlockLevel = GetUnlockLevelReq( ref )
|
|
}
|
|
|
|
switch ( unlockType )
|
|
{
|
|
case eUnlockType.PLAYER_LEVEL:
|
|
case eUnlockType.TITAN_LEVEL:
|
|
case eUnlockType.WEAPON_LEVEL:
|
|
case eUnlockType.FACTION_LEVEL:
|
|
return ""
|
|
|
|
case eUnlockType.STAT:
|
|
return GetStatUnlockProgress( ref, parentRef )
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
float function GetUnlockProgressFrac( string ref, string parentRef = "" )
|
|
{
|
|
entity player = GetUIPlayer()
|
|
if ( !IsValid( player ) )
|
|
return 0.0
|
|
|
|
if ( IsItemInRandomUnlocks( ref, parentRef ) )
|
|
return 0.0
|
|
|
|
int itemType = GetItemType( ref )
|
|
int unlockType
|
|
int unlockLevel
|
|
|
|
if ( IsSubItemType( itemType ) )
|
|
{
|
|
if ( !IsSubItemLocked( player, ref, parentRef ) )
|
|
return 0.0
|
|
|
|
if ( IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
return 0.0
|
|
|
|
unlockType = GetSubItemUnlockType( ref, parentRef )
|
|
unlockLevel = GetUnlockLevelReqWithParent( ref, parentRef )
|
|
}
|
|
else
|
|
{
|
|
if ( !IsItemLocked( player, ref ) )
|
|
return 0.0
|
|
|
|
if ( IsItemInEntitlementUnlock( ref ) )
|
|
return 0.0
|
|
|
|
unlockType = GetItemUnlockType( ref )
|
|
unlockLevel = GetUnlockLevelReq( ref )
|
|
}
|
|
|
|
switch ( unlockType )
|
|
{
|
|
case eUnlockType.PLAYER_LEVEL:
|
|
case eUnlockType.TITAN_LEVEL:
|
|
case eUnlockType.WEAPON_LEVEL:
|
|
case eUnlockType.FACTION_LEVEL:
|
|
return 0.0
|
|
|
|
case eUnlockType.STAT:
|
|
return GetStatUnlockProgressFrac( ref, parentRef )
|
|
}
|
|
|
|
return 0.0
|
|
}
|
|
|
|
string function GetStatUnlockProgress( string ref, string parentRef = "" )
|
|
{
|
|
int statType
|
|
string statVar
|
|
string statCategory
|
|
string statAlias
|
|
string statSubAlias
|
|
string statValString
|
|
string statCurString
|
|
|
|
entity player = GetUIPlayer()
|
|
if ( !player )
|
|
return ""
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
ChildUnlock unlock = file.unlocks[ parentRef ].child[ref]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
{
|
|
statCurString = string( GetPlayerStatInt( player, statCategory, statAlias, statSubAlias ) )
|
|
statValString = string( unlock.unlockIntVal )
|
|
}
|
|
else
|
|
{
|
|
statCurString = format( "%.2f", GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias ) )
|
|
statValString = string( unlock.unlockFloatVal )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Unlock unlock = file.unlocks[ ref ]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
{
|
|
statCurString = string( GetPlayerStatInt( player, statCategory, statAlias, statSubAlias ) )
|
|
statValString = string( unlock.unlockIntVal )
|
|
}
|
|
else
|
|
{
|
|
statCurString = format( "%.2f", GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias ) )
|
|
statValString = string( unlock.unlockFloatVal )
|
|
}
|
|
}
|
|
|
|
return statCurString + " / " + statValString
|
|
}
|
|
|
|
float function GetStatUnlockProgressFrac( string ref, string parentRef = "" )
|
|
{
|
|
int statType
|
|
string statVar
|
|
string statCategory
|
|
string statAlias
|
|
string statSubAlias
|
|
|
|
float statVal
|
|
float statCur
|
|
|
|
entity player = GetUIPlayer()
|
|
if ( !player )
|
|
return 0.0
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
ChildUnlock unlock = file.unlocks[ parentRef ].child[ref]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
{
|
|
statCur = float( GetPlayerStatInt( player, statCategory, statAlias, statSubAlias ) )
|
|
statVal = float( unlock.unlockIntVal )
|
|
}
|
|
else
|
|
{
|
|
statCur = GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias )
|
|
statVal = unlock.unlockFloatVal
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Unlock unlock = file.unlocks[ ref ]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
{
|
|
statCur = float( GetPlayerStatInt( player, statCategory, statAlias, statSubAlias ) )
|
|
statVal = float( unlock.unlockIntVal )
|
|
}
|
|
else
|
|
{
|
|
statCur = GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias )
|
|
statVal = unlock.unlockFloatVal
|
|
}
|
|
}
|
|
|
|
return statCur / statVal
|
|
}
|
|
|
|
#endif
|
|
|
|
#if UI || CLIENT
|
|
string function GetStatUnlockReq( string ref, string parentRef = "" )
|
|
{
|
|
int statType
|
|
string statVar
|
|
string statCategory
|
|
string statAlias
|
|
string statSubAlias
|
|
string statValString
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
ChildUnlock unlock = file.unlocks[ parentRef ].child[ref]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
statValString = string( unlock.unlockIntVal )
|
|
else
|
|
statValString = string( unlock.unlockFloatVal )
|
|
}
|
|
else
|
|
{
|
|
Unlock unlock = file.unlocks[ ref ]
|
|
statType = expect int( unlock.additionalData.statType )
|
|
statVar = expect string( unlock.additionalData.statVar )
|
|
statCategory = expect string( unlock.additionalData.statCategory )
|
|
statAlias = expect string( unlock.additionalData.statAlias )
|
|
statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
statValString = string( unlock.unlockIntVal )
|
|
else
|
|
statValString = string( unlock.unlockFloatVal )
|
|
}
|
|
|
|
string localizedUnlockBase = GetStatVarLocalizedUnlock( statCategory, statAlias, statSubAlias )
|
|
|
|
string unlockReq
|
|
if ( statSubAlias != "" )
|
|
{
|
|
ItemData itemData = GetItemData( statSubAlias )
|
|
unlockReq = Localize( localizedUnlockBase, statValString, Localize( itemData.name ) )
|
|
}
|
|
else
|
|
{
|
|
string subString
|
|
if ( parentRef != "" )
|
|
{
|
|
ItemData itemData = GetItemData( parentRef )
|
|
subString = Localize( itemData.name )
|
|
}
|
|
|
|
unlockReq = Localize( localizedUnlockBase, statValString, subString )
|
|
}
|
|
|
|
return unlockReq
|
|
}
|
|
#endif
|
|
|
|
asset function GetItemImage( string ref )
|
|
{
|
|
return file.itemData[ref].image
|
|
}
|
|
|
|
vector function GetItemImageAspect( string ref )
|
|
{
|
|
vector aspectRatio = <1, 1, 0>
|
|
|
|
switch ( GetItemType( ref ) )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
case eItemTypes.PILOT_SUIT:
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
aspectRatio = <2, 1, 0>
|
|
break
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
aspectRatio = <0.64, 1, 0>
|
|
break
|
|
case eItemTypes.CALLING_CARD:
|
|
aspectRatio = <2.25, 1, 0>
|
|
break
|
|
case eItemTypes.FEATURE:
|
|
if ( ref == "coliseum" ) // JFS
|
|
aspectRatio = <2, 1, 0>
|
|
else if ( "isPlaylist" in GetItemData( ref ).i ) // JFS
|
|
aspectRatio = <2, 1, 0>
|
|
|
|
break
|
|
}
|
|
|
|
return aspectRatio
|
|
}
|
|
|
|
int function GetItemCost( string ref )
|
|
{
|
|
return file.itemData[ref].cost
|
|
}
|
|
|
|
int function GetItemStat( string ref, int statType )
|
|
{
|
|
Assert( ref in file.itemData )
|
|
|
|
int statValue = 0
|
|
|
|
switch ( statType )
|
|
{
|
|
case eWeaponStatType.DAMAGE:
|
|
statValue = expect int( file.itemData[ref].i.statDamage )
|
|
break
|
|
|
|
case eWeaponStatType.ACCURACY:
|
|
statValue = expect int( file.itemData[ref].i.statAccuracy )
|
|
break
|
|
|
|
case eWeaponStatType.RANGE:
|
|
statValue = expect int( file.itemData[ref].i.statRange )
|
|
break
|
|
|
|
case eWeaponStatType.FIRE_RATE:
|
|
statValue = expect int( file.itemData[ref].i.statFireRate )
|
|
break
|
|
|
|
case eWeaponStatType.CAPACITY:
|
|
statValue = expect int( file.itemData[ref].i.statClipSize )
|
|
break
|
|
}
|
|
|
|
return statValue
|
|
}
|
|
|
|
int function GetModdedItemStat( string parentRef, string childRef, int statType )
|
|
{
|
|
int defaultValue = GetItemStat( parentRef, statType )
|
|
if ( childRef == "none" )
|
|
return defaultValue
|
|
|
|
int modValue = GetSubitemStat( parentRef, childRef, statType )
|
|
return defaultValue + modValue
|
|
}
|
|
|
|
int function GetSubitemStat( string parentRef, string childRef, int statType )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
int statValue = 0
|
|
|
|
Assert( childRef == "none" || childRef in file.itemData[parentRef].subitems )
|
|
if ( !(childRef in file.itemData[parentRef].subitems) )
|
|
return statValue
|
|
|
|
SubItemData subItem = file.itemData[parentRef].subitems[childRef]
|
|
|
|
switch ( statType )
|
|
{
|
|
case eWeaponStatType.DAMAGE:
|
|
statValue = expect int( subItem.i.statDamage )
|
|
break
|
|
|
|
case eWeaponStatType.ACCURACY:
|
|
statValue = expect int( subItem.i.statAccuracy )
|
|
break
|
|
|
|
case eWeaponStatType.RANGE:
|
|
statValue = expect int( subItem.i.statRange )
|
|
break
|
|
|
|
case eWeaponStatType.FIRE_RATE:
|
|
statValue = expect int( subItem.i.statFireRate )
|
|
break
|
|
|
|
case eWeaponStatType.CAPACITY:
|
|
statValue = expect int( subItem.i.statClipSize )
|
|
break
|
|
}
|
|
|
|
return statValue
|
|
}
|
|
|
|
int function GetTitanStat( string ref, int statType )
|
|
{
|
|
int statValue = 0
|
|
|
|
switch ( statType )
|
|
{
|
|
case eTitanStatType.SPEED:
|
|
statValue = expect int( file.itemData[ref].i.statSpeed )
|
|
break
|
|
|
|
case eTitanStatType.DAMAGE:
|
|
statValue = expect int( file.itemData[ref].i.statDamage )
|
|
break
|
|
|
|
case eTitanStatType.HEALTH:
|
|
statValue = expect int( file.itemData[ref].i.statHealth )
|
|
break
|
|
|
|
case eTitanStatType.DASHES:
|
|
statValue = expect int( file.itemData[ref].i.statDash )
|
|
break
|
|
}
|
|
|
|
return statValue
|
|
}
|
|
|
|
int function GetSubItemClipSizeStat( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
if ( !(childRef in file.itemData[parentRef].subitems) )
|
|
return 0
|
|
|
|
SubItemData subItem = file.itemData[parentRef].subitems[childRef]
|
|
|
|
return expect int ( subItem.i.statClipSize )
|
|
}
|
|
|
|
string function GetRefFromItem( item )
|
|
{
|
|
return expect string( item.ref )
|
|
}
|
|
|
|
function SubitemDefined( string parentRef, string childRef )
|
|
{
|
|
if ( !( parentRef in file.itemData ) )
|
|
return false
|
|
|
|
return ( childRef in file.itemData[parentRef].subitems )
|
|
}
|
|
|
|
ItemDisplayData function GetSubitemDisplayData( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return GetItemDisplayData( childRef, parentRef )
|
|
}
|
|
|
|
int function GetSubitemType( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return GetItemData( parentRef ).subitems[childRef].itemType
|
|
}
|
|
|
|
int function GetSubitemId( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return file.itemRefToGuid[childRef]
|
|
}
|
|
|
|
string function GetSubitemName( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return GetItemData( childRef ).name
|
|
}
|
|
|
|
bool function HasSubitem( string parentRef, string childRef )
|
|
{
|
|
return (childRef in file.itemData[parentRef].subitems)
|
|
}
|
|
|
|
string function GetSubitemDescription( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return GetItemData( childRef ).desc
|
|
}
|
|
|
|
string function GetSubitemLongDescription( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return GetItemData( childRef ).longdesc
|
|
}
|
|
|
|
asset function GetSubitemImage( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
return GetItemData( childRef ).image
|
|
}
|
|
|
|
int function GetSubitemCost( string parentRef, string childRef )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
if ( childRef == "none" )
|
|
return GetItemCost( parentRef )
|
|
|
|
return GetItemData( parentRef ).subitems[childRef].cost
|
|
}
|
|
|
|
array<ItemData> function GetAllItemsOfType( int itemType )
|
|
{
|
|
Assert( itemType >= 0 && itemType < eItemTypes.COUNT, "Unknown item itemType " + itemType )
|
|
|
|
array<ItemData> items = []
|
|
|
|
if ( file.globalItemRefsOfType[ itemType ].len() )
|
|
{
|
|
array<GlobalItemRef> genericItemData = file.globalItemRefsOfType[ itemType ]
|
|
foreach ( itemData in genericItemData )
|
|
items.append( file.itemData[ itemData.ref ] )
|
|
|
|
return items
|
|
}
|
|
|
|
foreach ( ref in file.itemsOfType[ itemType ] )
|
|
items.append( file.itemData[ ref ] )
|
|
|
|
return items
|
|
}
|
|
|
|
array<SubItemData> function GetAllSubItemsOfType( string parentRef, int itemType )
|
|
{
|
|
Assert( itemType >= 0 && itemType < eItemTypes.COUNT, "Unknown item itemType " + itemType )
|
|
|
|
array<SubItemData> items = []
|
|
|
|
ItemData parentItem = GetItemData( parentRef )
|
|
|
|
foreach ( subitem in parentItem.subitems )
|
|
{
|
|
if ( GetSubitemType( parentRef, subitem.ref ) != itemType )
|
|
continue
|
|
|
|
items.append( subitem )
|
|
}
|
|
|
|
return items
|
|
}
|
|
|
|
|
|
array<string> function GetAllItemRefsOfType( int itemType )
|
|
{
|
|
Assert( itemType >= 0 && itemType < eItemTypes.COUNT, "Unknown item itemType " + itemType )
|
|
//Assert( !(itemType == eItemTypes.PILOT_PRIMARY_MOD) )
|
|
//Assert( !(itemType == eItemTypes.PILOT_SECONDARY_MOD) )
|
|
//Assert( !(itemType == eItemTypes.PILOT_PRIMARY_ATTACHMENT) )
|
|
|
|
array<string> refs = []
|
|
|
|
if ( file.globalItemRefsOfType[ itemType ].len() )
|
|
{
|
|
array<GlobalItemRef> genericItemData = file.globalItemRefsOfType[ itemType ]
|
|
foreach ( itemData in genericItemData )
|
|
refs.append( itemData.ref )
|
|
|
|
return refs
|
|
}
|
|
|
|
foreach ( ref in file.itemsOfType[ itemType ] )
|
|
refs.append( ref )
|
|
|
|
return refs
|
|
}
|
|
|
|
array<ItemDisplayData> function GetVisibleItemsOfType( int itemType, string parentRef = "", bool doSort = true )
|
|
{
|
|
Assert( itemType >= 0 && itemType < eItemTypes.COUNT, "Unknown item itemType " + itemType )
|
|
Assert( !IsSubItemType( itemType ) || parentRef != "" )
|
|
|
|
array<ItemDisplayData> items = []
|
|
|
|
if ( file.globalItemRefsOfType[ itemType ].len() )
|
|
{
|
|
array<GlobalItemRef> genericItemData = file.globalItemRefsOfType[ itemType ]
|
|
foreach ( itemData in genericItemData )
|
|
{
|
|
if ( itemData.hidden )
|
|
continue
|
|
|
|
if ( IsSubItemType( itemType ) && !HasSubitem( parentRef, itemData.ref ) )
|
|
continue
|
|
|
|
items.append( GetItemDisplayData( itemData.ref, parentRef ) )
|
|
}
|
|
}
|
|
|
|
if ( doSort )
|
|
items.sort( SortByUnlockLevelUntyped )
|
|
|
|
return items
|
|
}
|
|
|
|
array<ItemDisplayData> function GetVisibleItemsOfTypeWithoutEntitlements( entity player, int itemType, string parentRef = "" )
|
|
{
|
|
array<ItemDisplayData> items = GetVisibleItemsOfType( itemType, parentRef )
|
|
array<ItemDisplayData> finalItems = []
|
|
|
|
// in case the player is gone (disconnected)
|
|
if ( player == null )
|
|
{
|
|
return items
|
|
}
|
|
|
|
foreach ( item in items )
|
|
{
|
|
bool isEntitlement = IsItemInEntitlementUnlock( item.ref, item.parentRef )
|
|
bool locked
|
|
int unlockType
|
|
|
|
if ( IsItemInRandomUnlocks( item.ref, item.parentRef ) )
|
|
{
|
|
finalItems.append( item )
|
|
continue
|
|
}
|
|
|
|
if ( IsSubItemType( itemType ) )
|
|
{
|
|
locked = IsSubItemLocked( player, item.ref, item.parentRef )
|
|
|
|
if ( isEntitlement && locked && !IsItemPurchasableEntitlement( item.ref, item.parentRef ) )
|
|
continue
|
|
else if ( isEntitlement )
|
|
unlockType = 0 // just a whatever number
|
|
else
|
|
unlockType = GetSubItemUnlockType( item.ref, item.parentRef )
|
|
}
|
|
else
|
|
{
|
|
locked = IsItemLocked( player, item.ref )
|
|
|
|
if ( isEntitlement && locked && !IsItemPurchasableEntitlement( item.ref ) )
|
|
continue
|
|
else if ( isEntitlement )
|
|
unlockType = 0 // just a whatever number
|
|
else
|
|
unlockType = GetItemUnlockType( item.ref )
|
|
}
|
|
|
|
if ( unlockType == eUnlockType.PERSISTENT_ITEM && locked )
|
|
continue
|
|
|
|
finalItems.append( item )
|
|
}
|
|
|
|
return finalItems
|
|
}
|
|
|
|
array<ItemDisplayData> function GetVisibleItemsOfTypeForCategory( int itemType, int category )
|
|
{
|
|
array<ItemDisplayData> items = GetVisibleItemsOfType( itemType )
|
|
array<ItemDisplayData> filteredItems
|
|
|
|
foreach ( item in items )
|
|
{
|
|
if ( item.i.menuCategory == category )
|
|
filteredItems.append( item )
|
|
}
|
|
|
|
return filteredItems
|
|
}
|
|
|
|
array<ItemDisplayData> function GetVisibleItemsOfTypeMatchingEntitlementID( int itemType, int entitlementID, string parentRef = "" )
|
|
{
|
|
array<ItemDisplayData> items = GetVisibleItemsOfType( itemType, parentRef )
|
|
array<ItemDisplayData> filteredItems
|
|
|
|
foreach ( item in items )
|
|
{
|
|
array<int> ids = GetEntitlementIds( item.ref, parentRef )
|
|
|
|
foreach ( id in ids )
|
|
{
|
|
if ( id == entitlementID )
|
|
filteredItems.append( item )
|
|
}
|
|
}
|
|
|
|
return filteredItems
|
|
}
|
|
|
|
int function GetIndexForUnlockItem( int itemType, string ref )
|
|
{
|
|
Assert( itemType >= 0 && itemType < eItemTypes.COUNT, "Unknown item itemType " + itemType )
|
|
|
|
array<ItemDisplayData> items = GetVisibleItemsOfType( itemType )
|
|
for ( int i = 0; i < items.len(); i++ )
|
|
{
|
|
if ( items[i].ref == ref )
|
|
return i
|
|
}
|
|
|
|
Assert( 0, "GetIndexForUnlockItem() failed to find ref " + ref )
|
|
unreachable
|
|
}
|
|
|
|
array<string> function GetAllRefsOfType( int itemType )
|
|
{
|
|
return file.itemsOfType[itemType]
|
|
}
|
|
|
|
array<GlobalItemRef> function GetAllItemRefs()
|
|
{
|
|
return file.allItems
|
|
}
|
|
|
|
array<string> function GetAllSubitemRefs( string parentRef )
|
|
{
|
|
array<string> childRefs = []
|
|
|
|
foreach ( childRef, subItem in file.itemData[ parentRef ].subitems )
|
|
{
|
|
childRefs.append( childRef )
|
|
}
|
|
|
|
return childRefs
|
|
}
|
|
|
|
string function GetItemRefOfTypeByIndex( int itemType, int index )
|
|
{
|
|
array<string> typeArray = file.itemsOfType[itemType]
|
|
|
|
Assert( index >= 0 && index < typeArray.len() )
|
|
|
|
return typeArray[index]
|
|
}
|
|
|
|
string function GetRandomItemRefOfType( int itemType )
|
|
{
|
|
Assert( itemType >= 0 && itemType < eItemTypes.COUNT, "Unknown item itemType " + itemType )
|
|
|
|
array<string> items = GetAllRefsOfType( itemType )
|
|
|
|
return items[ rand() % items.len() ]
|
|
}
|
|
|
|
int function GetItemIndexOfTypeByRef( int itemType, string itemRef )
|
|
{
|
|
int count = 0
|
|
foreach ( ref in file.itemsOfType[ itemType ] )
|
|
{
|
|
if ( ref == itemRef )
|
|
return count
|
|
else
|
|
count++
|
|
}
|
|
Assert( false, "itemRef not found in ItemType" )
|
|
return 0
|
|
}
|
|
|
|
|
|
void function CreateModData( int itemType, string parentRef, string modRef, int cost = 0, int statDamage = 0, int statAccuracy = 0, int statRange = 0, int statFireRate = 0, int statClipSize = 0 )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
Assert( modRef in file.itemData )
|
|
|
|
if ( itemType == eItemTypes.PILOT_PRIMARY_ATTACHMENT )
|
|
Assert( ItemTypeSupportsAttachments( GetItemType( parentRef ) ), "Item type was " + GetItemType( parentRef ) )
|
|
else
|
|
Assert( ItemTypeSupportsMods( GetItemType( parentRef ) ), "Item type was " + GetItemType( parentRef ) )
|
|
Assert( !(modRef in file.itemData[parentRef].subitems), "childRef " + modRef + " being redefined!" )
|
|
|
|
ItemData modData = GetItemData( modRef )
|
|
|
|
SubItemData subItemRef
|
|
subItemRef.itemType = itemType
|
|
subItemRef.ref = modRef
|
|
subItemRef.parentRef = parentRef
|
|
subItemRef.cost = cost
|
|
|
|
subItemRef.i.statDamage <- statDamage
|
|
subItemRef.i.statRange <- statRange
|
|
subItemRef.i.statAccuracy <- statAccuracy
|
|
subItemRef.i.statFireRate <- statFireRate
|
|
subItemRef.i.statClipSize <- statClipSize
|
|
|
|
ItemData parentItem = GetItemData( parentRef )
|
|
Assert( !(modRef in parentItem.subitems) )
|
|
parentItem.subitems[modRef] <- subItemRef
|
|
}
|
|
|
|
|
|
|
|
void function CreateGenericSubItemData( int itemType, string parentRef, string itemRef, int cost = 0, table t = {} )
|
|
{
|
|
Assert( IsSubItemType( itemType ) )
|
|
Assert( parentRef in file.itemData )
|
|
Assert( itemRef in file.itemData )
|
|
|
|
ItemData baseData = GetItemData( itemRef )
|
|
|
|
SubItemData subItemRef
|
|
subItemRef.itemType = itemType
|
|
subItemRef.ref = itemRef
|
|
subItemRef.parentRef = parentRef
|
|
subItemRef.cost = cost
|
|
subItemRef.i = clone t
|
|
|
|
ItemData parentItem = GetItemData( parentRef )
|
|
Assert( !(itemRef in parentItem.subitems), "childRef " + itemRef + " being redefined!" )
|
|
parentItem.subitems[itemRef] <- subItemRef
|
|
}
|
|
|
|
|
|
ItemData function CreateGenericItem( int dataTableIndex, int itemType, string ref, string name, string desc, string longdesc, asset image, int cost, bool isHidden )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, isHidden )
|
|
item.name = name
|
|
item.desc = desc
|
|
item.longdesc = longdesc
|
|
item.image = image
|
|
item.imageAtlas = IMAGE_ATLAS_MENU
|
|
item.persistenceId = dataTableIndex
|
|
item.cost = cost
|
|
|
|
return item
|
|
}
|
|
|
|
|
|
array<ItemDisplayData> function GetDisplaySubItemsOfType( string parentRef, int itemType )
|
|
{
|
|
array<ItemDisplayData> subitems = []
|
|
|
|
foreach ( subItemRef, subItemData in file.itemData[ parentRef ].subitems )
|
|
{
|
|
if ( subItemData.itemType == itemType )
|
|
subitems.append( GetItemDisplayData( subItemRef, parentRef ) )
|
|
}
|
|
|
|
subitems.sort( SortByUnlockLevelUntyped ) // TODO
|
|
|
|
return subitems
|
|
}
|
|
|
|
bool function ItemSupportsAttachments( string ref )
|
|
{
|
|
return (GetItemType( ref ) == eItemTypes.PILOT_PRIMARY)
|
|
}
|
|
|
|
bool function ItemSupportsAttachment( string itemRef, string childRef )
|
|
{
|
|
ItemData item = GetItemData( itemRef )
|
|
if ( !(childRef in item.subitems ) )
|
|
return false
|
|
|
|
ItemData childItem = GetItemData( childRef )
|
|
return childItem.itemType == eItemTypes.PILOT_PRIMARY_ATTACHMENT
|
|
}
|
|
|
|
bool function ItemSupportsMods( string ref )
|
|
{
|
|
local itemType = GetItemType( ref )
|
|
|
|
return (itemType == eItemTypes.PILOT_PRIMARY || itemType == eItemTypes.PILOT_SECONDARY || itemType == eItemTypes.TITAN_PRIMARY)
|
|
}
|
|
|
|
void function CreateTitanData( int dataTableIndex, string titanRef, int cost, asset image, asset coreIcon )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
string setFile = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "setFile" ) )
|
|
|
|
string name = expect string( GetPlayerSettingsFieldForClassName( setFile, "printname" ) )
|
|
string desc = expect string( GetPlayerSettingsFieldForClassName( setFile, "description" ) )
|
|
|
|
ItemData item = CreateBaseItemData( eItemTypes.TITAN, titanRef, false )
|
|
item.name = name
|
|
item.desc = desc
|
|
item.longdesc = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "desc" ) )
|
|
item.image = image
|
|
item.imageAtlas = IMAGE_ATLAS_HUD
|
|
item.cost = cost
|
|
|
|
item.i.coreIcon <- coreIcon
|
|
|
|
item.i.statSpeed <- GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "speedDisplay" ) )
|
|
item.i.statHealth <- GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "healthDisplay" ) )
|
|
item.i.statDamage <- GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "damageDisplay" ) )
|
|
item.i.statDash <- GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "dashDisplay" ) )
|
|
|
|
item.i.passive1Type <- GetTitanLoadoutPropertyPassiveType( setFile, "passive1" )
|
|
item.i.passive2Type <- GetTitanLoadoutPropertyPassiveType( setFile, "passive2" )
|
|
item.i.passive3Type <- GetTitanLoadoutPropertyPassiveType( setFile, "passive3" )
|
|
item.i.passive4Type <- GetTitanLoadoutPropertyPassiveType( setFile, "passive4" )
|
|
item.i.passive5Type <- GetTitanLoadoutPropertyPassiveType( setFile, "passive5" )
|
|
item.i.passive6Type <- GetTitanLoadoutPropertyPassiveType( setFile, "passive6" )
|
|
item.i.titanExecution <- GetTitanLoadoutPropertyExecutionType( setFile, "titanExecution" )
|
|
|
|
item.persistenceStruct = "titanChassis[" + dataTableIndex + "]"
|
|
item.persistenceId = dataTableIndex
|
|
}
|
|
|
|
asset function GetIconForTitanClass( string titanClass )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int loadoutIconCol = GetDataTableColumnByName( dataTable, "loadoutIcon" )
|
|
int titanCol = GetDataTableColumnByName( dataTable, "titanRef" )
|
|
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, titanCol, titanClass )
|
|
asset icon = GetDataTableAsset( dataTable, row, loadoutIconCol )
|
|
|
|
return icon
|
|
}
|
|
|
|
|
|
array<ItemDisplayData> function FD_GetUpgradesForTitanClass( string titanClass )
|
|
{
|
|
array<ItemData> allUpgradeItems = GetAllItemsOfType( eItemTypes.TITAN_FD_UPGRADE )
|
|
|
|
array<ItemData> titanUpgrades
|
|
foreach ( ItemData item in allUpgradeItems )
|
|
{
|
|
if ( item.parentRef != titanClass )
|
|
continue
|
|
|
|
titanUpgrades.append( item )
|
|
}
|
|
|
|
titanUpgrades.sort( SortItemDataByUnlockLevel )
|
|
|
|
array<ItemDisplayData> displayUpgrades
|
|
foreach ( ItemData item in titanUpgrades )
|
|
{
|
|
displayUpgrades.append( GetItemDisplayData( item.ref, item.parentRef ) )
|
|
}
|
|
|
|
return displayUpgrades
|
|
}
|
|
|
|
|
|
int function SortItemDataByUnlockLevel( ItemData a, ItemData b )
|
|
{
|
|
const int SORT_SAME = 0
|
|
const int SORT_AFTER = 1
|
|
const int SORT_BEFORE = -1
|
|
|
|
int aLevel = GetUnlockLevelReqWithParent( a.ref, a.parentRef )
|
|
int bLevel = GetUnlockLevelReqWithParent( b.ref, b.parentRef )
|
|
|
|
if ( aLevel > bLevel )
|
|
return SORT_AFTER
|
|
else if ( aLevel < bLevel )
|
|
return SORT_BEFORE
|
|
else
|
|
return SORT_SAME
|
|
|
|
unreachable
|
|
}
|
|
|
|
|
|
void function SetupFrontierDefenseItems()
|
|
{
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_fd_upgrades.rpak" )
|
|
var numRows = GetDatatableRowCount( dataTable )
|
|
for ( int i = 0; i < numRows; i++ )
|
|
{
|
|
bool hidden = false
|
|
|
|
string ref = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "ref" ) )
|
|
string parentRef = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "parentref" ) )
|
|
//int itemType = eItemTypes[ GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "type" ) ) ]
|
|
string upgradeType = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "upgradeType" ) )
|
|
string name = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "name" ) )
|
|
string description = GetDataTableString( dataTable, i, GetDataTableColumnByName( dataTable, "description" ) )
|
|
asset image = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "image" ) )
|
|
asset lockedImage = GetDataTableAsset( dataTable, i, GetDataTableColumnByName( dataTable, "lockedImage" ) )
|
|
int slot = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "slot" ) )
|
|
int cost = GetDataTableInt( dataTable, i, GetDataTableColumnByName( dataTable, "cost" ) )
|
|
|
|
if ( IsDisabledRef( ref ) )
|
|
continue
|
|
|
|
CreateFDTitanUpgradeData( i, upgradeType, hidden, ref, parentRef, name, description, image, lockedImage, slot, cost )
|
|
//InitUnlock( ref, parentRef, eUnlockType.FD_UNLOCK_POINTS, unlockLevel )
|
|
}
|
|
}
|
|
}
|
|
|
|
void function InitFrontierDefenseUnlocks()
|
|
{
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/unlocks_fd_titan_level.rpak" )
|
|
int numRows = GetDatatableRowCount( dataTable )
|
|
int column = 1
|
|
while ( true )
|
|
{
|
|
string titanRef = GetDataTableString( dataTable, 0, column )
|
|
if ( titanRef == "END" )
|
|
break
|
|
|
|
if ( IsDisabledRef( titanRef ) )
|
|
{
|
|
column++
|
|
continue
|
|
}
|
|
|
|
for ( int row = 1; row < numRows; row++ )
|
|
{
|
|
string unlockField = GetDataTableString( dataTable, row, column )
|
|
|
|
array<string> unlockArray = SplitAndStripUnlockField( unlockField )
|
|
|
|
foreach ( unlock in unlockArray )
|
|
{
|
|
if ( unlock != "" )
|
|
InitUnlock( unlock, titanRef, eUnlockType.FD_UNLOCK_POINTS, row )
|
|
}
|
|
}
|
|
|
|
column++
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void function CreateFDTitanUpgradeData( int dataTableIndex, string upgradeType, bool hidden, string ref, string parentRef, string name, string desc, asset image, asset lockedImage, int slot, int cost = 0 )
|
|
{
|
|
Assert( parentRef in file.itemData )
|
|
|
|
ItemData item = CreateBaseItemData( eItemTypes.TITAN_FD_UPGRADE, ref, hidden )
|
|
item.name = name
|
|
item.longname = name
|
|
item.desc = desc
|
|
item.image = image
|
|
item.persistenceId = dataTableIndex
|
|
item.cost = cost
|
|
item.slot = slot
|
|
item.parentRef = parentRef
|
|
item.imageAtlas = IMAGE_ATLAS_MENU
|
|
|
|
string upgradeTypeCategory
|
|
if ( upgradeType == "weapon" )
|
|
upgradeTypeCategory = "#FD_UPGRADE_ITEM_TYPE_WEAPON"
|
|
else if ( upgradeType == "utility" )
|
|
upgradeTypeCategory = "#FD_UPGRADE_ITEM_TYPE_UTILITY"
|
|
else if ( upgradeType == "defensive" )
|
|
upgradeTypeCategory = "#FD_UPGRADE_ITEM_TYPE_DEFENSE"
|
|
else if ( upgradeType == "ultimate" )
|
|
upgradeTypeCategory = "#FD_UPGRADE_ITEM_TYPE_ULTIMATE"
|
|
else
|
|
upgradeTypeCategory = "!!FD_UPGRADE_ITEM_TYPE UNKNOWN!!"
|
|
|
|
item.i.upgradeType <- upgradeType
|
|
item.i.upgradeTypeCategory <- upgradeTypeCategory
|
|
item.i.lockedImage <- lockedImage
|
|
|
|
SubItemData subItemRef
|
|
subItemRef.itemType = eItemTypes.TITAN_FD_UPGRADE
|
|
subItemRef.ref = ref
|
|
subItemRef.parentRef = parentRef
|
|
subItemRef.cost = cost
|
|
subItemRef.slot = slot
|
|
subItemRef.i = {}
|
|
subItemRef.i.upgradeType <- upgradeType
|
|
subItemRef.i.upgradeTypeCategory <- upgradeTypeCategory
|
|
subItemRef.i.lockedImage <- lockedImage
|
|
|
|
ItemData parentItem = GetItemData( parentRef )
|
|
Assert( !(ref in parentItem.subitems), "childRef " + ref + " being redefined!" )
|
|
parentItem.subitems[ref] <- subItemRef
|
|
}
|
|
|
|
void function CreateTitanExecutionData( int dataTableIndex, int itemType, bool hidden, string ref, string name, string desc, string longdesc, asset image, int cost = 0, bool reqPrime = false )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.name = name
|
|
item.longname = name
|
|
item.desc = desc
|
|
item.longdesc = longdesc
|
|
item.image = image
|
|
item.persistenceId = dataTableIndex
|
|
item.cost = cost
|
|
item.imageAtlas = IMAGE_ATLAS_MENU
|
|
item.reqPrime = reqPrime
|
|
}
|
|
|
|
void function CreatePassiveData( int dataTableIndex, int itemType, bool hidden, string ref, string name, string desc, string longdesc, asset image, int cost = 0 )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.name = name
|
|
item.longname = name
|
|
item.desc = desc
|
|
item.longdesc = longdesc
|
|
item.image = image
|
|
item.persistenceId = dataTableIndex
|
|
item.cost = cost
|
|
item.imageAtlas = IMAGE_ATLAS_MENU
|
|
}
|
|
|
|
void function CreateNoseArtData( int dataTableIndex, int itemType, bool hidden, string ref, string name, asset image, int decalIndex )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.name = name
|
|
item.image = image
|
|
item.imageAtlas = IMAGE_ATLAS_CAMO
|
|
|
|
item.i.decalIndex <- decalIndex
|
|
|
|
item.persistenceId = dataTableIndex
|
|
}
|
|
|
|
void function CreateSkinData( int dataTableIndex, int itemType, bool hidden, string ref, string name, asset image, int skinIndex )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.name = name
|
|
item.image = image
|
|
item.imageAtlas = IMAGE_ATLAS_CAMO
|
|
|
|
item.i.skinIndex <- skinIndex
|
|
|
|
item.persistenceId = dataTableIndex
|
|
}
|
|
|
|
|
|
void function CreateWeaponSkinData( int dataTableIndex, int itemType, bool hidden, string ref, string weaponRef, string name, asset image, int skinIndex, int skinType )
|
|
{
|
|
ItemData item = CreateBaseItemData( itemType, ref, hidden )
|
|
item.name = name
|
|
item.image = image
|
|
item.imageAtlas = IMAGE_ATLAS_MENU
|
|
item.parentRef = weaponRef
|
|
|
|
item.i.skinIndex <- skinIndex
|
|
item.i.skinType <- skinType
|
|
|
|
item.persistenceId = dataTableIndex
|
|
}
|
|
|
|
function ItemTypeSupportsMods( iType )
|
|
{
|
|
if ( iType == eItemTypes.PILOT_PRIMARY ||
|
|
iType == eItemTypes.PILOT_SECONDARY ||
|
|
iType == eItemTypes.TITAN_PRIMARY )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
function ItemTypeSupportsAttachments( itemType )
|
|
{
|
|
if ( itemType == eItemTypes.PILOT_PRIMARY )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
bool function IsItemTypeMod( int itemType )
|
|
{
|
|
if ( itemType == eItemTypes.PILOT_PRIMARY_MOD ||
|
|
itemType == eItemTypes.PILOT_SECONDARY_MOD ||
|
|
itemType == eItemTypes.TITAN_PRIMARY_MOD )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
bool function IsItemTypeAttachment( int itemType )
|
|
{
|
|
if ( itemType == eItemTypes.PILOT_PRIMARY_ATTACHMENT )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
bool function IsRefValid( string ref )
|
|
{
|
|
if ( ItemDefined( ref ) )
|
|
return true
|
|
|
|
if ( ref in file.unlocks )
|
|
return true
|
|
|
|
if ( ref in shGlobalMP.challengeData )
|
|
return true
|
|
|
|
foreach ( itemType in file.itemsOfType )
|
|
{
|
|
foreach ( itemRef in itemType )
|
|
{
|
|
if ( itemRef == ref )
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
bool function IsUnlockValid( string ref, string parentRef = "" )
|
|
{
|
|
if ( !IsRefValid( ref ) )
|
|
return false
|
|
|
|
if ( parentRef == "" )
|
|
{
|
|
if ( !( ref in file.unlocks ) )
|
|
return false
|
|
}
|
|
else
|
|
{
|
|
if ( !IsRefValid( parentRef ) )
|
|
return false
|
|
|
|
if ( !(parentRef in file.unlocks ) )
|
|
return false
|
|
|
|
if ( !(ref in file.unlocks[parentRef].child ) )
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
|
|
bool function IsSubItemLocked( entity player, string ref, string parentRef )
|
|
{
|
|
if ( DevEverythingUnlocked( player ) )
|
|
return false
|
|
|
|
if ( IsItemPurchasableEntitlement( ref, parentRef ) )
|
|
return false
|
|
|
|
if ( GetItemType( ref ) == eItemTypes.PRIME_TITAN || GetSubitemType( parentRef, ref ) == eItemTypes.PRIME_TITAN )
|
|
return false
|
|
|
|
if ( IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
{
|
|
if (!IsItemLockedForEntitlement( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
}
|
|
|
|
if ( IsItemInRandomUnlocks( ref, parentRef ) )
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
|
|
Assert( IsValid( player ) )
|
|
Assert( !(ref in file.unlocks) )
|
|
Assert( parentRef in file.unlocks )
|
|
|
|
int parentRefType = GetItemType( parentRef )
|
|
int refType = GetSubitemType( parentRef, ref )
|
|
|
|
Assert( !IsSubItemType( parentRefType ) )
|
|
Assert( IsSubItemType( refType ) )
|
|
|
|
if ( IsItemLocked( player, parentRef ) )
|
|
return true
|
|
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.STAT )
|
|
{
|
|
if ( !IsSubItemLockedForStat( player, ref, parentRef) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
}
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
if ( !IsItemLockedForWeapon( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
if ( !IsItemLockedForTitan( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
case eItemTypes.CAMO_SKIN:
|
|
switch ( parentRefType )
|
|
{
|
|
case eItemTypes.TITAN:
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.TITAN_LEVEL && !IsItemLockedForTitan( player, ref, parentRef ) )
|
|
return false
|
|
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.FACTION_LEVEL && !IsItemLockedForFaction( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.WEAPON_LEVEL && !IsItemLockedForWeapon( player, ref, parentRef ) )
|
|
return false
|
|
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.FACTION_LEVEL && !IsItemLockedForFaction( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
}
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.TITAN_LEVEL && !IsItemLockedForTitan( player, ref, parentRef ) )
|
|
return false
|
|
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.FACTION_LEVEL && !IsItemLockedForFaction( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
if ( GetSubItemUnlockType( ref, parentRef ) == eUnlockType.FD_UNLOCK_POINTS && !IsItemLockedForFrontierDefense( player, ref, parentRef ) )
|
|
return false
|
|
|
|
return !IsSubItemOwned( player, ref, parentRef )
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
unreachable //Show have been caught IsItemInEntitlementUnlock() check earlier
|
|
|
|
default:
|
|
CodeWarning( "Unhandled unlock type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
|
|
bool function IsItemLocked( entity player, string ref )
|
|
{
|
|
if ( DevEverythingUnlocked( player ) )
|
|
return false
|
|
|
|
if ( IsItemPurchasableEntitlement( ref ) )
|
|
return false
|
|
|
|
if ( GetItemType( ref ) == eItemTypes.PRIME_TITAN )
|
|
return false
|
|
|
|
if ( IsItemInEntitlementUnlock( ref ) )
|
|
{
|
|
if ( !IsItemLockedForEntitlement( player, ref ) )
|
|
return false
|
|
|
|
return !IsItemOwned( player, ref )
|
|
}
|
|
|
|
if ( IsItemInRandomUnlocks( ref ) )
|
|
return !IsItemOwned( player, ref )
|
|
|
|
Assert( IsValid( player ) )
|
|
Assert( ref in file.unlocks, "ref not found: " + ref )
|
|
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
CodeWarning( "undefined item? " + ref )
|
|
return false
|
|
}
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
Assert( !IsSubItemType( itemData.itemType ) )
|
|
|
|
switch ( file.unlocks[ref].unlockType )
|
|
{
|
|
case eUnlockType.PLAYER_LEVEL:
|
|
if ( !IsItemLockedForPlayer( player, ref ) )
|
|
return false
|
|
break
|
|
|
|
case eUnlockType.WEAPON_LEVEL:
|
|
Assert( file.unlocks[ref].parentRef != "" )
|
|
if ( !IsItemLockedForWeapon( player, ref, file.unlocks[ref].parentRef ) )
|
|
return false
|
|
break
|
|
|
|
case eUnlockType.TITAN_LEVEL:
|
|
if ( !IsItemLockedForTitan( player, ref, file.unlocks[ref].parentRef ) )
|
|
return false
|
|
break
|
|
|
|
case eUnlockType.FACTION_LEVEL:
|
|
if ( !IsItemLockedForFaction( player, ref, file.unlocks[ref].parentRef ) )
|
|
return false
|
|
break
|
|
|
|
case eUnlockType.STAT:
|
|
if ( !IsItemLockedForStat( player, ref ) )
|
|
return false
|
|
break
|
|
|
|
case eUnlockType.FD_UNLOCK_POINTS:
|
|
if ( !IsItemLockedForFrontierDefense( player, ref, file.unlocks[ref].parentRef ) )
|
|
return false
|
|
break
|
|
}
|
|
//Assert( file.unlocks[ref].unlockType == eUnlockType.PLAYER_LEVEL, "Non subitem types must be unlocked via player level." )
|
|
|
|
|
|
return !IsItemOwned( player, ref )
|
|
}
|
|
|
|
|
|
bool function IsItemLockedForEntitlement( entity player, string ref, string parentRef = "" )
|
|
{
|
|
string fullRef = GetFullRef( ref, parentRef )
|
|
|
|
foreach ( int entitlementId in file.entitlementUnlocks[fullRef].entitlementIds )
|
|
{
|
|
//printt( "entitlement check", fullRef, entitlementId )
|
|
#if SERVER
|
|
if ( player.HasEntitlement( entitlementId ) )
|
|
return false
|
|
#else
|
|
if ( LocalPlayerHasEntitlement( entitlementId ) )
|
|
return false
|
|
#endif
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
|
|
|
|
bool function IsSubItemOwned( entity player, string ref, string parentRef )
|
|
{
|
|
if ( DevEverythingUnlocked( player ) )
|
|
return false
|
|
|
|
Assert( IsValid( player ) )
|
|
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
CodeWarning( "undefined item? " + ref )
|
|
return false
|
|
}
|
|
|
|
int parentRefType = GetItemType( parentRef )
|
|
int refType = GetSubitemType( parentRef, ref )
|
|
|
|
Assert( !IsSubItemType( parentRefType ) )
|
|
Assert( IsSubItemType( refType ) )
|
|
|
|
int bitIndex = GetItemPersistenceId( ref, parentRef )
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedMods", bitIndex )
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedFeatures", bitIndex )
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedPrimeWeaponSkins", bitIndex )
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedPassives", bitIndex )
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedSkins", bitIndex )
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedPrimeSkins", bitIndex )
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedWeaponSkins", bitIndex )
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedTitanDecals", bitIndex )
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedPrimeTitanDecals", bitIndex )
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsPersistenceBitSet( player, parentStruct + ".unlockedFDUpgrades", bitIndex )
|
|
|
|
default:
|
|
CodeWarning( "Unhandled owned type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
|
|
bool function IsItemOwned( entity player, string ref )
|
|
{
|
|
if ( DevEverythingUnlocked( player ) )
|
|
return false
|
|
|
|
Assert( IsValid( player ) )
|
|
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
CodeWarning( "undefined item? " + ref )
|
|
return false
|
|
}
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
Assert( !IsSubItemType( itemData.itemType ) )
|
|
|
|
int refType = GetItemType( ref )
|
|
int bitIndex = GetItemPersistenceId( ref )
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
return IsPersistenceBitSet( player, "unlockedPilotWeapons", bitIndex )
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
return IsPersistenceBitSet( player, "unlockedPilotOffhands", bitIndex )
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
return IsPersistenceBitSet( player, "unlockedPilotPassives", bitIndex )
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
return IsPersistenceBitSet( player, "unlockedPilotSuits", bitIndex )
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
return IsPersistenceBitSet( player, "unlockedPilotExecutions", bitIndex )
|
|
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
return IsPersistenceBitSet( player, "unlockedTitanExecutions", bitIndex )
|
|
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
return IsPersistenceBitSet( player, "unlockedTitanWeapons", bitIndex )
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
return IsPersistenceBitSet( player, "unlockedTitanOffhands", bitIndex )
|
|
|
|
case eItemTypes.TITAN:
|
|
return IsPersistenceBitSet( player, "unlockedTitanChassis", bitIndex )
|
|
|
|
case eItemTypes.PRIME_TITAN:
|
|
return IsPersistenceBitSet( player, "unlockedPrimeTitans", bitIndex )
|
|
|
|
case eItemTypes.FEATURE:
|
|
return IsPersistenceBitSet( player, "unlockedFeatures", bitIndex )
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
return IsPersistenceBitSet( player, "unlockedPilotSkins", bitIndex )
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
return IsPersistenceBitSet( player, "unlockedBoosts", bitIndex )
|
|
|
|
case eItemTypes.FACTION:
|
|
return IsPersistenceBitSet( player, "unlockedFactions", bitIndex )
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
return IsPersistenceBitSet( player, "unlockedCallingCards", bitIndex )
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
return IsPersistenceBitSet( player, "unlockedCallsignIcons", bitIndex )
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
return IsPersistenceBitSet( player, "unlockedCommsIcons", bitIndex )
|
|
|
|
default:
|
|
CodeWarning( "Unhandled owned type: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref )
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
int function GetItemUnlockType( string ref )
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
|
|
return file.unlocks[ ref ].unlockType
|
|
}
|
|
|
|
int function GetSubItemUnlockType( string ref, string parentRef )
|
|
{
|
|
Assert( parentRef in file.unlocks )
|
|
Assert( ref in file.unlocks[ parentRef ].child )
|
|
|
|
return file.unlocks[ parentRef ].child[ ref ].unlockType
|
|
}
|
|
|
|
bool function IsItemLockedForTitanLevel( int titanLevel, string ref, string parentRef = "" )
|
|
{
|
|
Assert( parentRef in file.unlocks )
|
|
|
|
if ( IsSubItemType( GetItemType( ref ) ) )
|
|
{
|
|
Assert( ref in file.unlocks[ parentRef ].child )
|
|
Assert( file.unlocks[ parentRef ].child[ ref ].unlockType == eUnlockType.TITAN_LEVEL )
|
|
|
|
return titanLevel < file.unlocks[ parentRef ].child[ ref ].unlockLevel
|
|
}
|
|
else
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ref].parentRef == parentRef )
|
|
Assert( file.unlocks[ ref ].unlockType == eUnlockType.TITAN_LEVEL )
|
|
|
|
return titanLevel < file.unlocks[ ref ].unlockLevel
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
|
|
bool function IsItemLockedForWeaponLevel( int weaponLevel, string ref, string parentRef = "" )
|
|
{
|
|
Assert( parentRef in file.unlocks )
|
|
|
|
if ( IsSubItemType( GetItemType( ref ) ) )
|
|
{
|
|
Assert( ref in file.unlocks[ parentRef ].child )
|
|
Assert( file.unlocks[ parentRef ].child[ ref ].unlockType == eUnlockType.WEAPON_LEVEL )
|
|
|
|
return weaponLevel < file.unlocks[ parentRef ].child[ ref ].unlockLevel
|
|
}
|
|
else
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ref].parentRef == parentRef )
|
|
Assert( file.unlocks[ ref ].unlockType == eUnlockType.WEAPON_LEVEL )
|
|
|
|
return weaponLevel < file.unlocks[ ref ].unlockLevel
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
bool function IsItemLockedForFDTitanLevel( int titanLevel, string ref, string parentRef = "" )
|
|
{
|
|
Assert( parentRef in file.unlocks )
|
|
|
|
if ( IsSubItemType( GetItemType( ref ) ) )
|
|
{
|
|
Assert( ref in file.unlocks[ parentRef ].child )
|
|
Assert( file.unlocks[ parentRef ].child[ ref ].unlockType == eUnlockType.FD_UNLOCK_POINTS )
|
|
|
|
return titanLevel < file.unlocks[ parentRef ].child[ ref ].unlockLevel
|
|
}
|
|
else
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ref].parentRef == parentRef )
|
|
Assert( file.unlocks[ ref ].unlockType == eUnlockType.FD_UNLOCK_POINTS )
|
|
|
|
return titanLevel < file.unlocks[ ref ].unlockLevel
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
|
|
bool function IsItemLockedForFactionLevel( int factionLevel, string faction, string ref, string parentRef = "" )
|
|
{
|
|
if ( IsSubItemType( GetItemType( ref ) ) )
|
|
{
|
|
Assert( ref in file.unlocks[ parentRef ].child )
|
|
Assert( file.unlocks[ parentRef ].child[ ref ].unlockType == eUnlockType.FACTION_LEVEL )
|
|
|
|
if ( file.unlocks[ parentRef ].child[ ref ].additionalRef != faction )
|
|
return false
|
|
|
|
return factionLevel < file.unlocks[ parentRef ].child[ ref ].unlockLevel
|
|
}
|
|
else
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ref].parentRef == parentRef )
|
|
Assert( file.unlocks[ ref ].unlockType == eUnlockType.FACTION_LEVEL )
|
|
|
|
if ( file.unlocks[ ref ].additionalRef != faction )
|
|
return false
|
|
|
|
return factionLevel < file.unlocks[ ref ].unlockLevel
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
bool function IsItemLockedForPlayerLevel( int playerLevel, string ref )
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ ref ].unlockType == eUnlockType.PLAYER_LEVEL )
|
|
|
|
return (playerLevel < file.unlocks[ ref ].unlockLevel)
|
|
}
|
|
|
|
bool function IsItemLockedForFrontierDefense( entity player, string ref, string parentRef )
|
|
{
|
|
return IsItemLockedForFDTitanLevel( FD_TitanGetRawLevel( player, parentRef ), ref, parentRef )
|
|
}
|
|
|
|
bool function IsItemLockedForTitan( entity player, string ref, string parentRef )
|
|
{
|
|
return IsItemLockedForTitanLevel( TitanGetRawLevel( player, parentRef ), ref, parentRef )
|
|
}
|
|
|
|
|
|
bool function IsItemLockedForWeapon( entity player, string ref, string parentRef )
|
|
{
|
|
return IsItemLockedForWeaponLevel( WeaponGetRawLevel( player, parentRef ), ref, parentRef )
|
|
}
|
|
|
|
bool function IsItemLockedForFaction( entity player, string ref, string parentRef )
|
|
{
|
|
int enumCount = PersistenceGetEnumCount( "faction" )
|
|
for ( int i = 0; i < enumCount; i++ )
|
|
{
|
|
string faction = PersistenceGetEnumItemNameForIndex( "faction", i )
|
|
if ( faction == "" )
|
|
continue
|
|
|
|
if ( IsItemLockedForFactionLevel( FactionGetRawLevel( player, faction ), faction, ref, parentRef ) )
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
bool function IsItemLockedForPlayer( entity player, string ref )
|
|
{
|
|
int rawLevel = GetUnlockLevelReq( ref )
|
|
|
|
if ( rawLevel > GetMaxPlayerLevel() || ItemLockedShouldUseRawLevel( ref ) )
|
|
{
|
|
int playerGen = player.GetGen()
|
|
int rawPlayerLevel = (playerGen - 1) * GetMaxPlayerLevel() + player.GetLevel()
|
|
return IsItemLockedForPlayerLevel( rawPlayerLevel, ref )
|
|
}
|
|
else
|
|
{
|
|
return IsItemLockedForPlayerLevel( player.GetLevel(), ref )
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
bool function ItemLockedShouldUseRawLevel( string ref )
|
|
{
|
|
int refType = GetItemType( ref )
|
|
|
|
bool shouldUseRawLevel = true
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
case eItemTypes.TITAN_PRIMARY_MOD:
|
|
case eItemTypes.TITAN_OS:
|
|
case eItemTypes.RACE:
|
|
case eItemTypes.NOT_LOADOUT:
|
|
case eItemTypes.PILOT_SUIT:
|
|
case eItemTypes.TITAN_CORE_ABILITY:
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
case eItemTypes.PILOT_MELEE:
|
|
case eItemTypes.TITAN:
|
|
case eItemTypes.PRIME_TITAN:
|
|
case eItemTypes.FEATURE:
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
case eItemTypes.FACTION:
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
shouldUseRawLevel = false
|
|
}
|
|
|
|
return shouldUseRawLevel
|
|
}
|
|
|
|
bool function IsItemLockedForStat( entity player, string ref )
|
|
{
|
|
Assert( ref in file.unlocks )
|
|
Assert( file.unlocks[ ref ].unlockType == eUnlockType.STAT )
|
|
|
|
Unlock unlock = file.unlocks[ ref ]
|
|
int statType = expect int( unlock.additionalData.statType )
|
|
string statCategory = expect string( unlock.additionalData.statCategory )
|
|
string statAlias = expect string( unlock.additionalData.statAlias )
|
|
string statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
return ( GetPlayerStatInt( player, statCategory, statAlias, statSubAlias ) < unlock.unlockIntVal )
|
|
else
|
|
return ( GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias ) < unlock.unlockFloatVal )
|
|
|
|
unreachable
|
|
}
|
|
|
|
|
|
bool function IsSubItemLockedForStat( entity player, string ref, string parentRef )
|
|
{
|
|
Assert( parentRef in file.unlocks )
|
|
Assert( ref in file.unlocks[parentRef].child )
|
|
Assert( file.unlocks[ parentRef ].child[ref].unlockType == eUnlockType.STAT )
|
|
|
|
ChildUnlock unlock = file.unlocks[ parentRef ].child[ref]
|
|
int statType = expect int( unlock.additionalData.statType )
|
|
string statCategory = expect string( unlock.additionalData.statCategory )
|
|
string statAlias = expect string( unlock.additionalData.statAlias )
|
|
string statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
return ( GetPlayerStatInt( player, statCategory, statAlias, statSubAlias ) < unlock.unlockIntVal )
|
|
else
|
|
return ( GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias ) < unlock.unlockFloatVal )
|
|
|
|
unreachable
|
|
}
|
|
|
|
|
|
|
|
int function GetItemPersistenceId( string ref, string parentRef = "" )
|
|
{
|
|
Assert( ref in file.itemData )
|
|
return file.itemData[ref].persistenceId
|
|
}
|
|
|
|
|
|
string function GetItemPersistenceStruct( string ref )
|
|
{
|
|
Assert( ref in file.itemData )
|
|
return file.itemData[ref].persistenceStruct
|
|
}
|
|
|
|
ItemData ornull function GetItemFromPersistenceStruct( string persistenceStruct )
|
|
{
|
|
if ( !( persistenceStruct in file.itemsWithPersistenceStruct ) )
|
|
return null // arrays in persistence may be bigger than the data loaded so persistenceStruct may not exist
|
|
|
|
return file.itemsWithPersistenceStruct[ persistenceStruct ]
|
|
}
|
|
|
|
bool function IsItemNew( entity player, string ref, string parentRef = "" )
|
|
{
|
|
Assert( IsValid( player ) )
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
int refType = itemData.itemType
|
|
|
|
if ( !IsSubItemType( refType ) )
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref )
|
|
string persistenceVar
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
persistenceVar = "newPilotWeapons"
|
|
break
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
persistenceVar = "newPilotOffhands"
|
|
break
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
persistenceVar = "newPilotPassives"
|
|
break
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
persistenceVar = "newPilotSuits"
|
|
break
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
persistenceVar = "newPilotExecutions"
|
|
break
|
|
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
persistenceVar = "newTitanExecutions"
|
|
break
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
persistenceVar = "newTitanOffhands"
|
|
break
|
|
|
|
case eItemTypes.TITAN:
|
|
persistenceVar = "newTitanChassis"
|
|
break
|
|
|
|
case eItemTypes.PRIME_TITAN:
|
|
persistenceVar = "newPrimeTitans"
|
|
break
|
|
|
|
case eItemTypes.FEATURE:
|
|
persistenceVar = "newFeatures"
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
persistenceVar = "newPilotSkins"
|
|
break
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
persistenceVar = "newBoosts"
|
|
break
|
|
|
|
case eItemTypes.FACTION:
|
|
persistenceVar = "newFactions"
|
|
break
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
persistenceVar = "newCallingCards"
|
|
break
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
persistenceVar = "newCallsignIcons"
|
|
break
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
persistenceVar = "newCommsIcons"
|
|
break
|
|
|
|
default:
|
|
CodeWarning( "Unhandled new type: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref )
|
|
}
|
|
|
|
if ( persistenceVar != "" )
|
|
{
|
|
#if UI
|
|
return IsCachedPersistenceBitSet( persistenceVar, bitIndex )
|
|
#endif
|
|
return IsPersistenceBitSet( player, persistenceVar, bitIndex )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( IsItemLocked( player, parentRef ) )
|
|
return false
|
|
|
|
int bitIndex = GetItemPersistenceId( ref, parentRef )
|
|
string persistenceVar
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newMods"
|
|
break
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newFeatures"
|
|
break
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newPrimeWeaponSkins"
|
|
break
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newPassives"
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newSkins"
|
|
break
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newPrimeSkins" //TODO: This is actually warpaints. Rename next game
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newWeaponSkins"
|
|
break
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newTitanDecals"
|
|
break
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newPrimeTitanDecals"
|
|
break
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
persistenceVar = GetItemPersistenceStruct( parentRef ) + ".newFDUpgrades"
|
|
break
|
|
|
|
default:
|
|
CodeWarning( "Unhandled new type (subitem) 1: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
|
|
#if UI
|
|
return IsCachedPersistenceBitSet( persistenceVar, bitIndex )
|
|
#endif
|
|
return IsPersistenceBitSet( player, persistenceVar, bitIndex )
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
#if UI
|
|
void function UpdateCachedNewItems()
|
|
{
|
|
if ( !uiGlobal.updateCachedNewItems )
|
|
{
|
|
uiGlobal.updateCachedNewItems = true
|
|
return
|
|
}
|
|
|
|
file.cachedNewItems.clear()
|
|
|
|
UpdateCachedNewItemsStruct( "pilotWeapons", "newMods" )
|
|
UpdateCachedNewItemsStruct( "pilotWeapons", "newWeaponSkins" )
|
|
UpdateCachedNewItemsStruct( "pilotWeapons", "newPrimeWeaponSkins" )
|
|
UpdateCachedNewItemsStruct( "pilotWeapons", "newFeatures" )
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newPassives" )
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newSkins" )
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newPrimeSkins" ) //TODO: This is actually WarPaint, rename next game.
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newWeaponSkins" )
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newTitanDecals" )
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newPrimeTitanDecals" )
|
|
UpdateCachedNewItemsStruct( "titanChassis", "newFDUpgrades" )
|
|
UpdateCachedNewItemsArray( "newPilotSkins" )
|
|
UpdateCachedNewItemsArray( "newPilotWeapons" )
|
|
UpdateCachedNewItemsArray( "newPilotOffhands" )
|
|
UpdateCachedNewItemsArray( "newPilotPassives" )
|
|
UpdateCachedNewItemsArray( "newTitanOffhands" )
|
|
UpdateCachedNewItemsArray( "newTitanPassives" )
|
|
UpdateCachedNewItemsArray( "newTitanChassis" )
|
|
UpdateCachedNewItemsArray( "newPrimeTitans" )
|
|
UpdateCachedNewItemsArray( "newPilotSuits" )
|
|
UpdateCachedNewItemsArray( "newPilotExecutions" )
|
|
UpdateCachedNewItemsArray( "newTitanExecutions" )
|
|
UpdateCachedNewItemsArray( "newFeatures" )
|
|
UpdateCachedNewItemsArray( "newBoosts" )
|
|
UpdateCachedNewItemsArray( "newFactions" )
|
|
UpdateCachedNewItemsArray( "newCallingCards" )
|
|
UpdateCachedNewItemsArray( "newCallsignIcons" )
|
|
UpdateCachedNewItemsArray( "newCommsIcons" )
|
|
}
|
|
|
|
int function GetCachedNewItemsVar( string persistenceVar )
|
|
{
|
|
return file.cachedNewItems[ persistenceVar ]
|
|
}
|
|
|
|
void function SetCachedPersistenceBitfield( string persistenceVar, int bitIndex, int value )
|
|
{
|
|
Assert( value == 0 || value == 1 )
|
|
|
|
int arrayIndex = bitIndex / 32;
|
|
int bitOffset = bitIndex % 32;
|
|
|
|
int decimalValue = 1 << bitOffset
|
|
|
|
persistenceVar = persistenceVar + "[" + arrayIndex + "]"
|
|
|
|
int currentVal = file.cachedNewItems[ persistenceVar ]
|
|
if ( value == 0 )
|
|
file.cachedNewItems[ persistenceVar ] = currentVal & ~decimalValue
|
|
else
|
|
file.cachedNewItems[ persistenceVar ] = currentVal | decimalValue
|
|
|
|
//printt( "file.cachedNewItems[ " + persistenceVar + " ] bitIndex:" + bitIndex + " val:" + value )
|
|
}
|
|
|
|
bool function IsCachedPersistenceBitSet( string persistenceVar, int bitIndex )
|
|
{
|
|
int arrayIndex = bitIndex / 32;
|
|
int bitOffset = bitIndex % 32;
|
|
|
|
int decimalValue = 1 << bitOffset
|
|
|
|
persistenceVar = persistenceVar + "[" + arrayIndex + "]"
|
|
|
|
//printt( "IsCachedPersistenceBitSet( " + persistenceVar + ", " + bitIndex + " ) " + ( ( file.cachedNewItems[ persistenceVar ] & decimalValue ) != 0 ) )
|
|
|
|
Assert( arrayIndex < PersistenceGetArrayCount( persistenceVar ), "Need to increase the array size of the persistenceVar " + persistenceVar )
|
|
|
|
return ( ( file.cachedNewItems[ persistenceVar ] & decimalValue ) != 0 )
|
|
}
|
|
|
|
void function UpdateCachedNewItemsArray( string arrayVar )
|
|
{
|
|
int arrayCount = PersistenceGetArrayCount( arrayVar )
|
|
for ( int i = 0; i < arrayCount; i++ )
|
|
{
|
|
string persistenceVar = arrayVar + "[" + i + "]"
|
|
file.cachedNewItems[ persistenceVar ] <- GetPersistentVarAsInt( persistenceVar )
|
|
}
|
|
}
|
|
|
|
void function UpdateCachedNewItemsStruct( string newStruct, string structVar )
|
|
{
|
|
int newStructArrayCount = PersistenceGetArrayCount( newStruct )
|
|
for ( int i = 0; i < newStructArrayCount; i++ )
|
|
{
|
|
string arrayVar = newStruct + "[" + i + "]." + structVar
|
|
|
|
int structVarArrayCount = PersistenceGetArrayCount( arrayVar )
|
|
for ( int j = 0; j < structVarArrayCount; j++ )
|
|
{
|
|
string persistenceVar = arrayVar + "[" + j + "]"
|
|
file.cachedNewItems[ persistenceVar ] <- GetPersistentVarAsInt( persistenceVar )
|
|
}
|
|
}
|
|
}
|
|
|
|
void function ClearNewStatus( var button, string ref, string parentRef = "" )
|
|
{
|
|
if ( ref == "" || ref == "none" )
|
|
return
|
|
|
|
Assert( parentRef == "" || ( parentRef != "" && IsSubItemType( GetItemType( ref ) ) ) )
|
|
|
|
if ( button != null )
|
|
Hud_SetNew( button, false )
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
int refType = itemData.itemType
|
|
|
|
if ( !IsSubItemType( refType ) )
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref )
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
SetCachedPersistenceBitfield( "newPilotWeapons", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
SetCachedPersistenceBitfield( "newPilotOffhands", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
SetCachedPersistenceBitfield( "newPilotPassives", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
SetCachedPersistenceBitfield( "newPilotSuits", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
SetCachedPersistenceBitfield( "newPilotExecutions", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
SetCachedPersistenceBitfield( "newTitanExecutions", bitIndex, 0 )
|
|
break
|
|
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
SetCachedPersistenceBitfield( "newTitanOffhands", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.TITAN:
|
|
SetCachedPersistenceBitfield( "newTitanChassis", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.PRIME_TITAN:
|
|
SetCachedPersistenceBitfield( "newPrimeTitans", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.FEATURE:
|
|
SetCachedPersistenceBitfield( "newFeatures", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
SetCachedPersistenceBitfield( "newPilotSkins", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
SetCachedPersistenceBitfield( "newBoosts", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.FACTION:
|
|
SetCachedPersistenceBitfield( "newFactions", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
SetCachedPersistenceBitfield( "newCallingCards", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
SetCachedPersistenceBitfield( "newCallsignIcons", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
SetCachedPersistenceBitfield( "newCommsIcons", bitIndex, 0 )
|
|
break
|
|
|
|
default:
|
|
CodeWarning( "Unhandled ClearNewStatus type: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref, parentRef )
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newMods", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newFeatures", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newPrimeWeaponSkins", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newPassives", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newSkins", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newPrimeSkins", bitIndex, 0 ) //TODO: This is actually WarPaint, rename next game.
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newWeaponSkins", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newTitanDecals", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newPrimeTitanDecals", bitIndex, 0 )
|
|
break
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetCachedPersistenceBitfield( parentStruct + ".newFDUpgrades", bitIndex, 0 )
|
|
break
|
|
|
|
default:
|
|
CodeWarning( "Unhandled ClearNewStatus type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
}
|
|
|
|
ClientCommand( "ClearNewStatus " + ref + " " + parentRef )
|
|
}
|
|
|
|
bool function HasAnyNewPilotLoadout( entity player )
|
|
{
|
|
for ( int i = 1; i <= 10; i++ )
|
|
{
|
|
if ( IsItemNew( player, "pilot_loadout_" + i ) )
|
|
return true
|
|
|
|
PilotLoadoutDef loadout = GetCachedPilotLoadout( i - 1 )
|
|
if ( loadout.primary != "" && RefHasAnyNewSubitem( player, loadout.primary ) )
|
|
return true
|
|
|
|
if ( loadout.secondary != "" && RefHasAnyNewSubitem( player, loadout.secondary ) )
|
|
return true
|
|
|
|
if ( loadout.weapon3 != "" && RefHasAnyNewSubitem( player, loadout.weapon3 ) )
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
bool function HasAnyNewPilotItems( entity player )
|
|
{
|
|
if ( HasAnyNewItemOfType( player, eItemTypes.PILOT_PRIMARY ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PILOT_SECONDARY ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PILOT_ORDNANCE ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PILOT_PASSIVE1 ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PILOT_PASSIVE2 ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PILOT_SUIT ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PILOT_EXECUTION ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.CAMO_SKIN_PILOT ) ||
|
|
HasAnyNewPilotLoadout( player ) )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
bool function HasAnyNewTitanItems( entity player )
|
|
{
|
|
if ( HasAnyNewItemOfType( player, eItemTypes.TITAN ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.PRIME_TITAN ) )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
bool function HasAnyNewDpadCommsIcons( entity player )
|
|
{
|
|
return HasAnyNewItemOfType( player, eItemTypes.COMMS_ICON )
|
|
}
|
|
|
|
bool function HasAnyNewBoosts( entity player )
|
|
{
|
|
return HasAnyNewItemOfType( player, eItemTypes.BURN_METER_REWARD )
|
|
}
|
|
|
|
bool function HasAnyNewFactions( entity player )
|
|
{
|
|
return HasAnyNewItemOfType( player, eItemTypes.FACTION )
|
|
}
|
|
|
|
bool function HasAnyNewCallsignBanners( entity player )
|
|
{
|
|
return HasAnyNewItemOfType( player, eItemTypes.CALLING_CARD )
|
|
}
|
|
|
|
bool function HasAnyNewCallsignPatches( entity player )
|
|
{
|
|
return HasAnyNewItemOfType( player, eItemTypes.CALLSIGN_ICON )
|
|
}
|
|
|
|
bool function HasAnyNewArmoryItems( entity player )
|
|
{
|
|
if ( HasAnyNewItemOfType( player, eItemTypes.BURN_METER_REWARD ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.FACTION ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.CALLING_CARD ) ||
|
|
HasAnyNewItemOfType( player, eItemTypes.CALLSIGN_ICON ) )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
bool function ButtonShouldShowNew( int itemType, string ref = "", string parentRef = "" )
|
|
{
|
|
entity player = GetUIPlayer()
|
|
if ( !IsValid( player ) )
|
|
return false
|
|
|
|
string menu = expect string( uiGlobal.activeMenu._name )
|
|
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
if ( menu == "EditPilotLoadoutsMenu" )
|
|
return HasAnyNewItemOfType( player, itemType, -1, ref ) || RefHasAnyNewSubitem( player, ref, eItemTypes.CAMO_SKIN ) || RefHasAnyNewSubitem( player, ref, eItemTypes.WEAPON_SKIN )
|
|
else if ( menu == "EditPilotLoadoutMenu" ||
|
|
menu == "EditTitanLoadoutsMenu" || menu == "EditTitanLoadoutMenu" ||
|
|
menu == "PilotLoadoutsMenu" || menu == "TitanLoadoutsMenu" )
|
|
return HasAnyNewItemOfType( player, itemType, -1, ref )
|
|
else
|
|
return ( IsItemNew( player, ref ) ||
|
|
RefHasAnyNewSubitem( player, ref, eItemTypes.PILOT_PRIMARY_ATTACHMENT ) ||
|
|
RefHasAnyNewSubitem( player, ref, eItemTypes.PILOT_PRIMARY_MOD ) ||
|
|
RefHasAnyNewSubitem( player, ref, eItemTypes.PILOT_SECONDARY_MOD ) ||
|
|
RefHasAnyNewSubitem( player, ref, eItemTypes.PILOT_WEAPON_MOD3 ) ||
|
|
RefHasAnyNewSubitem( player, ref, eItemTypes.SUB_PILOT_WEAPON_MOD ) ||
|
|
RefHasAnyNewSubitem( player, ref, eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT ) )
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
case eItemTypes.PILOT_SUIT:
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
case eItemTypes.FACTION:
|
|
case eItemTypes.CALLING_CARD:
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
if ( menu == "EditPilotLoadoutsMenu" || menu == "EditPilotLoadoutMenu" ||
|
|
menu == "EditTitanLoadoutsMenu" || menu == "EditTitanLoadoutMenu" ||
|
|
menu == "PilotLoadoutsMenu" || menu == "TitanLoadoutsMenu" ||
|
|
menu == "ArmoryMenu" )
|
|
return HasAnyNewItemOfType( player, itemType )
|
|
else
|
|
return IsItemNew( player, ref )
|
|
|
|
case eItemTypes.FEATURE:
|
|
case eItemTypes.COMMS_ICON:
|
|
return IsItemNew( player, ref )
|
|
|
|
case eItemTypes.TITAN:
|
|
case eItemTypes.PRIME_TITAN:
|
|
return IsItemNew( player, ref ) || RefHasAnyNewSubitem( player, ref )
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
case eItemTypes.WEAPON_SKIN:
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
Assert( parentRef != "" )
|
|
if ( menu == "EditPilotLoadoutsMenu" || menu == "EditPilotLoadoutMenu" ||
|
|
menu == "EditTitanLoadoutsMenu" || menu == "EditTitanLoadoutMenu" ||
|
|
menu == "PilotLoadoutsMenu" || menu == "TitanLoadoutsMenu" )
|
|
return RefHasAnyNewSubitem( player, parentRef, itemType )
|
|
else
|
|
return IsItemNew( player, ref, parentRef )
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
return IsItemNew( player, ref, parentRef )
|
|
|
|
case eItemTypes.RACE:
|
|
case eItemTypes.PILOT_MELEE:
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
return false
|
|
}
|
|
|
|
unreachable
|
|
}
|
|
|
|
bool function RefHasAnyNewSubitem( entity player, string ref, int subitemType = -1 )
|
|
{
|
|
if ( IsItemLocked( player, ref ) )
|
|
return false
|
|
|
|
int refType = GetItemType( ref )
|
|
bool isPrimeTitanRef = ( refType == eItemTypes.TITAN && IsTitanClassPrime( player, ref ) )
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
foreach ( subitem in itemData.subitems )
|
|
{
|
|
if ( subitemType != -1 && GetSubitemType( ref, subitem.ref ) != subitemType )
|
|
continue
|
|
|
|
if ( isPrimeTitanRef && subitem.itemType == eItemTypes.TITAN_WARPAINT )
|
|
continue
|
|
|
|
if ( IsItemNew( player, subitem.ref, ref ) )
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
bool function HasAnyNewItemOfCategory( entity player, int refType, int categoryIndex )
|
|
{
|
|
array<ItemData> items = GetAllItemsOfType( refType )
|
|
foreach ( item in items )
|
|
{
|
|
if ( item.i.menuCategory != categoryIndex )
|
|
continue
|
|
|
|
if ( IsItemNew( player, item.ref ) )
|
|
return true
|
|
|
|
//if ( RefHasAnyNewSubitem( player, item.ref ) )
|
|
// return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
bool function HasAnyNewSubItemOfType( entity player, string parentRef, int refType )
|
|
{
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newMods" )
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newFeatures" )
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newPrimeWeaponSkins" )
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newPassives" )
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newSkins" )
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newPrimeSkins" ) //TODO: This is actually WarPaint, rename next game.
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newWeaponSkins" )
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newTitanDecals" )
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newPrimeTitanDecals" )
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
return IsAnyPersistenceBitSet( player, parentStruct + ".newFDUpgrades" )
|
|
|
|
default:
|
|
CodeWarning( "Unhandled HasAnyNewSubItemOfType type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + parentRef )
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
bool function HasAnyNewItemOfType( entity player, int refType, int parentRefType = -1, string refToExclude = "" )
|
|
{
|
|
if ( !IsSubItemType( refType ) )
|
|
{
|
|
array<ItemData> items = GetAllItemsOfType( refType )
|
|
foreach ( item in items )
|
|
{
|
|
if ( item.ref == refToExclude )
|
|
continue
|
|
|
|
if ( IsItemLocked( player, item.ref ) )
|
|
continue
|
|
|
|
if ( IsItemNew( player, item.ref ) )
|
|
return true
|
|
|
|
table<int, bool> checkedSubItemTypes = {}
|
|
|
|
if ( refType == eItemTypes.PILOT_PRIMARY || refType == eItemTypes.PILOT_SECONDARY )
|
|
continue
|
|
|
|
bool isPrimeTitanRef = ( refType == eItemTypes.TITAN && IsTitanClassPrime( player, item.ref ) )
|
|
|
|
foreach ( subItem in item.subitems )
|
|
{
|
|
if ( isPrimeTitanRef && subItem.itemType == eItemTypes.TITAN_WARPAINT )
|
|
continue
|
|
|
|
if ( subItem.itemType in checkedSubItemTypes )
|
|
continue
|
|
|
|
if ( HasAnyNewSubItemOfType( player, item.ref, subItem.itemType ) )
|
|
return true
|
|
|
|
checkedSubItemTypes[subItem.itemType] <- true
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string persistenceArray
|
|
string persistenceVar
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
persistenceArray = "pilotWeapons"
|
|
persistenceVar = "newMods"
|
|
break
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
persistenceArray = "pilotWeapons"
|
|
persistenceVar = "newFeatures"
|
|
break
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
persistenceArray = "pilotWeapons"
|
|
persistenceVar = "newPrimeWeaponSkins"
|
|
break
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
persistenceArray = "titanChassis"
|
|
persistenceVar = "newPassives"
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
persistenceArray = "titanChassis"
|
|
persistenceVar = "newSkins"
|
|
break
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
persistenceArray = "titanChassis"
|
|
persistenceVar = "newPrimeSkins" //TODO: This is actually WarPaint, rename next game.
|
|
break
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
if ( parentRefType == eItemTypes.PILOT_PRIMARY || parentRefType == eItemTypes.PILOT_SECONDARY )
|
|
persistenceArray = "pilotWeapons"
|
|
else
|
|
persistenceArray = "titanChassis"
|
|
|
|
persistenceVar = "newWeaponSkins"
|
|
break
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
persistenceArray = "titanChassis"
|
|
persistenceVar = "newTitanDecals"
|
|
break
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
persistenceArray = "titanChassis"
|
|
persistenceVar = "newPrimeTitanDecals"
|
|
break
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
persistenceArray = "titanChassis"
|
|
persistenceVar = "newFDUpgrades"
|
|
break
|
|
|
|
default:
|
|
CodeWarning( "Unhandled new type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) )
|
|
}
|
|
|
|
int arrayCount = PersistenceGetArrayCount( persistenceArray )
|
|
for ( int i = 0; i < arrayCount; i++ )
|
|
{
|
|
string persistenceStruct = persistenceArray + "[" + i + "]"
|
|
|
|
ItemData ornull parentItem = GetItemFromPersistenceStruct( persistenceStruct )
|
|
if ( parentItem == null )
|
|
continue
|
|
expect ItemData( parentItem )
|
|
|
|
if ( IsItemLocked( player, parentItem.ref ) )
|
|
continue
|
|
|
|
if ( parentRefType == -1 || GetItemType( parentItem.ref ) == parentRefType )
|
|
{
|
|
if ( IsAnyPersistenceBitSet( player, persistenceStruct + "." + persistenceVar ) )
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
#endif //UI
|
|
|
|
#if SERVER
|
|
void function UnlockUltimateEdition( entity player )
|
|
{
|
|
printt( "!!!!!!!!!!! UnlockUltimateEdition() running" )
|
|
|
|
if ( player.GetPersistentVarAsInt( "ultimateEdition" ) > 0 )
|
|
{
|
|
printt( "!!!!!!!!!!! Returned because player.GetPersistentVarAsInt( \"ultimateEdition\" ) > 0" )
|
|
return
|
|
}
|
|
|
|
if ( !player.HasEntitlement( ET_JUMPSTARTERKIT ) )
|
|
{
|
|
printt( "!!!!!!!!!!! Returned because !player.HasEntitlement( ET_JUMPSTARTERKIT )" )
|
|
return
|
|
}
|
|
|
|
Player_GiveCredits( player, 500 )
|
|
Player_GiveDoubleXP( player, 10 )
|
|
|
|
array<ItemDisplayData> suits = GetVisibleItemsOfType( eItemTypes.PILOT_SUIT )
|
|
foreach ( suitData in suits )
|
|
{
|
|
string tacticalRef = GetSuitBasedTactical( suitData.ref )
|
|
SetItemOwned( player, suitData.ref, "", IsItemLocked( player, suitData.ref ) )
|
|
SetItemOwned( player, tacticalRef, "", false )
|
|
}
|
|
|
|
array<ItemDisplayData> titans = GetVisibleItemsOfType( eItemTypes.TITAN )
|
|
foreach ( titanData in titans )
|
|
{
|
|
SetItemOwned( player, titanData.ref, "", IsItemLocked( player, titanData.ref ) )
|
|
}
|
|
|
|
player.SetPersistentVar( "ultimateEdition", true )
|
|
}
|
|
|
|
|
|
void function SetItemOwnedStatus( entity player, string ref, string parentRef, bool unlocked )
|
|
{
|
|
int unlockBitVal = unlocked ? 1 : 0
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
int refType = itemData.itemType
|
|
|
|
if ( !IsSubItemType( refType ) )
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref )
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
SetPersistenceBitfield( player, "unlockedPilotWeapons", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
SetPersistenceBitfield( player, "unlockedPilotOffhands", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
SetPersistenceBitfield( player, "unlockedPilotPassives", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
SetPersistenceBitfield( player, "unlockedPilotSuits", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
SetPersistenceBitfield( player, "unlockedPilotExecutions", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
SetPersistenceBitfield( player, "unlockedTitanExecutions", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
SetPersistenceBitfield( player, "unlockedTitanOffhands", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN:
|
|
SetPersistenceBitfield( player, "unlockedTitanChassis", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.PRIME_TITAN:
|
|
SetPersistenceBitfield( player, "unlockedPrimeTitans", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.FEATURE:
|
|
SetPersistenceBitfield( player, "unlockedFeatures", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
SetPersistenceBitfield( player, "unlockedPilotSkins", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
SetPersistenceBitfield( player, "unlockedBoosts", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.FACTION:
|
|
SetPersistenceBitfield( player, "unlockedFactions", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
SetPersistenceBitfield( player, "unlockedCallingCards", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
SetPersistenceBitfield( player, "unlockedCallsignIcons", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
SetPersistenceBitfield( player, "unlockedCommsIcons", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
default:
|
|
CodeWarning( "Unhandled unlock type: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref, parentRef )
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedMods", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedFeatures", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedPrimeWeaponSkins", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedPassives", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedSkins", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedPrimeSkins", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedWeaponSkins", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedTitanDecals", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedPrimeTitanDecals", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".unlockedFDUpgrades", bitIndex, unlockBitVal )
|
|
return
|
|
|
|
default:
|
|
CodeWarning( "Unhandled unlock type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
}
|
|
}
|
|
|
|
void function SetItemNewStatus( entity player, string ref, string parentRef, bool setNew )
|
|
{
|
|
int newBitVal = setNew ? 1 : 0
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
int refType = itemData.itemType
|
|
|
|
if ( !IsSubItemType( refType ) )
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref )
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
SetPersistenceBitfield( player, "newPilotWeapons", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
SetPersistenceBitfield( player, "newPilotOffhands", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
SetPersistenceBitfield( player, "newPilotPassives", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
SetPersistenceBitfield( player, "newPilotSuits", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
SetPersistenceBitfield( player, "newPilotExecutions", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
SetPersistenceBitfield( player, "newTitanExecutions", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
SetPersistenceBitfield( player, "newTitanOffhands", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN:
|
|
SetPersistenceBitfield( player, "newTitanChassis", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.PRIME_TITAN:
|
|
SetPersistenceBitfield( player, "newPrimeTitans", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.FEATURE:
|
|
SetPersistenceBitfield( player, "newFeatures", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
SetPersistenceBitfield( player, "newPilotSkins", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
SetPersistenceBitfield( player, "newPrimeWeaponSkins", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
SetPersistenceBitfield( player, "newBoosts", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.FACTION:
|
|
SetPersistenceBitfield( player, "newFactions", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
SetPersistenceBitfield( player, "newCallingCards", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
SetPersistenceBitfield( player, "newCallsignIcons", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
SetPersistenceBitfield( player, "newCommsIcons", bitIndex, newBitVal )
|
|
return
|
|
|
|
default:
|
|
CodeWarning( "Unhandled unlock type: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref, parentRef )
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newMods", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newFeatures", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPrimeWeaponSkins", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPassives", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newSkins", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPrimeSkins", bitIndex, newBitVal ) //TODO: This is actually WarPaint, rename next game.
|
|
return
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newWeaponSkins", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newTitanDecals", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPrimeTitanDecals", bitIndex, newBitVal )
|
|
return
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newFDUpgrades", bitIndex, newBitVal )
|
|
return
|
|
|
|
default:
|
|
CodeWarning( "Unhandled unlock type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
}
|
|
}
|
|
|
|
bool function ClientCommand_ClearNewStatus( entity player, array<string> args )
|
|
{
|
|
if ( args.len() == 0 )
|
|
return false
|
|
|
|
string ref = args[0]
|
|
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
if ( args.len() != 2 )
|
|
return false
|
|
|
|
string parentRef = args[1]
|
|
|
|
if ( !SubitemDefined( parentRef, ref ) )
|
|
return false
|
|
}
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
int refType = itemData.itemType
|
|
|
|
if ( !IsSubItemType( refType ) )
|
|
{
|
|
int bitIndex = GetItemPersistenceId( ref )
|
|
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
SetPersistenceBitfield( player, "newPilotWeapons", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
SetPersistenceBitfield( player, "newPilotOffhands", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
SetPersistenceBitfield( player, "newPilotPassives", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
SetPersistenceBitfield( player, "newPilotSuits", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
SetPersistenceBitfield( player, "newPilotExecutions", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
SetPersistenceBitfield( player, "newTitanExecutions", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
SetPersistenceBitfield( player, "newTitanOffhands", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN:
|
|
SetPersistenceBitfield( player, "newTitanChassis", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.PRIME_TITAN:
|
|
SetPersistenceBitfield( player, "newPrimeTitans", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.FEATURE:
|
|
SetPersistenceBitfield( player, "newFeatures", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
SetPersistenceBitfield( player, "newPilotSkins", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
SetPersistenceBitfield( player, "newBoosts", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.FACTION:
|
|
SetPersistenceBitfield( player, "newFactions", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
SetPersistenceBitfield( player, "newCallingCards", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
SetPersistenceBitfield( player, "newCallsignIcons", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
SetPersistenceBitfield( player, "newCommsIcons", bitIndex, 0 )
|
|
return true
|
|
|
|
default:
|
|
CodeWarning( "Unhandled ClearNewStatus type: " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string parentRef = args[1]
|
|
|
|
int bitIndex = GetItemPersistenceId( ref, parentRef )
|
|
switch ( refType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newMods", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newFeatures", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.WEAPON_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPrimeWeaponSkins", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPassives", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newSkins", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPrimeSkins", bitIndex, 0 ) //TODO: This is actually WarPaint, rename next game.
|
|
return true
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newWeaponSkins", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newTitanDecals", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newPrimeTitanDecals", bitIndex, 0 )
|
|
return true
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
string parentStruct = GetItemPersistenceStruct( parentRef )
|
|
SetPersistenceBitfield( player, parentStruct + ".newFDUpgrades", bitIndex, 0 )
|
|
return true
|
|
|
|
default:
|
|
CodeWarning( "Unhandled ClearNewStatus type (subitem): " + DEV_GetEnumStringFromIndex( "eItemTypes", refType ) + " " + ref + " " + parentRef )
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
void function SetItemOwned( entity player, string ref, string parentRef = "", bool setNew = true )
|
|
{
|
|
SetItemOwnedStatus( player, ref, parentRef, true )
|
|
SetItemNewStatus( player, ref, parentRef, setNew )
|
|
}
|
|
|
|
void function ClearItemOwned( entity player, string ref, string parentRef = "" )
|
|
{
|
|
SetItemOwnedStatus( player, ref, parentRef, false )
|
|
}
|
|
|
|
bool function ClientCommand_DEV_GiveFDUnlockPoint( entity player, array<string> args )
|
|
{
|
|
if ( args.len() == 0 )
|
|
return false
|
|
|
|
if ( !IsValid( player ) )
|
|
return false
|
|
|
|
string parentRef = args[0]
|
|
printt( "GIVE PLAYER UNLOCK POINT ", parentRef )
|
|
Player_GiveFDUnlockPoints( player, 1 )
|
|
return true
|
|
}
|
|
|
|
bool function ClientCommand_DEV_ResetTitanProgression( entity player, array<string> args )
|
|
{
|
|
if ( args.len() == 0 )
|
|
return false
|
|
|
|
if ( !IsValid( player ) )
|
|
return false
|
|
|
|
string titanRef = args[0]
|
|
printt( "RESET PLAYER TITAN PROGRESSION ", titanRef )
|
|
SetAvailableFDUnlockPoints( player, titanRef, 0 )
|
|
|
|
array<ItemData> fdUpgrades = GetAllItemsOfType( eItemTypes.TITAN_FD_UPGRADE )
|
|
foreach ( upgrade in fdUpgrades )
|
|
{
|
|
if ( upgrade.parentRef == titanRef )
|
|
{
|
|
ClearItemOwned( player, upgrade.ref, upgrade.parentRef )
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
bool function ClientCommand_BuyItem( entity player, array<string> args )
|
|
{
|
|
if ( args.len() == 0 )
|
|
return false
|
|
|
|
string ref = args[0]
|
|
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
if ( args.len() != 2 )
|
|
return false
|
|
|
|
string parentRef = args[1]
|
|
|
|
if ( !SubitemDefined( parentRef, ref ) )
|
|
return false
|
|
}
|
|
|
|
if ( !IsValid( player ) )
|
|
return false
|
|
|
|
string parentRef
|
|
|
|
int cost
|
|
|
|
string fullItemName = ref
|
|
|
|
if ( args.len() > 1 )
|
|
{
|
|
parentRef = args[ 1 ]
|
|
cost = GetSubitemCost( parentRef, ref )
|
|
|
|
for ( int i = 1; i < args.len(); i++ )
|
|
fullItemName += " " + args[i]
|
|
}
|
|
else
|
|
{
|
|
cost = GetItemCost( ref )
|
|
}
|
|
|
|
if ( cost <= 0 )
|
|
return false
|
|
|
|
int creditsAvailable
|
|
bool isFDUpgrade = GetItemType( ref ) == eItemTypes.TITAN_FD_UPGRADE
|
|
if ( isFDUpgrade )
|
|
{
|
|
creditsAvailable = GetAvailableFDUnlockPoints( player, parentRef )
|
|
}
|
|
else
|
|
{
|
|
creditsAvailable = GetAvailableCredits( player )
|
|
}
|
|
|
|
if ( cost > creditsAvailable )
|
|
return false
|
|
|
|
SetItemOwned( player, ref, parentRef, false )
|
|
|
|
if ( isFDUpgrade )
|
|
{
|
|
SetAvailableFDUnlockPoints( player, parentRef, creditsAvailable - cost )
|
|
}
|
|
else
|
|
{
|
|
SetAvailableCredits( player, creditsAvailable - cost )
|
|
PIN_BuyItem( player, false, fullItemName, cost )
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
bool function ClientCommand_BuyTicket( entity player, array<string> args )
|
|
{
|
|
if ( !IsValid( player ) )
|
|
return true
|
|
|
|
ItemDisplayData displayData = GetItemDisplayData( "coliseum_ticket" )
|
|
string itemName = GetItemName( "coliseum_ticket" )
|
|
string ref = displayData.ref
|
|
|
|
|
|
int numTickets = 1
|
|
if ( args.len() && int( args[0] ) > 0 )
|
|
numTickets = int( args[0] )
|
|
|
|
int cost = GetItemCost( ref ) * numTickets
|
|
|
|
int creditsAvailable = GetAvailableCredits( player )
|
|
|
|
if ( cost > creditsAvailable )
|
|
return true
|
|
|
|
Player_GiveColiseumTickets( player, numTickets )
|
|
SetAvailableCredits( player, creditsAvailable - cost )
|
|
|
|
PIN_BuyItem( player, true, ref, cost )
|
|
|
|
return true
|
|
}
|
|
|
|
void function CodeCallback_GivePersistentItem( entity player, string itemName, int count )
|
|
{
|
|
printt( "CodeCallback_GivePersistentItem", player, itemName, count )
|
|
bool consumable = false
|
|
switch ( itemName )
|
|
{
|
|
case "double_xp":
|
|
case "burncard_doublexp":
|
|
if ( count )
|
|
{
|
|
Player_GiveDoubleXP( player, count )
|
|
ItemDisplayData displayData = GetItemDisplayData( "double_xp" )
|
|
Player_AddRecentUnlock( player, displayData, count )
|
|
PIN_GiveItem( player, true, itemName, count )
|
|
}
|
|
break
|
|
|
|
case "coliseum_ticket":
|
|
if ( count )
|
|
{
|
|
Player_GiveColiseumTickets( player, count )
|
|
ItemDisplayData displayData = GetItemDisplayData( "coliseum_ticket" )
|
|
Player_AddRecentUnlock( player, displayData, count )
|
|
PIN_GiveItem( player, true, itemName, count )
|
|
}
|
|
break
|
|
|
|
case "credit_award":
|
|
if ( count )
|
|
{
|
|
Player_GiveCredits( player, count )
|
|
ItemDisplayData displayData = GetItemDisplayData( "credit_award" )
|
|
Player_AddRecentUnlock( player, displayData, count )
|
|
}
|
|
break
|
|
|
|
case "unlock_dew":
|
|
UnlockDEW( player )
|
|
PIN_GiveItem( player, false, itemName, count )
|
|
break
|
|
|
|
case "unlock_target":
|
|
UnlockTarget( player )
|
|
PIN_GiveItem( player, false, itemName, count )
|
|
break
|
|
|
|
case "unlock_bww":
|
|
UnlockBWW( player )
|
|
PIN_GiveItem( player, false, itemName, count )
|
|
break
|
|
|
|
default:
|
|
array<string> tokens = split( itemName, " " )
|
|
if ( tokens.len() == 1 )
|
|
{
|
|
if ( !GivePersistentItem( player, tokens[0] ) )
|
|
CodeWarning( itemName )
|
|
}
|
|
else if ( tokens.len() == 2 )
|
|
{
|
|
if ( !GivePersistentSubItem( player, tokens[0], tokens[1] ) )
|
|
CodeWarning( itemName )
|
|
}
|
|
PIN_GiveItem( player, false, itemName, count )
|
|
//
|
|
//
|
|
//string itemRef = itemName
|
|
//if ( ItemDefined( itemRef ) )
|
|
//{
|
|
// ItemData itemData = GetItemData( itemRef )
|
|
// int refType = itemData.itemType
|
|
//
|
|
// if ( !IsSubItemType( refType ) )
|
|
// {
|
|
//
|
|
// }
|
|
//
|
|
//}
|
|
//break
|
|
}
|
|
}
|
|
|
|
bool function GivePersistentItem( entity player, string itemRef )
|
|
{
|
|
if ( !ItemDefined( itemRef ) )
|
|
{
|
|
CodeWarning( "Tried to give undefined item: " + itemRef )
|
|
return false
|
|
}
|
|
|
|
ItemData itemData = GetItemData( itemRef )
|
|
int refType = itemData.itemType
|
|
|
|
if ( IsSubItemType( refType ) )
|
|
{
|
|
CodeWarning( "Tried to give sub-item " + itemRef + " without specifying a parent" )
|
|
return false
|
|
}
|
|
|
|
SetItemOwned( player, itemRef, "", true )
|
|
Player_AddRecentUnlock( player, GetItemDisplayData( itemRef ) )
|
|
|
|
return true
|
|
}
|
|
|
|
bool function GivePersistentSubItem( entity player, string itemRef, string parentRef )
|
|
{
|
|
if ( !ItemDefined( itemRef ) )
|
|
{
|
|
CodeWarning( "Tried to give undefined item: " + itemRef )
|
|
return false
|
|
}
|
|
|
|
if ( !ItemDefined( parentRef ) )
|
|
{
|
|
CodeWarning( "Tried to give item " + itemRef + " to undefined parent: " + parentRef )
|
|
return false
|
|
}
|
|
|
|
ItemData itemData = GetItemData( itemRef )
|
|
int itemRefType = itemData.itemType
|
|
|
|
if ( !IsSubItemType( itemRefType ) )
|
|
{
|
|
CodeWarning( "Tried to give item " + itemRef + " to parent " + parentRef + ", but it isn't a sub-item type" )
|
|
return false
|
|
}
|
|
|
|
ItemData parentData = GetItemData( parentRef )
|
|
int parentRefType = parentData.itemType
|
|
|
|
if ( !HasSubitem( parentRef, itemRef ) )
|
|
{
|
|
CodeWarning( "Tried to give item " + itemRef + " to a parent " + parentRef + " it is not a child of" )
|
|
return false
|
|
}
|
|
|
|
SetItemOwned( player, itemRef, parentRef, true )
|
|
Player_AddRecentUnlock( player, GetItemDisplayData( itemRef, parentRef ) )
|
|
|
|
return true
|
|
}
|
|
|
|
#endif //SERVER
|
|
|
|
array<string> function GetUnlockItemsForPlayerLevels( int startLevel, int endLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems.extend( GetUnlockItemsForPlayerLevel( currentLevel ) )
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
array<string> function GetUnlockItemsForPlayerLevel( int newLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
array<string> genUnlockItems
|
|
if ( newLevel > GetMaxPlayerLevel() )
|
|
{
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.PLAYER_LEVEL )
|
|
{
|
|
if ( ul.unlockLevel == newLevel )
|
|
genUnlockItems.append( ref )
|
|
}
|
|
}
|
|
|
|
genUnlockItems.sort( UnlockItemSort )
|
|
}
|
|
|
|
array<string> levelUnlockItems
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.PLAYER_LEVEL )
|
|
{
|
|
if ( ItemLockedShouldUseRawLevel( ref ) )
|
|
{
|
|
if ( ul.unlockLevel == newLevel && !genUnlockItems.contains( ref ) )
|
|
levelUnlockItems.append( ref )
|
|
}
|
|
else
|
|
{
|
|
if ( ul.unlockLevel == ((newLevel - 1) % GetMaxPlayerLevel() + 1) )
|
|
levelUnlockItems.append( ref )
|
|
}
|
|
}
|
|
}
|
|
|
|
levelUnlockItems.sort( UnlockItemSort )
|
|
|
|
unlockedItems.extend( genUnlockItems )
|
|
unlockedItems.extend( levelUnlockItems )
|
|
|
|
if ( unlockedItems.len() == 0 )
|
|
unlockedItems.append( "credit_award_5x" )
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
|
|
|
|
array<string> function GetUnlockItemsForPlayerRawLevel( int newLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.PLAYER_LEVEL )
|
|
{
|
|
if ( ul.unlockLevel == newLevel )
|
|
unlockedItems.append( ref )
|
|
}
|
|
}
|
|
|
|
unlockedItems.sort( UnlockItemSort )
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
|
|
string function GetWeaponForTitan( string titanClass )
|
|
{
|
|
var titanPropertiesDataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int propertyRow = GetDataTableRowMatchingStringValue( titanPropertiesDataTable, GetDataTableColumnByName( titanPropertiesDataTable, "titanRef" ), titanClass )
|
|
return GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "primary" ) )
|
|
}
|
|
|
|
string function GetTitanForWeapon( string weaponRef )
|
|
{
|
|
var titanPropertiesDataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int propertyRow = GetDataTableRowMatchingStringValue( titanPropertiesDataTable, GetDataTableColumnByName( titanPropertiesDataTable, "primary" ), weaponRef )
|
|
return GetDataTableString( titanPropertiesDataTable, propertyRow, GetDataTableColumnByName( titanPropertiesDataTable, "titanRef" ) )
|
|
}
|
|
|
|
#if SERVER
|
|
void function AwardCredits( entity player, string award )
|
|
{
|
|
switch ( award )
|
|
{
|
|
case "credit_award":
|
|
Player_GiveCredits( player, 1 )
|
|
break
|
|
|
|
case "credit_award_5x":
|
|
Player_GiveCredits( player, 5 )
|
|
break
|
|
}
|
|
}
|
|
|
|
void function Player_GiveCredits( entity player, int count )
|
|
{
|
|
int currentCredits = GetAvailableCredits( player )
|
|
SetAvailableCredits( player, currentCredits + count )
|
|
PIN_GiveCredits( player, count )
|
|
}
|
|
|
|
void function Player_GiveColiseumTickets( entity player, int count )
|
|
{
|
|
int currentTickets = Player_GetColiseumTicketCount( player )
|
|
int newTicketCount = maxint( 0, (currentTickets + count) )
|
|
Player_SetColiseumTicketCount( player, newTicketCount )
|
|
}
|
|
|
|
void function Player_GiveFDUnlockPoints( entity player, int count )
|
|
{
|
|
TitanLoadoutDef loadout = GetTitanLoadoutForPlayer( player )
|
|
|
|
int currentPoints = GetAvailableFDUnlockPoints( player, loadout.titanClass )
|
|
SetAvailableFDUnlockPoints( player, loadout.titanClass, currentPoints + count )
|
|
}
|
|
#endif
|
|
|
|
int function Player_GetColiseumTicketCount( entity player )
|
|
{
|
|
return player.GetPersistentVarAsInt( "coliseumTickets" )
|
|
}
|
|
|
|
void function Player_SetColiseumTicketCount( entity player, int newCount )
|
|
{
|
|
player.SetPersistentVar( "coliseumTickets", newCount )
|
|
}
|
|
|
|
#if SERVER
|
|
void function Player_GiveDoubleXP( entity player, int count )
|
|
{
|
|
int currentDoubleXP = Player_GetDoubleXPCount( player )
|
|
Player_SetDoubleXPCount( player, currentDoubleXP + count )
|
|
}
|
|
|
|
bool function ClientCommand_UseDoubleXP( entity player, array<string> args )
|
|
{
|
|
if ( IsPrivateMatch() )
|
|
return true
|
|
|
|
if ( GetGameState() > eGameState.Prematch )
|
|
return true
|
|
|
|
if ( Player_GetDoubleXPCount( player ) < 1 )
|
|
return true
|
|
|
|
if ( player.GetPlayerNetInt( "xpMultiplier" ) )
|
|
return true
|
|
|
|
int currentDoubleXP = Player_GetDoubleXPCount( player )
|
|
Player_SetDoubleXPCount( player, currentDoubleXP - 1 )
|
|
Player_ActivateDoubleXP( player )
|
|
|
|
PIN_ConsumeItem( player, "double_xp" )
|
|
|
|
// ?
|
|
|
|
return true
|
|
}
|
|
|
|
void function Player_ActivateDoubleXP( entity player )
|
|
{
|
|
player.SetPlayerNetInt( "xpMultiplier", 2 )
|
|
|
|
Remote_CallFunction_UI( player, "SCB_SetDoubleXPStatus", 2 )
|
|
}
|
|
#endif
|
|
|
|
int function Player_GetDoubleXPCount( entity player )
|
|
{
|
|
return player.GetPersistentVarAsInt( "doubleXP" )
|
|
}
|
|
|
|
#if SERVER
|
|
void function Player_SetDoubleXPCount( entity player, int newCount )
|
|
{
|
|
player.SetPersistentVar( "doubleXP", newCount )
|
|
}
|
|
#endif
|
|
|
|
ItemDisplayData ornull function Player_GetRecentUnlock( entity player, int index )
|
|
{
|
|
int refGuid = player.GetPersistentVarAsInt( "recentUnlocks[" + index + "].refGuid" )
|
|
int parentRefGuid = player.GetPersistentVarAsInt( "recentUnlocks[" + index + "].parentRefGuid" )
|
|
|
|
if ( refGuid == 0 )
|
|
return null
|
|
|
|
return GetItemDisplayDataFromGuid( refGuid, parentRefGuid )
|
|
}
|
|
|
|
int function Player_GetRecentUnlockCount( entity player, int index )
|
|
{
|
|
return player.GetPersistentVarAsInt( "recentUnlocks[" + index + "].count" )
|
|
}
|
|
|
|
#if SERVER
|
|
void function Player_AddRecentUnlock( entity player, ItemDisplayData itemData, int count = 1 )
|
|
{
|
|
array<RecentUnlock> recentUnlocks
|
|
|
|
RecentUnlock mostRecentUnlock
|
|
mostRecentUnlock.refGuid = file.itemRefToGuid[itemData.ref]
|
|
mostRecentUnlock.count = count
|
|
if ( itemData.parentRef != "" )
|
|
mostRecentUnlock.parentRefGuid = file.itemRefToGuid[itemData.parentRef]
|
|
|
|
recentUnlocks.append( mostRecentUnlock )
|
|
|
|
int maxRecentUnlockCount = PersistenceGetArrayCount( "recentUnlocks" )
|
|
for ( int index = 0; index < maxRecentUnlockCount; index++ )
|
|
{
|
|
RecentUnlock recentUnlock
|
|
recentUnlock.refGuid = player.GetPersistentVarAsInt( "recentUnlocks[" + index + "].refGuid" )
|
|
recentUnlock.parentRefGuid = player.GetPersistentVarAsInt( "recentUnlocks[" + index + "].parentRefGuid" )
|
|
recentUnlock.count = player.GetPersistentVarAsInt( "recentUnlocks[" + index + "].count" )
|
|
|
|
recentUnlocks.append( recentUnlock )
|
|
}
|
|
|
|
for ( int index = 0; index < maxRecentUnlockCount; index++ )
|
|
{
|
|
player.SetPersistentVar( "recentUnlocks[" + index + "].refGuid", recentUnlocks[index].refGuid )
|
|
player.SetPersistentVar( "recentUnlocks[" + index + "].parentRefGuid", recentUnlocks[index].parentRefGuid )
|
|
player.SetPersistentVar( "recentUnlocks[" + index + "].count", recentUnlocks[index].count )
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
int function UnlockItemSort( string itemRefA, string itemRefB )
|
|
{
|
|
int priority = 0
|
|
table<int, int> itemPriority
|
|
itemPriority[eItemTypes.PILOT_PRIMARY] <- priority++
|
|
itemPriority[eItemTypes.PILOT_SECONDARY] <- priority++
|
|
itemPriority[eItemTypes.PILOT_SPECIAL] <- priority++
|
|
itemPriority[eItemTypes.PILOT_ORDNANCE] <- priority++
|
|
itemPriority[eItemTypes.PILOT_PRIMARY_ATTACHMENT] <- priority++
|
|
itemPriority[eItemTypes.PILOT_PRIMARY_MOD] <- priority++
|
|
itemPriority[eItemTypes.PILOT_SECONDARY_MOD] <- priority++
|
|
itemPriority[eItemTypes.PILOT_PASSIVE1] <- priority++
|
|
itemPriority[eItemTypes.PILOT_PASSIVE2] <- priority++
|
|
itemPriority[eItemTypes.TITAN_PRIMARY] <- priority++
|
|
itemPriority[eItemTypes.PILOT_SUIT] <- priority++
|
|
itemPriority[eItemTypes.TITAN_SPECIAL] <- priority++
|
|
itemPriority[eItemTypes.TITAN_ANTIRODEO] <- priority++
|
|
itemPriority[eItemTypes.TITAN_ORDNANCE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_PRIMARY_MOD] <- priority++
|
|
itemPriority[eItemTypes.TITAN_OS] <- priority++
|
|
itemPriority[eItemTypes.TITAN_NOSE_ART] <- priority++
|
|
itemPriority[eItemTypes.PRIME_TITAN_NOSE_ART] <- priority++
|
|
itemPriority[eItemTypes.TITAN_CORE_ABILITY] <- priority++
|
|
itemPriority[eItemTypes.BURN_METER_REWARD] <- priority++
|
|
itemPriority[eItemTypes.PILOT_MELEE] <- priority++
|
|
itemPriority[eItemTypes.TITAN] <- priority++
|
|
itemPriority[eItemTypes.PILOT_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_RONIN_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_NORTHSTAR_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_ION_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_TONE_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_SCORCH_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_LEGION_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.TITAN_VANGUARD_EXECUTION] <- priority++
|
|
itemPriority[eItemTypes.FACTION] <- priority++
|
|
itemPriority[eItemTypes.CALLING_CARD] <- priority++
|
|
itemPriority[eItemTypes.CALLSIGN_ICON] <- priority++
|
|
itemPriority[eItemTypes.CAMO_SKIN] <- priority++
|
|
itemPriority[eItemTypes.CAMO_SKIN_PILOT] <- priority++
|
|
itemPriority[eItemTypes.CAMO_SKIN_TITAN] <- priority++
|
|
itemPriority[eItemTypes.TITAN_WARPAINT] <- priority++
|
|
itemPriority[eItemTypes.TITAN_GENERAL_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_TITANFALL_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_RONIN_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_NORTHSTAR_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_ION_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_TONE_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_SCORCH_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_LEGION_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_VANGUARD_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_UPGRADE1_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_UPGRADE2_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.TITAN_UPGRADE3_PASSIVE] <- priority++
|
|
itemPriority[eItemTypes.FEATURE] <- priority++
|
|
itemPriority[eItemTypes.RACE] <- priority++
|
|
itemPriority[eItemTypes.NOT_LOADOUT] <- priority++
|
|
itemPriority[eItemTypes.SUB_PILOT_WEAPON_MOD] <- priority++
|
|
itemPriority[eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT] <- priority++
|
|
itemPriority[eItemTypes.GAME_MODE] <- priority++
|
|
itemPriority[eItemTypes.COMMS_ICON] <- priority++
|
|
|
|
int itemRefAType = GetItemType( itemRefA )
|
|
int itemRefBType = GetItemType( itemRefB )
|
|
|
|
if ( itemPriority[itemRefAType] < itemPriority[itemRefBType] )
|
|
return -1
|
|
|
|
if ( itemPriority[itemRefAType] > itemPriority[itemRefBType] )
|
|
return 1
|
|
|
|
return 0
|
|
}
|
|
|
|
|
|
array<string> function GetUnlockItemsForTitanLevels( string titanRef, int startLevel, int endLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems.extend( GetUnlockItemsForTitanLevel( titanRef, currentLevel ) )
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
string function GetNextUnlockForTitanLevel( entity player, string titanRef, int startLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
int endLevel = TitanGetMaxRawLevel( titanRef )
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems = GetUnlockItemsForTitanLevel( titanRef, currentLevel )
|
|
|
|
if ( unlockedItems.len() == 0 )
|
|
{
|
|
if ( TitanLevelHasRandomUnlock( currentLevel, titanRef ) )
|
|
return "random"
|
|
}
|
|
|
|
if ( unlockedItems.len() > 0 )
|
|
{
|
|
for ( int i = 0; i < unlockedItems.len(); i++ )
|
|
{
|
|
if ( IsSubItemType( GetItemType( unlockedItems[ i ] ) ) )
|
|
{
|
|
if ( IsSubItemLocked( player, unlockedItems[ i ], titanRef ) )
|
|
return unlockedItems[ i ]
|
|
}
|
|
else
|
|
{
|
|
if ( IsItemLocked( player, unlockedItems[ i ] ) )
|
|
return unlockedItems[ i ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
array<string> function GetUnlockItemsForTitanLevel( string titanRef, int newLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
Assert( titanRef in file.unlocks )
|
|
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.TITAN_LEVEL && ul.unlockLevel == newLevel && ul.parentRef == titanRef )
|
|
{
|
|
unlockedItems.append( ref )
|
|
}
|
|
}
|
|
|
|
foreach ( childRef, ul in file.unlocks[ titanRef ].child )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.TITAN_LEVEL && ul.unlockLevel == newLevel )
|
|
{
|
|
unlockedItems.append( childRef )
|
|
}
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
array<string> function GetUnlockItemsForWeaponLevels( string weaponRef, int startLevel, int endLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems.extend( GetUnlockItemsForWeaponLevel( weaponRef, currentLevel ) )
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
string function GetNextUnlockForWeaponLevel( entity player, string weaponRef, int startLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
int endLevel = WeaponGetMaxRawLevel( weaponRef )
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems.extend( GetUnlockItemsForWeaponLevel( weaponRef, currentLevel ) )
|
|
|
|
if ( unlockedItems.len() == 0 )
|
|
{
|
|
if ( WeaponLevelHasRandomUnlock( currentLevel, weaponRef ) )
|
|
return "random"
|
|
}
|
|
|
|
if ( unlockedItems.len() > 0 )
|
|
{
|
|
for ( int i = 0; i < unlockedItems.len(); i++ )
|
|
{
|
|
if ( IsSubItemType( GetItemType( unlockedItems[ i ] ) ) )
|
|
{
|
|
if ( IsSubItemLocked( player, unlockedItems[ i ], weaponRef ) )
|
|
return unlockedItems[ i ]
|
|
}
|
|
else
|
|
{
|
|
if ( !IsItemLocked( player, unlockedItems[ i ] ) )
|
|
return unlockedItems[ i ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
array<string> function GetUnlockItemsForWeaponLevel( string weaponRef, int newLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.WEAPON_LEVEL && ul.unlockLevel == newLevel && ul.parentRef == weaponRef )
|
|
{
|
|
unlockedItems.append( ref )
|
|
}
|
|
}
|
|
|
|
foreach ( childRef, ul in file.unlocks[ weaponRef ].child )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.WEAPON_LEVEL && ul.unlockLevel == newLevel )
|
|
{
|
|
unlockedItems.append( childRef )
|
|
}
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
array<ItemDisplayData> function GetUnlockItemsForFactionLevels( string factionRef, int startLevel, int endLevel )
|
|
{
|
|
array<ItemDisplayData> unlockedItems
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems.extend( GetUnlockItemsForFactionLevel( factionRef, currentLevel ) )
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
array<ItemDisplayData> function GetUnlockItemsForFactionLevel( string factionRef, int newLevel )
|
|
{
|
|
array<ItemDisplayData> unlockedItems
|
|
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.FACTION_LEVEL && ul.unlockLevel == newLevel )
|
|
{
|
|
if ( ul.additionalRef == factionRef )
|
|
unlockedItems.append( GetItemDisplayData( ref ) )
|
|
}
|
|
|
|
foreach ( childRef, cul in ul.child )
|
|
{
|
|
if ( cul.unlockType == eUnlockType.FACTION_LEVEL && cul.unlockLevel == newLevel )
|
|
{
|
|
if ( cul.additionalRef == factionRef )
|
|
unlockedItems.append( GetItemDisplayData( childRef, ref ) )
|
|
}
|
|
}
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
|
|
array<string> function GetUnlockItemsForFDTitanLevels( string titanRef, int startLevel, int endLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems.extend( GetUnlockItemsForFDTitanLevel( titanRef, currentLevel ) )
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
string function GetNextUnlockForFDTitanLevel( entity player, string titanRef, int startLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
|
|
int endLevel = FD_TitanGetMaxRawLevel( titanRef )
|
|
|
|
for ( int currentLevel = startLevel; currentLevel <= endLevel; currentLevel++ )
|
|
{
|
|
unlockedItems = GetUnlockItemsForFDTitanLevel( titanRef, currentLevel )
|
|
|
|
//if ( unlockedItems.len() == 0 )
|
|
//{
|
|
// if ( FDTitanLevelHasRandomUnlock( currentLevel, titanRef ) )
|
|
// return "random"
|
|
//}
|
|
|
|
if ( unlockedItems.len() > 0 )
|
|
{
|
|
for ( int i = 0; i < unlockedItems.len(); i++ )
|
|
{
|
|
if ( IsSubItemType( GetItemType( unlockedItems[ i ] ) ) )
|
|
{
|
|
if ( IsSubItemLocked( player, unlockedItems[ i ], titanRef ) )
|
|
return unlockedItems[ i ]
|
|
}
|
|
else
|
|
{
|
|
if ( IsItemLocked( player, unlockedItems[ i ] ) )
|
|
return unlockedItems[ i ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
array<string> function GetUnlockItemsForFDTitanLevel( string titanRef, int newLevel )
|
|
{
|
|
array<string> unlockedItems
|
|
Assert( titanRef in file.unlocks )
|
|
|
|
foreach ( ref, ul in file.unlocks )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.FD_UNLOCK_POINTS && ul.unlockLevel == newLevel && ul.parentRef == titanRef )
|
|
{
|
|
unlockedItems.append( ref )
|
|
}
|
|
}
|
|
|
|
foreach ( childRef, ul in file.unlocks[ titanRef ].child )
|
|
{
|
|
if ( ul.unlockType == eUnlockType.FD_UNLOCK_POINTS && ul.unlockLevel == newLevel )
|
|
{
|
|
unlockedItems.append( childRef )
|
|
}
|
|
}
|
|
|
|
//if ( unlockedItems.len() == 0 )
|
|
{
|
|
if ( FDTitanLevelHasRandomUnlock( newLevel, titanRef ) )
|
|
unlockedItems.append( "random" )
|
|
}
|
|
|
|
return unlockedItems
|
|
}
|
|
|
|
bool function DidPlayerBuyItemFromBlackMarket( player, ref )
|
|
{
|
|
bool doesRefExist = PersistenceEnumValueIsValid( "BlackMarketUnlocks", ref )
|
|
if ( doesRefExist == false )
|
|
return false
|
|
|
|
return expect bool( player.GetPersistentVar( "bm.blackMarketItemUnlocks[" + ref + "]" ) )
|
|
}
|
|
|
|
void function PrintItem( ItemData item, int indentLevel = 0 )
|
|
{
|
|
print( TableIndent( indentLevel ) )
|
|
|
|
printt( "itemType =", item.itemType )
|
|
printt( "ref =", item.ref )
|
|
|
|
printt( "name =", item.name )
|
|
printt( "desc =", item.desc )
|
|
printt( "longdesc =", item.longdesc )
|
|
printt( "image =", item.image )
|
|
|
|
printt( "hidden =", item.hidden )
|
|
|
|
printt( "persistenceStruct =", item.persistenceStruct )
|
|
printt( "persistenceId =", item.persistenceId )
|
|
|
|
foreach ( itemRef, _ in item.subitems )
|
|
{
|
|
PrintItem( GetItemData( itemRef ), indentLevel + 1 )
|
|
}
|
|
|
|
PrintTable( item.i )
|
|
}
|
|
|
|
void function PrintItemData()
|
|
{
|
|
foreach ( ItemData item in file.itemData )
|
|
{
|
|
PrintItem( item, 0 )
|
|
}
|
|
}
|
|
|
|
void function PrintItems()
|
|
{
|
|
foreach ( itemType, refList in file.itemsOfType )
|
|
{
|
|
printt( itemType )
|
|
foreach ( ref in refList )
|
|
{
|
|
printt( " " + ref )
|
|
}
|
|
}
|
|
}
|
|
|
|
string function GetDisplayNameFromItemType( int itemType )
|
|
{
|
|
string displayName
|
|
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
displayName = "#PILOT_PRIMARY"
|
|
break
|
|
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
displayName = "#PILOT_SECONDARY"
|
|
break
|
|
|
|
case eItemTypes.PILOT_WEAPON3:
|
|
displayName = "#PILOT_WEAPON3"
|
|
break
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
displayName = "#TACTICAL_ABILITY"
|
|
break
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
displayName = "#DEFENSIVE_ABILITY"
|
|
break
|
|
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
displayName = "#TACTICAL_ABILITY"
|
|
break
|
|
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
displayName = "#ORDNANCE"
|
|
break
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
displayName = "#PILOT_KIT1"
|
|
break
|
|
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
displayName = "#PILOT_KIT2"
|
|
break
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
displayName = "#TITAN_GENERAL_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
displayName = "#TITAN_TITANFALL_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
displayName = "#TITAN_RONIN_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
displayName = "#TITAN_NORTHSTAR_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
displayName = "#TITAN_ION_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
displayName = "#TITAN_TONE_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
displayName = "#TITAN_SCORCH_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
displayName = "#TITAN_LEGION_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
displayName = "#TITAN_VANGUARD_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
displayName = "#TITAN_UPGRADE1_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
displayName = "#TITAN_UPGRADE2_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
displayName = "#TITAN_UPGRADE3_PASSIVE_TITLE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_OS:
|
|
displayName = "#VOICE"
|
|
break
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
displayName = "#NOSE_ART"
|
|
break
|
|
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
displayName = "#ITEM_TYPE_WEAPON_ATTACHMENT"
|
|
break
|
|
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.TITAN_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
displayName = "#ITEM_TYPE_WEAPON_MOD"
|
|
break
|
|
|
|
case eItemTypes.TITAN:
|
|
displayName = "#CHASSIS"
|
|
break
|
|
|
|
case eItemTypes.RACE:
|
|
displayName = "#GENDER"
|
|
break
|
|
|
|
case eItemTypes.PILOT_MELEE:
|
|
displayName = "#MELEE"
|
|
break
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
displayName = "#ITEM_TYPE_PILOT_EXECUTION"
|
|
break
|
|
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
displayName = "#ITEM_TYPE_TITAN_EXECUTION"
|
|
break
|
|
|
|
default:
|
|
Assert( false, "Invalid item itemType!" )
|
|
}
|
|
|
|
return displayName
|
|
}
|
|
|
|
int function GetStatUnlockSort( ItemDisplayData a, ItemDisplayData b )
|
|
{
|
|
table aAdditionalData
|
|
table bAdditionalData
|
|
|
|
int itemType = GetItemType( a.ref )
|
|
if ( IsSubItemType( itemType ) )
|
|
{
|
|
aAdditionalData = file.unlocks[ a.parentRef ].child[ a.ref ].additionalData
|
|
bAdditionalData = file.unlocks[ b.parentRef ].child[ b.ref ].additionalData
|
|
}
|
|
else
|
|
{
|
|
aAdditionalData = file.unlocks[ a.ref ].additionalData
|
|
bAdditionalData = file.unlocks[ b.ref ].additionalData
|
|
}
|
|
|
|
string aStatCategory = expect string( aAdditionalData.statCategory )
|
|
string aStatAlias = expect string( aAdditionalData.statAlias )
|
|
string aStatSubAlias = expect string( aAdditionalData.statSubAlias )
|
|
var aUnlockValue = aAdditionalData.statUnlockValue
|
|
|
|
string bStatCategory = expect string( bAdditionalData.statCategory )
|
|
string bStatAlias = expect string( bAdditionalData.statAlias )
|
|
string bStatSubAlias = expect string( bAdditionalData.statSubAlias )
|
|
var bUnlockValue = bAdditionalData.statUnlockValue
|
|
|
|
if ( aStatCategory > bStatCategory )
|
|
return 1
|
|
else if ( aStatCategory < bStatCategory )
|
|
return -1
|
|
|
|
if ( aStatAlias > bStatAlias )
|
|
return 1
|
|
else if ( aStatAlias < bStatAlias )
|
|
return -1
|
|
|
|
if ( aUnlockValue > bUnlockValue )
|
|
return 1
|
|
else if ( aUnlockValue < bUnlockValue )
|
|
return -1
|
|
|
|
return 0
|
|
}
|
|
|
|
int function SortItemsAlphabetically( ItemDisplayData a, ItemDisplayData b )
|
|
{
|
|
if ( a.name > b.name )
|
|
return 1
|
|
|
|
if ( a.name < b.name )
|
|
return -1
|
|
|
|
return 0
|
|
}
|
|
|
|
int function SortByUnlockLevelUntyped( ItemDisplayData a, ItemDisplayData b )
|
|
{
|
|
if ( a.ref == b.ref )
|
|
return 0
|
|
|
|
int aUnlockLevel
|
|
int bUnlockLevel
|
|
int itemType = GetItemType( a.ref )
|
|
if ( IsSubItemType( itemType ) )
|
|
{
|
|
aUnlockLevel = GetUnlockLevelReqWithParent( a.ref, a.parentRef )
|
|
bUnlockLevel = GetUnlockLevelReqWithParent( b.ref, b.parentRef )
|
|
}
|
|
else
|
|
{
|
|
aUnlockLevel = GetUnlockLevelReq( a.ref )
|
|
bUnlockLevel = GetUnlockLevelReq( b.ref )
|
|
}
|
|
|
|
if ( aUnlockLevel == 0 && bUnlockLevel > 0 )
|
|
return 1
|
|
else if ( aUnlockLevel > 0 && bUnlockLevel == 0 )
|
|
return -1
|
|
|
|
if ( aUnlockLevel > bUnlockLevel )
|
|
return 1
|
|
else if ( aUnlockLevel < bUnlockLevel )
|
|
return -1
|
|
|
|
int aUnlockType = CheckItemUnlockType( a.ref, a.parentRef )
|
|
int bUnlockType = CheckItemUnlockType( b.ref, b.parentRef )
|
|
|
|
if ( aUnlockType > bUnlockType )
|
|
return 1
|
|
else if ( aUnlockType < bUnlockType )
|
|
return -1
|
|
|
|
if ( aUnlockType == bUnlockType && aUnlockType == eUnlockType.STAT )
|
|
return GetStatUnlockSort( a, b )
|
|
|
|
if ( a.persistenceId > b.persistenceId )
|
|
return 1
|
|
else
|
|
return -1
|
|
|
|
unreachable
|
|
}
|
|
|
|
int function SortByUnlockLevel( GlobalItemRef a, GlobalItemRef b )
|
|
{
|
|
if ( a.ref == b.ref )
|
|
return 0
|
|
|
|
int aUnlockLevel = GetUnlockLevelReq( a.ref )
|
|
int bUnlockLevel = GetUnlockLevelReq( b.ref )
|
|
|
|
if ( aUnlockLevel > bUnlockLevel )
|
|
return 1
|
|
else if ( aUnlockLevel < bUnlockLevel )
|
|
return -1
|
|
|
|
if ( a.guid > b.guid )
|
|
return 1
|
|
else
|
|
return -1
|
|
|
|
unreachable
|
|
}
|
|
|
|
bool function IsTitanOSUnlocked( ref, player )
|
|
{
|
|
return true
|
|
}
|
|
|
|
bool function IsDecalUnlocked( ref, player = null )
|
|
{
|
|
Assert( ref == ref.tolower() )
|
|
|
|
local decalUnlockData = GetPlayerDecalUnlockData( player, ref )
|
|
return expect bool( decalUnlockData.unlocked )
|
|
}
|
|
|
|
function GetPlayerDecalUnlockData( player, ref )
|
|
{
|
|
Assert( IsUI() || IsValid( player ) )
|
|
|
|
local data = {}
|
|
data.unlocked <- true
|
|
data.goal <- 0
|
|
data.progress <- 0
|
|
data.dlcGroup <- 0
|
|
data.unlockText <- ""
|
|
|
|
return data
|
|
}
|
|
|
|
// TODO: Default "pretend" attachments shouldn't be baked into weapons.
|
|
// Because of this, we don't have real items for everything in order to make this work the right way.
|
|
// Should be a real attachment as all others and we can flag it as default in some way.
|
|
asset function GetStockAttachmentImage( string itemRef )
|
|
{
|
|
Assert( GetItemType( itemRef ) == eItemTypes.PILOT_PRIMARY )
|
|
|
|
switch ( itemRef )
|
|
{
|
|
case "mp_weapon_dmr":
|
|
case "mp_weapon_sniper":
|
|
return $"r2_ui/menus/loadout_icons/attachments/stock_scope"
|
|
|
|
case "mp_weapon_doubletake":
|
|
return $"r2_ui/menus/loadout_icons/attachments/stock_doubletake_sight"
|
|
|
|
case "mp_weapon_rspn101_og":
|
|
return $"r2_ui/menus/loadout_icons/attachments/aog"
|
|
}
|
|
|
|
return $"r2_ui/menus/loadout_icons/attachments/iron_sights"
|
|
}
|
|
|
|
string function GetSuitAndGenderBasedSetFile( string suit, string gender )
|
|
{
|
|
Assert( gender == "race_human_male" ||
|
|
gender == "race_human_female" )
|
|
|
|
bool isFemale = gender == RACE_HUMAN_FEMALE
|
|
|
|
string genderString
|
|
if ( isFemale )
|
|
genderString = "female"
|
|
else
|
|
genderString = "male"
|
|
|
|
// pilot_medium_male
|
|
// pilot_geist_male
|
|
// pilot_stalker_male
|
|
// pilot_light_male
|
|
// pilot_heavy_male
|
|
// pilot_grapple_male
|
|
// pilot_nomad_male
|
|
// pilot_medium_female
|
|
// pilot_geist_female
|
|
// pilot_stalker_female
|
|
// pilot_light_female
|
|
// pilot_heavy_female
|
|
// pilot_grapple_female
|
|
// pilot_nomad_female
|
|
return "pilot_" + suit + "_" + genderString
|
|
}
|
|
|
|
string function GetSuitBasedTactical( string suit )
|
|
{
|
|
return GetTableValueForSuit( suit, "tactical" )
|
|
}
|
|
|
|
//string function GetSuitBasedDefaultPassive( string suit, string propertyName )
|
|
//{
|
|
// Assert( propertyName == "passive1" || propertyName == "passive2" )
|
|
//
|
|
// string value
|
|
// if ( propertyName == "passive1" )
|
|
// value = GetTableValueForSuit( suit, "defaultPassive1" )
|
|
// else
|
|
// value = GetTableValueForSuit( suit, "defaultPassive2" )
|
|
//
|
|
// return value
|
|
//}
|
|
|
|
string function GetTableValueForSuit( string suit, string columnName )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/pilot_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "type" ), suit )
|
|
int column = GetDataTableColumnByName( dataTable, columnName )
|
|
string value = GetDataTableString( dataTable, row, column )
|
|
|
|
return value
|
|
}
|
|
|
|
int function GetTitanLoadoutPropertyPassiveType( string setFile, string loadoutProperty )
|
|
{
|
|
Assert( loadoutProperty == "passive1" || loadoutProperty == "passive2" || loadoutProperty == "passive3" || loadoutProperty == "passive4" || loadoutProperty == "passive5" || loadoutProperty == "passive6")
|
|
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "setFile" ), setFile )
|
|
int column = GetDataTableColumnByName( dataTable, loadoutProperty )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, row, column ) ]
|
|
|
|
return itemType
|
|
}
|
|
|
|
int function GetTitanLoadoutPropertyExecutionType( string setFile, string loadoutProperty )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "setFile" ), setFile )
|
|
int column = GetDataTableColumnByName( dataTable, loadoutProperty )
|
|
int itemType = eItemTypes[ GetDataTableString( dataTable, row, column ) ]
|
|
|
|
return itemType
|
|
}
|
|
|
|
string function GetPrimeTitanSetFileFromNonPrimeSetFile( string nonPrimeSetFile ) //TODO: should just load titan_properties into memory instead of run-time lookup
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "setFile" ), nonPrimeSetFile )
|
|
int column = GetDataTableColumnByName( dataTable, "primeSetFile" )
|
|
return GetDataTableString( dataTable, row, column )
|
|
}
|
|
|
|
string function GetTitanProperty_SetFile( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "setFile" ) )
|
|
}
|
|
|
|
int function GetTitanProperty_Passive1Type( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return eItemTypes[ GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "passive1" ) ) ]
|
|
}
|
|
|
|
int function GetTitanProperty_Passive2Type( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return eItemTypes[ GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "passive2" ) ) ]
|
|
}
|
|
|
|
int function GetTitanProperty_Passive3Type( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return eItemTypes[ GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "passive3" ) ) ]
|
|
}
|
|
|
|
int function GetTitanProperty_Passive4Type( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return eItemTypes[ GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "passive4" ) ) ]
|
|
}
|
|
|
|
int function GetTitanProperty_Passive5Type( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return eItemTypes[ GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "passive5" ) ) ]
|
|
}
|
|
|
|
int function GetTitanProperty_Passive6Type( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "titanRef" ), titanRef )
|
|
|
|
return eItemTypes[ GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "passive6" ) ) ]
|
|
}
|
|
|
|
asset function GetTitanCoreIcon( string titanRef )
|
|
{
|
|
Assert( GetItemType( titanRef ) == eItemTypes.TITAN )
|
|
ItemData itemData = GetItemData( titanRef )
|
|
|
|
return expect asset( itemData.i.coreIcon )
|
|
}
|
|
|
|
|
|
string function GetWeaponBasedDefaultMod( string weapon, string propertyName )
|
|
{
|
|
Assert( propertyName == "primaryAttachment" ||
|
|
propertyName == "primaryMod1" ||
|
|
propertyName == "primaryMod2" ||
|
|
propertyName == "primaryMod3" ||
|
|
propertyName == "secondaryMod1" ||
|
|
propertyName == "secondaryMod2" ||
|
|
propertyName == "secondaryMod3" ||
|
|
propertyName == "weapon3Mod1" ||
|
|
propertyName == "weapon3Mod2" ||
|
|
propertyName == "weapon3Mod3" )
|
|
|
|
string columnName
|
|
if ( propertyName == "primaryAttachment" )
|
|
columnName = "defaultAttachment"
|
|
else if ( propertyName == "primaryMod1" || propertyName == "secondaryMod1" || propertyName == "weapon3Mod1" )
|
|
columnName = "defaultMod1"
|
|
else if ( propertyName == "primaryMod2" || propertyName == "secondaryMod2" || propertyName == "weapon3Mod2" )
|
|
columnName = "defaultMod2"
|
|
else
|
|
columnName = "defaultMod3"
|
|
|
|
string value = GetTableValueForWeapon( weapon, columnName )
|
|
|
|
return value
|
|
}
|
|
|
|
string function GetTableValueForWeapon( string weapon, string columnName )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/pilot_weapons.rpak" )
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, GetDataTableColumnByName( dataTable, "itemRef" ), weapon )
|
|
int column = GetDataTableColumnByName( dataTable, columnName )
|
|
string value = GetDataTableString( dataTable, row, column )
|
|
|
|
return value
|
|
}
|
|
|
|
void function CheckEverythingUnlockedAchievement( entity player )
|
|
{
|
|
Assert( IsServer() )
|
|
|
|
//if ( !IsValid( player ) || !player.IsPlayer() )
|
|
// return
|
|
//if ( player.IsBot() )
|
|
// return
|
|
//
|
|
//if ( player.GetPersistentVar( "ach_unlockEverything" ) )
|
|
// return
|
|
//
|
|
//foreach ( item in file.allItems )
|
|
//{
|
|
// if ( item.Type == eItemTypes.TITAN_NOSE_ART )
|
|
// continue
|
|
//
|
|
// if ( IsParentItemLocked( item.ref, item.childRef, player ) )
|
|
// return
|
|
//}
|
|
//
|
|
//player.SetPersistentVar( "ach_unlockEverything", true )
|
|
}
|
|
|
|
ItemData ornull function DevFindItemByName( int itemType, string itemName )
|
|
{
|
|
array<ItemData> items = GetAllItemsOfType( itemType )
|
|
foreach ( item in items )
|
|
{
|
|
if ( item.ref == itemName )
|
|
{
|
|
return item
|
|
}
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
int function MenuCategoryStringToEnumValue( string stringVal )
|
|
{
|
|
int enumVal = -1
|
|
|
|
switch ( stringVal )
|
|
{
|
|
case "ar":
|
|
enumVal = ePrimaryWeaponCategory.AR
|
|
break
|
|
|
|
case "smg":
|
|
enumVal = ePrimaryWeaponCategory.SMG
|
|
break
|
|
|
|
case "lmg":
|
|
enumVal = ePrimaryWeaponCategory.LMG
|
|
break
|
|
|
|
case "sniper":
|
|
enumVal = ePrimaryWeaponCategory.SNIPER
|
|
break
|
|
|
|
case "shotgun":
|
|
enumVal = ePrimaryWeaponCategory.SHOTGUN
|
|
break
|
|
|
|
case "handgun":
|
|
enumVal = ePrimaryWeaponCategory.HANDGUN
|
|
break
|
|
|
|
case "special":
|
|
enumVal = ePrimaryWeaponCategory.SPECIAL
|
|
break
|
|
|
|
case "at":
|
|
enumVal = eSecondaryWeaponCategory.AT
|
|
break
|
|
|
|
case "pistol":
|
|
enumVal = eSecondaryWeaponCategory.PISTOL
|
|
break
|
|
|
|
default:
|
|
Assert( 0, "Unknown stringVal: " + stringVal )
|
|
}
|
|
|
|
return enumVal
|
|
}
|
|
|
|
int function MenuAnimClassStringToEnumValue( string stringVal )
|
|
{
|
|
int enumVal = -1
|
|
|
|
switch ( stringVal )
|
|
{
|
|
case "small":
|
|
enumVal = eMenuAnimClass.SMALL
|
|
break
|
|
|
|
case "medium":
|
|
enumVal = eMenuAnimClass.MEDIUM
|
|
break
|
|
|
|
case "large":
|
|
enumVal = eMenuAnimClass.LARGE
|
|
break
|
|
|
|
case "custom":
|
|
enumVal = eMenuAnimClass.CUSTOM
|
|
break
|
|
|
|
default:
|
|
Assert( 0, "Unknown stringVal: " + stringVal )
|
|
}
|
|
|
|
return enumVal
|
|
}
|
|
|
|
asset function GetImage( int itemType, string itemRef, string childRef = "" )
|
|
{
|
|
asset image
|
|
|
|
if ( itemRef == "" )
|
|
return image
|
|
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
if ( childRef == "none" || childRef == "" )
|
|
{
|
|
if ( itemType == eItemTypes.PILOT_PRIMARY_ATTACHMENT )
|
|
image = GetStockAttachmentImage( itemRef )
|
|
else
|
|
image = MOD_ICON_NONE
|
|
}
|
|
else
|
|
{
|
|
image = GetSubitemImage( itemRef, childRef )
|
|
}
|
|
break
|
|
|
|
case eItemTypes.RACE:
|
|
Assert( itemRef == "race_human_male" || itemRef == "race_human_female" )
|
|
if ( itemRef == "race_human_male" )
|
|
image = $"rui/menu/common/gender_button_male"
|
|
else
|
|
image = $"rui/menu/common/gender_button_female"
|
|
break
|
|
|
|
default:
|
|
image = GetItemImage( itemRef )
|
|
}
|
|
|
|
return image
|
|
}
|
|
|
|
array<string> function GetAllWeaponsByType( array<int> weaponTypes )
|
|
{
|
|
array<string> weapons
|
|
foreach ( weaponType in weaponTypes )
|
|
{
|
|
foreach ( weapon in GetAllItemRefsOfType( weaponType ) )
|
|
{
|
|
// mp puts weapons into its list multiple times
|
|
if ( weapons.contains( weapon ) )
|
|
continue
|
|
weapons.append( weapon )
|
|
}
|
|
}
|
|
return weapons
|
|
}
|
|
|
|
string function GetItemRefTypeName( string itemRef, string parentItemRef = "" )
|
|
{
|
|
int itemType = GetItemType( itemRef )
|
|
int parentItemType = parentItemRef != "" ? GetItemType( parentItemRef ) : -1
|
|
|
|
if ( itemType == eItemTypes.FEATURE )
|
|
{
|
|
ItemData featureItem = GetItemData( itemRef )
|
|
return expect string( featureItem.i.specificType )
|
|
}
|
|
else if ( itemType == eItemTypes.TITAN_FD_UPGRADE )
|
|
{
|
|
ItemData item = GetItemData( itemRef )
|
|
return expect string( item.i.upgradeTypeCategory )
|
|
}
|
|
|
|
return GetItemTypeName( itemType, parentItemType )
|
|
}
|
|
|
|
string function GetItemTypeName( int itemType, int parentItemType = -1 )
|
|
{
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
return "#ITEM_TYPE_PILOT_PRIMARY"
|
|
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
return "#ITEM_TYPE_TITAN_PRIMARY"
|
|
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
return "#ITEM_TYPE_PILOT_SECONDARY"
|
|
|
|
case eItemTypes.PILOT_SPECIAL:
|
|
return "#ITEM_TYPE_PILOT_SPECIAL"
|
|
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
return "#ITEM_TYPE_TITAN_SPECIAL"
|
|
|
|
case eItemTypes.PILOT_ORDNANCE:
|
|
return "#ITEM_TYPE_PILOT_ORDNANCE"
|
|
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
return "#ITEM_TYPE_TITAN_ORDNANCE"
|
|
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
return "#ITEM_TYPE_TITAN_ANTIRODEO"
|
|
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
if ( parentItemType != -1 )
|
|
return "#ITEM_TYPE_WEAPON_SPECIFIC_ATTACHMENT"
|
|
else
|
|
return "#ITEM_TYPE_WEAPON_GENERIC_ATTACHMENT"
|
|
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.TITAN_PRIMARY_MOD:
|
|
if ( parentItemType != -1 )
|
|
return "#ITEM_TYPE_WEAPON_SPECIFIC_MOD"
|
|
else
|
|
return "#ITEM_TYPE_WEAPON_GENERIC_MOD"
|
|
|
|
case eItemTypes.CALLING_CARD:
|
|
return "#ITEM_TYPE_CALLING_CARD"
|
|
|
|
case eItemTypes.CAMO_SKIN_PILOT:
|
|
return "#ITEM_TYPE_CAMO_SKIN_PILOT"
|
|
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
if ( parentItemType != -1 )
|
|
return "#ITEM_TYPE_SPECIFIC_CAMO"
|
|
else
|
|
return "#ITEM_TYPE_CAMO_SKIN_TITAN"
|
|
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
return "#ITEM_TYPE_TITAN_WARPAINT"
|
|
|
|
case eItemTypes.CAMO_SKIN:
|
|
if ( parentItemType != -1 )
|
|
{
|
|
if ( parentItemType == eItemTypes.TITAN )
|
|
return "#ITEM_TYPE_SPECIFIC_WEAPON_CAMO"
|
|
else
|
|
return "#ITEM_TYPE_SPECIFIC_CAMO"
|
|
}
|
|
else
|
|
return "#ITEM_TYPE_CAMO_SKIN"
|
|
|
|
case eItemTypes.CALLSIGN_ICON:
|
|
return "#ITEM_TYPE_CALLSIGN_ICON"
|
|
|
|
case eItemTypes.BURN_METER_REWARD:
|
|
return "#ITEM_TYPE_BURN_METER_REWARD"
|
|
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
if ( parentItemType != -1 )
|
|
return "#ITEM_TYPE_TITAN_SPECIFIC_KIT"
|
|
else
|
|
return "#ITEM_TYPE_TITAN_GENERIC_KIT"
|
|
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
return "#ITEM_TYPE_UPGRADE1"
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
return "#ITEM_TYPE_UPGRADE2"
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
return "#ITEM_TYPE_UPGRADE3"
|
|
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
return "#ITEM_TYPE_TITAN_GENERAL_PASSIVE"
|
|
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
return "#ITEM_TYPE_TITAN_TITANFALL_PASSIVE"
|
|
|
|
case eItemTypes.TITAN:
|
|
return "#ITEM_TYPE_TITAN"
|
|
|
|
case eItemTypes.RACE:
|
|
return "#GENDER"
|
|
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
return "#ITEM_TYPE_TITAN_NOSE_ART"
|
|
|
|
case eItemTypes.PILOT_EXECUTION:
|
|
return "#ITEM_TYPE_PILOT_EXECUTION"
|
|
|
|
case eItemTypes.TITAN_ION_EXECUTION:
|
|
case eItemTypes.TITAN_SCORCH_EXECUTION:
|
|
case eItemTypes.TITAN_RONIN_EXECUTION:
|
|
case eItemTypes.TITAN_LEGION_EXECUTION:
|
|
case eItemTypes.TITAN_VANGUARD_EXECUTION:
|
|
case eItemTypes.TITAN_TONE_EXECUTION:
|
|
case eItemTypes.TITAN_NORTHSTAR_EXECUTION:
|
|
if ( parentItemType != -1 )
|
|
return "#ITEM_TYPE_TITAN_SPECIFIC_EXECUTION"
|
|
else
|
|
return "#ITEM_TYPE_TITAN_EXECUTION"
|
|
|
|
case eItemTypes.PILOT_PASSIVE1:
|
|
case eItemTypes.PILOT_PASSIVE2:
|
|
return "#ITEM_TYPE_PILOT_PASSIVE"
|
|
|
|
case eItemTypes.FACTION:
|
|
return "#ITEM_TYPE_FACTION"
|
|
|
|
case eItemTypes.FEATURE:
|
|
return "#ITEM_TYPE_FEATURE"
|
|
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
return "#ITEM_TYPE_WEAPON_FEATURE"
|
|
|
|
case eItemTypes.PILOT_SUIT:
|
|
return "#ITEM_TYPE_PILOT_SPECIAL"
|
|
|
|
case eItemTypes.COMMS_ICON:
|
|
return "#ITEM_TYPE_COMMS_ICON"
|
|
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
return "#ITEM_TYPE_FD_UPGRADES"
|
|
|
|
default:
|
|
#if DEV
|
|
Assert( false, "Invalid item type: " + DEV_GetEnumStringFromIndex( "eItemTypes", itemType) )
|
|
#endif
|
|
}
|
|
|
|
return "UNDEFINED"
|
|
}
|
|
|
|
/*
|
|
PILOT_PRIMARY,
|
|
PILOT_SECONDARY,
|
|
PILOT_SPECIAL,
|
|
PILOT_ORDNANCE,
|
|
PILOT_PRIMARY_ATTACHMENT,
|
|
PILOT_PRIMARY_MOD,
|
|
PILOT_SECONDARY_MOD,
|
|
PILOT_PASSIVE1,
|
|
PILOT_PASSIVE2,
|
|
TITAN_PRIMARY,
|
|
TITAN_SPECIAL,
|
|
TITAN_ANTIRODEO,
|
|
TITAN_ORDNANCE,
|
|
TITAN_PRIMARY_MOD,
|
|
TITAN_OS,
|
|
RACE,
|
|
NOT_LOADOUT,
|
|
TITAN_NOSE_ART,
|
|
PILOT_SUIT,
|
|
TITAN_CORE_ABILITY,
|
|
BURN_METER_REWARD,
|
|
PILOT_MELEE,
|
|
TITAN,
|
|
FEATURE,
|
|
CALLING_CARD,
|
|
CALLSIGN_ICON,
|
|
CAMO_SKIN,
|
|
CAMO_SKIN_PILOT,
|
|
CAMO_SKIN_TITAN,
|
|
SUB_PILOT_WEAPON_MOD,
|
|
SUB_PILOT_WEAPON_ATTACHMENT,
|
|
FACTION,
|
|
PILOT_EXECUTION,
|
|
TITAN_GENERAL_PASSIVE,
|
|
TITAN_TITANFALL_PASSIVE,
|
|
TITAN_RONIN_PASSIVE,
|
|
TITAN_NORTHSTAR_PASSIVE,
|
|
TITAN_ION_PASSIVE,
|
|
TITAN_TONE_PASSIVE,
|
|
TITAN_SCORCH_PASSIVE,
|
|
TITAN_LEGION_PASSIVE,
|
|
*/
|
|
|
|
void function ItemReport()
|
|
{
|
|
table itemTypesEnum = expect table( getconsttable().eItemTypes )
|
|
|
|
array<string> itemTypeIndexToName
|
|
itemTypeIndexToName.resize( itemTypesEnum.len(), "UNDEFINED" )
|
|
foreach ( name, index in itemTypesEnum )
|
|
{
|
|
expect int( index )
|
|
itemTypeIndexToName[index] = string( name )
|
|
}
|
|
|
|
array<GlobalItemRef> allItemsRefData = GetAllItemRefs()
|
|
|
|
table<string, int> subItemRefs
|
|
|
|
printt( "ITEM REPORT:" )
|
|
foreach ( typeIndex, typeName in itemTypeIndexToName )
|
|
{
|
|
if ( typeName == "COUNT" )
|
|
continue
|
|
|
|
printt( typeName )
|
|
array<string> itemRefs = GetAllItemRefsOfType( typeIndex )
|
|
foreach ( itemRef in itemRefs )
|
|
{
|
|
ItemData itemData = GetItemData( itemRef )
|
|
if ( itemRef in subItemRefs )
|
|
{
|
|
printt( itemRef, itemData.persistenceId, "use count: ", subItemRefs[itemRef] )
|
|
Assert( !(itemRef in file.unlocks) )
|
|
}
|
|
else
|
|
printt( itemRef, itemData.persistenceId, itemData.persistenceStruct )
|
|
|
|
foreach ( subItemRef, subItemData in itemData.subitems )
|
|
{
|
|
printt( "\t", subItemRef )
|
|
if ( !(subItemRef in subItemRefs) )
|
|
{
|
|
subItemRefs[subItemRef] <- 0
|
|
}
|
|
|
|
subItemRefs[subItemRef]++
|
|
}
|
|
}
|
|
|
|
printt( "\n" )
|
|
}
|
|
}
|
|
|
|
|
|
void function UnlockReport()
|
|
{
|
|
table itemTypesEnum = expect table( getconsttable().eItemTypes )
|
|
table unlockTypesEnum = expect table( getconsttable().eUnlockType )
|
|
|
|
array<string> unlockIndexToName
|
|
unlockIndexToName.resize( unlockTypesEnum.len(), "UNDEFINED" )
|
|
foreach ( name, index in unlockTypesEnum )
|
|
{
|
|
expect int( index )
|
|
unlockIndexToName[index] = string( name )
|
|
}
|
|
|
|
array<string> itemTypeIndexToName
|
|
itemTypeIndexToName.resize( itemTypesEnum.len(), "UNDEFINED" )
|
|
foreach ( name, index in itemTypesEnum )
|
|
{
|
|
expect int( index )
|
|
itemTypeIndexToName[index] = string( name )
|
|
}
|
|
|
|
array<GlobalItemRef> allItemsRefData = GetAllItemRefs()
|
|
|
|
foreach ( typeIndex, typeName in itemTypeIndexToName )
|
|
{
|
|
if ( typeName == "COUNT" )
|
|
continue
|
|
|
|
printt( typeName )
|
|
|
|
switch ( typeIndex )
|
|
{
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
continue
|
|
}
|
|
|
|
array<string> itemRefs = GetAllItemRefsOfType( typeIndex )
|
|
foreach ( itemRef in itemRefs )
|
|
{
|
|
ItemData itemData = GetItemData( itemRef )
|
|
if ( itemRef in file.unlocks )
|
|
{
|
|
printt( "\t", itemRef, unlockIndexToName[file.unlocks[itemRef].unlockType] )
|
|
|
|
foreach ( subItemRef, subItemData in itemData.subitems )
|
|
{
|
|
if ( !(subItemRef in file.unlocks[itemRef].child ) )
|
|
{
|
|
CodeWarning( typeName + " " + itemRef + " contains subitem " + subItemRef + " but does not unlock it." )
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bool found = false
|
|
foreach ( ref, unlockData in file.unlocks )
|
|
{
|
|
if ( !ItemDefined( ref ) )
|
|
continue
|
|
|
|
if ( itemRef in unlockData.child )
|
|
{
|
|
found = true
|
|
printt( "\t", itemRef, ref, unlockIndexToName[unlockData.child[itemRef].unlockType] )
|
|
break
|
|
}
|
|
}
|
|
|
|
if ( !found )
|
|
printt( "\t", itemRef, "***" )
|
|
}
|
|
}
|
|
printt( "\n" )
|
|
}
|
|
/*
|
|
foreach ( ref, unlockData in file.unlocks )
|
|
{
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
printt( "bogus unlock ref:", ref )
|
|
continue
|
|
}
|
|
|
|
ItemData itemData = GetItemData( ref )
|
|
}
|
|
|
|
foreach ( ref, unlockData in file.unlocks )
|
|
{
|
|
if ( !ItemDefined( ref ) )
|
|
{
|
|
printt( "bogus unlock ref:", ref )
|
|
printt( "\t", itemRef, unlockIndexToName[file.unlocks[itemRef].unlockType] )
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
void function UnlockDump()
|
|
{
|
|
table itemTypesEnum = expect table( getconsttable().eItemTypes )
|
|
table unlockTypesEnum = expect table( getconsttable().eUnlockType )
|
|
|
|
array<string> unlockIndexToName
|
|
unlockIndexToName.resize( unlockTypesEnum.len(), "UNDEFINED" )
|
|
foreach ( name, index in unlockTypesEnum )
|
|
{
|
|
expect int( index )
|
|
unlockIndexToName[index] = string( name )
|
|
}
|
|
|
|
array<string> itemTypeIndexToName
|
|
itemTypeIndexToName.resize( itemTypesEnum.len(), "UNDEFINED" )
|
|
foreach ( name, index in itemTypesEnum )
|
|
{
|
|
expect int( index )
|
|
itemTypeIndexToName[index] = string( name )
|
|
}
|
|
|
|
foreach ( ref, unlock in file.unlocks )
|
|
{
|
|
printt( ref, DEV_GetEnumStringFromIndex( "eUnlockType", unlock.unlockType ), unlock.unlockLevel )
|
|
|
|
foreach ( childRef, child in unlock.child )
|
|
{
|
|
printt( "\t", childRef, DEV_GetEnumStringFromIndex( "eUnlockType", child.unlockType ), child.unlockLevel )
|
|
}
|
|
}
|
|
/*
|
|
|
|
switch ( typeIndex )
|
|
{
|
|
case eItemTypes.TITAN_SPECIAL:
|
|
case eItemTypes.TITAN_ANTIRODEO:
|
|
case eItemTypes.TITAN_ORDNANCE:
|
|
continue
|
|
}
|
|
|
|
array<string> itemRefs = GetAllItemRefsOfType( typeIndex )
|
|
foreach ( itemRef in itemRefs )
|
|
{
|
|
ItemData itemData = GetItemData( itemRef )
|
|
if ( itemRef in file.unlocks )
|
|
{
|
|
printt( "\t", itemRef, unlockIndexToName[file.unlocks[itemRef].unlockType] )
|
|
}
|
|
else
|
|
{
|
|
bool found = false
|
|
foreach ( ref, unlockData in file.unlocks )
|
|
{
|
|
if ( !ItemDefined( ref ) )
|
|
continue
|
|
|
|
if ( itemRef in unlockData.child )
|
|
{
|
|
found = true
|
|
printt( "\t", itemRef, ref, unlockIndexToName[unlockData.child[itemRef].unlockType] )
|
|
break
|
|
}
|
|
}
|
|
|
|
if ( !found )
|
|
printt( "\t", itemRef, "***" )
|
|
}
|
|
}
|
|
printt( "\n" )
|
|
}
|
|
*/
|
|
}
|
|
|
|
bool function IsSubItemType( int itemType )
|
|
{
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY_ATTACHMENT:
|
|
case eItemTypes.PILOT_PRIMARY_MOD:
|
|
case eItemTypes.PILOT_SECONDARY_MOD:
|
|
case eItemTypes.PILOT_WEAPON_MOD3:
|
|
case eItemTypes.TITAN_GENERAL_PASSIVE:
|
|
case eItemTypes.TITAN_TITANFALL_PASSIVE:
|
|
case eItemTypes.TITAN_RONIN_PASSIVE:
|
|
case eItemTypes.TITAN_NORTHSTAR_PASSIVE:
|
|
case eItemTypes.TITAN_ION_PASSIVE:
|
|
case eItemTypes.TITAN_TONE_PASSIVE:
|
|
case eItemTypes.TITAN_SCORCH_PASSIVE:
|
|
case eItemTypes.TITAN_LEGION_PASSIVE:
|
|
case eItemTypes.TITAN_VANGUARD_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE1_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE2_PASSIVE:
|
|
case eItemTypes.TITAN_UPGRADE3_PASSIVE:
|
|
case eItemTypes.TITAN_NOSE_ART:
|
|
case eItemTypes.PRIME_TITAN_NOSE_ART:
|
|
case eItemTypes.SUB_PILOT_WEAPON_ATTACHMENT:
|
|
case eItemTypes.SUB_PILOT_WEAPON_MOD:
|
|
case eItemTypes.CAMO_SKIN:
|
|
case eItemTypes.CAMO_SKIN_TITAN:
|
|
case eItemTypes.TITAN_WARPAINT:
|
|
case eItemTypes.WEAPON_FEATURE:
|
|
case eItemTypes.TITAN_FD_UPGRADE:
|
|
case eItemTypes.WEAPON_SKIN:
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
ItemDisplayData function GetItemDisplayData( string itemRef, string parentRef = "" )
|
|
{
|
|
if ( (parentRef + itemRef) in file.displayDataCache )
|
|
return file.displayDataCache[parentRef + itemRef]
|
|
|
|
ItemData itemData = GetItemData( itemRef )
|
|
ItemDisplayData displayData
|
|
|
|
if ( parentRef != "" && !IsItemRandom( itemRef ) )
|
|
{
|
|
Assert( IsSubItemType( itemData.itemType ) )
|
|
ItemData parentItem = GetItemData( parentRef )
|
|
|
|
displayData.itemType = parentItem.subitems[itemRef].itemType
|
|
displayData.i = clone parentItem.subitems[itemRef].i
|
|
}
|
|
else
|
|
{
|
|
Assert( !IsSubItemType( itemData.itemType ) )
|
|
displayData.itemType = itemData.itemType
|
|
displayData.i = clone itemData.i
|
|
}
|
|
|
|
displayData.name = itemData.name
|
|
displayData.desc = itemData.desc
|
|
displayData.longdesc = itemData.longdesc
|
|
displayData.image = itemData.image
|
|
displayData.hidden = itemData.hidden
|
|
displayData.ref = itemRef
|
|
displayData.parentRef = parentRef
|
|
displayData.imageAtlas = itemData.imageAtlas
|
|
displayData.persistenceId = itemData.persistenceId
|
|
|
|
file.displayDataCache[parentRef + itemRef] <- displayData
|
|
|
|
return displayData
|
|
}
|
|
|
|
|
|
bool function IsItemRandom( string itemRef )
|
|
{
|
|
if ( itemRef == "random" )
|
|
return true
|
|
|
|
if ( itemRef == "advocate_gift" )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
string function DEV_GetEnumStringFromIndex( string enumName, int enumIndex )
|
|
{
|
|
table enumTable = expect table( getconsttable()[enumName] )
|
|
|
|
foreach ( name, index in enumTable )
|
|
{
|
|
if ( index == enumIndex )
|
|
return string( name )
|
|
}
|
|
|
|
return "not found"
|
|
}
|
|
|
|
ItemDisplayData function GetItemDisplayDataFromGuid( int refGuid, int parentRefGuid = 0 )
|
|
{
|
|
string itemRef
|
|
string parentItemRef
|
|
|
|
for( int index = 0; index < file.allItems.len(); index++ )
|
|
{
|
|
GlobalItemRef globalItemRef = file.allItems[index]
|
|
|
|
if ( itemRef == "" && globalItemRef.guid == refGuid )
|
|
{
|
|
itemRef = globalItemRef.ref
|
|
if ( parentRefGuid == 0 || parentItemRef != "" )
|
|
break
|
|
}
|
|
else if ( parentItemRef == "" && parentRefGuid != 0 && globalItemRef.guid == parentRefGuid )
|
|
{
|
|
parentItemRef = globalItemRef.ref
|
|
if ( itemRef != "" )
|
|
break
|
|
}
|
|
}
|
|
|
|
Assert( itemRef != "" )
|
|
Assert( (parentRefGuid == 0 && parentItemRef == "") || parentItemRef != "" )
|
|
|
|
return GetItemDisplayData( itemRef, parentItemRef )
|
|
}
|
|
|
|
|
|
int function StringHash( string str )
|
|
{
|
|
int res = 0
|
|
int length = str.len()
|
|
for ( int i = 0; i < length; i++ )
|
|
{
|
|
res *= 31
|
|
res += expect int( str[i] )
|
|
}
|
|
return res
|
|
}
|
|
|
|
|
|
string function GetFullRef( string itemRef, string parentRef = "" )
|
|
{
|
|
if ( parentRef != "" )
|
|
return parentRef + "." + itemRef
|
|
else
|
|
return itemRef
|
|
|
|
unreachable
|
|
}
|
|
|
|
bool function IsItemInEntitlementUnlock( string itemRef, string parentRef = "" )
|
|
{
|
|
string fullRef = GetFullRef( itemRef, parentRef )
|
|
|
|
return fullRef in file.entitlementUnlocks
|
|
}
|
|
|
|
|
|
void function InitUnlockAsEntitlement( string itemRef, string parentRef, int entitlementId, string purchaseMenu = "" )
|
|
{
|
|
if ( IsDisabledRef( itemRef ) || IsDisabledRef( parentRef ) )
|
|
return
|
|
|
|
#if DEV
|
|
if ( parentRef == "" )
|
|
{
|
|
Assert( ItemDefined( itemRef ), itemRef + " does not exist but is being initialized as an entitlement" )
|
|
|
|
if ( itemRef in file.unlocks )
|
|
CodeWarning( parentRef + "." + itemRef + " already exists in Unlocks but is being initialized as an entitlement" )
|
|
}
|
|
else
|
|
{
|
|
Assert( SubitemDefined( parentRef, itemRef ), parentRef + "." + itemRef + " does not exist but is being initialized as an entitlement" )
|
|
|
|
if ( parentRef in file.unlocks && itemRef in file.unlocks[ parentRef ].child )
|
|
CodeWarning( parentRef + "." + itemRef + " already exists in Unlocks but is being initialized as an entitlement" )
|
|
}
|
|
|
|
if ( IsItemInRandomUnlocks( itemRef, parentRef ) )
|
|
CodeWarning( parentRef + "." + itemRef + " already exists in Random Unlocks but is being initialized as an entitlement" )
|
|
|
|
#endif
|
|
string fullRef = GetFullRef( itemRef, parentRef )
|
|
Unlock unlock
|
|
|
|
if ( !(fullRef in file.entitlementUnlocks) )
|
|
{
|
|
unlock.unlockType = eUnlockType.ENTITLEMENT
|
|
file.entitlementUnlocks[fullRef] <- unlock
|
|
unlock.purchaseData.purchaseMenu = purchaseMenu
|
|
}
|
|
else
|
|
{
|
|
unlock = file.entitlementUnlocks[fullRef]
|
|
}
|
|
|
|
unlock.entitlementIds.append( 1 ) // Using `1` here instead of the huge DLC check I did previously. Having the `1` seems to keep all paid cosmetics unlocked with progression enabled.
|
|
}
|
|
|
|
array<int> function GetEntitlementIds( string itemRef, string parentRef = "" )
|
|
{
|
|
string fullRef = GetFullRef( itemRef, parentRef )
|
|
|
|
Assert( fullRef in file.entitlementUnlocks )
|
|
|
|
return clone file.entitlementUnlocks[fullRef].entitlementIds
|
|
}
|
|
|
|
int function GetSortedIndex( string menuName, int elemNum )
|
|
{
|
|
if ( menuName in file.sortedElems )
|
|
return file.sortedElems[menuName][elemNum]
|
|
|
|
return elemNum
|
|
}
|
|
|
|
void function RefreshSortedElems( entity player, string menuName, int maxElems, ItemDisplayData functionref(int) getFunc )
|
|
{
|
|
if (!( menuName in file.sortedElems ))
|
|
{
|
|
file.sortedElems[menuName] <- []
|
|
}
|
|
|
|
file.sortedElems[menuName].clear()
|
|
array<int> new = []
|
|
array<int> locked = []
|
|
array<int> unlocked = []
|
|
for( int i=0; i<maxElems; i++ )
|
|
{
|
|
ItemDisplayData item = getFunc( i )
|
|
string ref = item.ref
|
|
if ( IsItemLocked( player, ref ) )
|
|
locked.append( i )
|
|
else if ( IsItemNew( player, ref, item.parentRef ) )
|
|
new.append( i )
|
|
else
|
|
unlocked.append( i )
|
|
}
|
|
file.sortedElems[menuName].extend( new )
|
|
file.sortedElems[menuName].extend( unlocked )
|
|
file.sortedElems[menuName].extend( locked )
|
|
}
|
|
#if SERVER
|
|
|
|
void function StatsCallback_ItemUnlockUpdate( entity player, float changeInValue, string itemRef )
|
|
{
|
|
Unlock unlock = file.unlocks[ itemRef ]
|
|
int statType = expect int( unlock.additionalData.statType )
|
|
string statVar = expect string( unlock.additionalData.statVar )
|
|
string statCategory = expect string( unlock.additionalData.statCategory )
|
|
string statAlias = expect string( unlock.additionalData.statAlias )
|
|
string statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
thread Stats_SaveStatDelayed( player, statCategory, statAlias, statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
{
|
|
int oldStatVal = GetPlayerStatInt( player, statCategory, statAlias, statSubAlias )
|
|
int deltaStatVal = PlayerStat_GetCurrentInt( player, statCategory, statAlias, statSubAlias )
|
|
|
|
if ( oldStatVal >= unlock.unlockIntVal )
|
|
return
|
|
|
|
if ( oldStatVal + deltaStatVal < unlock.unlockIntVal )
|
|
return
|
|
|
|
StatUnlock_Unlocked( player, itemRef, "", statCategory, statAlias, statSubAlias )
|
|
}
|
|
else
|
|
{
|
|
float oldStatVal = GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias )
|
|
float deltaStatVal = PlayerStat_GetCurrentFloat( player, statCategory, statAlias, statSubAlias )
|
|
|
|
if ( oldStatVal >= unlock.unlockFloatVal )
|
|
return
|
|
|
|
if ( oldStatVal + deltaStatVal < unlock.unlockFloatVal )
|
|
return
|
|
|
|
StatUnlock_Unlocked( player, itemRef, "", statCategory, statAlias, statSubAlias )
|
|
}
|
|
}
|
|
|
|
|
|
void function StatsCallback_SubItemUnlockUpdate( entity player, float changeInValue, string fullRef )
|
|
{
|
|
array<string> splitArray = SplitAndStripUnlockField( fullRef )
|
|
string itemRef = splitArray[0]
|
|
string parentRef = splitArray[1]
|
|
|
|
ChildUnlock unlock = file.unlocks[ parentRef ].child[itemRef]
|
|
int statType = expect int( unlock.additionalData.statType )
|
|
string statVar = expect string( unlock.additionalData.statVar )
|
|
string statCategory = expect string( unlock.additionalData.statCategory )
|
|
string statAlias = expect string( unlock.additionalData.statAlias )
|
|
string statSubAlias = expect string( unlock.additionalData.statSubAlias )
|
|
|
|
thread Stats_SaveStatDelayed( player, statCategory, statAlias, statSubAlias )
|
|
|
|
if ( statType == ePlayerStatType.INT )
|
|
{
|
|
int oldStatVal = GetPlayerStatInt( player, statCategory, statAlias, statSubAlias )
|
|
int curStatVal = PlayerStat_GetCurrentInt( player, statCategory, statAlias, statSubAlias )
|
|
|
|
if ( oldStatVal >= unlock.unlockIntVal )
|
|
return
|
|
|
|
if ( oldStatVal + curStatVal < unlock.unlockIntVal )
|
|
return
|
|
|
|
StatUnlock_Unlocked( player, itemRef, parentRef, statCategory, statAlias, statSubAlias )
|
|
}
|
|
else
|
|
{
|
|
float oldStatVal = GetPlayerStatFloat( player, statCategory, statAlias, statSubAlias )
|
|
float curStatVal = PlayerStat_GetCurrentFloat( player, statCategory, statAlias, statSubAlias )
|
|
|
|
if ( oldStatVal >= unlock.unlockFloatVal )
|
|
return
|
|
|
|
if ( oldStatVal + curStatVal < unlock.unlockFloatVal )
|
|
return
|
|
|
|
StatUnlock_Unlocked( player, itemRef, parentRef, statCategory, statAlias, statSubAlias )
|
|
}
|
|
}
|
|
|
|
void function StatUnlock_Unlocked( entity player, string itemRef, string parentRef, string statCategory, string statAlias, string statSubAlias )
|
|
{
|
|
// early out if we've already marked this as new
|
|
if ( IsItemNew( player, itemRef, parentRef ) )
|
|
return
|
|
|
|
// early out if the player has progression disabled
|
|
if ( !ProgressionEnabledForPlayer( player ) )
|
|
return
|
|
|
|
int refGuid = file.itemRefToGuid[itemRef]
|
|
int parentRefGuid = parentRef == "" ? 0 : file.itemRefToGuid[parentRef]
|
|
|
|
if ( parentRef != "" )
|
|
{
|
|
int itemType = GetItemType( parentRef )
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.PILOT_PRIMARY:
|
|
case eItemTypes.PILOT_SECONDARY:
|
|
int weaponIndex = shWeaponXP.weaponClassNames.find( parentRef )
|
|
Remote_CallFunction_NonReplay( player, "ServerCallback_WeaponChallengeCompleted", weaponIndex, refGuid, parentRefGuid )
|
|
break
|
|
case eItemTypes.TITAN_PRIMARY:
|
|
int titanIndex = shTitanXP.titanClasses.find( GetTitanForWeapon( parentRef ) )
|
|
Remote_CallFunction_NonReplay( player, "ServerCallback_TitanChallengeCompleted", titanIndex, refGuid, parentRefGuid )
|
|
break
|
|
case eItemTypes.TITAN:
|
|
int titanIndex = shTitanXP.titanClasses.find( parentRef )
|
|
Remote_CallFunction_NonReplay( player, "ServerCallback_TitanChallengeCompleted", titanIndex, refGuid, parentRefGuid )
|
|
break
|
|
default:
|
|
Remote_CallFunction_NonReplay( player, "ServerCallback_PlayerChallengeCompleted", refGuid, parentRefGuid )
|
|
break
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int itemType = GetItemType( itemRef )
|
|
switch ( itemType )
|
|
{
|
|
case eItemTypes.TITAN:
|
|
int titanIndex = shTitanXP.titanClasses.find( parentRef )
|
|
Remote_CallFunction_NonReplay( player, "ServerCallback_TitanChallengeCompleted", titanIndex, refGuid, parentRefGuid )
|
|
break
|
|
default:
|
|
Remote_CallFunction_NonReplay( player, "ServerCallback_PlayerChallengeCompleted", refGuid, parentRefGuid )
|
|
break
|
|
}
|
|
}
|
|
|
|
if ( player.p.challengeUnlocks.len() < 6 )
|
|
{
|
|
RecentUnlock challengeUnlock
|
|
challengeUnlock.refGuid = refGuid
|
|
challengeUnlock.parentRefGuid = parentRefGuid
|
|
|
|
player.p.challengeUnlocks.append( challengeUnlock )
|
|
}
|
|
|
|
SetItemNewStatus( player, itemRef, parentRef, true )
|
|
}
|
|
#endif
|
|
|
|
int function CheckItemUnlockType( string ref, string parentRef = "" )
|
|
{
|
|
if ( IsItemInRandomUnlocks( ref, parentRef ) )
|
|
return eUnlockType.RANDOM
|
|
|
|
if ( IsItemInEntitlementUnlock( ref, parentRef ) )
|
|
return eUnlockType.ENTITLEMENT
|
|
|
|
if ( parentRef != "" )
|
|
return file.unlocks[parentRef].child[ref].unlockType
|
|
else
|
|
return file.unlocks[ref].unlockType
|
|
|
|
unreachable
|
|
}
|
|
|
|
#if SERVER
|
|
void function PersistenceCleanup( entity player )
|
|
{
|
|
ClearTargetNew( player )
|
|
FixupLevelCamosForRegen( player )
|
|
}
|
|
|
|
string function GetNoseArtRefFromTitanClassAndPersistenceValue( string titanClass, int persistenceValue ) //TODO: Replace NoseArtIndexToRef() with this eventually
|
|
{
|
|
if ( !( titanClass in file.titanClassAndPersistenceValueToNoseArtRefTable ) )
|
|
return INVALID_REF
|
|
|
|
if ( !( persistenceValue in file.titanClassAndPersistenceValueToNoseArtRefTable[ titanClass ] ) )
|
|
return INVALID_REF
|
|
|
|
return file.titanClassAndPersistenceValueToNoseArtRefTable[ titanClass ][ persistenceValue ]
|
|
}
|
|
|
|
string function GetSkinRefFromTitanClassAndPersistenceValue( string titanClass, int persistenceValue )
|
|
{
|
|
if ( !( titanClass in file.titanClassAndPersistenceValueToSkinRefTable ) )
|
|
return INVALID_REF
|
|
|
|
if ( !( persistenceValue in file.titanClassAndPersistenceValueToSkinRefTable[ titanClass ] ) )
|
|
return INVALID_REF
|
|
|
|
return file.titanClassAndPersistenceValueToSkinRefTable[ titanClass ][ persistenceValue ]
|
|
}
|
|
#endif // SERVER
|
|
|
|
string function GetSkinRefFromWeaponRefAndPersistenceValue( string weaponRef, int persistenceValue )
|
|
{
|
|
if ( !( weaponRef in file.weaponRefAndPersistenceValueToSkinRefTable ) )
|
|
return INVALID_REF
|
|
|
|
if ( !( persistenceValue in file.weaponRefAndPersistenceValueToSkinRefTable[ weaponRef ] ) )
|
|
return INVALID_REF
|
|
|
|
return file.weaponRefAndPersistenceValueToSkinRefTable[ weaponRef ][ persistenceValue ]
|
|
}
|
|
|
|
const array<string> liveDisabledRefs = [ "vanguard_skin_01", "vanguard_skin_02", "vanguard_skin_03", "vanguard_skin_07", "vanguard_skin_08" ]
|
|
const array<string> disabledRefs = [ "mp_ability_pathchooser" ]
|
|
|
|
bool function IsDisabledRef( string ref )
|
|
{
|
|
if ( liveDisabledRefs.contains( ref ) )
|
|
return true
|
|
|
|
#if DEVSCRIPTS
|
|
return false
|
|
#endif
|
|
|
|
return ( disabledRefs.contains( ref ) )
|
|
}
|
|
|
|
#if DEV
|
|
void function GenerateAllValidateDataTableCRCCheckText()
|
|
{
|
|
GenerateValidateDataTableCRCText( $"datatable/burn_meter_rewards.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/calling_cards.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/callsign_icons.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/camo_skins.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/faction_leaders.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/features_mp.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_abilities.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_executions.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_passives.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_properties.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_weapon_features.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_weapon_mods.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_weapon_mods_common.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/pilot_weapons.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/playlist_items.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_nose_art.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_passives.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_primary_mods.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_primary_mods_common.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_properties.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_skins.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titan_voices.rpak" )
|
|
GenerateValidateDataTableCRCText( $"datatable/titans_mp.rpak" )
|
|
}
|
|
|
|
string function GenerateValidateDataTableCRCText( asset dataTableAsset )
|
|
{
|
|
var dataTable = GetDataTable( dataTableAsset )
|
|
int numRows = GetDatatableRowCount( dataTable )
|
|
|
|
int dataTableCRC = 0
|
|
|
|
for( int index = 0; index < numRows; index++ )
|
|
{
|
|
string ref = GetDataTableString( dataTable, index, 0 )
|
|
|
|
dataTableCRC = dataTableCRC ^ StringHash( ref )
|
|
dataTableCRC = (dataTableCRC << 13) ^ (dataTableCRC >> 17)
|
|
}
|
|
|
|
string resultString = ( "ValidateDataTableCRC( " + dataTableAsset + ", " + numRows + ", " + dataTableCRC + ")" )
|
|
|
|
printt( resultString )
|
|
|
|
return resultString
|
|
}
|
|
|
|
|
|
void function ValidateDataTableCRC( asset dataTableAsset, int numRows, int generatedCRC )
|
|
{
|
|
var dataTable = GetDataTable( dataTableAsset )
|
|
|
|
int dataTableCRC = 0
|
|
|
|
for( int index = 0; index < numRows; index++ )
|
|
{
|
|
string ref = GetDataTableString( dataTable, index, 0 )
|
|
|
|
dataTableCRC = dataTableCRC ^ StringHash( ref )
|
|
dataTableCRC = (dataTableCRC << 13) ^ (dataTableCRC >> 17)
|
|
}
|
|
|
|
if( dataTableCRC != generatedCRC )
|
|
{
|
|
printt( "DataTableCRC mismatch:", dataTableAsset )
|
|
Assert( dataTableCRC == generatedCRC )
|
|
}
|
|
}
|
|
#endif
|
|
|
|
bool function GetItemRequiresPrime( string ref, string parentRef = "" )
|
|
{
|
|
Assert( ref in file.itemData )
|
|
return file.itemData[ref].reqPrime
|
|
}
|
|
|
|
void function SetupWeaponSkinData()
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/weapon_skins.rpak" )
|
|
for ( int row = 0; row < GetDatatableRowCount( dataTable ); row++ )
|
|
{
|
|
string weaponRef = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "weaponRef" ) )
|
|
string ref = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "ref" ) )
|
|
asset image = GetDataTableAsset( dataTable, row, GetDataTableColumnByName( dataTable, "image" ) )
|
|
string name = GetDataTableString( dataTable, row, GetDataTableColumnByName( dataTable, "name" ) )
|
|
int skinIndex = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "skinIndex" ) )
|
|
int skinType = GetDataTableInt( dataTable, row, GetDataTableColumnByName( dataTable, "skinType" ) )
|
|
int datatableIndex = row
|
|
|
|
if ( IsDisabledRef( weaponRef ) )
|
|
continue
|
|
|
|
CreateWeaponSkinData( datatableIndex, eItemTypes.WEAPON_SKIN, false, ref, weaponRef, name, image, skinIndex, skinType )
|
|
CreateGenericSubItemData( eItemTypes.WEAPON_SKIN, weaponRef, ref, 0, { skinIndex = skinIndex } )
|
|
|
|
if ( !( weaponRef in file.weaponRefAndPersistenceValueToSkinRefTable ) )
|
|
file.weaponRefAndPersistenceValueToSkinRefTable[ weaponRef ] <- {}
|
|
|
|
file.weaponRefAndPersistenceValueToSkinRefTable[ weaponRef ][ skinIndex ] <- ref
|
|
}
|
|
}
|
|
|
|
bool function ItemsInSameMenuCategory( string itemRef1, string itemRef2 )
|
|
{
|
|
int category1 = expect int( GetItemDisplayData( itemRef1 ).i.menuCategory )
|
|
int category2 = expect int( GetItemDisplayData( itemRef2 ).i.menuCategory )
|
|
|
|
if ( category1 == category2 )
|
|
return true
|
|
|
|
return false
|
|
}
|
|
|
|
asset function GetTitanLoadoutIconFD( string titanRef )
|
|
{
|
|
var dataTable = GetDataTable( $"datatable/titan_properties.rpak" )
|
|
int loadoutIconCol = GetDataTableColumnByName( dataTable, "loadoutIconFD" )
|
|
int titanCol = GetDataTableColumnByName( dataTable, "titanRef" )
|
|
|
|
int row = GetDataTableRowMatchingStringValue( dataTable, titanCol, titanRef )
|
|
|
|
return GetDataTableAsset( dataTable, row, loadoutIconCol )
|
|
}
|
|
|
|
array<string> function GetOwnedEliteWeaponSkins( entity player )
|
|
{
|
|
array<ItemData> allWeaponSkins = GetAllItemsOfType( eItemTypes.WEAPON_SKIN )
|
|
|
|
array<string> ownedWeaponSkinRefs
|
|
foreach ( weaponSkinItem in allWeaponSkins )
|
|
{
|
|
string parentRef = weaponSkinItem.parentRef
|
|
|
|
if ( !IsSubItemLocked( player, weaponSkinItem.ref, weaponSkinItem.parentRef ) && expect int( weaponSkinItem.i.skinType ) == 1 )
|
|
ownedWeaponSkinRefs.append( weaponSkinItem.ref )
|
|
}
|
|
|
|
return ownedWeaponSkinRefs
|
|
}
|
|
|
|
asset function GetTitanPrimeBg( string titanClass )
|
|
{
|
|
switch ( titanClass )
|
|
{
|
|
case "ion":
|
|
return $"rui/menu/store/prime_ion_bg"
|
|
case "scorch":
|
|
return $"rui/menu/store/prime_scorch_bg"
|
|
case "northstar":
|
|
return $"rui/menu/store/prime_northstar_bg"
|
|
case "ronin":
|
|
return $"rui/menu/store/prime_ronin_bg"
|
|
case "tone":
|
|
return $"rui/menu/store/prime_tone_bg"
|
|
case "legion":
|
|
return $"rui/menu/store/prime_legion_bg"
|
|
case "monarch":
|
|
return $"rui/menu/store/prime_legion_bg"
|
|
}
|
|
|
|
return $""
|
|
}
|
|
|
|
struct FullRefWithEntitlements
|
|
{
|
|
string fullRef
|
|
array<int> entitlementIds
|
|
}
|
|
|
|
array<string> function GetItemRefsForEntitlements( array<int> entitlements )
|
|
{
|
|
array<int> filteredEntitlements
|
|
|
|
foreach ( entitlement in entitlements )
|
|
{
|
|
if ( HasChildEntitlements( entitlement ) )
|
|
{
|
|
array<int> childEntitlements = GetChildEntitlements( entitlement )
|
|
foreach ( childEntitlement in childEntitlements )
|
|
{
|
|
if ( !filteredEntitlements.contains( childEntitlement ) )
|
|
filteredEntitlements.append( childEntitlement )
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( !filteredEntitlements.contains( entitlement ) )
|
|
filteredEntitlements.append( entitlement )
|
|
}
|
|
}
|
|
|
|
array<FullRefWithEntitlements> unlocks
|
|
foreach ( key, val in file.entitlementUnlocks )
|
|
{
|
|
foreach ( entitlement in filteredEntitlements )
|
|
{
|
|
if ( val.entitlementIds.contains( entitlement ) )
|
|
{
|
|
//printt( "key:", key, "entitlement:", entitlement )
|
|
FullRefWithEntitlements record
|
|
record.fullRef = key
|
|
record.entitlementIds = val.entitlementIds
|
|
unlocks.append( record )
|
|
}
|
|
}
|
|
}
|
|
|
|
// Sort to match original entitlement order as best we can avoiding dupes.
|
|
// We diverge from this order whenever mulitple entitlements are associated with an unlock.
|
|
array<FullRefWithEntitlements> sortedUnlocks
|
|
foreach ( entitlement in filteredEntitlements )
|
|
{
|
|
foreach ( unlock in unlocks )
|
|
{
|
|
if ( unlock.entitlementIds.contains( entitlement ) && !sortedUnlocks.contains( unlock ) )
|
|
{
|
|
//printt( "unlock.fullRef:", unlock.fullRef, "entitlement:", entitlement )
|
|
sortedUnlocks.append( unlock )
|
|
}
|
|
}
|
|
}
|
|
|
|
array<string> sortedRefs
|
|
foreach ( unlock in sortedUnlocks )
|
|
{
|
|
string fullRef = unlock.fullRef
|
|
array<string> tokens = split( fullRef, "." )
|
|
|
|
if ( tokens.len() == 2 )
|
|
sortedRefs.append( tokens[1] )
|
|
else
|
|
sortedRefs.append( fullRef )
|
|
}
|
|
|
|
return sortedRefs
|
|
}
|
|
|
|
ItemDisplayData function WeaponWarpaint_GetByIndex( int skinIndex, string parentRef )
|
|
{
|
|
array<SubItemData> subItems = GetAllSubItemsOfType( parentRef, eItemTypes.WEAPON_SKIN )
|
|
foreach ( subItem in subItems )
|
|
{
|
|
if ( subItem.i.skinIndex != skinIndex )
|
|
continue
|
|
|
|
return GetSubitemDisplayData( parentRef, subItem.ref )
|
|
}
|
|
|
|
unreachable
|
|
} |