Skip to content

Commit 94e26bf

Browse files
committed
Fixes
1 parent d5776de commit 94e26bf

File tree

83 files changed

+661
-411
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+661
-411
lines changed

_articles/abilities/ability-keyvalues.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198046984233'
55
date: 10.12.2014
66
---
77

8+
# Ability KeyValues
9+
10+
811
<!--
912
TODO: Some categories are missing:
1013
[![Damage Type](/images/external/WwwNkbj.png)](##damage "Damage type of the ability")
@@ -98,7 +101,7 @@ Example:
98101
|DOTA_ABILITY_BEHAVIOR_AUTOCAST|Can be cast automatically.<br/>Usually doesn't work by itself in anything that is not an ATTACK ability.|
99102
|DOTA_ABILITY_BEHAVIOR_HIDDEN|Can't be cast, and won't show up on the HUD.|
100103
|DOTA_ABILITY_BEHAVIOR_AOE|Can draw a radius where the ability will have effect.<br/>Like POINT, but with an area of effect display.<br/>Makes use of `AOERadius`.|
101-
|DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE|CAnnot be learned by clicking on the HUD.<br/>Example: Invoker's abilities.|
104+
|DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE|Cannot be learned by clicking on the HUD.<br/>Example: Invoker's abilities.|
102105
|DOTA_ABILITY_BEHAVIOR_ITEM|Ability is tied to an item. There is no need to use this, the game will internally assign this behavior to any `"item_datadriven"`.|
103106
|DOTA_ABILITY_BEHAVIOR_DIRECTIONAL|Has a direction from the hero.<br/>Examples: Mirana's Arrow, or Pudge's Hook.|
104107
|DOTA_ABILITY_BEHAVIOR_IMMEDIATE|Can be used instantly, without going into the action queue.|
@@ -107,7 +110,7 @@ Example:
107110
|DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES|Cannot be used when rooted.|
108111
|DOTA_ABILITY_BEHAVIOR_UNRESTRICTED|Ability is allowed when commands are restricted.<br/>Example: Lifestealer's Consume.|
109112
|DOTA_ABILITY_BEHAVIOR_DONT_ALERT_TARGET|Does not alert enemies when target-cast on them.<br/>Example: Spirit Breaker's Charge.|
110-
|DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT|Should not resume movement when it completes.<br/>Only applicable ot no-target, non-immediate abilities.|
113+
|DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT|Should not resume movement when it completes.<br/>Only applicable to no-target, non-immediate abilities.|
111114
|DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK|Ability should not resume command-attacking the previous target when it completes.<br/>Only applicable to no-target, non-immediate abilities and unit-target abilities.|
112115
|DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN|Ability still uses its normal cast point when stolen.<br/>Examples: Meepo's Poof, Furion's Teleport.|
113116
|DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING|Ability ignores backswing pseudoqueue.|
@@ -119,11 +122,11 @@ Example:
119122

120123
### Behavior Tooltips
121124

122-
The following behaviors will generate a line in the ability tooltip. You want at least one of 1 behavior of this list. The rest of the ability behaviors don't have any UI support yet.
125+
The following behaviors will generate a line in the ability tooltip. You want at least one behavior of this list. The rest of the ability behaviors don't have any UI support yet.
123126

124127
The UI can only show one behavior tooltip, but internally it will behave as expected, as long two contradicting keys are not used together (like *NO_TARGET* with *UNIT_TARGET*).
125128

126-
|**AbilityBehavior**|**ABILITY: *Tooltip***|**Takes precdence over:**|
129+
|**AbilityBehavior**|**ABILITY: *Tooltip***|**Takes precedence over:**|
127130
|-|-|-|
128131
|DOTA_ABILITY_BEHAVIOR_NO_TARGET|**No Target**||
129132
|DOTA_ABILITY_BEHAVIOR_UNIT_TARGET|**Unit Target**|POINT|
@@ -172,7 +175,7 @@ At which level the ability can first be learned. This takes negative values, to
172175

173176
### LevelsBetweenUpgrades
174177

175-
How many levels to wait to be able to learnt he next rank.
178+
How many levels to wait to be able to learn the next rank.
176179

177180
*Example*:
178181
```
@@ -189,7 +192,7 @@ Max level of the heroes can be changed using the Lua `SetCustomHeroMaxLevel(MAX_
189192

190193
The icon file name that should be used in the UI for this ability. You can reutilize the icon from another just by putting that ability name here if desired. The internal name of every default dota ability can be found in: [Built-In Ability Names](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Built-In_Ability_Names).
191194

192-
To use your own icons, place them in `resources/flash3/images/spellicons` in you game addon folder, and just directly refer to the image name without the path or the extension.
195+
To use your own icons, place them in `resources/flash3/images/spellicons` in your game addon folder, and just directly refer to the image name without the path or the extension.
193196

194197
**Format**: 128x128 PNG
195198
```
@@ -264,11 +267,11 @@ Flags allow targeting units that are ignored by default (for example, magic immu
264267
|DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS|Ignores units with `"IsAncient" "1"` defined.<br/>Example: Hand of Midas.|
265268
|DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO|Ignores units with `"ConsideredHero" "1"` defined.<br/>Examples: Astral Imprisonment, Disruption, Sunder.|
266269
|DOTA_UNIT_TARGET_FLAG_NOT_DOMINATED|Ignores units with `MODIFIER_STATE_DOMINATED`.|
267-
|DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS|Ignores untis with `MODIFIER_PROPERTY_IS_ILLUSION`.|
270+
|DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS|Ignores units with `MODIFIER_PROPERTY_IS_ILLUSION`.|
268271
|DOTA_UNIT_TARGET_FLAG_NOT_NIGHTMARED|Ignores units with `MODIFIER_STATE_NIGHTMARED`.|
269272
|DOTA_UNIT_TARGET_FLAG_NOT_SUMMONED|Ignores units created through the `SpawnUnit` [action](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Abilities_Data_Driven#Actions).|
270273
|DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD|Units with `MODIFIER_STATE_OUT_OF_GAME`.|
271-
|DOTA_UNIT_TARGET_FLAG_PLAYER_CONTROLLED|Units controllable by a player, accesible with [Lua](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API)'s `IsControllableByAnyPlayer()`.|
274+
|DOTA_UNIT_TARGET_FLAG_PLAYER_CONTROLLED|Units controllable by a player, accessible with [Lua](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API)'s `IsControllableByAnyPlayer()`.|
272275
|DOTA_UNIT_TARGET_FLAG_PREFER_ENEMIES|Prioritizes units over trees when both are selectable.|
273276

274277
**Clean list**:
@@ -396,7 +399,7 @@ Instead of the `"Radius"` keyvalue, which only takes one parameter, `Line` takes
396399

397400
#### ScriptSelectPoints
398401

399-
Its use is very rare, normally when the targeting is complex we would just use `RunScript` lua and do all the acitons inside the script.
402+
Its use is very rare, normally when the targeting is complex we would just use `RunScript` lua and do all the actions inside the script.
400403

401404
```
402405
ScriptSelectPoints

_articles/abilities/abilityduration-tooltips.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198046984233'
55
date: 15.12.2014
66
---
77

8+
# AbilityDuration tooltips
9+
10+
811
**TL;DR:** AbilityDuration is a fairly useless keyvalue because whoever coded it forgot to make an automatic tooltip like with `AbilityDamage`. Use a "duration" AbilityValue and connect it with lua instead.
912

1013
Imagine you want to have an ability apply a modifier for some seconds, duration changing with levels.
@@ -17,15 +20,15 @@ You can fall for the trap and do this:
1720

1821
And then have your modifier refer to %AbilityDuration in the "Duration" modifier key. All fine for now.
1922

20-
But when when you want to indicate that your ability lasts for said duration, this AbilityDuration doesn't generate a **"DURATION:"** tooltip by itself, so you have 3 options:
23+
But when you want to indicate that your ability lasts for said duration, this AbilityDuration doesn't generate a **"DURATION:"** tooltip by itself, so you have 3 options:
2124

2225
**Option 1.** Write "Last 3 seconds at level 1 and then 2 at level 2 and 3" in the _Description.
2326

2427
This is bad for the reasons explained before.
2528

26-
**Option 2*.** Have a "duration" AbilityValue in addition to the "AbilityDuration" and keep both values syncronized.
29+
**Option 2*.** Have a "duration" AbilityValue in addition to the "AbilityDuration" and keep both values synchronized.
2730

28-
Suboptimal but decent solution, as it allows you to use ability:GetAbilityDuration() which takes takes its value from AbilityDuration.
31+
Suboptimal but decent solution, as it allows you to use ability:GetAbilityDuration() which takes its value from AbilityDuration.
2932

3033
**Option 3.** Remove AbilityDuration, only keep the AbilityValue. Best way as far as I can tell.
3134

_articles/abilities/calling-spells-with-setcursor.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198003060848'
55
date: 10.01.2015
66
---
77

8+
# Calling Spells with SetCursor
9+
10+
811
`CDotaBaseAbility:OnSpellStart` in combination with `CDotaBaseNPC:SetCursorCastTarget` and `CDOTABaseNPC:SetCursorPosition` are used to "Call" spells.
912

1013
This is a powerful way to interact with Valve's spells in particular. This allows you to:

_articles/abilities/creating-innate-abilities.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ steamId: '76561198046920629'
55
date: 27.09.2019
66
---
77

8+
# Creating innate (available from level 1) abilities
9+
10+
811
This article will guide you through creating an ability which is available to the given hero right away, like Earth Spirit's Stone Remnant.
912
This guide assumes you already have an ability set up on a hero.
1013

1114
## Lua abilities
1215

13-
Lua abilities can define a `Spawn` method, that is invoked by the engine when ability is cretated.
16+
Lua abilities can define a `Spawn` method, that is invoked by the engine when ability is created.
1417

1518
```lua
1619
my_innate_ability = my_innate_ability or {}

_articles/abilities/datadriven/all-about-the-target.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198046984233'
55
date: 23.01.2015
66
---
77

8+
# All about the Target
9+
10+
811
I wanted to review a very old thread which was posted almost one year ago but still isn't completely well documented anywhere:
912

1013
> "Target" is one bitch of a key.
@@ -19,7 +22,7 @@ Quoting the [wiki](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tool
1922
2023
This thread intends to compile every Target-related decision.
2124

22-
To test everything and get results, I used some simple scrips to test which parameters are seen in each event context. The KV and Lua Scripts are found in the second post, which also contains all the debug data.
25+
To test everything and get results, I used some simple scripts to test which parameters are seen in each event context. The KV and Lua Scripts are found in the second post, which also contains all the debug data.
2326

2427
After running many tests with different ability behaviors, here's what I got:
2528

@@ -81,7 +84,7 @@ OnOwnerSpawned | CASTER
8184
OnUpgrade | CASTER
8285

8386

84-
## MODIFER EVENT CONTEXTS
87+
## MODIFIER EVENT CONTEXTS
8588

8689
### Caster-Target
8790

_articles/abilities/datadriven/apply-hero-and-creep-modifier-durations.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198046984233'
55
date: 15.01.2015
66
---
77

8+
# Apply Hero and Creep modifier durations
9+
10+
811
I came up with this method after kritth showed us that you can directly add a `"Duration"` key value to an `"ApplyModifier"` block and the use of the `"Target"` block without a Radius (defaulting to 0).
912

1013
Basically, abusing the datadriven system we can do this on any event:

_articles/abilities/datadriven/channeling-animations.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ steamId: '76561198046984233'
55
date: 18.01.2015
66
---
77

8-
### Short Version:
8+
# Channeling Animations
9+
10+
11+
## Short Version:
912

1013
ApplyModifier with short duration in a OnThinkInterval, channeling modifier has an OverrideAnimation with a ACT_ from the [Action List](https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Actions_List) or with the method explained later.
1114

@@ -36,7 +39,7 @@ ApplyModifier with short duration in a OnThinkInterval, channeling modifier has
3639
}
3740
```
3841

39-
### Full Version
42+
## Full Version
4043

4144
<StaticVideo path="/videos/FlusteredBigBoa.mp4" />
4245

_articles/abilities/datadriven/datadriven-ability-events-modifiers.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@ steamId: '76561198046984233'
55
date: 10.12.2014
66
---
77

8+
# DataDriven Ability Events & Modifiers
9+
10+
811
A guide that tries to cover every Ability & Modifier Event of the *ability_datadriven* system, with examples.
912

1013
![img](/images/external/T7W828Q.png)
1114

1215
<a name="start"></a>
1316
This is an Intermediate guide that expects some knowledge of the most common first-level keyvalues. If unsure about the meaning of any of them, check the [DataDriven Ability Breakdown](/abilities/ability-keyvalues).
1417

15-
### Introduction
18+
## Introduction
1619

1720
In the Data Driven system, an Event is something that triggers when a particular in-game event occurs, for example, finishing the cast of an ability.
1821

_articles/abilities/datadriven/illusion-ability-example.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198046984233'
55
date: 11.01.2015
66
---
77

8+
# Illusion Ability Example
9+
10+
811
This is a lua script to properly create an illusion.
912

1013
Note: Datadriven Modifiers with "AllowIllusionDuplicate" aren't automatically created with this method and need to be added manually in lua. In this same script we also attempt to add the datadriven version of `modifier_metamorphosis` which can also be found [here in the SpellLibrary](https://github.com/Pizzalol/SpellLibrary/blob/SpellLibrary/game/dota_addons/spelllibrary/scripts/npc/abilities/terrorblade_metamorphosis_datadriven.txt)
@@ -55,7 +58,7 @@ function ConjureImage( event )
5558
end
5659
end
5760

58-
-- Add our datadriven Metamorphosis modifier if appropiate
61+
-- Add our datadriven Metamorphosis modifier if appropriate
5962
-- You can add other buffs that want to be passed to illusions this way
6063
if caster:HasModifier("modifier_metamorphosis") then
6164
local meta_ability = caster:FindAbilityByName("terrorblade_metamorphosis_datadriven")

_articles/abilities/datadriven/invisibility-ability-example.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ steamId: '76561198046984233'
55
date: 19.12.2014
66
---
77

8+
# Invisibility Ability Example
9+
10+
811
This is a datadriven + lua ability that will apply the invis state and texture, with some extra particles and effects.
912

1013
<StaticVideo path="/videos/MajesticDimpledIrishwaterspaniel.mp4" />

0 commit comments

Comments
 (0)