1315 lines
44 KiB
Lua
1315 lines
44 KiB
Lua
Cac = Cac or {}
|
|
CharacterCameraPresets = {
|
|
Lobby = {
|
|
Position = {
|
|
-25,
|
|
0,
|
|
156
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
CharSelectMenu = {
|
|
Position = {
|
|
-25,
|
|
3,
|
|
90
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
LoadoutMenu = {
|
|
Position = {
|
|
-25,
|
|
0,
|
|
156
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
MemberSelect = {
|
|
Position = {
|
|
-25,
|
|
0,
|
|
156
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
CustomizeMenu = {
|
|
Default = {
|
|
Position = {
|
|
-25,
|
|
0,
|
|
156
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
Head = {
|
|
Position = {
|
|
0,
|
|
0,
|
|
60
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
Helmet = {
|
|
Position = {
|
|
0,
|
|
0,
|
|
-60
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
Patch = {
|
|
Position = {
|
|
0,
|
|
0,
|
|
0
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
}
|
|
},
|
|
ClanDetails = {
|
|
Left = {
|
|
Position = {
|
|
-66,
|
|
0,
|
|
180
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
Center = {
|
|
Position = {
|
|
-19,
|
|
0,
|
|
180
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
},
|
|
Right = {
|
|
Position = {
|
|
28,
|
|
0,
|
|
180
|
|
},
|
|
Rotation = {
|
|
0,
|
|
0,
|
|
0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
local f0_local0 = Cac
|
|
local f0_local1 = {
|
|
Animations = {
|
|
default = "mp_menu_male_idle",
|
|
idles = {
|
|
normal = {
|
|
"mp_menu_male_idle",
|
|
"mp_menu_male_twitch_A",
|
|
"mp_menu_male_twitch_B"
|
|
},
|
|
riotshield = {
|
|
"mp_menu_shield_idle",
|
|
"mp_menu_shield_twitch_A",
|
|
"mp_menu_shield_twitch_B"
|
|
},
|
|
knifeonly = {
|
|
"jug_maniac_idle",
|
|
"jug_maniac_twitchA",
|
|
"jug_maniac_twitchB",
|
|
"jug_maniac_twitchC"
|
|
},
|
|
pistol = {
|
|
"mp_alien_menu_male_idle",
|
|
"mp_alien_menu_male_twitch_A",
|
|
"mp_alien_menu_male_twitch_B"
|
|
}
|
|
},
|
|
weapon_grabs = {
|
|
normal_1 = {
|
|
"mp_menu_male_grab_gun_1_A",
|
|
"mp_menu_male_grab_gun_2_A"
|
|
},
|
|
normal_2 = {
|
|
"mp_menu_male_grab_gun_1_B",
|
|
"mp_menu_male_grab_gun_2_B"
|
|
},
|
|
riotshield = {
|
|
"mp_menu_grab_shield_1_A",
|
|
"mp_menu_grab_shield_2_A"
|
|
},
|
|
knifeonly = {
|
|
"mp_menu_male_grab_knife_1_A",
|
|
"mp_menu_male_grab_knife_2_A"
|
|
},
|
|
pistol = {}
|
|
}
|
|
},
|
|
FieldIndexes = {
|
|
Head = 1,
|
|
Helmet = 2,
|
|
Body = 3,
|
|
Patch = 4,
|
|
Patchbacking = 5,
|
|
Background = 6,
|
|
ClanTag = 7,
|
|
GuardDog = 8,
|
|
Announcer = 9
|
|
},
|
|
Gender = {
|
|
Male = "m",
|
|
Female = "f",
|
|
Special = "b"
|
|
}
|
|
}
|
|
local f0_local2 = {}
|
|
local f0_local3 = {
|
|
csv = "mp/cac/heads.csv",
|
|
LocName = "HEAD",
|
|
UnlockType = "Head",
|
|
PublicOnly = false,
|
|
ImpactsPlayercard = false,
|
|
SaveRef = function ( f1_arg0, f1_arg1, f1_arg2, f1_arg3 )
|
|
local f1_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f1_local1 = Cac.IsCommonGender( Cac.GetGenderFromHeadRef( f1_arg3 ) )
|
|
if f1_local1 then
|
|
f1_local1 = not Cac.IsCommonGender( Cac.GetCurrentGender( f1_arg0, f1_arg1, f1_arg2 ) )
|
|
end
|
|
if f1_local1 then
|
|
Cac.SetBodyIndex( f1_arg0, f1_arg1, f1_arg2, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body].GetDefaultRef( f1_arg0, Cac.GetGenderFromHeadRef( f1_arg3 ) ) )
|
|
end
|
|
Cac.SetHeadIndex( f1_arg0, f1_arg1, f1_arg2, f1_arg3 )
|
|
if not Cac.DoesHeadUseHelmet( f1_arg3 ) then
|
|
f1_local0.SaveRef( f1_arg0, f1_arg1, f1_arg2, f1_local0.NoneRef )
|
|
end
|
|
end,
|
|
GetSavedRef = function ( f2_arg0, f2_arg1, f2_arg2 )
|
|
return Cac.GetHeadIndex( f2_arg0, f2_arg1, f2_arg2 )
|
|
end,
|
|
GetSavedModel = function ( f3_arg0, f3_arg1, f3_arg2 )
|
|
local f3_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
return f3_local0.MakeModelName( f3_local0.GetSavedRef( f3_arg0, f3_arg1, f3_arg2 ), Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet].GetSavedRef( f3_arg0, f3_arg1, f3_arg2 ) )
|
|
end,
|
|
SelectionPopup = "cac_customize_buttons_popup"
|
|
}
|
|
local f0_local4 = package.loaded["LUI.mp_menus.CacCustomize"]
|
|
if f0_local4 then
|
|
f0_local4 = LUI.mp_menus.CacCustomize.CustomizePopupGridGenericButton
|
|
end
|
|
f0_local3.SelectionButtonFactory = f0_local4
|
|
f0_local3.GetName = function ( f4_arg0 )
|
|
return Engine.TableLookup( "mp/cac/heads.csv", 0, f4_arg0, 2 )
|
|
end
|
|
|
|
f0_local3.PreviewFunction = function ( f5_arg0, f5_arg1, f5_arg2, f5_arg3, f5_arg4, f5_arg5 )
|
|
local f5_local0 = {}
|
|
local f5_local1 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
local f5_local2 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f5_local3 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f5_local4 = f5_local3.GetSavedRef( f5_arg0, Cac.GetSquadLoc(), f5_arg4 )
|
|
if not Cac.DoesHeadUseHelmet( f5_arg3 ) or not f5_local4 then
|
|
f5_local4 = f5_local3.NoneRef
|
|
end
|
|
local f5_local5 = f5_local2.MakeModelName( f5_arg3, f5_local4, f5_arg5 )
|
|
if Cac.GetGenderFromBodyRef( f5_local1.GetSavedRef( f5_arg0, Cac.GetSquadLoc(), f5_arg4 ) ) ~= Cac.GetGenderFromHeadRef( f5_arg3 ) then
|
|
local f5_local6 = f5_local1.GetDefaultRef( f5_arg0, Cac.GetGenderFromHeadRef( f5_arg3 ) )
|
|
CharacterScene.ChangeBody( f5_arg2, f5_local1.MakeModelName( f5_local6, f5_arg5 ), Cac.GetPatchIndex( f5_arg0, Cac.GetSquadLoc(), f5_arg4 ) )
|
|
f5_local0[f5_local1] = f5_local6
|
|
end
|
|
CharacterScene.ChangeHead( f5_arg2, f5_local5 )
|
|
f5_local0[f5_local3] = f5_local4
|
|
f5_local0[f5_local2] = f5_arg3
|
|
return f5_local0
|
|
end
|
|
|
|
f0_local3.MakeModelName = function ( f6_arg0, f6_arg1, f6_arg2 )
|
|
local f6_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
if not f6_arg2 then
|
|
f6_arg2 = Cac.GetDefaultBodyCamoRef()
|
|
end
|
|
if not f6_arg1 then
|
|
f6_arg1 = f6_local0.NoneRef
|
|
end
|
|
return Customization.GetCompleteHeadModelName( f6_arg0, f6_arg1, Cac.GetHeadCamoSuffix( f6_arg2 ) )
|
|
end
|
|
|
|
f0_local3.CustomizeCamera = CharacterCameraPresets.CustomizeMenu.Head
|
|
f0_local3.GetUIMaterial = function ( f7_arg0 )
|
|
return "icon_aar_head"
|
|
end
|
|
|
|
f0_local3.GenderColumn = 3
|
|
f0_local3.UseHelmetColumn = 4
|
|
f0_local3.IsEntitlementColumn = 5
|
|
f0_local3.HideUnlessUnlockedColumn = 6
|
|
f0_local3.CustomUnlockText = 7
|
|
f0_local3.DLCOffer = 9
|
|
f0_local3.ReleaseKillswitch = 10
|
|
f0_local3.SecondaryEntitlementColumn = 11
|
|
f0_local3.GetDefaultRef = function ( f8_arg0, f8_arg1 )
|
|
local f8_local0 = Cac.Customization.GetElementRefsForField( f8_arg0, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head], f8_arg1 )
|
|
assert( #f8_local0 > 0 )
|
|
return f8_local0[1]
|
|
end
|
|
|
|
f0_local4 = {
|
|
csv = "mp/cac/helmets.csv",
|
|
LocName = "HELMET",
|
|
UnlockType = "Helmet",
|
|
PublicOnly = false,
|
|
ImpactsPlayercard = false,
|
|
NoneRef = 0,
|
|
SaveRef = function ( f9_arg0, f9_arg1, f9_arg2, f9_arg3 )
|
|
local f9_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f9_local1 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f9_local2 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
if not Cac.IsCommonGender( Cac.GetCurrentGender( f9_arg0, f9_arg1, f9_arg2 ) ) then
|
|
Cac.SetBodyIndex( f9_arg0, f9_arg1, f9_arg2, f9_local2.GetDefaultRef( f9_arg0, Cac.Customization.Gender.Male ) )
|
|
Cac.SetHeadIndex( f9_arg0, f9_arg1, f9_arg2, f9_local1.GetDefaultRef( f9_arg0, Cac.Customization.Gender.Male ) )
|
|
end
|
|
Cac.SetHelmetIndex( f9_arg0, f9_arg1, f9_arg2, f9_arg3 )
|
|
if not Cac.DoesHeadUseHelmet( f9_local1.GetSavedRef( f9_arg0, f9_arg1, f9_arg2 ) ) and f9_arg3 ~= f9_local0.NoneRef then
|
|
f9_local1.SaveRef( f9_arg0, f9_arg1, f9_arg2, f9_local1.GetDefaultRef( f9_arg0, Cac.GetCurrentGender( f9_arg0, f9_arg1, f9_arg2 ) ) )
|
|
end
|
|
end,
|
|
GetSavedRef = function ( f10_arg0, f10_arg1, f10_arg2 )
|
|
return Cac.GetHelmetIndex( f10_arg0, f10_arg1, f10_arg2 )
|
|
end,
|
|
SelectionPopup = "cac_customize_buttons_popup"
|
|
}
|
|
local f0_local5 = package.loaded["LUI.mp_menus.CacCustomize"]
|
|
if f0_local5 then
|
|
f0_local5 = LUI.mp_menus.CacCustomize.CustomizePopupGridGenericButton
|
|
end
|
|
f0_local4.SelectionButtonFactory = f0_local5
|
|
f0_local4.GetName = function ( f11_arg0 )
|
|
return Engine.TableLookup( "mp/cac/helmets.csv", 0, f11_arg0, 2 )
|
|
end
|
|
|
|
f0_local4.PreviewFunction = function ( f12_arg0, f12_arg1, f12_arg2, f12_arg3, f12_arg4, f12_arg5 )
|
|
local f12_local0 = {}
|
|
local f12_local1 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
local f12_local2 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f12_local3 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f12_local4 = Cac.GetHeadIndex( f12_arg0, Cac.GetSquadLoc(), f12_arg4 or Cac.GetEditSquadMember( f12_arg0 ) )
|
|
if not Cac.IsCommonGender( Cac.GetGenderFromBodyRef( f12_local1.GetSavedRef( f12_arg0, Cac.GetSquadLoc(), f12_arg4 ) ) ) and f12_arg3 ~= f12_local3.NoneRef then
|
|
local f12_local5 = f12_local1.GetDefaultRef( f12_arg0, Cac.Customization.Gender.Male )
|
|
CharacterScene.ChangeBody( f12_arg2, f12_local1.MakeModelName( f12_local5, f12_arg5 ), Cac.GetPatchIndex( f12_arg0, Cac.GetSquadLoc(), f12_arg4 ) )
|
|
f12_local0[f12_local1] = f12_local5
|
|
end
|
|
if f12_arg3 ~= f12_local3.NoneRef and not Cac.DoesHeadUseHelmet( f12_local4 ) then
|
|
local f12_local5 = Cac.GetCurrentGender( f12_arg0, Cac.GetSquadLoc(), f12_arg4 )
|
|
if not Cac.IsCommonGender( f12_local5 ) then
|
|
f12_local5 = Cac.Customization.Gender.Male
|
|
end
|
|
f12_local4 = f12_local2.GetDefaultRef( f12_arg0, f12_local5 )
|
|
end
|
|
CharacterScene.ChangeHead( f12_arg2, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head].MakeModelName( f12_local4, f12_arg3, f12_arg5 ) )
|
|
f12_local0[f12_local3] = f12_arg3
|
|
f12_local0[f12_local2] = f12_local4
|
|
return f12_local0
|
|
end
|
|
|
|
f0_local4.CustomizeCamera = CharacterCameraPresets.CustomizeMenu.Helmet
|
|
f0_local4.GetUIMaterial = function ( f13_arg0 )
|
|
return "icon_aar_helmet"
|
|
end
|
|
|
|
f0_local4.IsEntitlementColumn = 4
|
|
f0_local4.HideUnlessUnlockedColumn = 5
|
|
f0_local4.CustomUnlockText = 6
|
|
f0_local4.DLCOffer = 8
|
|
f0_local4.ReleaseKillswitch = 9
|
|
f0_local4.GetDefaultRef = function ( f14_arg0, f14_arg1 )
|
|
local f14_local0 = Cac.Customization.GetElementRefsForField( f14_arg0, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet], f14_arg1 )
|
|
assert( #f14_local0 > 0 )
|
|
return f14_local0[1]
|
|
end
|
|
|
|
f0_local5 = {
|
|
csv = "mp/cac/bodies.csv",
|
|
LocName = "BODY",
|
|
UnlockType = "Body",
|
|
PublicOnly = false,
|
|
ImpactsPlayercard = false,
|
|
SaveRef = function ( f15_arg0, f15_arg1, f15_arg2, f15_arg3 )
|
|
local f15_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f15_local1 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
Cac.SetBodyIndex( f15_arg0, f15_arg1, f15_arg2, f15_arg3 )
|
|
local f15_local2 = Cac.GetGenderFromBodyRef( f15_arg3 )
|
|
if f15_local2 == Cac.Customization.Gender.Special then
|
|
Cac.SetHelmetIndex( f15_arg0, f15_arg1, f15_arg2, f15_local1.NoneRef )
|
|
Cac.SetHeadIndex( f15_arg0, f15_arg1, f15_arg2, f15_local0.GetDefaultRef( f15_arg0, f15_local2 ) )
|
|
elseif not Cac.IsCommonGender( f15_local2 ) then
|
|
local f15_local3 = f15_local0.GetDefaultRef( f15_arg0, f15_local2 )
|
|
Cac.SetHelmetIndex( f15_arg0, f15_arg1, f15_arg2, f15_local1.NoneRef )
|
|
Cac.SetHeadIndex( f15_arg0, f15_arg1, f15_arg2, f15_local3 )
|
|
elseif not Cac.IsCommonGender( Cac.GetGenderFromHeadRef( f15_local0.GetSavedRef( f15_arg0, f15_arg1, f15_arg2 ) ) ) then
|
|
Cac.SetHeadIndex( f15_arg0, f15_arg1, f15_arg2, f15_local0.GetDefaultRef( f15_arg0, f15_local2 ) )
|
|
end
|
|
end,
|
|
GetSavedRef = function ( f16_arg0, f16_arg1, f16_arg2 )
|
|
return Cac.GetBodyIndex( f16_arg0, f16_arg1, f16_arg2 )
|
|
end,
|
|
GetSavedModel = function ( f17_arg0, f17_arg1, f17_arg2 )
|
|
local f17_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
return f17_local0.MakeModelName( f17_local0.GetSavedRef( f17_arg0, f17_arg1, f17_arg2 ) )
|
|
end,
|
|
SelectionPopup = "cac_customize_buttons_popup"
|
|
}
|
|
local f0_local6 = package.loaded["LUI.mp_menus.CacCustomize"]
|
|
if f0_local6 then
|
|
f0_local6 = LUI.mp_menus.CacCustomize.CustomizePopupGridGenericButton
|
|
end
|
|
f0_local5.SelectionButtonFactory = f0_local6
|
|
f0_local5.GetName = function ( f18_arg0 )
|
|
return Engine.TableLookup( "mp/cac/bodies.csv", 0, f18_arg0, 2 )
|
|
end
|
|
|
|
f0_local5.PreviewFunction = function ( f19_arg0, f19_arg1, f19_arg2, f19_arg3, f19_arg4, f19_arg5 )
|
|
local f19_local0 = {}
|
|
local f19_local1 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
local f19_local2 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
local f19_local3 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Helmet]
|
|
local f19_local4 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body].MakeModelName( f19_arg3, f19_arg5 )
|
|
local f19_local5 = Cac.GetGenderFromBodyRef( f19_arg3 )
|
|
local f19_local6 = Cac.GetSquadLoc()
|
|
CharacterScene.ChangeBody( f19_arg2, f19_local4, Cac.GetPatchIndex( f19_arg0, f19_local6, f19_arg4 ) )
|
|
if Cac.IsCommonGender( f19_local5 ) then
|
|
if not Cac.IsCommonGender( Cac.GetGenderFromHeadRef( f19_local2.GetSavedRef( f19_arg0, f19_local6, f19_arg4 ) ) ) then
|
|
local f19_local7 = f19_local2.GetDefaultRef( f19_arg0, f19_local5 )
|
|
CharacterScene.ChangeHead( f19_arg2, f19_local2.MakeModelName( f19_local7 ) )
|
|
f19_local0[f19_local2] = f19_local7
|
|
end
|
|
elseif f19_local5 == Cac.Customization.Gender.Special then
|
|
|
|
else
|
|
local f19_local7 = f19_local2.GetDefaultRef( f19_arg0, f19_local5 )
|
|
CharacterScene.ChangeHead( f19_arg2, f19_local2.MakeModelName( f19_local7 ) )
|
|
f19_local0[f19_local3] = f19_local3.NoneRef
|
|
f19_local0[f19_local2] = f19_local7
|
|
end
|
|
f19_local0[f19_local1] = f19_arg3
|
|
return f19_local0
|
|
end
|
|
|
|
f0_local5.MakeModelName = function ( f20_arg0, f20_arg1 )
|
|
if not f20_arg1 then
|
|
f20_arg1 = Cac.GetDefaultBodyCamoRef()
|
|
end
|
|
return Engine.TableLookup( "mp/cac/bodies.csv", 0, f20_arg0, 1 ) .. Cac.GetBodyCamoSuffix( f20_arg1 )
|
|
end
|
|
|
|
f0_local5.CustomizeCamera = CharacterCameraPresets.CustomizeMenu.Default
|
|
f0_local5.GetUIMaterial = function ( f21_arg0 )
|
|
return "icon_aar_uniform"
|
|
end
|
|
|
|
f0_local5.GenderColumn = 4
|
|
f0_local5.IsEntitlementColumn = 6
|
|
f0_local5.HideUnlessUnlockedColumn = 7
|
|
f0_local5.CustomUnlockText = 8
|
|
f0_local5.DLCOffer = 10
|
|
f0_local5.ReleaseKillswitch = 11
|
|
f0_local5.GetDefaultRef = function ( f22_arg0, f22_arg1 )
|
|
local f22_local0 = Cac.Customization.GetElementRefsForField( f22_arg0, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body], f22_arg1 )
|
|
assert( #f22_local0 > 0 )
|
|
return f22_local0[1]
|
|
end
|
|
|
|
f0_local6 = {
|
|
csv = "mp/cac/patches.csv",
|
|
LocName = "PATCH",
|
|
UnlockType = "Patch",
|
|
PublicOnly = true,
|
|
ImpactsPlayercard = true,
|
|
SaveRef = function ( f23_arg0, f23_arg1, f23_arg2, f23_arg3 )
|
|
Cac.SetPatchIndex( f23_arg0, f23_arg1, f23_arg2, f23_arg3 )
|
|
end,
|
|
GetSavedRef = function ( f24_arg0, f24_arg1, f24_arg2 )
|
|
return Cac.GetPatchIndex( f24_arg0, f24_arg1, f24_arg2 )
|
|
end,
|
|
SelectionPopup = "cac_customize_grid_popup"
|
|
}
|
|
local f0_local7 = package.loaded["LUI.mp_menus.CacCustomize"]
|
|
if f0_local7 then
|
|
f0_local7 = LUI.mp_menus.CacCustomize.CustomizePopupGridGraphicalButton
|
|
end
|
|
f0_local6.SelectionButtonFactory = f0_local7
|
|
f0_local6.CategoryColumn = 5
|
|
f0_local6.CategoryNameColumn = 6
|
|
f0_local6.CategoryDLCName = "DLC"
|
|
f0_local6.GetName = function ( f25_arg0 )
|
|
return Engine.TableLookup( "mp/cac/patches.csv", 0, f25_arg0, 2 )
|
|
end
|
|
|
|
f0_local6.GetQuip = function ( f26_arg0 )
|
|
return Engine.TableLookup( "mp/cac/patches.csv", 0, f26_arg0, 3 )
|
|
end
|
|
|
|
f0_local6.PreviewFunction = function ( f27_arg0, f27_arg1, f27_arg2, f27_arg3, f27_arg4, f27_arg5 )
|
|
CharacterScene.ChangeBody( f27_arg2, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body].MakeModelName( Cac.GetBodyIndex( f27_arg0, Cac.GetSquadLoc(), f27_arg4 ), f27_arg5 ), f27_arg3 )
|
|
f27_arg1:processEvent( {
|
|
name = "update_playercard",
|
|
patchEmblem = f27_arg3
|
|
} )
|
|
end
|
|
|
|
f0_local6.InitFunction = function ( f28_arg0, f28_arg1, f28_arg2, f28_arg3, f28_arg4 )
|
|
f28_arg1:processEvent( {
|
|
name = "update_playercard",
|
|
patchEmblem = f28_arg3
|
|
} )
|
|
end
|
|
|
|
f0_local6.CustomizeCamera = CharacterCameraPresets.CustomizeMenu.Patch
|
|
f0_local6.GetUIMaterial = function ( f29_arg0 )
|
|
return Engine.TableLookup( "mp/cac/patches.csv", 0, f29_arg0, 4 )
|
|
end
|
|
|
|
f0_local6.IsEntitlementColumn = 7
|
|
f0_local6.HideUnlessUnlockedColumn = 8
|
|
f0_local6.CustomUnlockText = 9
|
|
f0_local6.DLCOffer = 10
|
|
f0_local6.ReleaseKillswitch = 11
|
|
f0_local6.HideIfItemColumn = 12
|
|
f0_local6.GetDefaultRef = function ( f30_arg0, f30_arg1 )
|
|
local f30_local0 = Cac.Customization.GetElementRefsForField( f30_arg0, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Patch], f30_arg1 )
|
|
assert( #f30_local0 > 0 )
|
|
return f30_local0[1]
|
|
end
|
|
|
|
f0_local7 = {
|
|
csv = "mp/cac/patchbackings.csv",
|
|
LocName = "PATCHBACKING",
|
|
UnlockType = "Patchbacking",
|
|
PublicOnly = true,
|
|
ImpactsPlayercard = true,
|
|
SaveRef = function ( f31_arg0, f31_arg1, f31_arg2, f31_arg3 )
|
|
Cac.SetPatchbackingIndex( f31_arg0, f31_arg1, f31_arg2, f31_arg3 )
|
|
end,
|
|
GetSavedRef = function ( f32_arg0, f32_arg1, f32_arg2 )
|
|
return Cac.GetPatchbackingIndex( f32_arg0, f32_arg1, f32_arg2 )
|
|
end,
|
|
SelectionPopup = "cac_customize_grid_popup"
|
|
}
|
|
local f0_local8 = package.loaded["LUI.mp_menus.CacCustomize"]
|
|
if f0_local8 then
|
|
f0_local8 = LUI.mp_menus.CacCustomize.CustomizePopupGridGraphicalButton
|
|
end
|
|
f0_local7.SelectionButtonFactory = f0_local8
|
|
f0_local7.CategoryColumn = 3
|
|
f0_local7.CategoryNameColumn = 4
|
|
f0_local7.GetName = function ( f33_arg0 )
|
|
return Engine.TableLookup( "mp/cac/patchbackings.csv", 0, f33_arg0, 1 )
|
|
end
|
|
|
|
f0_local7.PreviewFunction = function ( f34_arg0, f34_arg1, f34_arg2, f34_arg3, f34_arg4 )
|
|
f34_arg1:processEvent( {
|
|
name = "update_playercard",
|
|
patchShape = f34_arg3
|
|
} )
|
|
end
|
|
|
|
f0_local7.CustomizeCamera = CharacterCameraPresets.CustomizeMenu.Patch
|
|
f0_local7.GetUIMaterial = function ( f35_arg0 )
|
|
return Engine.TableLookup( "mp/cac/patchbackings.csv", 0, f35_arg0, 2 )
|
|
end
|
|
|
|
f0_local7.IsEntitlementColumn = 5
|
|
f0_local7.HideUnlessUnlockedColumn = 6
|
|
f0_local7.CustomUnlockText = 7
|
|
f0_local8 = {
|
|
csv = "mp/cac/backgrounds.csv",
|
|
LocName = "BACKGROUND",
|
|
UnlockType = "Background",
|
|
PublicOnly = true,
|
|
ImpactsPlayercard = true,
|
|
SaveRef = function ( f36_arg0, f36_arg1, f36_arg2, f36_arg3 )
|
|
Cac.SetBackgroundIndex( f36_arg0, f36_arg1, f36_arg2, f36_arg3 )
|
|
end,
|
|
GetSavedRef = function ( f37_arg0, f37_arg1, f37_arg2 )
|
|
return Cac.GetBackgroundIndex( f37_arg0, f37_arg1, f37_arg2 )
|
|
end,
|
|
SelectionPopup = "cac_customize_vlist_popup"
|
|
}
|
|
local f0_local9 = package.loaded["LUI.mp_menus.CacCustomize"]
|
|
if f0_local9 then
|
|
f0_local9 = LUI.mp_menus.CacCustomize.CustomizePopupGridGraphicalButton
|
|
end
|
|
f0_local8.SelectionButtonFactory = f0_local9
|
|
f0_local8.CategoryColumn = 4
|
|
f0_local8.CategoryNameColumn = 5
|
|
f0_local8.CategoryDLCName = "DLC Backgrounds"
|
|
f0_local8.GetName = function ( f38_arg0 )
|
|
return Engine.TableLookup( "mp/cac/backgrounds.csv", 0, f38_arg0, 2 )
|
|
end
|
|
|
|
f0_local8.PreviewFunction = function ( f39_arg0, f39_arg1, f39_arg2, f39_arg3, f39_arg4 )
|
|
f39_arg1:processEvent( {
|
|
name = "update_character_bg",
|
|
material = RegisterMaterial( Engine.TableLookup( "mp/cac/backgrounds.csv", 0, f39_arg3, 1 ) )
|
|
} )
|
|
f39_arg1:processEvent( {
|
|
name = "update_playercard",
|
|
background = f39_arg3
|
|
} )
|
|
end
|
|
|
|
f0_local8.CustomizeCamera = CharacterCameraPresets.CustomizeMenu.Default
|
|
f0_local8.GetUIMaterial = function ( f40_arg0 )
|
|
return Engine.TableLookup( "mp/cac/backgrounds.csv", 0, f40_arg0, 3 )
|
|
end
|
|
|
|
f0_local8.IsEntitlementColumn = 6
|
|
f0_local8.HideUnlessUnlockedColumn = 7
|
|
f0_local8.CustomUnlockText = 8
|
|
f0_local8.DLCOffer = 9
|
|
f0_local8.ReleaseKillswitch = 10
|
|
f0_local8.HideIfItemColumn = 11
|
|
f0_local8.GetDefaultRef = function ( f41_arg0, f41_arg1 )
|
|
local f41_local0 = Cac.Customization.GetElementRefsForField( f41_arg0, Cac.Customization.Fields[Cac.Customization.FieldIndexes.Background], f41_arg1 )
|
|
assert( #f41_local0 > 0 )
|
|
return f41_local0[1]
|
|
end
|
|
|
|
f0_local9 = {
|
|
LocName = "CLAN_TAG",
|
|
UnlockType = "ClanTag",
|
|
PublicOnly = false,
|
|
ImpactsPlayercard = true,
|
|
SaveRef = function ()
|
|
|
|
end,
|
|
GetSavedRef = function ( f43_arg0 )
|
|
return Engine.GetProfileDataUseEliteClanTag( f43_arg0 ) and Engine.GetClanTag( f43_arg0 ) or Engine.GetCustomClanTag( f43_arg0 )
|
|
end,
|
|
SelectionPopup = "cac_customize_clan_tag_popup",
|
|
PreviewFunction = function ( f44_arg0, f44_arg1, f44_arg2, f44_arg3, f44_arg4 )
|
|
f44_arg1:processEvent( {
|
|
name = "update_playercard",
|
|
clantag = f44_arg3
|
|
} )
|
|
end
|
|
}
|
|
local f0_local10 = {
|
|
csv = "mp/cac/dogs.csv",
|
|
UnlockType = "GuardDog",
|
|
LocName = "GUARD_DOG",
|
|
PublicOnly = false,
|
|
ImpactsPlayercard = false,
|
|
SaveRef = function ( f45_arg0, f45_arg1, f45_arg2, f45_arg3 )
|
|
Engine.SetPlayerDataReservedInt( f45_arg0, CoD.StatsGroup.Common, "mp_dog_type", f45_arg3 )
|
|
end,
|
|
GetSavedRef = function ( f46_arg0 )
|
|
return Engine.GetPlayerDataReservedInt( f46_arg0, CoD.StatsGroup.Common, "mp_dog_type" )
|
|
end,
|
|
GetDefaultRef = function ()
|
|
return 0
|
|
end,
|
|
buttonVariant = GenericButtonSettings.Variants.Info,
|
|
SelectionPopup = "cac_customize_small_popup",
|
|
HelpText = "LUA_MENU_GUARD_DOG_CHOICE_MESSAGE",
|
|
GetName = function ( f48_arg0 )
|
|
return Engine.TableLookup( "mp/cac/dogs.csv", 0, tostring( f48_arg0 ), 1 )
|
|
end,
|
|
IsUnlocked = function ( f49_arg0, f49_arg1 )
|
|
return Lobby.IsItemOfTypeUnlocked( f49_arg0, Engine.TableLookup( "mp/cac/dogs.csv", 0, tostring( f49_arg1 ), 2 ), "DLC" )
|
|
end,
|
|
DLCOffer = 3,
|
|
GetUIMaterial = function ( f50_arg0 )
|
|
return Engine.TableLookup( "mp/cac/dogs.csv", 0, f50_arg0, 4 )
|
|
end,
|
|
IsEntitlementColumn = 5
|
|
}
|
|
local f0_local11 = {
|
|
csv = "mp/cac/announcers.csv",
|
|
LocName = "ANNOUNCER",
|
|
UnlockType = "Announcer",
|
|
PublicOnly = false,
|
|
ImpactsPlayercard = false,
|
|
SaveRef = function ( f51_arg0, f51_arg1, f51_arg2, f51_arg3 )
|
|
f51_arg3 = tonumber( f51_arg3 )
|
|
assert( f51_arg3 and f51_arg3 < 128 )
|
|
Engine.SetPlayerDataReservedInt( f51_arg0, CoD.StatsGroup.Common, "mp_announcer_type", f51_arg3 )
|
|
end,
|
|
GetSavedRef = function ( f52_arg0 )
|
|
return Engine.GetPlayerDataReservedInt( f52_arg0, CoD.StatsGroup.Common, "mp_announcer_type" )
|
|
end,
|
|
IsReleased = function ( f53_arg0 )
|
|
return Engine.IsAnnouncerReleased( f53_arg0 )
|
|
end,
|
|
IsUnlocked = function ( f54_arg0, f54_arg1 )
|
|
return Engine.IsAnnouncerUnlocked( f54_arg1 )
|
|
end,
|
|
DLCOffer = 3,
|
|
SelectionPopup = "cac_customize_small_popup",
|
|
HelpText = "LUA_MENU_MP_CHOOSE_ANNOUNCER",
|
|
PreviewFunction = function ( f55_arg0, f55_arg1, f55_arg2, f55_arg3, f55_arg4 )
|
|
local f55_local0 = Engine.TableLookup( "mp/cac/announcers.csv", 0, tostring( f55_arg3 ), 2 )
|
|
if f55_local0 ~= "" then
|
|
return Engine.PlaySound( f55_local0 )
|
|
else
|
|
|
|
end
|
|
end,
|
|
GetDefaultRef = function ()
|
|
return 0
|
|
end,
|
|
GetName = function ( f57_arg0 )
|
|
return Engine.TableLookup( "mp/cac/announcers.csv", 0, tostring( f57_arg0 ), 1 )
|
|
end,
|
|
buttonVariant = GenericButtonSettings.Variants.Info,
|
|
IsEntitlementColumn = 4
|
|
}
|
|
f0_local2[1] = f0_local3
|
|
f0_local2[2] = f0_local4
|
|
f0_local2[3] = f0_local5
|
|
f0_local2[4] = f0_local6
|
|
f0_local2[5] = f0_local7
|
|
f0_local2[6] = f0_local8
|
|
f0_local2[7] = f0_local9
|
|
f0_local2[8] = f0_local10
|
|
f0_local2[9] = f0_local11
|
|
f0_local1.Fields = f0_local2
|
|
f0_local1.Camos = {
|
|
File = "mp/cac/camos.csv",
|
|
Cols = {
|
|
Ref = 0,
|
|
Suffix = 1,
|
|
Name = 2,
|
|
HeadSuffix = 3
|
|
}
|
|
}
|
|
f0_local0.Customization = f0_local1
|
|
Cac.Customization.GetReqsStringForItem = function ( f58_arg0, f58_arg1, f58_arg2, f58_arg3, f58_arg4 )
|
|
local f58_local0 = ""
|
|
local f58_local1 = ""
|
|
if SvS.IsSvS() then
|
|
if IsPublicMatch() then
|
|
f58_local1 = Engine.Localize( "LUA_MENU_PLAY_ONLINE_TO_UNLOCK" )
|
|
end
|
|
return f58_local0, f58_local1
|
|
elseif Cac.IsCustomizationItemDLC( f58_arg1, f58_arg0 ) and Cac.IsCustomizationItemUnlocked( f58_arg2, f58_arg1, f58_arg0 ) == true then
|
|
f58_local0 = "@DLC_ALREADY_PURCHASED"
|
|
else
|
|
f58_local0 = Engine.TableLookup( f58_arg1.csv, 0, f58_arg0, f58_arg1.CustomUnlockText )
|
|
end
|
|
if f58_local0 ~= "" then
|
|
f58_local0 = Engine.Localize( f58_local0 )
|
|
end
|
|
if f58_local0 == "" and (IsPublicMatch() or IsOnlineAliens()) then
|
|
local f58_local2 = getUnlockReqsForItemOfType( f58_arg0, f58_arg1.UnlockType )
|
|
if f58_local2.chalAndTier ~= "" then
|
|
f58_local0, f58_local1 = getUnlockInfoStrings( f58_local2.chalAndTier, f58_arg2, f58_arg3, f58_arg4 )
|
|
elseif f58_local2.rank ~= "" and tonumber( f58_local2.rank ) > 0 then
|
|
f58_local0 = Engine.Localize( "@LUA_MENU_UNLOCKED_AT_RANK", tonumber( f58_local2.rank ) + 1 )
|
|
elseif f58_local2.rankExt ~= "" and tonumber( f58_local2.rankExt ) > 0 then
|
|
f58_local0 = Engine.Localize( "@LUA_MENU_UNLOCKED_EXT_RANK", tonumber( f58_local2.rankExt ) + 1 )
|
|
elseif f58_local2.prestigeExt ~= "" and tonumber( f58_local2.prestigeExt ) > 0 then
|
|
f58_local0 = Engine.Localize( "@ALIENS_REQ_PRESTIGE", tonumber( f58_local2.prestigeExt ) )
|
|
elseif f58_local2.prestige ~= "" and tonumber( f58_local2.prestige ) > 0 then
|
|
f58_local0 = Engine.Localize( "@LUA_MENU_REACH_PRESTIGE", tonumber( f58_local2.prestige ) )
|
|
elseif f58_local2.escapesExt ~= "" and tonumber( f58_local2.escapesExt ) > 0 then
|
|
local f58_local3 = tonumber( f58_local2.escapesExt )
|
|
if f58_local3 == 1 then
|
|
f58_local0 = Engine.Localize( "@ALIENS_REQ_ESCAPE" )
|
|
else
|
|
f58_local0 = Engine.Localize( "@ALIENS_REQ_ESCAPE_N_TIMES", f58_local3 )
|
|
end
|
|
elseif f58_local2.highestRelicEscapeExt ~= "" and tonumber( f58_local2.highestRelicEscapeExt ) > 0 then
|
|
f58_local0 = Engine.Localize( "@ALIENS_REQ_N_RELICS", tonumber( f58_local2.highestRelicEscapeExt ) )
|
|
elseif f58_local2.killsExt ~= "" and tonumber( f58_local2.killsExt ) > 0 then
|
|
f58_local0 = Engine.Localize( "@ALIENS_REQ_N_KILLS", tonumber( f58_local2.killsExt ) )
|
|
elseif f58_local2.revivesExt ~= "" and tonumber( f58_local2.revivesExt ) > 0 then
|
|
f58_local0 = Engine.Localize( "@ALIENS_REQ_N_REVIVES", tonumber( f58_local2.revivesExt ) )
|
|
else
|
|
f58_local0 = Engine.Localize( "@LUA_MENU_UNLOCKED_BY_DEFAULT" )
|
|
end
|
|
end
|
|
return f58_local0, f58_local1
|
|
end
|
|
|
|
function makeGenderFilter( f59_arg0 )
|
|
if type( f59_arg0 ) == "string" then
|
|
return function ( f60_arg0 )
|
|
return f60_arg0 == f59_arg0
|
|
end
|
|
|
|
else
|
|
return f59_arg0
|
|
end
|
|
end
|
|
|
|
Cac.Customization.GetElementRefsForField = function ( f61_arg0, f61_arg1, f61_arg2 )
|
|
assert( f61_arg1.csv )
|
|
local f61_local0 = {}
|
|
local f61_local1 = 0
|
|
local f61_local2 = 1000
|
|
local f61_local3 = f61_arg2 and f61_arg1.GenderColumn
|
|
f61_arg2 = makeGenderFilter( f61_arg2 )
|
|
for f61_local4 = f61_local1, f61_local2, 1 do
|
|
if Engine.TableLookup( f61_arg1.csv, 0, tostring( f61_local4 ), 0 ) == "" then
|
|
break
|
|
elseif not Cac.ShouldConcealCacItem( f61_arg0, f61_arg1, tostring( f61_local4 ) ) and (not f61_local3 or f61_arg2( Engine.TableLookup( f61_arg1.csv, 0, tostring( f61_local4 ), f61_arg1.GenderColumn ) )) then
|
|
table.insert( f61_local0, tostring( f61_local4 ) )
|
|
end
|
|
end
|
|
return f61_local0
|
|
end
|
|
|
|
Cac.Customization.GetElementCountForField = function ( f62_arg0 )
|
|
local f62_local0 = 0
|
|
local f62_local1 = Engine.TableLookup( f62_arg0.csv, 0, tostring( f62_local0 ), 2 )
|
|
while f62_local1 ~= "" do
|
|
f62_local0 = f62_local0 + 1
|
|
f62_local1 = Engine.TableLookup( f62_arg0.csv, 0, tostring( f62_local0 ), 2 )
|
|
end
|
|
return f62_local0
|
|
end
|
|
|
|
Cac.Customization.GetCategorizedElementRefsForField = function ( f63_arg0, f63_arg1, f63_arg2 )
|
|
local f63_local0 = {}
|
|
local f63_local1 = f63_arg2 and f63_arg1.GenderColumn
|
|
f63_arg2 = makeGenderFilter( f63_arg2 )
|
|
if f63_arg1.CategoryColumn and f63_arg1.CategoryNameColumn then
|
|
local f63_local2 = 0
|
|
local f63_local3 = 1000
|
|
local f63_local4 = f63_arg1.unlockType
|
|
local f63_local5 = {}
|
|
local f63_local6 = ""
|
|
local f63_local7 = 0
|
|
for f63_local8 = f63_local2, f63_local3, 1 do
|
|
if Engine.TableLookup( f63_arg1.csv, 0, tostring( f63_local8 ), 1 ) == "" then
|
|
break
|
|
elseif not Cac.ShouldConcealCacItem( f63_arg0, f63_arg1, tostring( f63_local8 ) ) then
|
|
local f63_local11 = Engine.TableLookup( f63_arg1.csv, 0, tostring( f63_local8 ), f63_arg1.CategoryColumn )
|
|
if not f63_local5[f63_local11] then
|
|
table.insert( f63_local0, {
|
|
name = Engine.Localize( Engine.TableLookup( f63_arg1.csv, 0, tostring( f63_local8 ), f63_arg1.CategoryNameColumn ) ),
|
|
elements = {},
|
|
dlc = f63_arg1.CategoryDLCName == f63_local11
|
|
} )
|
|
f63_local5[f63_local11] = #f63_local0
|
|
end
|
|
if not f63_local1 or f63_arg2( Engine.TableLookup( f63_arg1.csv, 0, tostring( f63_local8 ), f63_arg1.GenderColumn ) ) then
|
|
f63_local7 = f63_local5[f63_local11]
|
|
table.insert( f63_local0[f63_local5[f63_local11]].elements, tostring( f63_local8 ) )
|
|
end
|
|
end
|
|
end
|
|
if f63_arg1.CategoryDLCName then
|
|
for f63_local12, f63_local13 in ipairs( f63_local0 ) do
|
|
if f63_local13.dlc then
|
|
f63_local13.elements = LUI.ReverseTable( f63_local13.elements )
|
|
end
|
|
end
|
|
end
|
|
else
|
|
f63_local0 = {
|
|
{
|
|
name = Engine.Localize( "@LUA_MENU_CUSTOMIZATION_FIELD_" .. f63_arg1.LocName .. "_CAPS" ),
|
|
elements = Cac.Customization.GetElementRefsForField( f63_arg0, f63_arg1, f63_arg2 )
|
|
}
|
|
}
|
|
local f63_local2 = function ( f64_arg0, f64_arg1 )
|
|
local f64_local0 = tonumber( f64_arg0 )
|
|
local f64_local1 = tonumber( f64_arg1 )
|
|
local f64_local2 = Cac.IsCustomizationItemDLC( f63_arg1, f64_local0 )
|
|
local f64_local3 = Cac.IsCustomizationItemDLC( f63_arg1, f64_local1 )
|
|
if f64_local2 ~= f64_local3 then
|
|
return f64_local3
|
|
elseif f64_local2 then
|
|
return f64_local1 < f64_local0
|
|
else
|
|
return f64_local0 < f64_local1
|
|
end
|
|
end
|
|
|
|
for f63_local6, f63_local7 in ipairs( f63_local0 ) do
|
|
table.sort( f63_local7.elements, f63_local2 )
|
|
end
|
|
end
|
|
return f63_local0
|
|
end
|
|
|
|
Cac.GetDefaultBodyModel = function ( f65_arg0, f65_arg1 )
|
|
local f65_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
return f65_local0.MakeModelName( f65_local0.GetDefaultRef( f65_arg0, f65_arg1 ) )
|
|
end
|
|
|
|
Cac.GetDefaultHeadModel = function ( f66_arg0, f66_arg1 )
|
|
local f66_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
return f66_local0.MakeModelName( f66_local0.GetDefaultRef( f66_arg0, f66_arg1 ) )
|
|
end
|
|
|
|
Cac.GetDefaultBodyCamoRef = function ()
|
|
return Engine.TableLookupByRow( Cac.Customization.Camos.File, 4, Cac.Customization.Camos.Cols.Ref )
|
|
end
|
|
|
|
Cac.GetCamoRefs = function ()
|
|
local f68_local0 = {}
|
|
local f68_local1 = 0
|
|
local f68_local2 = 1000
|
|
for f68_local3 = f68_local1, f68_local2, 1 do
|
|
if Engine.TableLookup( Cac.Customization.Camos.File, Cac.Customization.Camos.Cols.Ref, tostring( f68_local3 ), Cac.Customization.Camos.Cols.Suffix ) == "" then
|
|
break
|
|
end
|
|
table.insert( f68_local0, tostring( f68_local3 ) )
|
|
end
|
|
return f68_local0
|
|
end
|
|
|
|
Cac.GetBodyCamoSuffix = function ( f69_arg0 )
|
|
return Engine.TableLookup( Cac.Customization.Camos.File, Cac.Customization.Camos.Cols.Ref, f69_arg0, Cac.Customization.Camos.Cols.Suffix )
|
|
end
|
|
|
|
Cac.GetHeadCamoSuffix = function ( f70_arg0 )
|
|
return Engine.TableLookup( Cac.Customization.Camos.File, Cac.Customization.Camos.Cols.Ref, f70_arg0, Cac.Customization.Camos.Cols.HeadSuffix )
|
|
end
|
|
|
|
Cac.GetBodyCamoName = function ( f71_arg0 )
|
|
return Engine.Localize( Engine.TableLookup( Cac.Customization.Camos.File, Cac.Customization.Camos.Cols.Ref, f71_arg0, Cac.Customization.Camos.Cols.Name ) )
|
|
end
|
|
|
|
Cac.GetHeadIndex = function ( f72_arg0, f72_arg1, f72_arg2 )
|
|
return Cac.GetCacConfig( f72_arg0, f72_arg1, f72_arg2, "head" )
|
|
end
|
|
|
|
Cac.SetHeadIndex = function ( f73_arg0, f73_arg1, f73_arg2, f73_arg3 )
|
|
Cac.SetCacConfig( f73_arg0, f73_arg1, f73_arg2, "head", f73_arg3 )
|
|
end
|
|
|
|
Cac.GetHelmetIndex = function ( f74_arg0, f74_arg1, f74_arg2 )
|
|
return Cac.GetCacConfig( f74_arg0, f74_arg1, f74_arg2, "helmet" )
|
|
end
|
|
|
|
Cac.SetHelmetIndex = function ( f75_arg0, f75_arg1, f75_arg2, f75_arg3 )
|
|
Cac.SetCacConfig( f75_arg0, f75_arg1, f75_arg2, "helmet", f75_arg3 )
|
|
end
|
|
|
|
Cac.GetBodyIndex = function ( f76_arg0, f76_arg1, f76_arg2 )
|
|
return Cac.GetCacConfig( f76_arg0, f76_arg1, f76_arg2, "body" )
|
|
end
|
|
|
|
Cac.SetBodyIndex = function ( f77_arg0, f77_arg1, f77_arg2, f77_arg3 )
|
|
Cac.SetCacConfig( f77_arg0, f77_arg1, f77_arg2, "body", f77_arg3 )
|
|
end
|
|
|
|
Cac.GetPatchIndex = function ( f78_arg0, f78_arg1, f78_arg2 )
|
|
return Cac.GetCacConfig( f78_arg0, f78_arg1, f78_arg2, "patch" )
|
|
end
|
|
|
|
Cac.SetPatchIndex = function ( f79_arg0, f79_arg1, f79_arg2, f79_arg3 )
|
|
Cac.SetCacConfig( f79_arg0, f79_arg1, f79_arg2, "patch", f79_arg3 )
|
|
end
|
|
|
|
Cac.GetPatchbackingIndex = function ( f80_arg0, f80_arg1, f80_arg2 )
|
|
return Cac.GetCacConfig( f80_arg0, f80_arg1, f80_arg2, "patchbacking" )
|
|
end
|
|
|
|
Cac.SetPatchbackingIndex = function ( f81_arg0, f81_arg1, f81_arg2, f81_arg3 )
|
|
Cac.SetCacConfig( f81_arg0, f81_arg1, f81_arg2, "patchbacking", f81_arg3 )
|
|
end
|
|
|
|
Cac.GetBackgroundIndex = function ( f82_arg0, f82_arg1, f82_arg2 )
|
|
return Cac.GetCacConfig( f82_arg0, f82_arg1, f82_arg2, "background" )
|
|
end
|
|
|
|
Cac.SetBackgroundIndex = function ( f83_arg0, f83_arg1, f83_arg2, f83_arg3 )
|
|
Cac.SetCacConfig( f83_arg0, f83_arg1, f83_arg2, "background", f83_arg3 )
|
|
end
|
|
|
|
Cac.SetDogIndex = function ( f84_arg0, f84_arg1 )
|
|
Engine.SetPlayerDataEx( f84_arg0, CoD.StatsGroup.Ranked, "dogType", f84_arg1 )
|
|
end
|
|
|
|
Cac.GetGenderFromHeadRef = function ( f85_arg0 )
|
|
local f85_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
return Engine.TableLookup( f85_local0.csv, 0, f85_arg0, f85_local0.GenderColumn )
|
|
end
|
|
|
|
Cac.GetGenderFromBodyRef = function ( f86_arg0 )
|
|
local f86_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body]
|
|
return Engine.TableLookup( f86_local0.csv, 0, f86_arg0, f86_local0.GenderColumn )
|
|
end
|
|
|
|
Cac.GetCurrentGender = function ( f87_arg0, f87_arg1, f87_arg2 )
|
|
return Cac.GetGenderFromBodyRef( Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body].GetSavedRef( f87_arg0, f87_arg1, f87_arg2 ) )
|
|
end
|
|
|
|
Cac.IsCommonGender = function ( f88_arg0 )
|
|
local f88_local0
|
|
if f88_arg0 ~= Cac.Customization.Gender.Male and f88_arg0 ~= Cac.Customization.Gender.Female then
|
|
f88_local0 = false
|
|
else
|
|
f88_local0 = true
|
|
end
|
|
return f88_local0
|
|
end
|
|
|
|
Cac.ResetGenderDependantFields = function ( f89_arg0, f89_arg1, f89_arg2, f89_arg3 )
|
|
assert( f89_arg3 )
|
|
for f89_local7, f89_local8 in ipairs( Cac.Customization.Fields ) do
|
|
if f89_local8.GenderColumn then
|
|
for f89_local3 = 0, 1000, 1 do
|
|
local f89_local6 = tostring( f89_local3 )
|
|
if Engine.TableLookup( f89_local8.csv, 0, f89_local6, 1 ) == "" then
|
|
DebugPrint( "WARNING: did not find a suitable value when resetting field " .. f89_local8.LocName .. " with gender restriction " .. f89_arg3 )
|
|
end
|
|
if f89_arg3 == Engine.TableLookup( f89_local8.csv, 0, tostring( f89_local3 ), f89_local8.GenderColumn ) then
|
|
f89_local8.SaveRef( f89_arg0, f89_arg1, f89_arg2, f89_local6 )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
Cac.IsCustomizationItemUnlocked = function ( f90_arg0, f90_arg1, f90_arg2, f90_arg3 )
|
|
return Cac.IsLoadOutItemUnlocked( f90_arg0, f90_arg1, f90_arg2, f90_arg3 )
|
|
end
|
|
|
|
Cac.IsCamoReticleItemUnlocked = function ( f91_arg0, f91_arg1, f91_arg2, f91_arg3 )
|
|
return Cac.IsLoadOutItemUnlocked( f91_arg0, f91_arg1, f91_arg2, f91_arg3 )
|
|
end
|
|
|
|
Cac.IsWeaponItemUnlocked = function ( f92_arg0, f92_arg1, f92_arg2, f92_arg3 )
|
|
return Cac.IsLoadOutItemUnlocked( f92_arg0, f92_arg1, f92_arg2, f92_arg3 )
|
|
end
|
|
|
|
Cac.IsLoadOutItemUnlocked = function ( f93_arg0, f93_arg1, f93_arg2, f93_arg3 )
|
|
if Engine.IsUserAGuest( f93_arg0 ) or not Engine.IsUserSignedInToLive( f93_arg0 ) then
|
|
f93_arg0 = Engine.GetFirstActiveController()
|
|
end
|
|
if f93_arg1.IsUnlocked then
|
|
return f93_arg1.IsUnlocked( f93_arg0, f93_arg2 )
|
|
elseif IsPublicMatch() or f93_arg3 or IsOnlineAliens() then
|
|
return Lobby.IsItemOfTypeUnlocked( f93_arg0, f93_arg2, f93_arg1.UnlockType )
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
Cac.IsCustomizationItemDLC = function ( f94_arg0, f94_arg1 )
|
|
assert( f94_arg0.csv )
|
|
if f94_arg0.DLCOffer and Engine.TableLookup( f94_arg0.csv, 0, f94_arg1, f94_arg0.DLCOffer ) ~= "" then
|
|
return true
|
|
elseif f94_arg0.IsEntitlementColumn and Engine.TableLookup( f94_arg0.csv, 0, f94_arg1, f94_arg0.IsEntitlementColumn ) == "2" then
|
|
return true
|
|
elseif f94_arg0.SecondaryEntitlementColumn and Engine.TableLookup( f94_arg0.csv, 0, f94_arg1, f94_arg0.SecondaryEntitlementColumn ) == "2" then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
Cac.ShouldConcealCacItem = function ( f95_arg0, f95_arg1, f95_arg2 )
|
|
if f95_arg1.HideIfItemColumn then
|
|
local f95_local0 = Engine.TableLookup( f95_arg1.csv, 0, f95_arg2, f95_arg1.HideIfItemColumn )
|
|
if f95_local0 ~= "" and Cac.IsLoadOutItemUnlocked( f95_arg0, f95_arg1, f95_local0 ) then
|
|
return true
|
|
end
|
|
end
|
|
if f95_arg1.IsReleased and not f95_arg1.IsReleased( f95_arg2 ) then
|
|
return true
|
|
end
|
|
local f95_local0 = f95_arg1.IsEntitlementColumn and Engine.TableLookup( f95_arg1.csv, 0, f95_arg2, f95_arg1.IsEntitlementColumn ) or nil
|
|
local f95_local1 = f95_arg1.SecondaryEntitlementColumn and Engine.TableLookup( f95_arg1.csv, 0, f95_arg2, f95_arg1.SecondaryEntitlementColumn ) or nil
|
|
local f95_local2
|
|
if f95_local0 ~= "2" and f95_local1 ~= "2" then
|
|
f95_local2 = false
|
|
else
|
|
f95_local2 = true
|
|
end
|
|
local f95_local3
|
|
if f95_local0 ~= "3" and f95_local1 ~= "3" then
|
|
f95_local3 = false
|
|
else
|
|
f95_local3 = true
|
|
end
|
|
if ((f95_arg1.HideUnlessUnlockedColumn and Engine.TableLookup( f95_arg1.csv, 0, f95_arg2, f95_arg1.HideUnlessUnlockedColumn ) or false) == "1" or (f95_local2 or f95_local3) and not IsPublicMatch() and not IsOnlineAliens()) and not Cac.IsLoadOutItemUnlocked( f95_arg0, f95_arg1, f95_arg2, true ) then
|
|
return true
|
|
elseif f95_arg1.ReleaseKillswitch and (f95_local0 ~= "1" or not Cac.IsLoadOutItemUnlocked( f95_arg0, f95_arg1, f95_arg2, true )) then
|
|
local f95_local4 = Engine.TableLookup( f95_arg1.csv, 0, f95_arg2, f95_arg1.ReleaseKillswitch )
|
|
local f95_local5
|
|
if f95_local4 ~= "" and Engine.GetDvarInt( f95_local4 ) ~= 1 then
|
|
f95_local5 = false
|
|
else
|
|
f95_local5 = true
|
|
end
|
|
if not f95_local5 then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
Cac.DoesHeadUseHelmet = function ( f96_arg0 )
|
|
local f96_local0 = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head]
|
|
return Engine.TableLookup( f96_local0.csv, 0, f96_arg0, f96_local0.UseHelmetColumn ) == "1"
|
|
end
|
|
|
|
Cac.GetRandomIdleAnim = function ( f97_arg0, f97_arg1 )
|
|
local f97_local0 = Cac.Customization.Animations.idles.normal
|
|
if Engine.IsAliensMode() then
|
|
f97_local0 = Cac.Customization.Animations.idles.pistol
|
|
elseif string.find( f97_arg0, "riotshield" ) then
|
|
f97_local0 = Cac.Customization.Animations.idles.riotshield
|
|
elseif string.find( f97_arg0, "knifeonly" ) then
|
|
f97_local0 = Cac.Customization.Animations.idles.knifeonly
|
|
end
|
|
local f97_local1 = math.random( 1, #f97_local0 )
|
|
if f97_arg1 and f97_local0[f97_local1] == f97_arg1 and #f97_local0 > 1 then
|
|
if #f97_local0 < f97_local1 + 1 then
|
|
f97_local1 = f97_local1 - 1
|
|
else
|
|
f97_local1 = f97_local1 + 1
|
|
end
|
|
end
|
|
return f97_local0[f97_local1]
|
|
end
|
|
|
|
NewIconsTable = {
|
|
File = "mp/mDLCNewIcons.csv",
|
|
Cols = {
|
|
Idx = 0,
|
|
Item = 1,
|
|
Type = 2,
|
|
ReleaseKillswitch = 3
|
|
},
|
|
Size = 600,
|
|
CACItemTypes = {
|
|
"Weapon_Primary",
|
|
"Weapon_Secondary",
|
|
"Camo",
|
|
"Patch",
|
|
"Background",
|
|
"Head",
|
|
"Helmet",
|
|
"Body",
|
|
"Special",
|
|
"LoadoutSlot",
|
|
"Announcer"
|
|
}
|
|
}
|
|
Cac.TryGetFieldFromType = function ( f98_arg0 )
|
|
for f98_local3, f98_local4 in ipairs( Cac.Customization.Fields ) do
|
|
if f98_local4.UnlockType then
|
|
if f98_local4.UnlockType == f98_arg0 then
|
|
return f98_local4
|
|
elseif f98_arg0 == "Special" and f98_local4.UnlockType == "Body" then
|
|
return f98_local4
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
Cac.AnyUnseenMDLCItems = function ( f99_arg0, f99_arg1, f99_arg2 )
|
|
if not Engine.InFrontend() or not IsPublicMatch() then
|
|
return false
|
|
elseif f99_arg2 then
|
|
f99_arg2 = makeGenderFilter( f99_arg2 )
|
|
end
|
|
local f99_local0 = {}
|
|
local f99_local1 = 0
|
|
local f99_local2 = 0
|
|
repeat
|
|
local f99_local3 = Engine.TableLookupByRow( NewIconsTable.File, f99_local2, NewIconsTable.Cols.Item )
|
|
local f99_local4 = Engine.TableLookupByRow( NewIconsTable.File, f99_local2, NewIconsTable.Cols.Type )
|
|
local f99_local5 = Engine.TableLookupByRow( NewIconsTable.File, f99_local2, NewIconsTable.Cols.ReleaseKillswitch )
|
|
if f99_local3 == "" then
|
|
break
|
|
else
|
|
if f99_local5 ~= "" and Engine.GetDvarInt( f99_local5 ) ~= 1 then
|
|
local f99_local6 = false
|
|
else
|
|
local f99_local6 = true
|
|
end
|
|
if f99_local5 == "AnnouncerCheck" then
|
|
local f99_local6 = Engine.IsAnnouncerReleased( f99_local3 )
|
|
end
|
|
if f99_local6 and not Engine.GetPlayerDataEx( f99_arg0, CoD.StatsGroup.Common, "iconNew", f99_local2 ) then
|
|
local f99_local7 = false
|
|
if f99_local4 == "Camo" then
|
|
f99_local7 = Cac.ShouldHideCamoOrReticleEntitlement( f99_arg0, f99_local3 )
|
|
else
|
|
local f99_local8 = Cac.TryGetFieldFromType( f99_local4 )
|
|
if f99_local8 then
|
|
if Cac.ShouldConcealCacItem( f99_arg0, f99_local8, f99_local3 ) then
|
|
f99_local7 = true
|
|
elseif f99_arg2 and f99_local8.GenderColumn and not f99_arg2( Engine.TableLookup( f99_local8.csv, 0, tostring( f99_local3 ), f99_local8.GenderColumn ) ) then
|
|
f99_local7 = true
|
|
end
|
|
end
|
|
end
|
|
if not f99_local7 then
|
|
if not f99_local0[f99_local4] then
|
|
f99_local0[f99_local4] = {}
|
|
end
|
|
table.insert( f99_local0[f99_local4], f99_local3 )
|
|
f99_local1 = f99_local1 + 1
|
|
end
|
|
end
|
|
f99_local2 = f99_local2 + 1
|
|
end
|
|
until f99_local2 >= NewIconsTable.Size
|
|
if f99_arg1 then
|
|
for f99_local6, f99_local7 in pairs( f99_arg1 ) do
|
|
if f99_local0[f99_local7] then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
else
|
|
return f99_local1 > 0
|
|
end
|
|
end
|
|
|
|
Cac.GetRowForNewIconItem = function ( f100_arg0, f100_arg1 )
|
|
local f100_local0 = 0
|
|
repeat
|
|
local f100_local1 = Engine.TableLookupByRow( NewIconsTable.File, f100_local0, NewIconsTable.Cols.Item )
|
|
local f100_local2 = Engine.TableLookupByRow( NewIconsTable.File, f100_local0, NewIconsTable.Cols.Type )
|
|
if f100_local1 == "" then
|
|
return nil
|
|
elseif f100_local1 == f100_arg0 and f100_local2 == f100_arg1 then
|
|
return f100_local0
|
|
end
|
|
f100_local0 = f100_local0 + 1
|
|
until f100_local0 >= NewIconsTable.Size
|
|
end
|
|
|
|
Cac.ItemHasNewIcon = function ( f101_arg0, f101_arg1, f101_arg2, f101_arg3 )
|
|
local f101_local0 = false
|
|
if Engine.InFrontend() and IsPublicMatch() then
|
|
if f101_arg3 then
|
|
if not Cac.ShouldConcealCacItem( f101_arg0, f101_arg3, f101_arg1 ) then
|
|
local f101_local1 = Cac.GetRowForNewIconItem( f101_arg1, f101_arg2 or f101_arg3.UnlockType )
|
|
if f101_local1 and not Engine.GetPlayerDataEx( f101_arg0, CoD.StatsGroup.Common, "iconNew", f101_local1 ) then
|
|
f101_local0 = true
|
|
end
|
|
end
|
|
else
|
|
local f101_local1 = Cac.GetRowForNewIconItem( f101_arg1, f101_arg2 )
|
|
if f101_local1 and not Engine.GetPlayerDataEx( f101_arg0, CoD.StatsGroup.Common, "iconNew", f101_local1 ) then
|
|
f101_local0 = true
|
|
end
|
|
end
|
|
end
|
|
return f101_local0
|
|
end
|
|
|
|
Cac.MarkItemNoMoreNewIcon = function ( f102_arg0, f102_arg1, f102_arg2 )
|
|
local f102_local0 = Cac.GetRowForNewIconItem( f102_arg1, f102_arg2 )
|
|
if f102_local0 then
|
|
Engine.SetPlayerDataEx( f102_arg0, CoD.StatsGroup.Common, "iconNew", f102_local0, true )
|
|
end
|
|
end
|
|
|
|
Cac.ClearAllNewIconsForType = function ( f103_arg0, f103_arg1 )
|
|
local f103_local0 = 0
|
|
repeat
|
|
local f103_local1 = Engine.TableLookupByRow( NewIconsTable.File, f103_local0, NewIconsTable.Cols.Item )
|
|
local f103_local2 = Engine.TableLookupByRow( NewIconsTable.File, f103_local0, NewIconsTable.Cols.Type )
|
|
if f103_local1 == "" then
|
|
break
|
|
else
|
|
if f103_local2 == f103_arg1 then
|
|
Engine.SetPlayerDataEx( f103_arg0, CoD.StatsGroup.Common, "iconNew", f103_local0, true )
|
|
end
|
|
f103_local0 = f103_local0 + 1
|
|
end
|
|
until f103_local0 >= NewIconsTable.Size
|
|
end
|
|
|
|
Cac.AnyNewIconsForWeaponsOfClass = function ( f104_arg0, f104_arg1 )
|
|
if not Engine.InFrontend() or not IsPublicMatch() then
|
|
return false
|
|
end
|
|
local f104_local0 = 0
|
|
repeat
|
|
local f104_local1 = Engine.TableLookupByRow( NewIconsTable.File, f104_local0, NewIconsTable.Cols.Item )
|
|
local f104_local2 = Engine.TableLookupByRow( NewIconsTable.File, f104_local0, NewIconsTable.Cols.Type )
|
|
if f104_local1 == "" then
|
|
break
|
|
else
|
|
if f104_local2 == "Weapon_Primary" or f104_local2 == "Weapon_Secondary" then
|
|
local f104_local3 = Engine.TableLookupByRow( NewIconsTable.File, f104_local0, NewIconsTable.Cols.ReleaseKillswitch )
|
|
local f104_local4
|
|
if f104_local3 ~= "" and Engine.GetDvarInt( f104_local3 ) ~= 1 then
|
|
f104_local4 = false
|
|
else
|
|
f104_local4 = true
|
|
end
|
|
if f104_local4 and Cac.GetWeaponClass( f104_local1 ) == f104_arg1 and not Engine.GetPlayerDataEx( f104_arg0, CoD.StatsGroup.Common, "iconNew", f104_local0 ) then
|
|
return true
|
|
end
|
|
end
|
|
f104_local0 = f104_local0 + 1
|
|
end
|
|
until f104_local0 >= NewIconsTable.Size
|
|
return false
|
|
end
|
|
|
|
Cac.ValidateCustomizationItems = function ( f105_arg0, f105_arg1, f105_arg2 )
|
|
for f105_local6, f105_local7 in ipairs( Cac.Customization.Fields ) do
|
|
if f105_local7.GetSavedRef and f105_local7.GetDefaultRef and f105_local7.SaveRef then
|
|
local f105_local3 = f105_local7.GetSavedRef( f105_arg0, f105_arg1, f105_arg2 )
|
|
local f105_local4 = true
|
|
if f105_arg1 == "privateMatchSquadMembers" and Cac.IsCustomizationItemDLC( f105_local7, f105_local3 ) then
|
|
f105_local4 = Cac.IsCustomizationItemUnlocked( f105_arg0, f105_local7, f105_local3, true )
|
|
else
|
|
f105_local4 = Cac.IsCustomizationItemUnlocked( f105_arg0, f105_local7, f105_local3, false )
|
|
end
|
|
if f105_local3 and not f105_local4 then
|
|
local f105_local5 = Cac.GetCurrentGender( f105_arg0, f105_arg1, f105_arg2 )
|
|
if f105_local7.GenderColumn and not Cac.IsCommonGender( f105_local5 ) then
|
|
Cac.ResetGenderDependantFields( f105_arg0, f105_arg1, f105_arg2, Cac.Customization.Gender.Male )
|
|
else
|
|
f105_local7.SaveRef( f105_arg0, f105_arg1, f105_arg2, f105_local7.GetDefaultRef( f105_arg0, f105_local5 ) )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|