// CAPTAIN AMERICA!

/* CVARS - copy and paste to shconfig.cfg

//Captain America
captaina_level 0
captaina_pctperlev 0.02        //Percentage that factors into godmode randomness (Default 0.02)
captaina_godsecs 1.0        //# of seconds of god mode

*/

#include <superheromod>

// GLOBAL VARIABLES
new gHeroID
new const gHeroName[] = "Captain America"
new bool:gHasCaptainAmerica[SH_MAXSLOTS+1]
new Float:gMaxLevelFactor
new gPcvarPctPerLev, gPcvarGodSecs
//----------------------------------------------------------------------------------------------
public plugin_init()
{
    // Plugin Info
    register_plugin("SUPERHERO Captain America", SH_VERSION_STR, "{HOJ} Batman/JTP10181")

    // DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
    new pcvarLevel = register_cvar("captaina_level", "0")
    gPcvarPctPerLev = register_cvar("captaina_pctperlev", "0.02")
    gPcvarGodSecs = register_cvar("captaina_godsecs", "1.0")

    // FIRE THE EVENTS TO CREATE THIS SUPERHERO!
    gHeroID = sh_create_hero(gHeroName, pcvarLevel)
    sh_set_hero_info(gHeroID, "Super Shield", "Random Invincibility, better chance the higher your level")

    // OK Random Generator
    set_task(1.0, "captaina_loop", _, _, _, "b")
}
//----------------------------------------------------------------------------------------------
public plugin_cfg()
{
    // Check here so sh_get_num_lvls has time to set itself
    gMaxLevelFactor = (10.0 / sh_get_num_lvls()) * 100.0
}
//----------------------------------------------------------------------------------------------
public sh_hero_init(id, heroID, mode)
{
    if ( gHeroID != heroID ) return

    gHasCaptainAmerica[id] = mode ? true : false

    sh_debug_message(id, 1, "%s %s", gHeroName, mode ? "ADDED" : "DROPPED")
}
//----------------------------------------------------------------------------------------------
public captaina_loop()
{
    if ( !sh_is_active() ) return

    static Float:pctperlev
    static Float:godsecs
    pctperlev = get_pcvar_float(gPcvarPctPerLev)
    godsecs = get_pcvar_float(gPcvarGodSecs)
    static heroLevel

    static players[32], playerCount, id, i
    get_players(players, playerCount, "ah")

    for ( i = 0; i < playerCount; i++ ) {
        id = players[i]

        if ( gHasCaptainAmerica[id] && !get_user_godmode(id) ) {

            heroLevel = floatround(sh_get_user_lvl(id) * pctperlev * gMaxLevelFactor)

            if ( heroLevel >= random_num(0, 100) ) {

                sh_set_godmode(id, godsecs)

                //Quick Blue Screen Flash Letting You know about god mode
                sh_screen_fade(id, godsecs, godsecs/2, 0, 0, 255, 50, SH_FFADE_MODULATE)
            }
        }
    }
}
//----------------------------------------------------------------------------------------------
public client_connect(id)
{
    gHasCaptainAmerica[id] = false
}
//----------------------------------------------------------------------------------------------