/* CVARS - copy and paste to shconfig.cfg


//MeeL
meel_level 0
meel_health 100        //Default 100 (no extra health)
meel_armor 150        //Default 150
meel_gravity 1.0        //Default 1.0 = no extra gravity (0.50 is 50% normal gravity, ect.)
meel_speed -1        //Default -1 = no extra speed, this cvar is for all weapons set to 250 or higher to be faster
meel_m4a1mult 1.3    //Damage multiplyer for his m4a1

*/


#include <amxmodx>
#include <fakemeta>
#include <superheromod>

// GLOBAL VARIABLES
new HeroName[] = "MeeL"
new bool:HasMeeL[SH_MAXSLOTS+1]
new CvarM4A1DmgMult
//----------------------------------------------------------------------------------------------
public plugin_init()
{
    // Plugin Info
    register_plugin("SUPERHERO MeeL", "2.0", "GROM")

    // DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
    register_cvar("MeeL_level", "0")
    register_cvar("MeeL_health", "100")
    register_cvar("MeeL_armor", "150")
    register_cvar("MeeL_gravity", "1.0")
    register_cvar("MeeL_speed", "-1")
    CvarM4A1DmgMult = register_cvar("meel_m4a1mult", "1.3")

    // FIRE THE EVENT TO CREATE THIS SUPERHERO!
    shCreateHero(HeroName, "New m4a1", "Get MeeL Powerfull m4!", false, "meel_level")

    // REGISTER EVENTS THIS HERO WILL RESPOND TO! (AND SERVER COMMANDS)
    // INIT
    register_srvcmd("meel_init", "meel_init")
    shRegHeroInit(HeroName, "meel_init")

    // EVENTS
    register_event("ResetHUD", "new_spawn", "b")
    register_event("CurWeapon", "weapon_change", "be", "1=1")
    register_event("Damage", "meel_damage", "b", "2!0")
    register_event("DeathMsg", "meel_death", "a")

    // Let Server know about the hero's variables
    shSetShieldRestrict(HeroName)
    shSetMaxHealth(HeroName, "meel_health")
    shSetMaxArmor(HeroName, "meel_armor")
    shSetMinGravity(HeroName, "meel_gravity")
    shSetMaxSpeed(HeroName, "meel_speed", "[0]")
}
//----------------------------------------------------------------------------------------------
public plugin_precache()
{
    precache_model("models/shmod/v_meelm4a1.mdl")
    
}
//----------------------------------------------------------------------------------------------
public meel_init()
{
    // First Argument is an id
    new temp[6]
    read_argv(1, temp, 5)
    new id = str_to_num(temp)

    // 2nd Argument is 0 or 1 depending on whether the id has the hero
    read_argv(2, temp, 5)
    new hasPowers = str_to_num(temp)

    // Reset thier shield restrict status
    // Shield restrict MUST be before weapons are given out
    shResetShield(id)

    switch(hasPowers)
    {
        case true:
        {
            HasMeeL[id] = true

            if ( is_user_alive(id) )
            {
                meel_weapons(id)
            }
        }

        case false:
        {
            // Check is needed since this gets run on clearpowers even if user didn't have this hero
            if ( is_user_alive(id) && HasMeeL[id] )
            {
                // This gets run if they had the power but don't anymore
                engclient_cmd(id, "drop", "weapon_m4a1")
                shRemHealthPower(id)
                shRemArmorPower(id)
                shRemGravityPower(id)
                shRemSpeedPower(id)
            }

            HasMeeL[id] = false
        }
    }
}
//----------------------------------------------------------------------------------------------
public new_spawn(id)
{
    if ( shModActive() && is_user_alive(id) && HasMeeL[id] )
    {
        set_task(0.1, "meel_weapons", id)

    }
}
//----------------------------------------------------------------------------------------------
public meel_weapons(id)
{
    if ( !shModActive() || !is_user_alive(id) || !HasMeeL[id] )
        return

    shGiveWeapon(id, "weapon_m4a1")
}
//----------------------------------------------------------------------------------------------
switch_model(id)
{
    if ( !shModActive() || !is_user_alive(id) || !HasMeeL[id] )
        return

    new clip, ammo, wpnid = get_user_weapon(id, clip, ammo)

    if ( wpnid == CSW_M4A1 )
    {
        set_pev(id, pev_viewmodel2, "models/shmod/v_meelm4a1.mdl")
    }
}
//----------------------------------------------------------------------------------------------
public weapon_change(id)
{
    if ( !shModActive() || !HasMeeL[id] )
        return

    new wpnid = read_data(2)

    if ( wpnid != CSW_M4A1 )
        return

    switch_model(id)

    new clip = read_data(3)

    // Never Run Out of Ammo!
    if ( clip == 0 )
        shReloadAmmo(id)
}
//----------------------------------------------------------------------------------------------
public meel_damage(id)
{
    if ( !shModActive() || !is_user_alive(id) )
        return

    new weapon, bodypart, attacker = get_user_attacker(id, weapon, bodypart)

    if ( attacker <= 0 || attacker > SH_MAXSLOTS )
        return

    if ( HasMeeL[attacker] && weapon == CSW_M4A1 && is_user_alive(id) )
    {
        new damage = read_data(2)
        new headshot = bodypart == 1 ? 1 : 0

        // do extra damage
        new extraDamage = floatround(damage * get_pcvar_float(CvarM4A1DmgMult) - damage)
        if ( extraDamage > 0 )
            shExtraDamage(id, attacker, extraDamage, "m4a1", headshot)
    }
}
//----------------------------------------------------------------------------------------------
public meel_death()
{
    new id = read_data(2)

    if ( !HasMeeL[id] )
        return

}
//----------------------------------------------------------------------------------------------
public client_connect(id)
{
    HasMeeL[id] = false
}
//----------------------------------------------------------------------------------------------