• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Barbarian Skills 1.1

Barbarian Skills

Hello there!
This map contains 4 spells which fits for a barbarian hero. Not very creative, though, I know.

Feral Impact: The well-known leap-attack
Bonebreaker: The well-known knockback
Battle Fury: Increases attack speed when uses a spell. Bonus vanishes slowly.
Tornado: Knockback + Bladestorm

They're all made in GUI, but I could not avoid some functions in Jass like GetLocationz() and CreateSound().
Includes an intro cinematic (now you can skip it).

I've written an extense guide on how to implement and customize them. I believe all information there is correct (I've tested most of them, if not all).
I also wrote a little about the indexing system, I think I've done it correctly.


Triggers
(The "CUSTOMIZE" tags are used in the documentation)
  • Initialize
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Skill_FeralImpact = Feral Impact
      • Set Skill_Bonebreaker = Bonebreaker
      • Set Skill_BattleFury = Battle Fury
      • Set Skill_BattleFurrySpeed = Battle Fury - Attackspeed
      • Set Skill_Tornado = Tornado
      • Set g = -10000.00
      • Set FI_DefaultHeight = 750.00
      • Set FI_EffectA = Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
      • Set FI_EffectB = Abilities\Spells\Human\Feedback\SpellBreakerAttack.mdl
      • Set FI_Sound = units\orc\hellscream\GromYesAttack2.wav
      • Set BF_DefautInterval = 3
  • Knockback Index
    • Events
    • Conditions
    • Actions
      • Set KB_Max = (KB_Max + 1)
      • Set kb = KB_Max
  • Knockback Move
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer kb) from 1 to KB_Max, do (Actions)
        • Loop - Actions
          • Set point = (Position of KB_Unit[kb])
          • Set point2 = (point offset by KB_Speed[kb] towards KB_Angle[kb] degrees)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Terrain pathing at point2 of type Walkability is off) Equal to (==) True
                  • KB_Dist[kb] Greater than or equal to (>=) KB_MaxDist[kb]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • KB_Max Equal to (==) 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle index --------
                  • Set KB_Angle[kb] = KB_Angle[KB_Max]
                  • Set KB_Dist[kb] = KB_Dist[KB_Max]
                  • Set KB_MaxDist[kb] = KB_MaxDist[KB_Max]
                  • Set KB_Speed[kb] = KB_Speed[KB_Max]
                  • Set KB_Unit[kb] = KB_Unit[KB_Max]
                  • Set kb = (kb - 1)
              • Set KB_Max = (KB_Max - 1)
            • Else - Actions
              • Unit - Move KB_Unit[kb] instantly to point2
              • Special Effect - Create a special effect at point2 using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set KB_Dist[kb] = (KB_Dist[kb] + KB_Speed[kb])
          • Custom script: call RemoveLocation( udg_point )
          • Custom script: call RemoveLocation( udg_point2 )


  • Feral Impact Index
    • Events
    • Conditions
    • Actions
      • Set FI_Max = (FI_Max + 1)
      • Set fi = FI_Max
  • Shake Camera
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Set Shake = (Shake - 5.00)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Shake Greater than (>) 0.00
        • Then - Actions
          • Player Group - Pick every player in (All players) and do (Actions)
            • Loop - Actions
              • Camera - Shake the camera for (Picked player) with magnitude Shake
        • Else - Actions
          • Player Group - Pick every player in (All players) and do (Actions)
            • Loop - Actions
              • Camera - Stop swaying/shaking the camera for (Picked player)
  • Feral Impact
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to (==) Skill_FeralImpact
    • Actions
      • Trigger - Run Feral Impact Index <gen> (ignoring conditions)
      • Set point = (Position of (Triggering unit))
      • Set point2 = (Target point of ability being cast)
      • Custom script: set udg_tmpCasterZ = GetLocationZ( udg_point )
      • Custom script: set udg_tmpTargetZ = GetLocationZ( udg_point2 )
      • Set tmpDiffHeight = (tmpTargetZ - tmpCasterZ)
      • Set tmpHeight = ((Max(0.00, tmpDiffHeight)) + FI_DefaultHeight)
      • Set tmpDistance = (Distance between point and point2)
      • -------- Setting up data --------
      • Set FI_Hero[fi] = (Triggering unit)
      • Set FI_z[fi] = tmpCasterZ
      • Set FI_Angle[fi] = (Angle from point to point2)
      • Set FI_Vz[fi] = (Square root((-2.00 x (g x tmpHeight))))
      • Set FI_Height[fi] = tmpCasterZ
      • Set tmpTime = (((-1.00 x FI_Vz[fi]) / g) - ((Square root(((-2.00 x g) x (tmpHeight - tmpDiffHeight)))) / g))
      • Set FI_Vp[fi] = (tmpDistance / tmpTime)
      • Set FI_AnimSpeed[fi] = (0.50 / tmpTime)
      • -------- Setting up the rest --------
      • Animation - Change FI_Hero[fi]'s animation speed to (FI_AnimSpeed[fi] x 100.00)% of its original speed
      • Unit - Turn collision for FI_Hero[fi] Off
      • Unit - Add Storm Crow Form to FI_Hero[fi]
      • Unit - Remove Storm Crow Form from FI_Hero[fi]
      • Unit - Make FI_Hero[fi] Invulnerable
      • Special Effect - Create a special effect at point using FI_EffectA
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of FI_Hero[fi] using FI_EffectB
      • Special Effect - Destroy (Last created special effect)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FI_Sound Not equal to (!=) <Empty String>
        • Then - Actions
          • Custom script: set udg_tmpSound = CreateSound( udg_FI_Sound, false, true, false, 12700, 12700, "" )
          • Sound - Play tmpSound at 100.00% volume, attached to FI_Hero[fi]
          • Custom script: call KillSoundWhenDone( udg_tmpSound )
        • Else - Actions
      • -------- Activate! --------
      • Trigger - Turn on Feral Impact Move <gen>
      • Custom script: call RemoveLocation( udg_point )
      • Custom script: call RemoveLocation( udg_point2 )
  • Feral Impact Move
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer fi) from 1 to FI_Max, do (Actions)
        • Loop - Actions
          • Set point = (Position of FI_Hero[fi])
          • Set point2 = (point offset by (FI_Vp[fi] x 0.02) towards FI_Angle[fi] degrees)
          • Unit - Move FI_Hero[fi] instantly to point2
          • Custom script: set udg_real = GetLocationZ( udg_point2 )
          • Set FI_z[fi] = (FI_z[fi] + (FI_Vz[fi] x 0.02))
          • Set FI_Vz[fi] = (FI_Vz[fi] + (g x 0.02))
          • Set real2 = (FI_z[fi] - real)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • real2 Greater than (>) 0.00
            • Then - Actions
              • -------- Barbarian is still flying. --------
              • Animation - Change FI_Hero[fi] flying height to real2 at 0.00
              • Custom script: call RemoveLocation( udg_point2 )
            • Else - Actions
              • -------- Barbarian has landed. Tremble, mortals! --------
              • -------- Animation --------
              • Animation - Change FI_Hero[fi] flying height to 0.00 at 0.00
              • Unit - Turn collision for FI_Hero[fi] On
              • Animation - Change FI_Hero[fi]'s animation speed to 100.00% of its original speed
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #2 CUSTOMIZE: change here to change the landing effect --------
              • Special Effect - Create a special effect at point2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Set FI_AnimSpeed[fi] = 1.00
              • Unit - Make FI_Hero[fi] Vulnerable
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #3 CUSTOMIZE: change here to set the camera shake magnitude --------
              • Set Shake = 60.00
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Trigger - Turn on Shake Camera <gen>
              • -------- Damage and Knockback --------
              • Set FI_FallHeight = (((Max(FI_Height[fi], real)) + FI_DefaultHeight) - real)
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #4 CUSTOMIZE: change here to set the damage and AoE --------
              • Set real = (((Real((Level of Skill_FeralImpact for FI_Hero[fi]))) x 75.00) + 225.00)
              • Set real2 = ((((Real((Level of Skill_FeralImpact for FI_Hero[fi]))) x 75.00) + 75.00) x (FI_FallHeight / FI_DefaultHeight))
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Floating Text - Create floating text that reads ((String((Integer((FI_FallHeight / (FI_DefaultHeight / 100.00)))))) + %!) above FI_Hero[fi] with Z offset 0.00, using font size 13.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
              • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
              • Set group = (Units within real of point2 matching (((Matching unit) belongs to an enemy of (Owner of FI_Hero[fi])) Equal to (==) True))
              • Custom script: call RemoveLocation( udg_point2 )
              • Unit Group - Pick every unit in group and do (Actions)
                • Loop - Actions
                  • Unit - Cause FI_Hero[fi] to damage (Picked unit), dealing real2 damage of attack type Spells and damage type Normal
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to (==) False
                    • Then - Actions
                      • Trigger - Run Knockback Index <gen> (ignoring conditions)
                      • Set KB_Unit[kb] = (Picked unit)
                      • Set point2 = (Position of KB_Unit[kb])
                      • Set KB_Angle[kb] = (Angle from point to point2)
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • -------- #5 CUSTOMIZE: change here to set the knockback range/speed --------
                      • Set KB_MaxDist[kb] = 300.00
                      • Set KB_Speed[kb] = 50.00
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • Set KB_Dist[kb] = 0.00
                      • Trigger - Turn on Knockback Move <gen>
                      • Custom script: call RemoveLocation( udg_point2 )
                    • Else - Actions
              • -------- Finish --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FI_Max Equal to (==) 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle index --------
                  • Set FI_Angle[fi] = FI_Angle[FI_Max]
                  • Set FI_AnimSpeed[fi] = FI_AnimSpeed[FI_Max]
                  • Set FI_Height[fi] = FI_Height[FI_Max]
                  • Set FI_Hero[fi] = FI_Hero[FI_Max]
                  • Set FI_Vp[fi] = FI_Vp[FI_Max]
                  • Set FI_Vz[fi] = FI_Vz[FI_Max]
                  • Set FI_z[fi] = FI_z[FI_Max]
                  • Set fi = (fi - 1)
              • Set FI_Max = (FI_Max - 1)
              • Custom script: call DestroyGroup( udg_group )
          • Custom script: call RemoveLocation( udg_point )

  • Bonebreaker
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to (==) Skill_Bonebreaker
    • Actions
      • Trigger - Run Knockback Index <gen> (ignoring conditions)
      • Set KB_Unit[kb] = (Target unit of ability being cast)
      • Set point = (Position of (Triggering unit))
      • Set point2 = (Position of KB_Unit[kb])
      • Special Effect - Create a special effect at point2 using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Set KB_Angle[kb] = (Angle from point to point2)
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • -------- CUSTOMIZE: change here to set the knockback range/speed --------
      • Set KB_MaxDist[kb] = 450.00
      • Set KB_Speed[kb] = 55.00
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • Set KB_Dist[kb] = 0.00
      • Trigger - Turn on Knockback Move <gen>
      • Custom script: call RemoveLocation( udg_point )
      • Custom script: call RemoveLocation( udg_point2 )
  • Battle Fury Index
    • Events
    • Conditions
    • Actions
      • Set BF_Max = (BF_Max + 1)
      • Set bf = BF_Max
  • Battle Fury
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Level of Skill_BattleFury for (Triggering unit)) Greater than (>) 0
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Skill_BattleFurrySpeed for (Triggering unit)) Equal to (==) 0
        • Then - Actions
          • Trigger - Run Battle Fury Index <gen> (ignoring conditions)
          • Set BF_Hero[bf] = (Triggering unit)
          • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
          • -------- CUSTOMIZE: change here to change the effects --------
          • Special Effect - Create a special effect attached to the hand left of BF_Hero[bf] using Abilities\Spells\Orc\Bloodlust\BloodlustTarget.mdl
          • Set BF_SpecEffect1[bf] = (Last created special effect)
          • Special Effect - Create a special effect attached to the hand right of BF_Hero[bf] using Abilities\Spells\Orc\Bloodlust\BloodlustTarget.mdl
          • Set BF_SpecEffect2[bf] = (Last created special effect)
          • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
          • Set BF_Time[bf] = BF_DefautInterval
          • Unit - Add Skill_BattleFurrySpeed to BF_Hero[bf]
          • Unit - Set level of Skill_BattleFurrySpeed for BF_Hero[bf] to (((Level of Skill_BattleFury for BF_Hero[bf]) x 3) + 2)
          • Trigger - Turn on Battle Fury Downgrade <gen>
        • Else - Actions
          • Unit - Set level of Skill_BattleFurrySpeed for (Triggering unit) to (((Level of Skill_BattleFury for (Triggering unit)) x 3) + 2)
  • Battle Fury Downgrade
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer bf) from 1 to BF_Max, do (Actions)
        • Loop - Actions
          • Set BF_Time[bf] = (BF_Time[bf] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BF_Time[bf] Equal to (==) 0
            • Then - Actions
              • Set integer = (Level of Battle Fury - Attackspeed for BF_Hero[bf])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • integer Equal to (==) 1
                • Then - Actions
                  • Unit - Remove Skill_BattleFurrySpeed from BF_Hero[bf]
                  • Special Effect - Destroy BF_SpecEffect1[bf]
                  • Special Effect - Destroy BF_SpecEffect2[bf]
                  • -------- Recycle Index --------
                  • Set BF_Hero[bf] = BF_Hero[BF_Max]
                  • Set BF_SpecEffect1[bf] = BF_SpecEffect1[BF_Max]
                  • Set BF_SpecEffect2[bf] = BF_SpecEffect2[BF_Max]
                  • Set BF_Time[bf] = BF_Time[BF_Max]
                  • Set BF_Max = (BF_Max - 1)
                  • Set bf = (bf - 1)
                • Else - Actions
                  • Unit - Set level of Skill_BattleFurrySpeed for BF_Hero[bf] to (integer - 1)
                  • Set BF_Time[bf] = BF_DefautInterval
            • Else - Actions

  • Tornado
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to (==) Skill_Tornado
    • Actions
      • -------- Here, I'm merging the index finding with the cast trigger --------
      • -------- It's simple enough to do so --------
      • Set TO_Max = (TO_Max + 1)
      • Set TO_Hero[TO_Max] = (Triggering unit)
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • -------- CUSTOMIZE: update following line to the duration of the skill --------
      • Set TO_Duration[TO_Max] = 7.00
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • Trigger - Turn on Tornado Damage <gen>
  • Tornado Damage
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • For each (Integer to) from 1 to TO_Max, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • TO_Duration[to] Greater than (>) 0.00
            • Then - Actions
              • Set TO_Duration[to] = (TO_Duration[to] - 0.10)
              • Set point = (Position of TO_Hero[to])
              • Set group = (Units within 220.00 of point matching ((((Matching unit) belongs to an enemy of (Owner of TO_Hero[to])) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True)))
              • Unit Group - Pick every unit in group and do (Actions)
                • Loop - Actions
                  • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                  • -------- #2 CUSTOMIZE: change here to set damage --------
                  • Unit - Cause TO_Hero[to] to damage (Picked unit), dealing 90.00 damage of attack type Spells and damage type Normal
                  • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to (==) False
                    • Then - Actions
                      • Trigger - Run Knockback Index <gen> (ignoring conditions)
                      • Set KB_Unit[kb] = (Picked unit)
                      • Set point2 = (Position of KB_Unit[kb])
                      • Set KB_Angle[kb] = (Angle from point to point2)
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • -------- #3 CUSTOMIZE: change here to set knockback range/speed --------
                      • Set KB_MaxDist[kb] = 200.00
                      • Set KB_Speed[kb] = 50.00
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • Set KB_Dist[kb] = 0.00
                      • Trigger - Turn on Knockback Move <gen>
                      • Custom script: call RemoveLocation( udg_point2 )
                    • Else - Actions
              • Custom script: call DestroyGroup( udg_group )
              • Custom script: call RemoveLocation( udg_point )
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TO_Max Equal to (==) 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle Index --------
                  • Set TO_Duration[to] = TO_Duration[TO_Max]
                  • Set TO_Hero[to] = TO_Hero[TO_Max]
                  • Set to = (to - 1)
              • Set TO_Max = (TO_Max - 1)


Thanks!

Keywords:
barbarian, leap, knockback
Contents

Barbarians (Map)

Reviews
Bribe No leaks, very good indexing, nice effects, very little room for improvement. The periodic timer should be 0.03 instead of 0.02, and subsequently the timer math, but that's not critical. This is ready for approval.

Moderator

M

Moderator

Bribe

No leaks, very good indexing, nice effects, very little room for improvement. The periodic timer should be 0.03 instead of 0.02, and subsequently the timer math, but that's not critical. This is ready for approval.
 
Level 4
Joined
Dec 7, 2010
Messages
62
Hi there!

I am downloading the spell and see if everything is as it should :)
By the way, I think you must upload your triggers to the post.

I'll return with my thoughts of the spell once I've tested it :D

EDIT:
The one and ONLY flaw I found was that the tornado does not check if the units it hits are dead. It pushes back corpses.
Else, REALLY good spells! (8.5/10)
And a really nice touch with that cinematic :)
 
Last edited:
Level 3
Joined
Sep 25, 2008
Messages
50
Wow this is wonderful and Feral Impact is just what I needed!

EDIT: This would be hard to import for newbies. Maybe add an instruction on how to?
 
Last edited:
Suggestions:

-remove the imported files please, they are not necessary and are against the rules, you can just link the downloads if you want...

-remove also the cinematic, its not needed really, or you can make it run when you type a certain code...

-also make the map name on the lobby into english...

-you can combine Tornado and Tornado Index into one trigger...

-and yeah, I would want to see the indexing improved coz it has unecessary things right now... ^_^

for now, 3/5
 
Level 7
Joined
Dec 31, 2005
Messages
712
Ok, I'm already doing any changes that are necessary :p
In one or two days I'll update...

Thanks ^^

-remove the imported files please, they are not necessary and are against the rules, you can just link the downloads if you want...

You mean, even the icons and the effect?
The orc model I agree it's unecessary, but...
I'm removing them anyway.

-remove also the cinematic, its not needed really, or you can make it run when you type a certain code...

Would it be enough to make it skippable by pressing esc?

-also make the map name on the lobby into english...

Uh...

-you can combine Tornado and Tornado Index into one trigger...

That would break the concept I made for the indexing system... I separated the find-index part in a different trigger as if it was a function, so that the same trigger wouldn't do too many different things...
If you think I should do so, I will merge them into one.

-and yeah, I would want to see the indexing improved coz it has unecessary things right now... ^_^

:p

Thanks for suggestions ^^

Updated!
Most changes said above are done:

1. No imports
2. Skippable cinematic
3. Jass converted to GUI
4. Translated what was left in portuguese (I think)
5. Improved indexing
6. Added implementation/customization guides
 
Last edited:
you only do this
  • Set TO_Max = (TO_Max + 1)
  • Set to = TO_Max
on the tornado index trigger so you can just put it into the cast trigger to make it more efficient...

and I suggest that you remove the set to = TO_Max part and just use TO_Max directly on the cast trigger, because using the variable (to) is totally unneeded on this part...

then, you should also turn-off Tornado Damage when TO_Max is equal to zero...

and on the last part,of the Damage trigger (the one where you set TO_Max to TO_Max - 1) I think you should add
  • Set to = to - 1
because right now, the last index won't be included in the loop (damage wise, on the current trigger, there would be no changes but the duration will be offset by .1 second)
 
Level 7
Joined
Dec 31, 2005
Messages
712
Set TO_Max = (TO_Max - 1)

-it should be inside the else actions

I don't think so... The max number of instances should be decreased whenever an instance finishes executing -- the else above that action runs only when Max != 1, that is, when there are more than 1 instance still running.

Are you sure? The other skills are like that, too.
 
Level 5
Joined
Sep 21, 2010
Messages
142
:ogre_icwydt: Dude when I first saw this page the moderator rated your map This spell has not been approved in the resource section and is not guaranteed to be working. Then i thought i'll try it anyways and when I saw the map, it blew my mind away :eekani: :vw_wtf: :goblin_wtf: because thats useful for my 480 x 480 map which I am making and thats a really good map and the cinematic too you should make more stuff like this because everyone likes it and this map rocks like this :thumbs_up: :goblin_boom: :goblin_yeah: btw thats rude saying This spell has not been approved in the resource section and is not guaranteed to be working. Why do they say that when this map rocks.
 
Level 7
Joined
Dec 29, 2008
Messages
252
I'm having trouble trying to set the duration of tornado. i set it to 7 seconds in the object editor and 7 seconds in the place where you customize it but when the ability stops, enemies are still being knocked back and damaged.

This is what the triggers looks like now
  • Tornado
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Skill_Tornado
    • Actions
      • -------- Here, I'm merging the index finding with the cast trigger --------
      • -------- It's simple enough to do so --------
      • Set TO_Max = (TO_Max + 1)
      • Set TO_Hero[TO_Max] = (Triggering unit)
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • -------- CUSTOMIZE: update following line to the duration of the skill --------
      • Set TO_Duration[TO_Max] = 7.00
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • Trigger - Turn on Tornado Damage <gen>
  • Tornado Damage
    • Events
      • Time - Every 0.25 seconds of game time
    • Conditions
    • Actions
      • For each (Integer to) from 1 to TO_Max, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • TO_Duration[to] Greater than 0.00
            • Then - Actions
              • Set TO_Duration[to] = (TO_Duration[to] - 0.10)
              • Set point = (Position of TO_Hero[to])
              • Set group = (Units within 220.00 of point matching ((((Matching unit) belongs to an enemy of (Owner of TO_Hero[to])) Equal to True) and (((Matching unit) is alive) Equal to True)))
              • Unit Group - Pick every unit in group and do (Actions)
                • Loop - Actions
                  • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                  • -------- #2 CUSTOMIZE: change here to set damage --------
                  • Unit - Cause TO_Hero[to] to damage (Picked unit), dealing 75.00 damage of attack type Spells and damage type Normal
                  • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                    • Then - Actions
                      • Trigger - Run Knockback Index <gen> (ignoring conditions)
                      • Set KB_Unit[kb] = (Picked unit)
                      • Set point2 = (Position of KB_Unit[kb])
                      • Set KB_Angle[kb] = (Angle from point to point2)
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • -------- #3 CUSTOMIZE: change here to set knockback range/speed --------
                      • Set KB_MaxDist[kb] = 200.00
                      • Set KB_Speed[kb] = 50.00
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • Set KB_Dist[kb] = 0.00
                      • Trigger - Turn on Knockback Move <gen>
                      • Custom script: call RemoveLocation( udg_point2 )
                    • Else - Actions
              • Custom script: call DestroyGroup( udg_group )
              • Custom script: call RemoveLocation( udg_point )
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TO_Max Equal to 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle Index --------
                  • Set TO_Duration[to] = TO_Duration[TO_Max]
                  • Set TO_Hero[to] = TO_Hero[TO_Max]
                  • Set to = (to - 1)
              • Set TO_Max = (TO_Max - 1)
Can you help me with this?
 
Level 7
Joined
Dec 31, 2005
Messages
712
The problem is in the trigger repeating time.

If you take a closer look in the trigger, you'll see it counts the time the spell has been running in the line:

  • Set TO_Duration[to] = (TO_Duration[to] - 0.10)
That is, by default, the trigger was set to run every 0.10 second - that's why the duration is decreased by 0.10 every execution.

So you'll have to update this line to:

  • Set TO_Duration[to] = (TO_Duration[to] - 0.25)
At least in your case.

I shall add some comments on it in customization guide :p
Hope I helped you xP
 
Level 7
Joined
Dec 29, 2008
Messages
252
The problem is in the trigger repeating time.

If you take a closer look in the trigger, you'll see it counts the time the spell has been running in the line:

  • Set TO_Duration[to] = (TO_Duration[to] - 0.10)
That is, by default, the trigger was set to run every 0.10 second - that's why the duration is decreased by 0.10 every execution.

So you'll have to update this line to:

  • Set TO_Duration[to] = (TO_Duration[to] - 0.25)
At least in your case.

I shall add some comments on it in customization guide :p
Hope I helped you xP

thank you! lol everyone else that i sent questions about their spells never responed <.<
 
Level 11
Joined
Oct 13, 2008
Messages
560
I having problems to import the spell Feral Impact, i use the jngp, I change the "A000" to my "A010", but when I use the spell, nothing is happing

Suggestions:

-remove the imported files please, they are not necessary and are against the rules, you can just link the downloads if you want...

-remove also the cinematic, its not needed really, or you can make it run when you type a certain code...

-also make the map name on the lobby into english...

-you can combine Tornado and Tornado Index into one trigger...

-and yeah, I would want to see the indexing improved coz it has unecessary things right now... ^_^

for now, 3/5

LOL, are you crazy?
the cinematic is one lesson xD

the only problem(I think it's me) is to import the Feral Impact

OFF: are you brazilian too? bcause the name is "Os Três Bárbaros" and on the triggers have other portuguease words, can you send me a PM with the answer?
 
Level 7
Joined
Dec 31, 2005
Messages
712
I having problems to import the spell Feral Impact, i use the jngp, I change the "A000" to my "A010", but when I use the spell, nothing is happing

This was made as a mainly GUI spell... You're not supposed to work with raw codes at all.
Maybe you have the old version of the map? I've made (really) significant changes from the first one to the second.

Instead of changing raw codes, you have to update the Initialize trigger to the abilities you created/copied in your map.

Could you point me where the portuguese ocurrences are? I'd like to remove all of them... :p
 
Level 1
Joined
Dec 13, 2009
Messages
3
it wont work :/

Hi mon... its giving me this error...
  • set udg_real2 = ( ( ( I2R(GetUnitAbilityLevelSwapped(udg_Skill_FeralImpact, udg_FI_Hero[udg_fi])) * 75.00 ) + 75.00 ) * ( udg_FI_FallHeight / udg_FI_DefaultHeight ) )
and
  • set udg_FI_FallHeight = ( ( RMaxBJ(udg_FI_Height[udg_fi], udg_real) + udg_FI_DefaultHeight ) - udg_real )
what with it?
 
Level 9
Joined
Apr 23, 2011
Messages
527
SPELL REVIEW:
Feral Impact: 4/5
Bonebreaker: 3/5
Battlefury: 2/5
Tornado 3/5
Total: 12/20 (not so bad though)
THE WHOLE REVIEW:
pretty awesome... what spell i pretty liked was Feral Impact. Other spells umm..... whatever. Bonebreaker stun must reduce or change the effect or name cuz Bonebreaker means breaker of bones. Battle Fury is too unnoticeable for me. Tornado....it knocks dead units whatsoever, oh yeah add a little height to units when they come near it and send it flying... anyways i give some rep and rating equals to... 3
 
Level 1
Joined
Nov 19, 2007
Messages
2
Very good skills, but, i have a problem with feral impact. I imported Feral impact, then feral impact move, i changed value in initialize.

I tested skill on a custom hero, and on blademaster, but it just didnt work, i justsaw a wolf appearing in where i mark the attack zone. How can i fix it?

tyvm for ur time
 
Level 8
Joined
Jul 17, 2004
Messages
283
Can I get some help? I have a couple issues with the "Feral Impact" ability.

1. The knockback also affects corpses. I don't want it to do this. Just units.
2. How do I make it so the camera only shakes for the player who owns the unit using the ability?

Great job with these abilities though, by the way. +rep
 
Level 18
Joined
Mar 16, 2008
Messages
721
did I not configure this right or is the special effect leaking? I really like this spell but the trigger is really confusing.

  • Feral Impact Move
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer fi) from 1 to FI_Max, do (Actions)
        • Loop - Actions
          • Set VariableSet point = (Position of FI_Hero[fi])
          • Set VariableSet point2 = (point offset by (FI_Vp[fi] x 0.02) towards FI_Angle[fi] degrees.)
          • Unit - Move FI_Hero[fi] instantly to point2
          • Custom script: set udg_real = GetLocationZ( udg_point2 )
          • Set VariableSet FI_z[fi] = (FI_z[fi] + (FI_Vz[fi] x 0.02))
          • Set VariableSet FI_Vz[fi] = (FI_Vz[fi] + (g x 0.02))
          • Set VariableSet real2 = (FI_z[fi] - real)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • real2 Greater than 0.00
            • Then - Actions
              • -------- Barbarian is still flying. --------
              • Animation - Change FI_Hero[fi] flying height to real2 at 0.00
              • Custom script: call RemoveLocation(udg_point2)
            • Else - Actions
              • -------- Barbarian has landed. Tremble, mortals! --------
              • -------- Animation --------
              • Animation - Change FI_Hero[fi] flying height to 0.00 at 0.00
              • Unit - Turn collision for FI_Hero[fi] On.
              • Animation - Change FI_Hero[fi]'s animation speed to 100.00% of its original speed
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #2 CUSTOMIZE: change here to change the landing effect --------
              • Special Effect - Create a special effect at point2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Set VariableSet FI_AnimSpeed[fi] = 1.00
              • Unit - Make FI_Hero[fi] Vulnerable
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- Damage and Knockback --------
              • Set VariableSet FI_FallHeight = (((Max(FI_Height[fi], real)) + FI_DefaultHeight) - real)
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #4 CUSTOMIZE: change here to set the damage and AoE --------
              • Set VariableSet real = (((Real((Level of Skill_FeralImpact for FI_Hero[fi]))) x 45.00) + 85.00)
              • Set VariableSet real2 = ((((Real((Level of Skill_FeralImpact for FI_Hero[fi]))) x 75.00) + 75.00) x (FI_FallHeight / FI_DefaultHeight))
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Floating Text - Create floating text that reads ((String((Integer((FI_FallHeight / (FI_DefaultHeight / 100.00)))))) + %!) above FI_Hero[fi] with Z offset 0.00, using font size 13.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
              • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
              • Set VariableSet group = (Units within real of point2 matching (((Matching unit) belongs to an enemy of (Owner of FI_Hero[fi]).) Equal to True).)
              • Custom script: call RemoveLocation(udg_point2)
              • Unit Group - Pick every unit in group and do (Actions)
                • Loop - Actions
                  • Unit - Cause FI_Hero[fi] to damage (Picked unit), dealing real2 damage of attack type Spells and damage type Normal
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                    • Then - Actions
                      • Trigger - Run Knockback Index <gen> (ignoring conditions)
                      • Set VariableSet KB_Unit[kb] = (Picked unit)
                      • Set VariableSet point2 = (Position of KB_Unit[kb])
                      • Set VariableSet KB_Angle[kb] = (Angle from point to point2)
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • -------- #5 CUSTOMIZE: change here to set the knockback range/speed --------
                      • Set VariableSet KB_MaxDist[kb] = 300.00
                      • Set VariableSet KB_Speed[kb] = 50.00
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • Set VariableSet KB_Dist[kb] = 0.00
                      • Trigger - Turn on Knockback Move <gen>
                      • Custom script: call RemoveLocation(udg_point2)
                    • Else - Actions
              • -------- Finish --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FI_Max Equal to 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle index --------
                  • Set VariableSet FI_Angle[fi] = FI_Angle[FI_Max]
                  • Set VariableSet FI_AnimSpeed[fi] = FI_AnimSpeed[FI_Max]
                  • Set VariableSet FI_Height[fi] = FI_Height[FI_Max]
                  • Set VariableSet FI_Hero[fi] = FI_Hero[FI_Max]
                  • Set VariableSet FI_Vp[fi] = FI_Vp[FI_Max]
                  • Set VariableSet FI_Vz[fi] = FI_Vz[FI_Max]
                  • Set VariableSet FI_z[fi] = FI_z[FI_Max]
                  • Set VariableSet fi = (fi - 1)
              • Set VariableSet FI_Max = (FI_Max - 1)
              • Custom script: call DestroyGroup(udg_group)
          • Custom script: call RemoveLocation(udg_point)
 
Level 9
Joined
Sep 5, 2015
Messages
369
did I not configure this right or is the special effect leaking? I really like this spell but the trigger is really confusing.

  • Feral Impact Move
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer fi) from 1 to FI_Max, do (Actions)
        • Loop - Actions
          • Set VariableSet point = (Position of FI_Hero[fi])
          • Set VariableSet point2 = (point offset by (FI_Vp[fi] x 0.02) towards FI_Angle[fi] degrees.)
          • Unit - Move FI_Hero[fi] instantly to point2
          • Custom script: set udg_real = GetLocationZ( udg_point2 )
          • Set VariableSet FI_z[fi] = (FI_z[fi] + (FI_Vz[fi] x 0.02))
          • Set VariableSet FI_Vz[fi] = (FI_Vz[fi] + (g x 0.02))
          • Set VariableSet real2 = (FI_z[fi] - real)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • real2 Greater than 0.00
            • Then - Actions
              • -------- Barbarian is still flying. --------
              • Animation - Change FI_Hero[fi] flying height to real2 at 0.00
              • Custom script: call RemoveLocation(udg_point2)
            • Else - Actions
              • -------- Barbarian has landed. Tremble, mortals! --------
              • -------- Animation --------
              • Animation - Change FI_Hero[fi] flying height to 0.00 at 0.00
              • Unit - Turn collision for FI_Hero[fi] On.
              • Animation - Change FI_Hero[fi]'s animation speed to 100.00% of its original speed
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #2 CUSTOMIZE: change here to change the landing effect --------
              • Special Effect - Create a special effect at point2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Set VariableSet FI_AnimSpeed[fi] = 1.00
              • Unit - Make FI_Hero[fi] Vulnerable
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- Damage and Knockback --------
              • Set VariableSet FI_FallHeight = (((Max(FI_Height[fi], real)) + FI_DefaultHeight) - real)
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • -------- #4 CUSTOMIZE: change here to set the damage and AoE --------
              • Set VariableSet real = (((Real((Level of Skill_FeralImpact for FI_Hero[fi]))) x 45.00) + 85.00)
              • Set VariableSet real2 = ((((Real((Level of Skill_FeralImpact for FI_Hero[fi]))) x 75.00) + 75.00) x (FI_FallHeight / FI_DefaultHeight))
              • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
              • Floating Text - Create floating text that reads ((String((Integer((FI_FallHeight / (FI_DefaultHeight / 100.00)))))) + %!) above FI_Hero[fi] with Z offset 0.00, using font size 13.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
              • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
              • Set VariableSet group = (Units within real of point2 matching (((Matching unit) belongs to an enemy of (Owner of FI_Hero[fi]).) Equal to True).)
              • Custom script: call RemoveLocation(udg_point2)
              • Unit Group - Pick every unit in group and do (Actions)
                • Loop - Actions
                  • Unit - Cause FI_Hero[fi] to damage (Picked unit), dealing real2 damage of attack type Spells and damage type Normal
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                    • Then - Actions
                      • Trigger - Run Knockback Index <gen> (ignoring conditions)
                      • Set VariableSet KB_Unit[kb] = (Picked unit)
                      • Set VariableSet point2 = (Position of KB_Unit[kb])
                      • Set VariableSet KB_Angle[kb] = (Angle from point to point2)
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • -------- #5 CUSTOMIZE: change here to set the knockback range/speed --------
                      • Set VariableSet KB_MaxDist[kb] = 300.00
                      • Set VariableSet KB_Speed[kb] = 50.00
                      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
                      • Set VariableSet KB_Dist[kb] = 0.00
                      • Trigger - Turn on Knockback Move <gen>
                      • Custom script: call RemoveLocation(udg_point2)
                    • Else - Actions
              • -------- Finish --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FI_Max Equal to 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle index --------
                  • Set VariableSet FI_Angle[fi] = FI_Angle[FI_Max]
                  • Set VariableSet FI_AnimSpeed[fi] = FI_AnimSpeed[FI_Max]
                  • Set VariableSet FI_Height[fi] = FI_Height[FI_Max]
                  • Set VariableSet FI_Hero[fi] = FI_Hero[FI_Max]
                  • Set VariableSet FI_Vp[fi] = FI_Vp[FI_Max]
                  • Set VariableSet FI_Vz[fi] = FI_Vz[FI_Max]
                  • Set VariableSet FI_z[fi] = FI_z[FI_Max]
                  • Set VariableSet fi = (fi - 1)
              • Set VariableSet FI_Max = (FI_Max - 1)
              • Custom script: call DestroyGroup(udg_group)
          • Custom script: call RemoveLocation(udg_point)
did you try copying and pasting the stuff into another map in a different order?
also i think when you moving triggers/scripts over to a new map the game will auto generate variables now did you see that come up and or click "yes" or what not?
will try to import this tomorrow brb
 
Top