Elfansoer's Blog
Blog Posts: 8     Views: 6666     Comments: 5
Show From:
DotA 2
Off Topic
August 02, 2018

Slark: Dark Pact

Waiting in interval

Tutorial Will be Moved

It's not that I wanted to, but apparently this blog isn't suitable for code-heavy writings. So, I decided to move the tutorial into the GitHub's wiki page.

Don't worry, I'll still be here if you have critics or questions regarding the tutorial.

So, rather than this post being empty, I'll write out the overview instead.


So, Dark Pact will teach us about how to use modifier's interval function; OnIntervalThink. Upon cast, Dark Pact will have a delay, and after that, continuously purges the caster.

There are 2 intervals; the delay and the continuous purge/damage. Both need to share the logic on one function; OnIntervalThink. In this case, we use boolean to check which interval invokes the function.

How it should be implemented? Here's the full tutorial: Slark's Dark Pact.


Next, we're going to have Linear Projectiles and How You Use Them, using Mirana's Sacred Arrow.
Comments, Critics and Questions…
Read More
April 15, 2018

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
February 05, 2018

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

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

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
1 2 >>