Spoiler
//Bf2 Rank Mod badge powers File
//Contains all the power giving etc checking functions.
#if defined bf2_powers_included
#endinput
#endif
#define bf2_powers_included
public set_speed(id)
{
if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
if ( !is_user_alive(id) || freezetime ) return;
new Float:speed;
if ( g_imobile[id] )
{
speed = 100.0;
}
else
{
if ( fm_get_user_vip(id) )
{
//VIPs only have 1 speed no matter the weapon
speed = 227.0;
}
else
{
new weapon = get_user_weapon(id);
speed = gCSWeaponSpeed[weapon];
if ( gCurrentFOV[id] <= 45 )
{
switch(weapon)
{
case CSW_SCOUT: speed = 220.0;
case CSW_SG550, CSW_AWP, CSW_G3SG1: speed = 150.0;
}
}
}
new smglevel = g_PlayerBadges[id][BADGE_SMG];
if ( smglevel )
{
//15 units faster per level.
speed += (smglevel * 15.0);
}
}
if ( speed != fm_get_user_maxspeed(id) )
{
fm_set_user_maxspeed(id, speed);
}
}
public set_invis(id)
{
if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
if ( !is_user_alive(id) ) return;
new shotgunlevel = g_PlayerBadges[id][BADGE_SHOTGUN];
if ( shotgunlevel && get_user_weapon(id) == CSW_KNIFE )
{
new Float:grav
switch(shotgunlevel)
{
case 1: grav = 0.875 //700
case 2: grav = 0.75 //600
case 3: grav = 0.625 //500
case 4: grav = 0.5 //400
}
fm_set_user_gravity(id, grav);
g_invis[id] = true;
}
else
{
fm_set_user_gravity(id, 1.0)
g_invis[id] = false;
}
}
public remove_imobile(id)
{
g_imobile[id] = false;
set_speed(id);
}
stock get_user_maxhealth( id )
{
new maxHealth = 100
new assaultlevel = g_PlayerBadges[id][BADGE_ASSAULT];
if ( assaultlevel > 0 )
{
maxHealth += assaultlevel * 10;
}
return maxHealth
}
new const gValueHp[4] =
{
1,
2,
3,
4
};
public give_userweapon(id)
{
if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
if ( !is_user_alive(id) ) return;
new bool:givenitem = false;
new assaultlevel = g_PlayerBadges[id][BADGE_ASSAULT];
if ( assaultlevel )
{
new hp;
hp = 100 + (assaultlevel*10);
set_pev(id, pev_health, float(hp));
givenitem = true;
}
new sniperlevel = g_PlayerBadges[id][BADGE_SNIPER];
if ( sniperlevel )
{
new iHealth = get_user_health(id);
if ( iHealth <= get_user_maxhealth( id ) )
{
fm_set_user_health(id, iHealth + gValueHp[sniperlevel-1])
givenitem = true;
}
}
new explosionlevel = g_PlayerBadges[id][BADGE_EXPLOSIVES];
if ( explosionlevel )
{
if ( random_num(1, (5-explosionlevel)) == 1 )
{
fm_give_item(id, "weapon_hegrenade");
givenitem = true;
}
}
switch (numofbadges[id])
{
case 6 .. 11:
{
if ( fm_get_user_armor(id) < 50 )
{
fm_set_user_armor(id, 50);
givenitem = true;
}
}
case 12 .. 18:
{
if ( fm_get_user_armor(id) < 100 )
{
fm_set_user_armor(id, 100);
givenitem = true;
}
}
case 19 .. 24:
{
if ( fm_get_user_armor(id) < 150 )
{
fm_set_user_armor(id, 150);
givenitem = true;
}
}
case 25 .. 29:
{
if ( fm_get_user_armor(id) < 200 )
{
fm_set_user_armor(id, 200);
givenitem = true;
}
}
case 30 .. 34:
{
if ( fm_get_user_armor(id) < 250 )
{
fm_set_user_armor(id, 250);
givenitem = true;
}
}
}
if ( givenitem )
screen_flash(id, 0, 255, 0, 100); //Green screen flash
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/