A tool for installing custom weather, killstreaks, towers, terrains, creeps, HUDs, cursors, and manually adding custom in-game items.
Powered by DMCPatcher. Special thanks to the DotaModdingCommunity.
Caution
Use this script at your own risk. Modifying game files is technically unsafe. However, it is worth noting that no users have reported being banned for using this specific patching method over a long period of use.
| Platform | Link |
|---|---|
| Windows | Patcher-Win.zip |
| Linux | Patcher-Linux.zip |
- Launch the script.
- Select your desired modifications in sections 3 through 9.
- Tip: You can use the keyboard arrows or number keys to navigate within each section.
- Click Install.
- Game Updates: If Dota 2 updates, the game will likely crash on startup. To fix this, simply run the Install process again.
- Matchmaking: If you encounter a VAC warning, run Fix MM.
When skins are enabled, the script utilizes the contents of the Custom folder.
- Create your skin in MOR, which will generate an output archive.
- Navigate to
assets/items/Customand create a new folder (naming it after the hero is recommended for organization). - Place the script files from the MOR output into this new folder (these are usually named
script 1.txt,script 2.txt, etc.). - Extract all remaining files and folders from the MOR archive into
assets/pak01_dir, excluding themor_scriptsfolder. For example, there are the frostbloom ursa claws, you can take a look at their structure
Let's walk through an example: manually adding the "Golden Full-Bore Bonanza" immortal back item for Sniper.
- Open Source 2 Viewer.
- Navigate to your Dota 2 directory (
Steam\steamapps\common\dota 2 beta\game\dota). - Open
pak01_dir.vpkand extract theitems_game.txtfile.
- Open the extracted
items_game.txtfile in a text editor. - Search for the item named
Golden Full-Bore Bonanza. - Copy its entire property block, including its numerical ID. It should look like this:
"9455"
{
"name" "Golden Full-Bore Bonanza"
"prefab" "wearable"
"creation_date" "2017-08-03"
"event_id" "EVENT_ID_INTERNATIONAL_2017"
"hide_tradecraftdelete" "1"
"image_inventory" "econ/items/sniper/sniper_cape_immortal/sniper_cape_immortal1"
"item_description" "#DOTA_Item_Desc_Golden_FullBore_Bonanza"
"item_name" "#DOTA_Item_Golden_FullBore_Bonanza"
"item_rarity" "immortal"
"item_slot" "back"
"item_type_name" "#DOTA_WearableType_Wearable"
"model_player" "models/items/sniper/sniper_cape_immortal/sniper_cape_immortal.vmdl"
"portraits"
{
"icon"
{
"cameras"
{
"Default"
{
"PortraitPosition" "-403.856110 -105.858452 201.133286"
"PortraitAngles" "17.312553 15.001129 0.000000"
"PortraitFOV" "39"
"PortraitFar" "1000"
}
}
"PortraitLightPosition" "-221.270416 54.274155 186.428131"
"PortraitLightAngles" "35.244141 2.219238 0.000000"
"PortraitLightFOV" "65"
"PortraitLightDistance" "317"
"PortraitLightColor" "254 254 254"
"PortraitLightScale" "1.750000"
"PortraitShadowColor" "97 97 97"
"PortraitShadowScale" "5"
"PortraitGroundShadowScale" "1.500000"
"PortraitAmbientDirection" "39.910 -29.100 -18.910"
"PortraitAmbientColor" "148 148 148"
"PortraitAmbientScale" "4.950000"
"PortraitSpecularColor" "251 74 84"
"PortraitSpecularDirection" "0.000000 0.000000 -1.000000"
"PortraitSpecularPower" "16"
"PortraitBackgroundColor1" "1.000000 1.000000 1.000000"
"PortraitBackgroundColor2" "1.000000 1.000000 1.000000"
"PortraitBackgroundColor3" "1.000000 1.000000 1.000000"
"PortraitBackgroundColor4" "0.000000 0.200000 0.700000"
"PortraitBackgroundTexture" "materials/vgui/econ/item_icon_bg.vmat"
"PortraitAnimationActivity" "ACT_DOTA_IDLE"
"PortraitAnimationCycle" "0"
"PortraitAnimationRate" "0"
"PortraitHideHero" "0"
"PortraitHideParticles" "0"
"PortraitHideDropShadow" "0"
"PortraitDesaturateParticles" "0"
"PortraitDesaturateHero" "1"
}
}
"static_attributes"
{
"can_equip_as_ability_effects"
{
"attribute_class" "can_equip_as_ability_effects"
"value" "2"
}
}
"used_by_heroes"
{
"npc_dota_hero_sniper" "1"
}
"visuals"
{
"skip_model_combine" "0"
"asset_modifier"
{
"type" "activity"
"asset" "ALL"
"modifier" "immortal_cape"
"style" "0"
}
"asset_modifier"
{
"type" "particle"
"asset" "particles/units/heroes/hero_sniper/sniper_headshot_slow.vpcf"
"modifier" "particles/econ/items/sniper/sniper_immortal_cape_golden/sniper_immortal_cape_golden_headshot_slow.vpcf"
"style" "0"
"apply_when_equipped_in_ability_effects_slot" "2"
}
"asset_modifier"
{
"type" "particle_create"
"modifier" "particles/econ/items/sniper/sniper_immortal_cape_golden/sniper_immortal_cape_golden_ambient.vpcf"
"style" "0"
}
"asset_modifier"
{
"type" "particle"
"asset" "particles/units/heroes/hero_sniper/sniper_headshot_slow_caster.vpcf"
"modifier" "particles/econ/items/sniper/sniper_immortal_cape_golden/sniper_immortal_cape_golden_headshot_slow_caster.vpcf"
"style" "0"
"apply_when_equipped_in_ability_effects_slot" "2"
}
"asset_modifier"
{
"type" "sound"
"asset" "Hero_Sniper.Headshot"
"modifier" "Hero_Sniper.DuckTarget"
"style" "0"
"apply_when_equipped_in_ability_effects_slot" "2"
}
"asset_modifier"
{
"type" "ability_icon"
"asset" "sniper_headshot"
"modifier" "sniper_headshot_immortal_gold"
"apply_when_equipped_in_ability_effects_slot" "2"
}
"skin" "1"
}
}
- Create a new text file named
back.txtand paste the copied block into it. - Crucial Step: You must overwrite the custom item's header with the base (default) item's data so the game replaces the standard equipment.
Change this:
"9455"
{
"name" "Golden Full-Bore Bonanza"
"prefab" "wearable"
To this:
"282"
{
"name" "Sniper's Cape"
"prefab" "default_item"
- Using Source 2 Viewer, find the compiled model file in
pak01_dir.vpk:models/items/sniper/sniper_cape_immortal/sniper_cape_immortal.vmdl_c - Extract it.
- Create the folder structure:
models/heroes/sniper. - Place the extracted model inside and rename it to the default model name:
cape.vmdl_c.
- In
pak01_dir.vpk, locate the following compiled particle files (_c):sniper_immortal_cape_golden_headshot_slow.vpcf_csniper_immortal_cape_golden_headshot_slow_caster.vpcf_c
- Extract them.
- Create the folder structure:
particles/units/heroes/hero_sniper/. - Place the particles inside and rename them to their default names (which you can reference in the
"asset"lines of the code block above):- Rename to
sniper_headshot_slow.vpcf_c - Rename to
sniper_headshot_slow_caster.vpcf_c
- Rename to
- Move your newly created
modelsandparticlesfolders into your Patcher'sassets/pak01_dirdirectory. - Navigate to
assets/items/Customand create a new folder namedsniper. Place your modifiedback.txtfile inside it. - Launch the script and click Install.
If the script fails to locate your Dota 2 directory automatically, you can set it manually:
- Create a file named
path.txtinside theassetsfolder. - Paste your exact Dota 2 path into this file.
Examples:
C:\Program Files (x86)\Steam\steamapps\common\dota 2 betaD:\SteamLibrary\steamapps\common\dota 2 beta
If the game continues to crash or show VAC errors even after running Install and Fix MM, perform a clean reset:
- Navigate to
Steam\steamapps\common\dota 2 beta\game\bin\win64and delete:dota.signaturesdota.signatures_backup
- Navigate to
Steam\steamapps\common\dota 2 beta\game\dotaand delete:gameinfo_branchspecific.gigameinfo_branchspecific.gi_backup
- Navigate to
Steam\steamapps\common\dota 2 beta\gameand delete the folder:DotaModdingCommunityMods
- Open Steam and Verify integrity of game files for Dota 2.
- Once verification is complete, run the script's Install process again.