{$CLEO .cs}
{$USE CLEO+, INI}

SCRIPT_NAME 'LMINPUT'

IF IS_ON_SAMP
THEN TERMINATE_THIS_CUSTOM_SCRIPT
END

WHILE NOT IS_PLAYER_PLAYING 0
    WAIT 0
END

//=========================================================
// LMINPUT - Landmine Trigger (Autor: AlvarynGTA)
//---------------------------------------------------------
// VARIABLES
INT mineCounterPtr
INT charActor, charIterator
INT weaponMineID, modelMineID, timeReady, timeLimit, hiddenFlag, debugFlag, countLimit    //INI
INT weapAmmo, reloadINIFlag
//=========================================================

GOSUB @read_INI // Read INI

GET_LABEL_POINTER @mine_counter_buffer mineCounterPtr
WRITE_MEMORY mineCounterPtr 4 0 0

////////////////////////////////////////////////////////////////////////////

// ==================================================
:main_loop
// ==================================================
WAIT 0

charIterator = 0
WHILE charIterator, charActor = GET_ANY_CHAR_NO_SAVE_RECURSIVE charIterator // CLEO+
    IF AND
        charActor > -1
        DOES_CHAR_EXIST charActor
        NOT IS_CHAR_DEAD charActor
    THEN GOSUB @check_weapon
    END
END

GOTO @main_loop

////////////////////////////////////////////////////////////////////////////

// ==================================================
:check_weapon
// ==================================================
IF IS_CURRENT_CHAR_WEAPON charActor weaponMineID
THEN
    GET_AMMO_IN_CHAR_WEAPON charActor weaponMineID weapAmmo
    IF weapAmmo > 0
    THEN
        //--------------------------------
        IF AND  // Manual reload INI
            IS_KEY_PRESSED 118 // F7
            IS_KEY_PRESSED 16 // Shift
        THEN
            IF reloadINIFlag == 0
            THEN
                reloadINIFlag = 1
                GOSUB @read_INI
            END
        ELSE reloadINIFlag = 0
        END
        //--------------------------------
        //================================
        //--------------------------------
        IF AND
            IS_CHAR_ON_FOOT charActor
            NOT IS_CHAR_IN_AIR charActor
            NOT IS_CHAR_IN_WATER charActor
            NOT IS_CHAR_DEAD charActor
        THEN GOSUB @run_mine
        END
        //--------------------------------
    END
END
RETURN

// ==================================================
:run_mine
// ==================================================
IF OR
    IS_CHAR_PLAYING_ANIM charActor "WEAPON_start_throw"
    IS_CHAR_PLAYING_ANIM charActor "WEAPON_throw"
THEN
    IF NOT IS_CHAR_PLAYING_ANIM charActor "BOM_Plant_2Idle"
    THEN
        TASK_PAUSE charActor 0
        CLEAR_CHAR_TASKS_IMMEDIATELY charActor
        STREAM_CUSTOM_SCRIPT "Landmine.s" charActor weaponMineID modelMineID timeReady timeLimit hiddenFlag debugFlag countLimit mineCounterPtr
    END
END

RETURN

////////////////////////////////////////////////////////////////////////////

// ==================================================
:read_INI
// ==================================================
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "WeaponID" weaponMineID
THEN weaponMineID = 39
END
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "ModelID" modelMineID
THEN modelMineID = #MINE
END
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "TimeReady" timeReady
THEN timeReady = 3
END
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "TimeLimit" timeLimit
THEN timeLimit = 10
END
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "CountLimit" countLimit
THEN countLimit = 10
END
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "Hidden" hiddenFlag
THEN hiddenFlag = 0
END
IF NOT READ_INT_FROM_INI_FILE "cleo\LMSettings.ini" "Settings" "Debug" debugFlag
THEN debugFlag = 0
END

IF timeReady < 0
THEN timeReady = 0
ELSE
    IF timeReady > 30
    THEN timeReady = 30
    END
END
timeReady *= 1000

IF timeLimit < 1
THEN timeLimit = 1
ELSE
    IF timeLimit > 60
    THEN timeLimit = 60
    END
END
timeLimit *= 60000

IF countLimit < 1
THEN countLimit = 1
ELSE
    IF countLimit > 32
    THEN countLimit = 32
    END
END

IF OR
    hiddenFlag > 1
    hiddenFlag < 0
THEN hiddenFlag = 0
END

IF OR
    debugFlag < 0
    debugFlag > 1
THEN debugFlag = 0
END

IF reloadINIFlag == 1
THEN PRINT_STRING "[Land Mine] INI Reloaded!" 1000
END

RETURN

:mine_counter_buffer
hex
    00 00 00 00
end