class ExtPerksContainer_Details extends KFGFxPerksContainer_Details; `define AddWeaponsInfo(InClassDef) if (`InClassDef!=None) AddWeaponInfo(WeaponNames, WeaponSources, `InClassDef.static.GetItemName(), `InClassDef.static.GetImagePath()) final function ExUpdateDetails(Ext_PerkBase PerkClass) { local GFxObject DetailsProvider; local KFPlayerController KFPC; local KFGameReplicationInfo KFGRI; local array WeaponNames; local array WeaponSources; local int i; DetailsProvider = CreateObject("Object"); KFPC = KFPlayerController(GetPC()); if (KFPC != none) { KFGRI = KFGameReplicationInfo(KFPC.WorldInfo.GRI); DetailsProvider.SetString("ExperienceMessage", ExperienceString @ PerkClass.CurrentEXP); if (KFGRI != none) { `AddWeaponsInfo(PerkClass.PrimaryWeaponDef); `AddWeaponsInfo(PerkClass.SecondaryWeaponDef); `AddWeaponsInfo(PerkClass.KnifeWeaponDef); `AddWeaponsInfo(PerkClass.GrenadeWeaponDef); } for (i = 0; i < WeaponNames.length; i++) { DetailsProvider.SetString("WeaponName" $ i, WeaponNames[i]); DetailsProvider.SetString("WeaponImage" $ i, "img://"$WeaponSources[i]); } DetailsProvider.SetString("EXPAction1", "Kill zombies"); //DetailsProvider.SetString("EXPAction2", PerkClass.default.EXPAction2); SetObject("detailsData", DetailsProvider); } } final function ExUpdatePassives(Ext_PerkBase PerkClass) { local GFxObject PassivesProvider; local GFxObject PassiveObject; local int i; PassivesProvider = CreateArray(); for (i=0; i