1 #using scripts\shared\array_shared;
2 #using scripts\shared\throttle_shared;
3 #using scripts\shared\ai\systems\shared;
4 #using scripts\shared\weapons\_weaponobjects;
5 #using scripts\shared\weapons\_weapons;
7 #insert scripts\shared\shared.gsh;
8 #insert scripts\shared\archetype_shared\archetype_shared.gsh;
12 #define NUM_CLIPS_SCAVENGED 3 //How many clips of ammo the player gets for their primaries for each scavenge
17 [[ level.ai_ammo_throttle ]]->Initialize( 1, 0.1 );
24 if ( !IsDefined(
self.ammoPouch ) )
29 if (
IS_TRUE(
self.disableAmmoDrop ) )
34 [[ level.ai_ammo_throttle ]]->WaitInQueue(
self );
38 if ( IsDefined( droppedWeapon ) )
47 self endon(
"death" );
48 self waittill(
"scavenger", player );
50 primary_weapons = player GetWeaponsListPrimaries();
51 offhand_weapons_and_alts = array::exclude( player GetWeaponsList(
true ), primary_weapons );
53 ArrayRemoveValue( offhand_weapons_and_alts, level.weaponBaseMelee );
56 player playsound(
"wpn_ammo_pickup" );
57 player playlocalsound(
"wpn_ammo_pickup" );
61 if(
IS_TRUE( level.b_disable_scavenger_icon ) )
66 for ( i = 0; i < offhand_weapons_and_alts.size; i++ )
68 weapon = offhand_weapons_and_alts[i];
71 b_is_primary_or_secondary_grenade =
false;
73 if ( weapon == player.grenadeTypePrimary && isdefined( player.grenadeTypePrimaryCount ) && player.grenadeTypePrimaryCount > 0 )
75 maxAmmo = player.grenadeTypePrimaryCount;
76 b_is_primary_or_secondary_grenade =
true;
78 else if ( weapon == player.grenadeTypeSecondary && isdefined( player.grenadeTypeSecondaryCount ) && player.grenadeTypeSecondaryCount > 0 )
80 maxAmmo = player.grenadeTypeSecondaryCount;
81 b_is_primary_or_secondary_grenade =
true;
83 else if ( weapon.inventorytype ==
"hero" &&
IS_TRUE( level.overrideAmmoDropHeroWeapon ) )
85 maxAmmo = weapon.maxammo;
88 if ( isdefined( level.customLoadoutScavenge ) )
90 maxAmmo =
self [[level.customLoadoutScavenge]]( weapon );
98 if ( weapon.rootWeapon == level.weaponSatchelCharge )
106 stock = player GetWeaponAmmoStock( weapon );
108 if ( weapon.inventorytype ==
"hero" &&
IS_TRUE( level.overrideAmmoDropHeroWeapon ) )
110 ammo = stock + weapon.clipsize;
112 player SetWeaponAmmoStock( weapon, ammo );
113 player.scavenged =
true;
115 else if ( stock < maxAmmo )
119 if ( ammo > maxAmmo )
125 if ( weapon == player.grenadeTypePrimary )
127 player notify(
"scavenged_primary_grenade" );
131 player SetWeaponAmmoStock( weapon, ammo );
132 player.scavenged =
true;
137 for ( i = 0; i < primary_weapons.size; i++ )
139 weapon = primary_weapons[i];
141 stock = player GetWeaponAmmoStock( weapon );
142 start = player GetFractionStartAmmo( weapon );
143 clip = weapon.clipSize;
144 clip *= GetDvarFloat(
"scavenger_clip_multiplier", 1 );
146 maxAmmo = weapon.maxAmmo;
152 player SetWeaponAmmoStock( weapon, ammo );
156 player SetWeaponAmmoStock( weapon, maxAmmo );