Class Ext_TraitZED_Summon extends Ext_TraitZEDBase abstract; struct FZEDTypes { var() array< class > Zeds; }; var() array DefZedTypes; var config array ZedTypes; var config float ZedRespawnTime; var config int FinalLevelPrestige; static function string GetPerkDescription() { local string S; S = Super.GetPerkDescription(); if( Default.FinalLevelPrestige>0 ) S $= "|Level 6 requires prestige level: #{FF4000}"$Default.FinalLevelPrestige; return S; } static function CheckConfig() { local byte i,j; if( Default.ZedTypes.Length==0 ) { Default.ZedTypes.Length = Default.DefZedTypes.Length; for( i=0; i=5 && Perk.CurrentPrestige=0 ) return (Perk.PerkStats[i].CurrentValue>=30); } return true; } static function ApplyEffectOn( KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data ) { local Ext_T_ZEDHelper H; local int i; H = Player.Spawn(class'Ext_T_ZEDHelper',Player); if( H!=None ) H.CurLevel = Level-1; // Make other traits refresh (apply HP/damage scalers). for( i=0; i0 && Class(Perk.PerkTraits[i].TraitType)!=None && !Class(Perk.PerkTraits[i].TraitType).Default.bIsSummoner ) Perk.PerkTraits[i].TraitType.Static.ApplyEffectOn(Player,Perk,Level,Data); } static function CancelEffectOn( KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data ) { local Ext_T_ZEDHelper H; foreach Player.ChildActors(class'Ext_T_ZEDHelper',H) if( !H.bIsExtra ) H.Destroy(); } // Replication for final level prestige. static function string GetRepData() { local string S; S = Super.GetRepData(); S $= IntToStr(Default.FinalLevelPrestige); return S; } static function string ClientSetRepData( string S ) { S = Super.ClientSetRepData(S); Default.FinalLevelPrestige = StrToInt(S); return S; } static function string GetValue( name PropName, int ElementIndex ) { switch( PropName ) { case 'ZedTypes': return (ElementIndex==-1 ? string(Default.ZedTypes.Length) : Default.ZedTypes[ElementIndex]); case 'ZedRespawnTime': return string(Default.ZedRespawnTime); case 'FinalLevelPrestige': return string(Default.FinalLevelPrestige); default: return Super.GetValue(PropName,ElementIndex); } } static function ApplyValue( name PropName, int ElementIndex, string Value ) { switch( PropName ) { case 'ZedTypes': if( Value!="#DELETE" && ElementIndex