| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				@ -1,8 +1,10 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				class NiceInteraction extends Interaction
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    dependson(NicePack)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    dependson(NiceAbilityManager);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#exec OBJ LOAD FILE=KillingFloorHUD.utx
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#exec OBJ LOAD FILE=KillingFloor2HUD.utx
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var NicePack NicePackMutator;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var Material bleedIcon, poisonIcon;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var Texture greenBar, redBar;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -13,6 +15,16 @@ var float   InventoryBoxWidth;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var float   InventoryBoxHeight;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var float   BorderSize;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				// weapons list for `MultiTasker` skill
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				struct WeaponProgressDisplay
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var class<NiceWeapon>   weapClass;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var float               progress;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var bool                bShowCounter;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var int                 counter;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var array<WeaponProgressDisplay> niceWeapProgressSet;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				event NotifyLevelChange()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   Master.RemoveInteraction(self);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -23,7 +35,7 @@ function RegisterMutator(NicePack activePack)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   NicePackMutator = activePack;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				final private function bool bIsPoisoned(ScrnHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				final private function bool bIsPoisoned(NiceHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   local Inventory I;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -31,14 +43,14 @@ final private function bool bIsPoisoned(ScrnHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      for (I = pwn.Inventory; I != none; I = I.Inventory)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				         if (MeanPoisonInventory(I) != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				         if (I.IsA('MeanPoisonInventory'))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   return false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				final private function bool bIsBleeding(ScrnHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				final private function bool bIsBleeding(NiceHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   local Inventory I;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -46,13 +58,40 @@ final private function bool bIsBleeding(ScrnHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      for (I = pwn.Inventory; I != none; I = I.Inventory)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				         if (MeanBleedInventory(I) != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				         if (I.IsA('MeanBleedInventory'))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   return false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				final private function UpdateNiceWeapProgressSet(NiceHumanPawn pwn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local Inventory I;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local NiceWeapon niceWeap;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local WeaponProgressDisplay newProgress;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // clean this!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    niceWeapProgressSet.Length = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (pwn.Inventory != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (I = pwn.Inventory; I != none; I = I.Inventory)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            niceWeap = NiceWeapon(I);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (niceWeap != none && niceWeap != pwn.weapon && !niceWeap.IsMagazineFull())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                newProgress.weapClass = niceWeap.class;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                newProgress.progress = niceWeap.holsteredCompletition;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                newProgress.bShowCounter = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                newProgress.counter = niceWeap.GetMagazineAmmo();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                niceWeapProgressSet[niceWeapProgressSet.Length] = newProgress;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function PostRender(Canvas C)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local int i;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -63,175 +102,181 @@ function PostRender(Canvas C)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local NicePlayerController nicePlayer;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local ScrnHUD scrnHUDInstance;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // TODO maybe use scrnhud?
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   //  local HUDKillingFloor kfHud;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //  local HUDKillingFloor kfHud;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local Texture barTexture;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local int x, y, center, barWidth, offset;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local int missesWidth, missesHeight, missesSpace;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local int missesX, missesY;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   //  local Vector CamPos, ViewDir;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   //  local Rotator CamRot;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   //  local float OffsetX, BarLength, BarHeight, XL, YL, posY;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //  local Vector CamPos, ViewDir;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //  local Rotator CamRot;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //  local float OffsetX, BarLength, BarHeight, XL, YL, posY;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (C == none || C.ViewPort == none || C.ViewPort.Actor == none || C.ViewPort.Actor.Pawn == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(C == none) return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(C.ViewPort == none) return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(C.ViewPort.Actor == none) return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(C.ViewPort.Actor.Pawn == none) return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    niceWeap = NiceWeapon(C.ViewPort.Actor.Pawn.Weapon);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(nicePlayer == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (nicePlayer == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    nicePawn = NiceHumanPawn(nicePlayer.pawn);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //// Draw bleed and poison icons for OWNER
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    offset = 4;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   // BLEED!!!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   if (bIsBleeding(ScrnHumanPawn(C.ViewPort.Actor.Pawn)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      x = C.ClipX * 0.007;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      y = C.ClipY * 0.93 - size * offset;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      C.SetPos(x, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      C.DrawTile(bleedIcon, size, size, 0, 0, bleedIcon.MaterialUSize(), bleedIcon.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   offset++;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   // POISON!!!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   if (bIsPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      x = C.ClipX * 0.007;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      y = C.ClipY * 0.93 - size * offset;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      C.SetPos(x, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   // draw bleed and poison icons for TEAMMATES
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//    C.GetCAmeraLocation(CamPos, CamRot);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   ViewDir = vector(CamRot);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   kfHud = HUDKillingFloor(ViewportOwner.Actor.myHUD);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   OffsetX = (36.f * kfHud.default.VeterancyMatScaleFactor * 0.6) - (kfHud.default.HealthIconSize + 2.0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   BarLength = FMin(kfHud.default.BarLength * (float(C.SizeX) / 1024.f), kfHud.default.BarLength);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   BarHeight = FMin(kfHud.default.BarHeight * (float(C.SizeX) / 1024.f), kfHud.default.BarHeight);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   for (i = 0; i < kfHUD.PlayerInfoPawns.Length; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//     if (kfHUD.PlayerInfoPawns[i].Pawn != none && kfHUD.PlayerInfoPawns[i].Pawn.Health > 0 && 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//                 (kfHUD.PlayerInfoPawns[i].Pawn.Location - kfHUD.PawnOwner.Location) dot ViewDir > 0.8 &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//                 kfHUD.PlayerInfoPawns[i].RendTime > ViewportOwner.Actor.Level.TimeSeconds)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//     {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       C.StrLen(Left(kfHUD.PlayerInfoPawns[i].Pawn.PlayerReplicationInfo.PlayerName, 16), XL, YL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       if (kfHUD.PlayerInfoPawns[i].Pawn.ShieldStrength <= 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//         posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 2.75 * BarHeight -
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//                         kfHUD.default.ArmorIconSize * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//         posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 3.8 * BarHeight -
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//                         kfHUD.default.ArmorIconSize * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       offset = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       if (bIsBleeding(ScrnHumanPawn(kfHUD.PlayerInfoPawns[i].Pawn)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//         C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX - 0.15 * BarLength - 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//                         kfHUD.default.ArmorIconSize - 2.0, posY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//         C.DrawTileScaled(bleedIcon, 0.1875, 0.1875);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       if (bIsPoisoned(ScrnHumanPawn(kfHUD.PlayerInfoPawns[i].Pawn)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//         C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX + 0.15 * BarLength -
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//                         kfHUD.default.ArmorIconSize - 2.0, posY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//         C.DrawTileScaled(poisonIcon, 0.1875, 0.1875);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//     }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//   }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // BLEED!!!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (bIsBleeding(nicePawn))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.ColorModulate.X = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.ColorModulate.Y = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.ColorModulate.Z = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(!scrnHUDInstance.bLightHud)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        x = C.ClipX * 0.007;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        y = C.ClipY * 0.93 - size * offset;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.SetPos(x, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.DrawTile(bleedIcon, size, size, 0, 0, bleedIcon.MaterialUSize(), bleedIcon.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    offset++;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // POISON!!!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (bIsPoisoned(nicePawn))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        x = C.ClipX * 0.007;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        y = C.ClipY * 0.93 - size * offset;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.SetPos(x, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    niceMutator = class'NicePack'.static.Myself(C.ViewPort.Actor.Pawn.Level);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (niceMutator == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //// Draw counters
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(nicePlayer != none && nicePlayer.bFlagDisplayCounters)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       x = C.ClipX * 0.5 - (64 + 2) * niceMutator.GetVisibleCountersAmount();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       y = C.ClipY * 0.01;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       for(i = 0;i < niceMutator.niceCounterSet.Length;i ++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           if(niceMutator.niceCounterSet[i].value != 0 || niceMutator.niceCounterSet[i].bShowZeroValue){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               DrawCounter(C, niceMutator.niceCounterSet[i], x, y, C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               x += 128 + 4;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // TODO draw bleed and poison icons for TEAMMATES
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // C.GetCAmeraLocation(CamPos, CamRot);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // ViewDir = vector(CamRot);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // kfHud = HUDKillingFloor(ViewportOwner.Actor.myHUD);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // OffsetX = (36.f * kfHud.default.VeterancyMatScaleFactor * 0.6) - (kfHud.default.HealthIconSize + 2.0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // BarLength = FMin(kfHud.default.BarLength * (float(C.SizeX) / 1024.f), kfHud.default.BarLength);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // BarHeight = FMin(kfHud.default.BarHeight * (float(C.SizeX) / 1024.f), kfHud.default.BarHeight);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // for (i = 0; i < kfHUD.PlayerInfoPawns.Length; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     if (kfHUD.PlayerInfoPawns[i].Pawn != none && kfHUD.PlayerInfoPawns[i].Pawn.Health > 0 && 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //                 (kfHUD.PlayerInfoPawns[i].Pawn.Location - kfHUD.PawnOwner.Location) dot ViewDir > 0.8 &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //                 kfHUD.PlayerInfoPawns[i].RendTime > ViewportOwner.Actor.Level.TimeSeconds)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     C.StrLen(Left(kfHUD.PlayerInfoPawns[i].Pawn.PlayerReplicationInfo.PlayerName, 16), XL, YL);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     if (kfHUD.PlayerInfoPawns[i].Pawn.ShieldStrength <= 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 2.75 * BarHeight -
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //                         kfHUD.default.ArmorIconSize * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 3.8 * BarHeight -
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //                         kfHUD.default.ArmorIconSize * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     offset = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     if (bIsBleeding(ScrnHumanPawn(kfHUD.PlayerInfoPawns[i].Pawn)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX - 0.15 * BarLength - 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //                         kfHUD.default.ArmorIconSize - 2.0, posY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         C.DrawTileScaled(bleedIcon, 0.1875, 0.1875);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     if (bIsPoisoned(ScrnHumanPawn(kfHUD.PlayerInfoPawns[i].Pawn)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX + 0.15 * BarLength -
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //                         kfHUD.default.ArmorIconSize - 2.0, posY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         C.DrawTileScaled(poisonIcon, 0.1875, 0.1875);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //// Draw weapons progress bars
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerMultitasker')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        && nicePlayer.bFlagDisplayWeaponProgress && niceMutator.niceWeapProgressSet.length > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // at first update weapon info
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    UpdateNiceWeapProgressSet(nicePawn);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (nicePawn != none && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerMultitasker')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        && nicePlayer.bFlagDisplayWeaponProgress && niceWeapProgressSet.length > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        x = C.ClipX - InventoryBoxWidth * C.ClipX - 5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        y = C.ClipY * 0.5 - 0.5 * (InventoryBoxHeight * C.ClipX + 4) * niceMutator.niceWeapProgressSet.Length;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (i = 0;i < niceMutator.niceWeapProgressSet.Length;i ++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        y = C.ClipY * 0.5 - 0.5 * (InventoryBoxHeight * C.ClipX + 4) * niceWeapProgressSet.Length;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (i = 0; i < niceWeapProgressSet.Length; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            DrawWeaponProgress(C, niceMutator.niceWeapProgressSet[i], x, y,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            DrawWeaponProgress(C, niceWeapProgressSet[i], x, y, nicePawn.PlayerReplicationInfo.Team);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            y += (InventoryBoxHeight * C.ClipX + 4);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //// Draw invincibility bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    nicePawn = NiceHumanPawn(nicePlayer.pawn);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(nicePawn != none && nicePawn.invincibilityTimer != 0.0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.SetDrawColor(255, 255, 255);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(nicePawn.invincibilityTimer > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           barTexture = greenBar;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           barTexture = redBar;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       center = C.ClipX * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       y = C.ClipY * 0.75;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       barWidth = C.ClipX * 0.2;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       niceVet = class'NiceVeterancyTypes'.static.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           GetVeterancy(nicePawn.PlayerReplicationInfo);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(niceVet != none){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           if(nicePawn.invincibilityTimer > 0){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               barWidth *= nicePawn.invincibilityTimer
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                   / niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           else{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               barWidth *= nicePawn.invincibilityTimer /
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                   class'NiceSkillZerkGunzerker'.default.cooldown;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           barWidth = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       x = center - (barWidth / 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.SetPos(x, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(nicePawn.safeMeleeMisses <= 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       missesSpace = 10;//64x64 => 16x16
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       missesHeight = 16;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       missesWidth =   nicePawn.safeMeleeMisses * 16
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                   +   (nicePawn.safeMeleeMisses - 1) * missesSpace;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       missesX = center - (missesWidth / 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       missesY = y + (32 - missesHeight) * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       for(i = 0;i < nicePawn.safeMeleeMisses;i ++){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           C.SetPos(missesX + i * (16 + missesSpace), missesY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.ColorModulate.X = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.ColorModulate.Y = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.ColorModulate.Z = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!scrnHUDInstance.bLightHud)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //  Draw cooldowns
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(nicePlayer.abilityManager == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //// Draw invincibility bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (nicePawn != none && nicePawn.invincibilityTimer != 0.0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.SetDrawColor(255, 255, 255);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (nicePawn.invincibilityTimer > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            barTexture = greenBar;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            barTexture = redBar;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        center = C.ClipX * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        y = C.ClipY * 0.75;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        barWidth = C.ClipX * 0.2;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        niceVet = class'NiceVeterancyTypes'.static.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            GetVeterancy(nicePawn.PlayerReplicationInfo);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (niceVet != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (nicePawn.invincibilityTimer > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                barWidth *= nicePawn.invincibilityTimer / niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               barWidth *= nicePawn.invincibilityTimer / class'NiceSkillZerkGunzerker'.default.cooldown;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            barWidth = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        x = center - (barWidth / 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.SetPos(x, y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (nicePawn.safeMeleeMisses <= 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        missesSpace = 10; // 64x64 => 16x16
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        missesHeight = 16;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        missesWidth = nicePawn.safeMeleeMisses * 16 + (nicePawn.safeMeleeMisses - 1) * missesSpace;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        missesX = center - (missesWidth / 2);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        missesY = y + (32 - missesHeight) * 0.5;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (i = 0; i < nicePawn.safeMeleeMisses; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            C.SetPos(missesX + i * (16 + missesSpace), missesY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    ////  Draw cooldowns
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (nicePlayer.abilityManager == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for(i = 0;i < nicePlayer.abilityManager.currentAbilitiesAmount;i ++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for (i = 0; i < nicePlayer.abilityManager.currentAbilitiesAmount; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       DrawAbilityCooldown(C, i);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //// Draw counters
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    niceMutator = class'NicePack'.static.Myself(nicePawn.Level);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (niceMutator != none && nicePlayer != none && nicePlayer.bFlagDisplayCounters)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        x = C.ClipX * 0.5 - (64 + 2) * niceMutator.GetVisibleCountersAmount();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        y = C.ClipY * 0.01;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (i = 0; i < niceMutator.niceCounterSet.Length; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (niceMutator.niceCounterSet[i].value != 0 || niceMutator.niceCounterSet[i].bShowZeroValue)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                DrawCounter(C, niceMutator.niceCounterSet[i], x, y, C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                x += 128 + 4;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, TeamInfo team){
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -360,7 +405,7 @@ function DrawCalibrationStars(Canvas C){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgress, int x, int y, TeamInfo team)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function DrawWeaponProgress(Canvas C, WeaponProgressDisplay weapProgress, int x, int y, TeamInfo team)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local float textWidth, textHeight;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local string textToDraw;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -404,51 +449,60 @@ function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgres
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local bool bNeedsReload;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local string Alias, LeftPart, RigthPart;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local NiceWeapon niceWeap;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local NicePlayerController nicePlayer;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Find controller and current weapon
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    nicePlayer = NicePlayerController(ViewportOwner.Actor);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(nicePlayer == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (nicePlayer == none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       return false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(nicePlayer.Pawn != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (nicePlayer.Pawn != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // If this is a button press - detect alias
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(Action == IST_Press){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (Action == IST_Press)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       // Check for reload command
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(nicePlayer.bAdvReloadCheck)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if (nicePlayer.bAdvReloadCheck)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(Divide(Alias, " ", LeftPart, RigthPart))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if (Divide(Alias, " ", LeftPart, RigthPart))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           Alias = LeftPart;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(Key == IK_MouseWheelUp || Key == IK_MouseWheelDown){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if (Key == IK_MouseWheelUp || Key == IK_MouseWheelDown)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           nicePlayer.UpdateSelectors();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           if(nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           if (nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               return true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Open trader on movement
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       || Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis"){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       // Open trader if it's a pre-game
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       if(NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           nicePlayer.bOpenedInitTrader = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           return true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       //nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Open trader on movement if it's a pre-game
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            || Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            nicePlayer.bOpenedInitTrader = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Reload if we've detected a reload alias in this button's command
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(niceWeap != none && !nicePlayer.bUseServerReload &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       (bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (niceWeap != none && !nicePlayer.bUseServerReload &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        (bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       niceWeap.ClientReloadMeNow();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				defaultproperties
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |