This repository is a collection of remade Dota 2 Hero abilities for the use of the Dota2 modding community by the Dota2 modding community
If you have any questions regarding the project or if you have found a bug/issue with the spells then feel free to create an issue or contact us on irc
If you wish to contribute to this project then it is prefered if you could follow the following guidelines when contributing
-
Lua scripts should be separated on a per hero basis
-
Use as many AbilitySpecials as possible, do not hardcode the lua file.
-
Don't use Global Lua Events, abilities should work without any main addon scripts.
-
Don't bother with completely dota-hardcoded interactions
-
Implementing Aghanims upgrades and casting animations is not neccessary
-
Implementing Refresher compatibility is recommended but not mandatory
-
Use default particles and sounds
-
If you find an ability that seems hard or impossible to rewrite, ask and document your attempts, others will help you
-
It is fine to use BMD's Timers and Physics libraries
-
KV abilities should be saved as abilityname_datadriven.txt inside scripts/npc/abilities/HERONAME/ folder
-
Lua abilities should be saved as abilityname_lua.txt inside scripts/npc/abilities/HERONAME/ folder
-
Lua scripts should be saved as abilityname.lua inside scripts/vscripts/heroes/hero_HERONAME/ folder
-
Every KV file should have this in its header(EXAMPLE)
// Rewrite of HERONAME ABILITYNAME
// Author: AUTHORNAME - the name of the author or authors that created this ability
// Date: MONTHNAME DAY, YEAR(eg. February 12, 2016) - date on which the file was created or had modifications
// Version: eg. 6.86 - latest game version for which this ability is up to date
// Type: Datadriven, Lua or Datadriven/Lua - what kind of type this ability is
// Notes: write any notes regarding the ability such as particle incomplete, minor differences compared to the original ability, etc.
//
// List the file requirements if the ability requires other files to function
// ----- FILE REQUIREMENTS -----
// Script files:
// scripts/vscripts/heroes/hero_HERONAME/ABILITYNAME.lua
//
// KV files:
// scripts/npc/abilities/HERONAME/ABILITYNAME_datadriven.txt
//
// Unit files:
// scripts/npc/units/UNITNAME.txt
- Follow this coding style:
For Datadriven KeyValues
"OnSpellStart"
{
"RunScript"
{
"ScriptFile" "heroes/hero_name/ability_name.lua"
"Function" "AbilityName"
}
}
For Lua functions
--[[
Author:
Date: Monthname Day, Year
(Description)
]]
function AbilityName( event )
-- Variables
local caster = event.caster
local ability = event.ability
local value = = ability:GetLevelSpecialValueFor( "value" , ability:GetLevel() - 1 )
-- Try to comment each block of logical actions
-- If the ability handle is not nil, print a message
if ability then
print("RunScript")
end
end
-
Modifier Name conventions
- Start with "modifier_"
- Then add the spell name (no hero name)
- Add "_buff" "_debuff" "_stun" or anything when appropiate
-
Tutorials the great Moddota tutorial collection
-
Dota2ModKit an essential tool for Dota 2 Modding
-
Workshop Tools Wiki the official Dota 2 Workshop Tools wiki
Noya for many of his tutorials
BMD for his libraries
Attero for his npc_abilities splitter
cris9696 for his files joiner
zedor for Custom Errors plugin
Myll for his Dota2ModKit tool