#include maps\mp\_utility; #include maps\mp\gametypes\_hud_util; #include common_scripts\utility; init() { level.killStreakFuncs["auto_shotgun"] = ::tryUseAutoShotgun; level.killstreakSetupFuncs["auto_shotgun"] = ::shotgunSetup; level.killStreakFuncs["thumper"] = ::tryUseThumper; level.killstreakSetupFuncs["thumper"] = ::thumperSetup; thread onPlayerConnect(); } shotgunSetup() { self giveMaxAmmo( "aa12_mp" ); self thread saveWeaponAmmoOnDeath( "aa12_mp" ); } tryUseAutoShotgun( lifeId ) { self thread removeWeaponOnOutOfAmmo( "aa12_mp" ); return true; } thumperSetup() { self giveMaxAmmo( "m79_mp" ); self thread saveWeaponAmmoOnDeath( "m79_mp" ); } tryUseThumper() { self thread removeWeaponOnOutOfAmmo( "m79_mp" ); return true; } onPlayerConnect() { for(;;) { level waittill( "connected", player ); player thread onPlayerSpawned(); } } onPlayerSpawned() { self endon( "disconnect" ); for(;;) { self waittill( "spawned_player" ); if ( !isDefined( self.pers["ksWeapon_clip_ammo"] ) || !isDefined( self.pers["ksWeapon_name"] ) ) continue; weaponName = self.pers["ksWeapon_name"]; if ( isDefined( self.pers["killstreak"] ) && getKillstreakWeapon( self.pers["killstreak"] ) != weaponName ) { self.pers["ksWeapon_name"] = undefined; self.pers["ksWeapon_clip_ammo"] = undefined; self.pers["ksWeapon_stock_ammo"] = undefined; continue; } self maps\mp\killstreaks\_killstreaks::giveKillstreakWeapon( weaponName ); self setWeaponAmmoStock( weaponName, self.pers["ksWeapon_stock_ammo"] ); self setWeaponAmmoClip( weaponName, self.pers["ksWeapon_clip_ammo"] ); self thread removeWeaponOnOutOfAmmo( weaponName ); self thread saveWeaponAmmoOnDeath( weaponName ); } } saveWeaponAmmoOnDeath( weaponName ) { self endon ( "disconnect" ); self endon ( "got_killstreak" ); self notify( "saveWeaponAmmoOnDeath" ); self endon( "saveWeaponAmmoOnDeath" ); self.pers["ksWeapon_name"] = undefined; self.pers["ksWeapon_clip_ammo"] = undefined; self.pers["ksWeapon_stock_ammo"] = undefined; self waittill ( "death" ); if ( !self hasWeapon( weaponName ) ) return; self.pers["ksWeapon_name"] = weaponName; self.pers["ksWeapon_clip_ammo"] = self getWeaponAmmoClip( weaponName ); self.pers["ksWeapon_stock_ammo"] = self getWeaponAmmoStock( weaponName ); } removeWeaponOnOutOfAmmo( weaponName ) { self endon ( "disconnect" ); self endon ( "death" ); self notify( weaponName + "_ammo_monitor" ); self endon( weaponName + "_ammo_monitor" ); while( 1 ) { self waittill ( "end_firing" ); if ( self getCurrentWeapon() != weaponName ) continue; total_ammo = self getWeaponAmmoClip( weaponName ) + self getWeaponAmmoStock( weaponName ); if ( total_ammo ) continue; self takeWeapon( weaponName ); return; } }