Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Convars.SetValue( "rm_destroy_empty_weapon", 0 );
- nextRefillTick1 <- {};
- nextRefillTick2 <- {};
- lastClip1 <- {};
- lastClip2 <- {};
- timeBetweenRefill1 <- 0.1;
- timeBetweenRefill2 <- 5;
- timeBetweenInverse1 <- 75;
- timeBetweenInverse2 <- 5;
- timeAfterShoot1 <- 5;
- timeAfterShoot2 <- 10;
- singleClipPenalty <- 0.55;
- noClipPenalty <- 4;
- regenInterval <- {
- asw_weapon_mines=250
- asw_weapon_electrified_armor=150
- asw_weapon_freeze_grenades=250
- asw_weapon_grenades=200
- asw_weapon_laser_mines=480
- asw_weapon_tesla_trap=120
- asw_weapon_hornet_barrage=120
- asw_weapon_medkit=40
- asw_weapon_heal_grenade=450
- asw_weapon_gas_grenades=600
- asw_weapon_stim=150
- asw_weapon_buff_grenade=200
- asw_weapon_medical_satchel=450
- }
- ammoCount <- {
- asw_weapon_mines=8
- asw_weapon_electrified_armor=4
- asw_weapon_freeze_grenades=8
- asw_weapon_grenades=16
- asw_weapon_laser_mines=16
- asw_weapon_tesla_trap=24
- asw_weapon_hornet_barrage=16
- asw_weapon_medkit=3
- asw_weapon_heal_grenade=18
- asw_weapon_gas_grenades=8
- asw_weapon_stim=6
- asw_weapon_buff_grenade=12
- asw_weapon_medical_satchel=18
- }
- regenDelay <- {
- asw_weapon_mines=0
- asw_weapon_electrified_armor=0
- asw_weapon_freeze_grenades=0
- asw_weapon_grenades=0
- asw_weapon_laser_mines=0
- asw_weapon_tesla_trap=0
- asw_weapon_hornet_barrage=0
- asw_weapon_medkit=0
- asw_weapon_heal_grenade=0
- asw_weapon_gas_grenades=0
- asw_weapon_stim=0
- asw_weapon_buff_grenade=0
- asw_weapon_medical_satchel=0
- }
- function Update()
- {
- minDelay <- 0.2;
- marine <- null;
- while ( ( marine = Entities.FindByClassname( marine, "asw_marine" ) ) != null )
- {
- for ( local weapon = marine.FirstMoveChild(); weapon != null; weapon = weapon.NextMovePeer() )
- {
- if ( weapon != null && (weapon.GetClassname() in regenDelay) )
- {
- timeBetweenInverse1 = regenInterval[weapon.GetClassname()];
- timeAfterShoot1 = regenDelay[weapon.GetClassname()];
- if ( !( "GetMaxClip1" in weapon ) )
- continue;
- local maxClip1 = weapon.GetMaxClip1();
- if (maxClip1 <= 0)
- continue;
- local clips1 = weapon.GetMaxAmmo1() / maxClip1;
- if ( clips1 < noClipPenalty )
- {
- if ( weapon != null && (weapon.GetClassname() in ammoCount) )
- maxClip1 = ammoCount[weapon.GetClassname()];
- else maxClip1 = ceil( maxClip1 * ( 1 - singleClipPenalty / clips1 ) );
- }
- if ( weapon.Clip1() > maxClip1 )
- weapon.SetClip1( maxClip1 );
- if ( !( weapon.entindex() in nextRefillTick1 ) )
- {
- nextRefillTick1[weapon.entindex()] <- Time();
- lastClip1[weapon.entindex()] <- weapon.Clip1();
- continue;
- }
- if ( weapon.Clip1() != lastClip1[weapon.entindex()] )
- {
- lastClip1[weapon.entindex()] = weapon.Clip1();
- nextRefillTick1[weapon.entindex()] = Time() + timeAfterShoot1 + timeBetweenInverse1 / weapon.GetMaxAmmo1();
- }
- if ( nextRefillTick1[weapon.entindex()] <= Time() && weapon.Clip1() < maxClip1 )
- {
- weapon.SetClip1( weapon.Clip1() + 1 );
- lastClip1[weapon.entindex()] = weapon.Clip1();
- delay <- timeBetweenRefill1 + timeBetweenInverse1 / weapon.GetMaxAmmo1();
- nextRefillTick1[weapon.entindex()] = Time() + delay;
- if ( delay < minDelay )
- minDelay = delay;
- }
- }
- }
- }
- timeBetweenInverse1 = 75;
- timeAfterShoot1 = 5;
- return minDelay;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement