HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Turning on/off passive abilities (tutorial)

01-07-2004, 05:41 PM#1
Shark
well, i designed a way to turn on or off abilities like bash, evasion etc...
below u'll fine the following tutorial

u need the following variables:
BashLevel - Skill Array with size of (how many levels does your passive skill has)
DefendLevel - Integer with 0 default value

and 4 triggers,

Set Arrays (u can put it in your general Map Init trigger)

SetArrays
Events
Map initialization
Conditions
Actions
Set BashLevel[1] = Bash1
Set BashLevel[2] = Bash2
Set BashLevel[3] = Bash3

Hero Skill which detects when u learn the dummy skill

Hero skill
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Power Attack
Actions
Set DefendLevel = (DefendLevel + 1)

Detech Defend which detects when u use that dummy ability to TURN ON the passive ability

Detect Defend
Events
Unit - A unit Is issued an order with no target
Conditions
(Issued order) Equal to (Order(defend))
Actions
Unit - Add BashLevel[DefendLevel] to (Ordered unit)

and Detect Undefend which detects when u use that dummy ability to TURN OFF your passive ability, this one is also a fail-safe, if u level up your dummy ability while it's active, it will no-matter-what remove them all...you don't need any of those abilities at all if it is off, right ?

Detect Undefend
Events
Unit - A unit Is issued an order with no target
Conditions
(Issued order) Equal to (Order(undefend))
Actions
Unit - Remove Bash1 from (Ordered unit)
Unit - Remove Bash2 from (Ordered unit)
Unit - Remove Bash3 from (Ordered unit)

Then u need the following Abilities
Bash1, Bash2, Bash3 is the passive bash ability, each one stronger (like the level up version of a hero, except they're unit abilities)
and an Hero-version of a Defend ability

For Bash (the unit versions) just edit the values u need and tooltips, but set their positions to either X1,Y2 or X2,Y2 or vice versa X1,Y1 or X2,Y1

for Defend: mine has 3 levels, attack speed factor is 0, damage dealt is 1 (try experimenting with that), Damage taken is 1, magic damage reduction 1 (its default 1 for the basic defend skill, so i'll just leave it that way), and Movement speed factor is 0 (the bigger the number, the slower the unit will go..we need to retain our original speed).

make tooltips like this
Level 1 - Text - Tooltip - Normal = Turn ON blabla_yourskill ability_blabla
Level 1 - text - tooltip - normal - extended = type the activation text (what bonuses it provides etc)
Level 1 - tooltip - turn off = Turn Off blabla_yourskill ability_blabla
level 1 - tooltip- turn off - extended = type the deactivation text

and use the following positions for that Defend ability :
if u positioned your Bash to X1,Y2 - then use the Defend to X1,Y2, but the turn off should be X2,Y2, so the button moves above that skill, or the skill that will appear (in this case bash) will move somewhere else)
in any case, the position formula goes like this
Defend has the same position as the Bash, but it's Y has -1 of the original Y...

u'll get the hang of it :)) i kinda confused myself while trying to explain about the positions... :))

hope it helps....

Also, the tooltips must be written, copy/pasted for every level, there can't be any blank lines, and u might try experimenting with some buffs or effects...i attached the "disenchant old" to "weapon" via Art - Caster and Art - Caster Attachment Point 1...Art - Caster Attachments is 0

it may be a bit blurry, but u'll get the drift...it is meant to be a tutorial, but more experienced mappers could experiment with it for a while and maybe find something that i missed...

hre's an idea: make an turn on/off evasion, but set the Data - damage dealth percent to 0, so u have an 60% evasion, but cannot attack etc....it could prove very useful...

in case this adds to my previous post, consider it a P.S.

Also i forgot to ask something....why wont the miss chance for bash apply ?
i'll try setting it to 100% (1.00) and see if it actually misses...but on lvl3 where my miss chance is 30% and bash is 40% it bashes almost every third time but never misses....why is that ?
01-08-2004, 02:39 AM#2
Hivemind
That isnt the change that the bash will miss....its the chace that a unit will miss the basher.
01-08-2004, 03:09 AM#3
Sage the Mage
Hero skill
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Power Attack
Actions
Set DefendLevel = (DefendLevel + 1)

That trigger is not needed.
01-08-2004, 09:30 AM#4
Shark
it is :)
it adds the DefendLevel bash when ordered to defend...
i also forgot to paste the trigger regarding the Tome of Retraining which sets it back to 0
and for the bash miss chance i figured it's actually an evasion skill :)
i made some improvements, and made another skill, an expertise attack based on magicdefense, usses the same system, except these two cannot be used together...when ordered to turn on Expertise, the power attack turns off and vice versa....

since i'm going to use only one fighter in my map, i don't need arrays for the skill itself, because every time a hero learns a skill, the trigger will fire...
P.S. this was supposed to be a tutorial...
here's the map that explains it, didn't have the time to change the name, also there is a lich nearby the fighter, disregard him, he's something i'm working on...
01-08-2004, 09:48 PM#5
AnarkiNet
Quote:
Originally posted by Sage the Mage
Hero skill
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Power Attack
Actions
Set DefendLevel = (DefendLevel + 1)

That trigger is not needed.
this trigger is needed but unless its been fixed, must be done in jass because you cant set a custom ability to the (learned hero skill) equal to (skill), you can only set a custom spell/ability in the (ability being cast) equal to (skill) condition.
01-08-2004, 11:06 PM#6
Sage the Mage
Detect PwrAtk
Events
Unit - A unit Is issued an order with no target
Conditions
(Issued order) Equal to (Order(defend))
(Unit-type of (Ordered unit)) Equal to Fighter
Actions
Unit - Add BashLevel[(Level of Power Attack for (Ordered unit))] to (Ordered unit)


Try that :)