Smitefire logo

Join the leading DOTA 2 community.
Create and share Hero Guides and Builds.

Create an MFN Account


DOTAFire Blogs

A funnel for all the member blogs on DOTAFire. Clicking an article will take you to the members personal blog page to read the entire post.
Off Topic
April 20, 2018
+Rep Report
Hello, everyone! It's great to finally be back on Dotafire after almost a year and let me just say... I've learned a looooottttt of things while I was gone both in real life AND in-game! Now, I'll be going back to making Dota 2 guides fulltime so stay tuned and wish me luck. If I had to get into details for why I was gone for so long, let me just say that family issues and personal problems have bogged me down for quite some time but alas, I am back like a Phoenix reborn!

P.S. Stay tuned for my Phantom Assassin guide in a short bit ;)

Read More
April 18, 2018
+Rep Report
My eyes beg me for sleep but how can I fall into the land of dreams and nightmares when tomorrow everything will end? After 7 years of blood and pain, All units from the Radiant and the Dire will face each other tomorrow before the dawn and may the gods help us against them.
When the silly dream of sleeping finally goes away I decide to do something more than waiting for the end so I head to the lake to pray with ancient rituals to have faith and strength for the battle. As I walk through the tall old trees and feel the jungle with heart and soul, I think about the years that passed, the blood that was spilled and the souls who were released. Was it all worth it? At first we needed to stop Dire and stop their monster like actions but the more time that passes, the more we became like those monsters. Doesn't matter anymore. Doubts that eat me like acid will end soon one way or another.
I finally reach the silver heart lake where several rivers feed its hunger. The reflection of silver m…
Read More
April 15, 2018
+Rep Report

Slardar: Slithereen Crush

Search around


It's been a while, eh? Don't worry, I'm still pretty much alive (at least physically, but inside...).

So, I've been tweaking around github and decided to split between real version of Dota 2 abilities and tutorial version. Meaning, there are 2 implementations for each ability created in different github branch.

Why the split? I thought that for beginners, it would be better if they just understand basic functions explained in this tutorial, and the ability scripts should only show what's essential for them. Meanwhile, the real version of the ability tends to have a lot of fuss and fancy APIs which may confuse the learners.

I've moved tutorial version of the abilities from "master" branch to "tutorial" branch. Previous links have been updated to the new links, so make sure you get the correct version.

In short, to download ability scripts, go to branch tutorial in the github to get the 'easy' version, and go to branch master to ge…
Read More
March 19, 2018
+Rep Report

Featured Hero :

This pleasant lady should not be underestimated! With a powerful cloud companion that hits like concrete, Unzan, no one stands a chance on this 'unfair' hand-to-hand combat!

She is played as a very mobile brawler / combo hero. If you loved playing Steve Fox from Tekken, Then you'll definitely enjoy this hero.

