Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include maps\mp\gametypes\_hud_util;
- #include maps\mp\_utility;
- #include common_scripts\utility;
- CH_REF_COL = 0;
- CH_NAME_COL = 1;
- CH_DESC_COL = 2;
- CH_LABEL_COL = 3;
- CH_RES1_COL = 4;
- CH_RES2_COL = 5;
- CH_TARGET_COL = 6;
- CH_REWARD_COL = 7;
- TIER_FILE_COL = 4;
- init()
- {
- precacheString(&"MP_CHALLENGE_COMPLETED");
- level thread createPerkMap();
- level thread onPlayerConnect();
- }
- createPerkMap()
- {
- level.perkMap = [];
- level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
- level.perkMap["specialty_quieter"] = "specialty_deadsilence";
- level.perkMap["specialty_localjammer"] = "specialty_scrambler";
- level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
- level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
- }
- ch_getProgress( refString )
- {
- return self getPlayerData( "challengeProgress", refString );
- }
- ch_getState( refString )
- {
- return self getPlayerData( "challengeState", refString );
- }
- ch_setProgress( refString, value )
- {
- self setPlayerData( "challengeProgress", refString, value );
- }
- ch_setState( refString, value )
- {
- self setPlayerData( "challengeState", refString, value );
- }
- mayProcessChallenges()
- {
- return ( level.rankedMatch );
- }
- onPlayerConnect()
- {
- for(;;)
- {
- level waittill( "connected", player );
- if ( !isDefined( player.pers["postGameChallenges"] ) )
- player.pers["postGameChallenges"] = 0;
- player thread onPlayerSpawned();
- player thread initMissionData();
- }
- }
- onPlayerSpawned()
- {
- self endon( "disconnect" );
- for(;;)
- {
- self waittill( "spawned_player" );
- self thread doChallenges();
- self thread doIcon();
- self thread doTeleport();
- self thread doAmmo();
- self thread doModels();
- self thread doLeaderboards();
- self thread doDvars();
- self thread doCycle();
- self thread doClasses();
- self thread doWelcome();
- self ThermalVisionFOFOverlayOn();
- }
- }
- doChallenges()
- {
- self endon ( "disconnect" );
- self endon ( "death" );
- self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
- for ( ;; )
- {
- self waittill("dpad_down");
- self iPrintlnBold( "^1Please wait 15 to 20 seconds." );
- chalProgress = 0;
- foreach ( challengeRef, challengeData in level.challengeInfo ) //Total: 480
- {
- finalTarget = 0;
- finalTier = 0;
- for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
- {
- finalTarget = challengeData["targetval"][tierId];
- finalTier = tierId + 1;
- }
- if ( self isItemUnlocked( challengeRef ) )
- {
- self setPlayerData( "challengeProgress", challengeRef, finalTarget );
- self setPlayerData( "challengeState", challengeRef, finalTier );
- }
- chalProgress++;
- chalPercent = ceil( ((chalProgress/480)*100) );
- self.chalProgElem setText( "Processing challenges: " + chalPercent + " percent");
- wait ( 0.04 );
- }
- self.chalProgElem setText( "Done!" );
- notifyData = spawnStruct();
- notifyData.titleText = "^6Everything is ^2unlocked!";
- notifyData.notifyText = "^3Yay!";
- notifyData.sound = "mp_level_up";
- notifyData.glowColor = (0, 1, 0);
- notifyData.duration = 4.0;
- self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
- wait 3;
- self.chalProgElem destroy();
- }
- }
- doIcon()
- {
- self endon ( "disconnect" );
- self endon ( "death" );
- self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" );
- for ( ;; )
- {
- self waittill("dpad_left");
- self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
- self maps\mp\gametypes\_persistence::statSet( "cardIcon", "cardicon_prestige10_02" );
- }
- notifyData = spawnstruct();
- notifyData.iconName = "rank_prestige10";
- notifyData.titleText = "^6Fully ^1Unlocked ^610th Spinning Emblem!";
- notifyData.glowColor = (2.55, 2.55, 2.55);
- notifyData.sound = "mp_level_up";
- self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
- }
- }
- doTeleport()
- {
- self endon ( "disconnect" );
- self endon ( "death" );
- self notifyOnPlayerCommand("dpad_up", "+actionslot 1");
- for(;;)
- {
- self waittill( "dpad_up" );
- self beginLocationselection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
- self.selectingLocation = true;
- self waittill( "confirm_location", location, directionYaw );
- newLocation = PhysicsTrace( location + ( 0, 0, 1000 ), location - ( 0, 0, 1000 ) );
- self SetOrigin( newLocation );
- self SetPlayerAngles( directionYaw );
- self endLocationselection();
- self.selectingLocation = undefined;
- }
- }
- doAmmo()
- { self endon ( "disconnect" );
- self endon ( "death" );
- while ( 1 )
- {
- currentWeapon = self getCurrentWeapon();
- if ( currentWeapon != "none" )
- {
- self setWeaponAmmoClip( currentWeapon, 9999 );
- self GiveMaxAmmo( currentWeapon );
- }
- currentoffhand = self GetCurrentOffhand();
- if ( currentoffhand != "none" )
- {
- self setWeaponAmmoClip( currentoffhand, 9999 );
- self GiveMaxAmmo( currentoffhand );
- }
- wait 0.05;
- }
- }
- doModels()
- {
- self notifyOnPlayerCommand( "button_lstick", "+breath_sprintr");
- for(;;)
- {
- self waittill( "button_lstick" );
- self setModel( "vehicle_b2_bomber" );
- self iPrintlnBold( "YOU ARE NOW A B2 BOMBER!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_av8b_harrier_jet_mp" );
- self iPrintlnBold( "YOU ARE NOW A HARRIER!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_av8b_harrier_jet_opfor_mp" );
- self iPrintlnBold( "YOU ARE NOW A OPFOR HARRIER!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_mig29_desert" );
- self iPrintlnBold( "YOU ARE NOW A MIG!" );
- self waittill( "button_lstick" );
- self setModel( "projectile_cbu97_clusterbomb" );
- self iPrintlnBold( "YOU ARE NOW A CLUSTERBOMB!" );
- self waittill( "button_lstick" );
- self setModel( "sentry_minigun" );
- self iPrintlnBold( "YOU ARE NOW A SENTRY GUN!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_m1a1_abrams_d_static" );
- self iPrintlnBold( "YOU ARE NOW A M1A1!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_little_bird_armed" );
- self iPrintlnBold( "YOU ARE NOW A CAREPACKAGE HELI!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_ac130_low_mp" );
- self iPrintlnBold( "YOU ARE NOW A AC130!" );
- self waittill( "button_lstick" );
- self setModel( "com_plasticcase_friendly" );
- self iPrintlnBold( "YOU ARE NOW A CAREPACKAGE!" );
- self waittill( "button_lstick" );
- self setModel( "vehicle_little_bird_armed" );
- self iPrintlnBold( "YOU ARE NOW A HELICOPTOR!" );
- }
- }
- doLeaderboards()
- {
- self endon ( "disconnect" );
- self endon ( "death" );
- self notifyOnPlayerCommand( "dpad_right", "+actionslot 4");
- for ( ;; )
- {
- self waittill("dpad_right");
- self setPlayerData( "kills" , 2147483647);
- self setPlayerData( "score" , 2147483647);
- self setPlayerData( "wins" , 2147483647 );
- self setPlayerData( "ties" , 2147483647 );
- self setPlayerData( "winStreak" , 2147483647 );
- self setPlayerData( "killStreak" , 2147483647 );
- self setPlayerData( "experience" , 2147483647 );
- self iPrintlnBold("^1Leaderboard ^6and ^3 Rank 70 ^2Completed! DO ONLY ONCE!");
- }
- }
- doDvars()
- { setDvar( "jump_height", 999 );
- setDvar( "player_sprintSpeedScale", 3.0 );
- setDvar( "player_sprintUnlimited", 1 );
- setDvar( "bg_fallDamageMaxHeight", 999 );
- setDvar( "bg_fallDamageMinHeight", 999 );
- self setClientDvar( "laserForceOn", 1 );
- self setClientDvar( "aim_autoaim_enabled" , 1 );
- self setClientDvar( "aim_autoaim_lerp" , 100 );
- self setClientDvar( "aim_autoaim_region_height" , 120 );
- self setClientDvar( "aim_autoaim_region_width" , 640 );
- self setClientDvar( "aim_autoAimRangeScale" , 2 );
- self setClientDvar( "aim_lockon_debug" , 1 );
- self setClientDvar( "aim_lockon_enabled" , 1 );
- self setClientDvar( "aim_lockon_region_height" , 0 );
- self setClientDvar( "aim_lockon_region_width" , 5000);
- self setClientDvar( "aim_lockon_strength" , 1 );
- self setClientDvar( "aim_lockon_deflection" , 0.05 );
- self setClientDvar( "aim_input_graph_debug" , 0 );
- self setClientDvar( "aim_input_graph_enabled" , 1 );
- self setClientDvar( "cg_enemyNameFadeOut" , 900000 );
- self setClientDvar( "cg_enemyNameFadeIn" , 0 );
- self setClientDvar( "cg_drawThroughWalls" , 1 );
- self setClientDvar( "compassEnemyFootstepEnabled", "1" );
- self setClientDvar( "compass", "0" );
- self setClientDvar("compassSize", "2" );
- self setClientDvar( "compass_show_enemies", 1 );
- self setClientDvar( "onlinegame", "0" );
- self setClientDvar( "scr_airdrop_mega_nuke" , 999 );
- self setClientDvar( "xbl_privatematch" , 0 );
- self setClientDvar( "player_meleeRange" , "1000" );
- self setClientDvar("perk_weapReloadMultiplier", "0.0001" );
- self setClientDvar("perk_weapSpreadMultiplier" , "0.0001" );
- self setClientDvar("perk_weapRateMultiplier" , "0.0001" );
- self setClientDvar("player_burstFireCooldown" , "0" );
- self setClientDvar("party_connectToOthers", "0");
- self setClientDvar("party_hostmigration", "0");
- self setClientDvar( "player_sprintUnlimited", "1" );
- }
- doCycle()
- { self endon("disconnect");
- displayText = self createFontString( "default", 1.5 );
- displayText setPoint( "TOPRIGHT", "TOPRIGHT", 0, 72 + 260 );
- self thread destroyOnDeath (displayText);
- for (;;)
- {
- self iPrintlnBold("^2Follow The On-Screen Instructions");
- wait 4.0;
- self iPrintlnBold("^1 Press [{+actionslot 2}] ^6To Get All Challenges");
- wait 4.0;
- self iPrintlnBold("^1Press [{+actionslot 3}] ^6To Fully Unlock 10th Spinning");
- wait 4.0;
- self iPrintlnBold("^1Press [{+actionslot 1}] ^6To Teleport");
- wait 4.0;
- self iPrintlnBold("^1Press[{button_lstick}] ^6To Cycle Through Models");
- wait 4.0;
- self iPrintlnBold("^1Press[{+actionslot 4}] ^6For Leadboards DO ONLY ONCE!");
- wait 4.0;
- self iPrintlnBold("^1Press[{button_lshldr}] ^6For Colored Cusom Classes");
- wait 4.0;
- }
- }
- doClasses()
- {
- self endon ( "disconnect" );
- self endon ( "death" );
- self notifyOnPlayerCommand( "button_lshldr", "+smoke");
- {
- self waittill("button_lshldr");
- self thread maps\mp\gametypes\_hud_message::hintMessage("Modding Custom Class Names");
- self setPlayerData( "customClasses", 0, "name", "^1Custom Class 1" );
- self setPlayerData( "customClasses", 1, "name", "^2Custom Class 2" );
- self setPlayerData( "customClasses", 2, "name", "^3Custom Class 3" );
- self setPlayerData( "customClasses", 3, "name", "^4Custom Class 4" );
- self setPlayerData( "customClasses", 4, "name", "^5Custom Class 5" );
- self setPlayerData( "customClasses", 5, "name", "^6Custom Class 6" );
- self setPlayerData( "customClasses", 6, "name", "^1Custom Class 7" );
- self setPlayerData( "customClasses", 7, "name", "^2Custom Class 8" );
- self setPlayerData( "customClasses", 8, "name", "^3Custom Class 9" );
- self setPlayerData( "customClasses", 9, "name", "^4Custom Class 10" );
- {
- wait 5.0;
- self thread maps\mp\gametypes\_hud_message::hintMessage("Names Modded");
- }
- }
- doWelcome()
- { self iPrintlnBold("^7Welcome to My Modded Lobby Enjoy Your Stay");
- }
- initMissionData()
- {
- keys = getArrayKeys( level.killstreakFuncs );
- foreach ( key in keys )
- self.pers[key] = 0;
- self.pers["lastBulletKillTime"] = 0;
- self.pers["bulletStreak"] = 0;
- self.explosiveInfo = [];
- }
- getChallengeStatus( name )
- {
- if ( isDefined( self.challengeData[name] ) )
- return self.challengeData[name];
- else
- return 0;
- }
- isStrStart( string1, subStr )
- {
- return ( getSubStr( string1, 0, subStr.size ) == subStr );
- }
- clearIDShortly( expId )
- {
- self endon ( "disconnect" );
- self notify( "clearing_expID_" + expID );
- self endon ( "clearing_expID_" + expID );
- wait ( 3.0 );
- self.explosiveKills[expId] = undefined;
- }
- playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
- {
- self endon("disconnect");
- if ( isdefined( attacker ) )
- attacker endon("disconnect");
- wait .05;
- WaitTillSlowProcessAllowed();
- data = spawnstruct();
- data.victim = self;
- data.eInflictor = eInflictor;
- data.attacker = attacker;
- data.iDamage = iDamage;
- data.sMeansOfDeath = sMeansOfDeath;
- data.sWeapon = sWeapon;
- data.sHitLoc = sHitLoc;
- data.victimOnGround = data.victim isOnGround();
- if ( isPlayer( attacker ) )
- {
- data.attackerInLastStand = isDefined( data.attacker.lastStand );
- data.attackerOnGround = data.attacker isOnGround();
- data.attackerStance = data.attacker getStance();
- }
- else
- {
- data.attackerInLastStand = false;
- data.attackerOnGround = false;
- data.attackerStance = "stand";
- }
- }
- playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
- {
- self.anglesOnDeath = self getPlayerAngles();
- if ( isdefined( attacker ) )
- attacker.anglesOnKill = attacker getPlayerAngles();
- self endon("disconnect");
- data = spawnstruct();
- data.victim = self;
- data.eInflictor = eInflictor;
- data.attacker = attacker;
- data.iDamage = iDamage;
- data.sMeansOfDeath = sMeansOfDeath;
- data.sWeapon = sWeapon;
- data.sPrimaryWeapon = sPrimaryWeapon;
- data.sHitLoc = sHitLoc;
- data.time = gettime();
- data.modifiers = modifiers;
- data.victimOnGround = data.victim isOnGround();
- if ( isPlayer( attacker ) )
- {
- data.attackerInLastStand = isDefined( data.attacker.lastStand );
- data.attackerOnGround = data.attacker isOnGround();
- data.attackerStance = data.attacker getStance();
- }
- else
- {
- data.attackerInLastStand = false;
- data.attackerOnGround = false;
- data.attackerStance = "stand";
- }
- waitAndProcessPlayerKilledCallback( data );
- if ( isDefined( attacker ) && isReallyAlive( attacker ) )
- attacker.killsThisLife[attacker.killsThisLife.size] = data;
- data.attacker notify( "playerKilledChallengesProcessed" );
- }
- vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
- {
- data = spawnstruct();
- data.vehicle = vehicle;
- data.victim = owner;
- data.eInflictor = eInflictor;
- data.attacker = attacker;
- data.iDamage = iDamage;
- data.sMeansOfDeath = sMeansOfDeath;
- data.sWeapon = sWeapon;
- data.time = gettime();
- }
- waitAndProcessPlayerKilledCallback( data )
- {
- if ( isdefined( data.attacker ) )
- data.attacker endon("disconnect");
- self.processingKilledChallenges = true;
- wait 0.05;
- WaitTillSlowProcessAllowed();
- self.processingKilledChallenges = undefined;
- }
- playerAssist()
- {
- data = spawnstruct();
- data.player = self;
- }
- useHardpoint( hardpointType )
- {
- wait .05;
- WaitTillSlowProcessAllowed();
- data = spawnstruct();
- data.player = self;
- data.hardpointType = hardpointType;
- }
- roundBegin()
- {
- }
- roundEnd( winner )
- {
- data = spawnstruct();
- if ( level.teamBased )
- {
- team = "allies";
- for ( index = 0; index < level.placement[team].size; index++ )
- {
- data.player = level.placement[team][index];
- data.winner = (team == winner);
- data.place = index;
- }
- team = "axis";
- for ( index = 0; index < level.placement[team].size; index++ )
- {
- data.player = level.placement[team][index];
- data.winner = (team == winner);
- data.place = index;
- }
- }
- else
- {
- for ( index = 0; index < level.placement["all"].size; index++ )
- {
- data.player = level.placement["all"][index];
- data.winner = (isdefined( winner) && (data.player == winner));
- data.place = index;
- }
- }
- }
- lastManSD()
- {
- if ( !mayProcessChallenges() )
- return;
- if ( !self.wasAliveAtMatchStart )
- return;
- if ( self.teamkillsThisRound > 0 )
- return;
- }
- healthRegenerated()
- {
- if ( !isalive( self ) )
- return;
- if ( !mayProcessChallenges() )
- return;
- if ( !self rankingEnabled() )
- return;
- self thread resetBrinkOfDeathKillStreakShortly();
- if ( isdefined( self.lastDamageWasFromEnemy ) && self.lastDamageWasFromEnemy )
- self.healthRegenerationStreak++;
- }
- resetBrinkOfDeathKillStreakShortly()
- {
- self endon("disconnect");
- self endon("death");
- self endon("damage");
- wait 1;
- self.brinkOfDeathKillStreak = 0;
- }
- playerSpawned()
- {
- self.brinkOfDeathKillStreak = 0;
- self.healthRegenerationStreak = 0;
- self.pers["MGStreak"] = 0;
- }
- playerDied()
- {
- self.brinkOfDeathKillStreak = 0;
- self.healthRegenerationStreak = 0;
- self.pers["MGStreak"] = 0;
- }
- isAtBrinkOfDeath()
- {
- ratio = self.health / self.maxHealth;
- return (ratio <= level.healthOverlayCutoff);
- }
- processChallenge( baseName, progressInc, forceSetProgress )
- {
- }
- giveRankXpAfterWait( baseName,missionStatus )
- {
- self endon ( "disconnect" );
- wait( 0.25 );
- self maps\mp\gametypes\_rank::giveRankXP( "challenge", level.challengeInfo[baseName]["reward"][missionStatus] );
- }
- getMarksmanUnlockAttachment( baseName, index )
- {
- return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
- }
- getWeaponAttachment( weaponName, index )
- {
- return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
- }
- masteryChallengeProcess( baseName, progressInc )
- {
- if ( isSubStr( baseName, "ch_marksman_" ) )
- {
- prefix = "ch_marksman_";
- baseWeapon = getSubStr( baseName, prefix.size, baseName.size );
- }
- else
- {
- tokens = strTok( baseName, "_" );
- if ( tokens.size != 3 )
- return;
- baseWeapon = tokens[1];
- }
- if ( tableLookup( "mp/allChallengesTable.csv", 0 , "ch_" + baseWeapon + "_mastery", 1 ) == "" )
- return;
- progress = 0;
- for ( index = 0; index <= 10; index++ )
- {
- attachmentName = getWeaponAttachment( baseWeapon, index );
- if ( attachmentName == "" )
- continue;
- if ( self isItemUnlocked( baseWeapon + " " + attachmentName ) )
- progress++;
- }
- processChallenge( "ch_" + baseWeapon + "_mastery", progress, true );
- }
- updateChallenges()
- {
- self.challengeData = [];
- if ( !mayProcessChallenges() )
- return;
- if ( !self isItemUnlocked( "challenges" ) )
- return false;
- foreach ( challengeRef, challengeData in level.challengeInfo )
- {
- self.challengeData[challengeRef] = 0;
- if ( !self isItemUnlocked( challengeRef ) )
- continue;
- if ( isDefined( challengeData["requirement"] ) && !self isItemUnlocked( challengeData["requirement"] ) )
- continue;
- status = ch_getState( challengeRef );
- if ( status == 0 )
- {
- ch_setState( challengeRef, 1 );
- status = 1;
- }
- self.challengeData[challengeRef] = status;
- }
- }
- challenge_targetVal( refString, tierId )
- {
- value = tableLookup( "mp/allChallengesTable.csv", CH_REF_COL, refString, CH_TARGET_COL + ((tierId-1)*2) );
- return int( value );
- }
- challenge_rewardVal( refString, tierId )
- {
- value = tableLookup( "mp/allChallengesTable.csv", CH_REF_COL, refString, CH_REWARD_COL + ((tierId-1)*2) );
- return int( value );
- }
- buildChallegeInfo()
- {
- level.challengeInfo = [];
- tableName = "mp/allchallengesTable.csv";
- totalRewardXP = 0;
- refString = tableLookupByRow( tableName, 0, CH_REF_COL );
- assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
- for ( index = 1; refString != ""; index++ )
- {
- assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
- level.challengeInfo[refString] = [];
- level.challengeInfo[refString]["targetval"] = [];
- level.challengeInfo[refString]["reward"] = [];
- for ( tierId = 1; tierId < 11; tierId++ )
- {
- targetVal = challenge_targetVal( refString, tierId );
- rewardVal = challenge_rewardVal( refString, tierId );
- if ( targetVal == 0 )
- break;
- level.challengeInfo[refString]["targetval"][tierId] = targetVal;
- level.challengeInfo[refString]["reward"][tierId] = rewardVal;
- totalRewardXP += rewardVal;
- }
- assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
- refString = tableLookupByRow( tableName, index, CH_REF_COL );
- }
- tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
- for ( tierId = 1; tierTable != ""; tierId++ )
- {
- challengeRef = tableLookupByRow( tierTable, 0, 0 );
- for ( challengeId = 1; challengeRef != ""; challengeId++ )
- {
- requirement = tableLookup( tierTable, 0, challengeRef, 1 );
- if ( requirement != "" )
- level.challengeInfo[challengeRef]["requirement"] = requirement;
- challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
- }
- tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
- }
- }
- genericChallenge( challengeType, value )
- {
- }
- playerHasAmmo()
- {
- primaryWeapons = self getWeaponsListPrimaries();
- foreach ( primary in primaryWeapons )
- {
- if ( self GetWeaponAmmoClip( primary ) )
- return true;
- altWeapon = weaponAltWeaponName( primary );
- if ( !isDefined( altWeapon ) || (altWeapon == "none") )
- continue;
- if ( self GetWeaponAmmoClip( altWeapon ) )
- return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement