class SRModelSelect extends KFModelSelect; var int CustomOffset; var localized string AllText,CustomText,StockText; var array CharCategories; var array CategoryNames; function InitComponent(GUIController MyController, GUIComponent MyOwner) { local ClientPerkRepLink S; local int i,j; local string C,G; local xUtil.PlayerRecord PR; super(LockedFloatingWindow).Initcomponent(MyController, MyOwner); co_Race.MyComboBox.List.bInitializeList = True; co_Race.ReadOnly(True); co_Race.AddItem(AllText); sb_Main.SetPosition(0.040000,0.075000,0.680742,0.555859); sb_Main.RightPadding = 0.5; sb_Main.ManageComponent(CharList); S = Class'ClientPerkRepLink'.Static.FindStats(PlayerOwner()); if( S==None || !S.bNoStandardChars ) { class'xUtil'.static.GetPlayerList(PlayerList); co_Race.AddItem(StockText); CategoryNames.Length = 1; CategoryNames[0] = StockText; } CustomOffset = 0; CharCategories.Length = PlayerList.Length; // Add in custom mod chars. if( S!=None ) { for( i=0; i=CustomOffset; --i ) if( !IsUnLocked(PlayerList[i]) ) PlayerList.Remove(i,1); RefreshCharacterList(""); // Spawn spinning character actor if ( SpinnyDude == None ) SpinnyDude = PlayerOwner().spawn(class'XInterface.SpinnyWeap'); SpinnyDude.SetDrawType(DT_Mesh); SpinnyDude.SetDrawScale(0.9); SpinnyDude.SpinRate = 0; } function RefreshCharacterList(string ExcludedChars, optional string Race) { local int i,iCategory; // Prevent list from calling OnChange events CharList.List.bNotify = False; CharList.Clear(); if( Race=="" ) iCategory = -1; else { for( i=0; i= 0 && Elem.Item < Playerlist.Length ) { if ( Elem.Locked==1 ) b_Ok.DisableMe(); else b_Ok.EnableMe(); sb_Main.Caption = PlayerList[Elem.Item].DefaultName; } else sb_Main.Caption = ""; UpdateSpinnyDude(); } function bool IsUnlocked(xUtil.PlayerRecord Test) { local int i; // If character has no menu filter, just return true if ( PlayerOwner() == none ) return true; for( i=0; i