She also introduced an interesting mechanic. (that already exists in the actual game but Icefrog didn't noticed yet. UPDATE: 7.21 happened, but the mechanic still works for her.)


Sweeps foes in a heart-shaped cleave in front of her, briefly slowing attacks. Damage and effects are based on her attack damage and modifiers.
Smashes foes in a circular area in front of her, briefly slowing movement. Damage and effects are based on her attack damage and modifiers.
Cloud Dash
A charge-based ability that allows her to dash a small distance. The

Read More
February 05, 2018
+Rep Report

Chaos Knight's Chaos Bolt

Playing with projectile

EDIT: Some links have been updated due to github repository change.

Ability Form: Precache

I've been avoiding aesthetics up until now, but finally it's unavoidable anymore. If you look at the base .txt file, everything seems normal excluding that "precache" key-value.

Okay, here's the thing about precache: the engine is just pure lazy. It won't load any resources (such as particles and sounds) unless it is explicitly required. This 'precache' is a way to ensure the particle is required 'explicitly'. Spawning a hero is another one, but even the engine won't automatically load his/her voice until they're triggered to speak.
Particle not loaded means it won't show up. Got it?

Knowing a particle's path would require a Workshop Tools or a GCFScape, so if you don't want to be bothered by those, simply use the path I set there. The most essential particle is the "chaos_knight_chaos_bolt.vpcf" one; the rest is optional.

Logic: Tracking…
Read More

January 29, 2018
+Rep Report

Ogre Magi's Fireblast

Straight to the action

EDIT: Some links have been updated due to github repository change.

Previously we've been dealt with passive abilities, which tends to do their action on their modifiers. Now, this unit-targetted ability will have actions that is defined in the main lua instead; modifier will be a simple tag without action.

Ability Form (.txt file)

The base .txt filled with things that have been covered in the first tutorial. Fireblast is a unit-targeted ability which target enemies that may be heroes or creeps, and deals magical damage that may be dispelled by strong dispel but cannot pierce spell immunity.

A question may be raised as to why the damage section is empty even though Fireblast do damages its target. The thing is, it does not have considerable impact as long as your code follows this form. If the form has "AbilityDamage" value, the code may call "Ability:GetAbilityDamage()" to retrieve it. If the form uses "AbilitySpecial" instead, then…
Read More
January 26, 2018
+Rep Report

Troll Warlord's Fervor

a stack neverflow

EDIT: Some links have been updated due to github repository change.


There's not much to discuss for Fervor's base .txt and main lua. As a passive, Fervor does not require targetting filter and other important values, so the txt file is pretty much similar to Spell Shield. There is one difference, however, that it states "SpellDispellable" as no. This is optional, since it only affects the tooltip.
The ability file is also as simple as Spell Shield. A copy-paste, in fact, since the ability is not required to do anything other than spawning the modifier.

The actual actions happened at modifier instead, so let's focus on that one.

Modifier: Characteristics

This modifier should appear at buff bar, hence we need to show it. Since it is not on the background anymore, its characteristics should be specified, such as:
  • Is it hidden?
  • Is it a debuff? (Otherwise is a buff)
  • Is it can be purged?
  • Is it removed on death?

So far, Spell Shiel…
Read More
January 25, 2018
+Rep Report

Antimage: Spell Shield Lua

Let's get our hands dirty.

EDIT: Some links have been updated due to github repository change.

Ability Form Review

Take a brief look on the ability's .txt file. It's quite short, since it's a simple ability.
Notice that the ability has been renamed as "antimage_spell_shield_lua" in order to avoid collision with the real one.
It is a basic ability with a passive behavior, and nothing else. No need for cast points, unit targetting, spell immunity, etc etc. It also has just one ability specials, which defines the magic resistance bonus on each level.
In short, it's short.

Introducing: Main Lua File

Open up a text-editor, create new file and save it as "antimage_spell_shield_lua.lua", placed according to the .txt file. This will be the main script file, which defines what the ability does. Let's begin with the keypoints.

Class Identifier

You should generally want this particular line at the start of your lua files. This defines the start of a class for c…
Read More
January 23, 2018
+Rep Report

Registering and Testing Ability

Time to make the dream come true.

EDIT: Some notes has been edited due to github repository change.

Dota 2 Addon: Ability Lua Example

Valve actually made their own tutorial on how to create custom abilities using lua. Well, "giving examples" is more accurate, but still it's very useful. The tutorial is an addon (custom game) named



To play the addon, simply open Dota 2, then on your console (make sure you enabled it first), put:
dota_launch_custom_game lua_ability_example hero_demo_main

Go with the flow (Lina recommended; she's hot), and voila: it looks like a hero demo! Go play with her and everything seems normal, except for the fact that she has 5 abilities.

Random guy: Okay, now what?

If you still didn't notice it, here's the hint: all of her abilities are written in Lua, and you may see (also edit) the script file(s).
The addon files are located on:
"<YourSteamLibrary>/dota 2 beta/game/dota_addons/lu

Read More
January 22, 2018
+Rep Report
Okay, since this is my very first tutorial, there may be some mistakes. Just go along with me and ask some question, and we'll be fine. After a lot of considerations (mostly in sleeping, but still), I decided to take this one as the first tutorial.

Ability Form

I'm pretty sure that you guys are already an expert in designing unique abilities and explain them to us, but how do you explain your abilities to Dota 2 engine?
You can tell the machine about your abilities by using a certain registration form. With this, there'll be more clarity for the machine about the description of your abilities, what they can do and what they cannot do.

Now the form, here you go.

Random Guy: Dafuq is that?

Relax, I'll explain them one by one. Just copy it to your editor, and save it as:
Where to? Anywhere, for now.

Hey, don't just read it. Copy and save it, get your hands dirty.

Now, here's the guide to fill the form. The form above has been filled with an abili…
Read More
<< 1 2 3 4 5 6 7 8 34 60 >>

DOTAFire is the place to find the perfect build guide to take your game to the next level. Learn how to play a new hero, or fine tune your favorite DotA hero’s build and strategy.

Copyright © 2019 DOTAFire | All Rights Reserved