About
  - This script/plugin tracks blood states (strictly CamoDiffuseTexIdxs values) of weapons and restores when switched to them again.
    - Trackes for all pedestrians (peds), including the player ped of course.
    - When peds lose some weapons with variable blood states, this script/plugin drops the states.
  - Applies the blood states when peds drop their weapons with non-default blood states.
  - When the player collect weapon pickups with non-default blood states, the blood states will be restored when they switch to the weapons again.
    - Supported for all peds just in case.
  - Makes the water cleans blood off all of the weapons the ped has (optional).
  - Supports (at least intended to support) all game versions, at least for ScriptHookVDotNet version.
    - For RAGE Plugin Hook version, this plugin may not work in some older game versions.

Installation (ScriptHookVDotNet Version)
  - Install Script Hook V: http://www.dev-c.com/gtav/scripthookv/
  - Install Script Hook V .NET (v3.6.0 or later will be needed): https://github.com/crosire/scripthookvdotnet/releases
  - Create a "scripts" folder in your GTA V directory if it doesn't already exist.
  - Copy PersistentWeapoBlood.dll, PersistentWeapoBlood.ini, and EasyHook.dll to the "scripts" folder or its subfolder in your GTA V directory.
    - For EasyHook.dll, you can put it in the root directory. You must use 2.7.7097.0 (or later version) of EasyHook.dll.

Installation (RAGE Plugin Hook Version)
  - Install RAGEPluginHook:
    - You can download from the official RAGE Plugin Hook server, under the "necessities" channel.
    - Alternatively LSPDFR contains the latest RAGE Plugin Hook.
      - The link for LSPDFR: https://www.lcpdfr.com/downloads/gta5mods/g17media/7792-lspd-first-response/
  - Install .NET Framework 4.8
  - Create a "Plugins" folder in your GTA V directory if it doesn't already exist.
  - Copy PersistentWeapoBlood.dll and PersistentWeapoBlood.ini to the "Plugins" folder in your GTA V directory.
  - Copy EasyHook.dll to your root GTA V directory.
    - You can use 2.7.6578.0 or later version of EasyHook as this plugin intentionally specifies 2.7.6578.1 since LSPDFR uses 2.7.6578.0 version of EasyHook.dll.

Configuration
  - You can change the configure of this script/plugin via PersistentWeapoBlood.ini.
    - If the ini file does not exist, this script/plugin just uses default values. If this script/plugin fails to parse some value, the default value will be used.
    - Always use a decimal point as a decimal separator regardless of your locale setting even for SHVDN version. For SHVDN version, you must include one space before and after the equals sign for a key-value pair to read config values correctly.
    - The confingable values are the following one (don't use double quotes for key or value):
      - [WaterCleaningForPedSubmersion]
        - Description: The feature where water will clean blood off all of the ped weapons for the peds submersion or swimming.
        - "TargetPeds"
          - Description: Determines the target peds whose weapons the water cleans.
          - Possible value: "AllPeds", "PlayerOnly", "None". Case-insensitive.
          - Default value: "AllPeds"
        - "SubmersionLevelThreshold"
          - Description: Determines the submersion level threshold.
          - Possible value: A floating point value in the range of 0 to 1 inclusive. 1 means weapon blood will clean if the ped is fully submerged (or swimming).
          - Default value: "0.875
      - [ClearWeaponBloodCommands]
        - "RegisterCheatCodes"
          - Description: Specifies whether the cheat codes for weapon cleaning can be used.
          - Available Cheats
            - CLEANALLPLAYERMELEEWEAPONS: Cleans all of melee weapons of the player.
            - CLEANCURRENTPLAYERMELEEWEAPON: Cleans the current melee weapon of the player. Do nothing if the current weapon can't have a non-default CamoDiffuseTexIdxs value.

Console Commands
  - This script/plugin provides 2 console commands for SHVDN/RPH consoles. The available commands are the following:
    - CleanAllPlayerMeleeWeapons
      - Cleans blood off all of the melee weapons of the player.
    - CleanCurrentPlayerMeleeWeapon: 
      - Cleans blood off the current melee weapon of the player. Do nothing if the current weapon can't have a non-default CamoDiffuseTexIdxs value.
    - For SHVDN version, you will have to type like "PersistentWeaponBlood.Commands.CleanAllPlayerMeleeWeapons()" to call these commands since SHVDN does not provide dedicated custom console commands as of v3.6.0.

Credits
  - Author: kagikn
  - Third Party Notices are included in NOTICES.md.

Source Code
  - On GitHub under the MIT license: https://github.com/kagikn/PersistentWeaponBlood