Advertisement
Treedestroyed

Untitled

Aug 10th, 2022 (edited)
2,846
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. reliable server simulated final function UpdateWeaponSpareAmmo( CD_Weap_TacticalBackpack TacticalBackpack, optional KFWeapon AddedWeapon, optional int ButtPackIndex = 255 )
  2. {
  3.     local int i, Index, RemainingSpareAmmoCount;
  4.     local bool bItemIsInInventory;
  5.     local array<int> DefaultSpareAmmoCount, DefaultSpareAmmoCapacity, PouchSpareAmmoCapacity;  
  6.     local KFInventoryManager KFIM;
  7.     local Inventory Inv;
  8.     local KFWeapon KFW;
  9.    
  10.     KFIM = KFInventoryManager( InvManager );
  11.    
  12.     if ( KFIM != None && TacticalBackpack != None )
  13.     {
  14.         TacticalBackpack.UpdateButtPackAmmoInfo();
  15.        
  16.         if ( ButtPackIndex != 255 )
  17.         {
  18.             for ( i = 0; i < TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo.Length; i++ )
  19.             {
  20.                 if ( KFIM.GetWeaponFromClass( KFW, TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].ClassName ) )
  21.                 {
  22.                     if ( KFW != None && KFW.UsesAmmo() && !KFW.IsA( 'CD_Weap_TacticalBackpack' ) && !KFW.IsA( 'KFWeap_AmmoBag' ) && !KFW.IsA( 'KFWeap_ArmorSupply' ) && !KFW.IsA( 'KFWeap_MediKit' ))
  23.                     {
  24.                         UpdateWeaponPrimarySpareAmmo( KFW );
  25.    
  26.                         if ( KFW.SpareAmmoCount[0] > TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].DefaultSpareAmmoCount[0] )
  27.                         {
  28.                             RemainingSpareAmmoCount = KFW.SpareAmmoCount[0] - TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].DefaultSpareAmmoCount[0];
  29.                             TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCount[0] += Min( RemainingSpareAmmoCount, TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCapacity[0] );
  30.                             TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCount[0] = Min( TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCount[0],
  31.                                                                                                                       TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCapacity[0] );
  32.                            
  33.                             KFW.AddAmmo( -Min( RemainingSpareAmmoCount, TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCapacity[0] ) );
  34.                             UpdateWeaponPrimarySpareAmmo( KFW );
  35.                         }
  36.                        
  37.                         if ( KFW.UsesSecondaryAmmo() )
  38.                         {
  39.                             UpdateWeaponAltSpareAmmo( KFW );
  40.                            
  41.                             if ( KFW.SpareAmmoCount[1] > TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].DefaultSpareAmmoCount[1] )
  42.                             {
  43.                                 RemainingSpareAmmoCount = KFW.SpareAmmoCount[1] - TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].DefaultSpareAmmoCount[1];
  44.                                 TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCount[1] += Min( RemainingSpareAmmoCount, TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCapacity[1] );
  45.                                 TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCount[1] = Min( TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCount[1],
  46.                                                                                                                           TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCapacity[1] );
  47.                                
  48.                                 KFW.AddSecondaryAmmo( -Min( RemainingSpareAmmoCount, TacticalBackpack.ButtPackAmmo[ButtPackIndex].ButtPackAmmoInfo[i].SpareAmmoCapacity[1] ) );
  49.                                 UpdateWeaponAltSpareAmmo( KFW );
  50.                             }
  51.                         }
  52.                     }
  53.                 }
  54.             }
  55.         }
  56.         else
  57.         {
  58.             for ( i = 0; i < TacticalBackpack.ButtPackAmount; i++ )
  59.             {
  60.                 for ( Inv = InvManager.InventoryChain; Inv != None; Inv = Inv.Inventory )
  61.                 {
  62.                     KFW = KFWeapon( Inv );
  63.                    
  64.                     if ( KFW != None && KFW.UsesAmmo() && !KFW.IsA( 'CD_Weap_TacticalBackpack' ) && !KFW.IsA( 'KFWeap_AmmoBag' ) && !KFW.IsA( 'KFWeap_ArmorSupply' ) && !KFW.IsA( 'KFWeap_MediKit' ) )
  65.                     {
  66.                         Index = TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo.Find( 'ClassName', KFW.Class.Name );
  67.                        
  68.                         if ( Index < 0 )
  69.                         {
  70.                             TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo.Length = TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo.Length + 1;
  71.                             Index = TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo.Length - 1;
  72.                         }
  73.                        
  74.                         bItemIsInInventory = false;
  75.  
  76.                         if ( !bItemIsInInventory )
  77.                             bItemIsInInventory = Index >= 0;
  78.                        
  79.                         if ( AddedWeapon != None )
  80.                             bItemIsInInventory = ( Index >= 0 && AddedWeapon.Class.Name == KFW.Class.Name );
  81.                        
  82.                         if ( bItemIsInInventory )
  83.                         {
  84.                             TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].ClassName = KFW.Class.Name;
  85.                            
  86.                             DefaultSpareAmmoCount.Length = 2;
  87.                            
  88.                             DefaultSpareAmmoCount[0] = KFW.default.MagazineCapacity[0] + ( KFW.default.InitialSpareMags[0] * KFW.default.MagazineCapacity[0] );
  89.                             DefaultSpareAmmoCount[1] = KFW.default.MagazineCapacity[1] + ( KFW.default.InitialSpareMags[1] * KFW.default.MagazineCapacity[1] );
  90.  
  91.                             if ( KFW.GetPerk() != None )
  92.                             {
  93.                                 KFW.GetPerk().ModifySpareAmmoAmount( KFW, DefaultSpareAmmoCount[0] );
  94.                                 KFW.GetPerk().ModifySpareAmmoAmount( KFW, DefaultSpareAmmoCount[1],, true );
  95.                             }
  96.                            
  97.                             DefaultSpareAmmoCapacity[0] = KFW.default.SpareAmmoCapacity[0];
  98.                             DefaultSpareAmmoCapacity[1] = KFW.default.SpareAmmoCapacity[1];
  99.                            
  100.                             KFW.ModifySpareAmmoCapacity( DefaultSpareAmmoCapacity[0], class'KFWeapon'.const.DEFAULT_FIREMODE );
  101.                            
  102.                             if ( KFW.UsesSecondaryAmmo() )
  103.                                 KFW.ModifySpareAmmoCapacity( DefaultSpareAmmoCapacity[1], class'KFWeapon'.const.ALTFIRE_FIREMODE );
  104.                            
  105.                             TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[0] = Max( ( DefaultSpareAmmoCapacity[0] - DefaultSpareAmmoCount[0] ) / 5, 0 );
  106.                             TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[1] = Max( ( DefaultSpareAmmoCapacity[1] - DefaultSpareAmmoCount[1] ) / 5, 0 );                          
  107.                            
  108.                             UpdateWeaponPrimarySpareAmmo( KFW );
  109.  
  110.                             if ( KFW.SpareAmmoCount[0] > DefaultSpareAmmoCount[0] )
  111.                             {
  112.                                 TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCount[0] += Min( KFW.SpareAmmoCount[0] - DefaultSpareAmmoCount[0],
  113.                                 TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[0] );
  114.                                
  115.                                 TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCount[0] = Min( TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCount[0],
  116.                                 TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[0] );
  117.  
  118.                                 KFW.AddAmmo( -Min( KFW.SpareAmmoCount[0] - DefaultSpareAmmoCount[0], TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[0] ) );
  119.                                 UpdateWeaponPrimarySpareAmmo( KFW );
  120.                             }
  121.                            
  122.                             if ( KFW.UsesSecondaryAmmo() )
  123.                             {
  124.                                 UpdateWeaponAltSpareAmmo( KFW );
  125.                                
  126.                                 if ( KFW.SpareAmmoCount[1] > DefaultSpareAmmoCount[1] )
  127.                                 {
  128.                                     TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCount[1] += Min( KFW.SpareAmmoCount[1] - DefaultSpareAmmoCount[1],
  129.                                     TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[1] );
  130.                                    
  131.                                     TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCount[1] = Min( TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCount[1],
  132.                                     TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[1] );   
  133.                                    
  134.                                     KFW.AddSecondaryAmmo( -Min( KFW.SpareAmmoCount[1] - DefaultSpareAmmoCount[1], TacticalBackpack.ButtPackAmmo[i].ButtPackAmmoInfo[Index].SpareAmmoCapacity[1] ) );
  135.                                     UpdateWeaponAltSpareAmmo( KFW );
  136.                                 }
  137.                             }
  138.                         }
  139.                     }
  140.                 }
  141.             }
  142.            
  143.             if ( NumSpareAmmoPouch > 0 )
  144.             {
  145.                 for ( Inv = InvManager.InventoryChain; Inv != None; Inv = Inv.Inventory )
  146.                 {
  147.                     KFW = KFWeapon( Inv );
  148.                    
  149.                     if ( KFW != None && KFW.UsesAmmo() && !KFW.IsA( 'CD_Weap_TacticalBackpack' ) && !KFW.IsA( 'KFWeap_AmmoBag' ) && !KFW.IsA( 'KFWeap_ArmorSupply' ) && !KFW.IsA( 'KFWeap_MediKit' ) )
  150.                     {
  151.                         Index = TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo.Find( 'ClassName', KFW.Class.Name );
  152.                        
  153.                         if ( Index < 0 )
  154.                         {
  155.                             TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo.Length = TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo.Length + 1;
  156.                             Index = TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo.Length - 1;
  157.                         }
  158.                        
  159.                         bItemIsInInventory = false;
  160.                        
  161.                         if ( !bItemIsInInventory )
  162.                             bItemIsInInventory = Index >= 0;
  163.                        
  164.                         if ( AddedWeapon != None )
  165.                             bItemIsInInventory = ( Index >= 0 && AddedWeapon.Class.Name == KFW.Class.Name );
  166.                        
  167.                         if ( bItemIsInInventory )
  168.                         {
  169.                             TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].ClassName = KFW.Class.Name;
  170.                            
  171.                             DefaultSpareAmmoCount.Length = 2;
  172.                            
  173.                             DefaultSpareAmmoCount[0] = KFW.default.MagazineCapacity[0] + ( KFW.default.InitialSpareMags[0] * KFW.default.MagazineCapacity[0] );
  174.                             DefaultSpareAmmoCount[1] = KFW.default.MagazineCapacity[1] + ( KFW.default.InitialSpareMags[1] * KFW.default.MagazineCapacity[1] );
  175.  
  176.                             if ( KFW.GetPerk() != None )
  177.                             {
  178.                                 KFW.GetPerk().ModifySpareAmmoAmount( KFW, DefaultSpareAmmoCount[0] );
  179.                                 KFW.GetPerk().ModifySpareAmmoAmount( KFW, DefaultSpareAmmoCount[1],, true );
  180.                             }
  181.                            
  182.                             PouchSpareAmmoCapacity.Length = 2;
  183.                            
  184.                             PouchSpareAmmoCapacity[0] = 0;
  185.                             PouchSpareAmmoCapacity[1] = 0;
  186.                            
  187.                             for ( i = 0; i < NumSpareAmmoPouch; i++ )
  188.                             {
  189.                                 PouchSpareAmmoCapacity[0] += Max( KFW.AmmoPickupScale[0] * KFW.default.MagazineCapacity[0], 1 );
  190.                                 PouchSpareAmmoCapacity[1] += Max( KFW.AmmoPickupScale[1] * KFW.default.MagazineCapacity[1], 1 );
  191.                             }          
  192.                        
  193.                             UpdateWeaponPrimarySpareAmmo( KFW );
  194.                            
  195.                             if ( KFW.SpareAmmoCount[0] > DefaultSpareAmmoCount[0] )
  196.                             {
  197.                                 TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].PouchSpareAmmoCount[0] += Min( KFW.SpareAmmoCount[0] - DefaultSpareAmmoCount[0], PouchSpareAmmoCapacity[0] );
  198.                                 TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].PouchSpareAmmoCount[0] = Min( TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].PouchSpareAmmoCount[0], PouchSpareAmmoCapacity[0] );
  199.  
  200.                                 KFW.AddAmmo( -Min( KFW.SpareAmmoCount[0] - DefaultSpareAmmoCount[0], PouchSpareAmmoCapacity[0] ) );
  201.                                 UpdateWeaponPrimarySpareAmmo( KFW );
  202.                             }
  203.                            
  204.                             UpdateWeaponAltSpareAmmo( KFW );
  205.                            
  206.                             if ( KFW.UsesSecondaryAmmo() && KFW.SpareAmmoCount[1] > DefaultSpareAmmoCount[1] )
  207.                             {
  208.                                 TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].PouchSpareAmmoCount[1] += Min( KFW.SpareAmmoCount[1] - DefaultSpareAmmoCount[1], PouchSpareAmmoCapacity[1] );
  209.                                 TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].PouchSpareAmmoCount[1] = Min( TacticalBackpack.SpareAmmoPouch.SpareAmmoPouchInfo[Index].PouchSpareAmmoCount[1], PouchSpareAmmoCapacity[1] );
  210.                                
  211.                                 KFW.AddSecondaryAmmo( -Min( KFW.SpareAmmoCount[1] - DefaultSpareAmmoCount[1], PouchSpareAmmoCapacity[1] ) );                       
  212.                                 UpdateWeaponAltSpareAmmo( KFW );
  213.                             }
  214.                         }
  215.                     }
  216.                 }
  217.             }          
  218.         }
  219.     }
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement