• 🏆 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!

Flaming Axes 1.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Hurls two axes so fast to a point that they begin the burning. The axes can hit nothing or tree or a unit. The axes die after flying 1300 distance. They destroy every tree and when they hit a unit they will deal damage and the axes will die...

Unitgroup leaks are fixed now...
Now the axes can´t be stopped by the caster when they will be created...
The axes die now... (The error was in the trigger: recieve)
Offset Point leaks are fixed...

Keywords:
axes, fire, flame, axe, hurl
Contents

Noch eine WARCRAFT-III-Karte (Map)

Reviews
12th Dec 2015 IcemanBo: Too long time as NeedsFix. Rejected. 14:01, 12th Mar 2011 Bribe: Need to post the triggers.

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long time as NeedsFix. Rejected.

14:01, 12th Mar 2011
Bribe:

Need to post the triggers.
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
I'll post the triggers (all of them) for ya.



  • Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Flaming Axes
    • Actions
      • Set Array_Variable_Axe = (Array_Variable_Axe + 1)
      • Set Caster_Axe[Array_Variable_Axe] = (Triggering unit)
      • Set Point_Caster_Axe[Array_Variable_Axe] = (Position of Caster_Axe[Array_Variable_Axe])
      • Set Point_Target_Axe[Array_Variable_Axe] = (Target point of ability being cast)
      • Set Angle_Between_Points_Axe[Array_Variable_Axe] = (Angle from Point_Caster_Axe[Array_Variable_Axe] to Point_Target_Axe[Array_Variable_Axe])
      • Unit - Create 1 Axe Dummy for (Owner of Caster_Axe[Array_Variable_Axe]) at Point_Caster_Axe[Array_Variable_Axe] facing Point_Target_Axe[Array_Variable_Axe]
      • Set Dummy_Axe[Array_Variable_Axe] = (Last created unit)
      • Unit - Make Dummy_Axe[Array_Variable_Axe] face Point_Target_Axe[Array_Variable_Axe] over 0.00 seconds
      • Unit - Turn collision for Dummy_Axe[Array_Variable_Axe] Off
      • Set Point_Dummy_Axe[Array_Variable_Axe] = (Position of Dummy_Axe[Array_Variable_Axe])
      • Trigger - Turn on Loop <gen>
      • Trigger - Turn on Special Effects <gen>
      • Wait 0.30 seconds
      • Unit - Create 1 Axe Dummy for (Owner of Caster_Axe[Array_Variable_Axe]) at Point_Caster_Axe[Array_Variable_Axe] facing Point_Target_Axe[Array_Variable_Axe]
      • Set Dummy_Axe2[Array_Variable_Axe] = (Last created unit)
      • Unit - Make Dummy_Axe2[Array_Variable_Axe] face Point_Target_Axe[Array_Variable_Axe] over 0.00 seconds
      • Unit - Turn collision for Dummy_Axe2[Array_Variable_Axe] Off
      • Custom script: call RemoveLocation(udg_Point_Target_Axe[udg_Array_Variable_Axe])
      • Set Point_Dummy_Axe2[Array_Variable_Axe] = (Position of Dummy_Axe2[Array_Variable_Axe])
      • Trigger - Turn on Loop2 <gen>


  • RemoveDummy
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Dying unit) Equal to Dummy_Axe[Array_Variable_Axe]
        • Then - Actions
          • Special Effect - Create a special effect at Point_Dummy_Axe[Array_Variable_Axe] using Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
          • Wait until ((Dummy_Axe[Array_Variable_Axe] is dead) Equal to True), checking every 0.10 seconds
          • Unit - Remove Dummy_Axe[Array_Variable_Axe] from the game
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Dying unit) Equal to Dummy_Axe2[Array_Variable_Axe]
        • Then - Actions
          • Special Effect - Create a special effect at Point_Dummy_Axe2[Array_Variable_Axe] using Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
          • Wait until ((Dummy_Axe2[Array_Variable_Axe] is dead) Equal to True), checking every 0.10 seconds
          • Unit - Remove Dummy_Axe2[Array_Variable_Axe] from the game
        • Else - Actions


  • Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • Set Point_Dummy_Axe[Array_Variable_Axe] = (Position of Dummy_Axe[Array_Variable_Axe])
      • -------- Moving the dummy --------
      • Set Temp_Point[Array_Variable_Axe] = (Point_Dummy_Axe[Array_Variable_Axe] offset by 30.00 towards Angle_Between_Points_Axe[Array_Variable_Axe] degrees)
      • Unit - Move Dummy_Axe[Array_Variable_Axe] instantly to Temp_Point[Array_Variable_Axe]
      • Custom script: call RemoveLocation(udg_Temp_Point[udg_Array_Variable_Axe])
      • Destructible - Pick every destructible in (Region centered at Point_Dummy_Axe[Array_Variable_Axe] with size (300.00, 300.00)) and do (Actions)
        • Loop - Actions
          • Destructible - Kill (Picked destructible)
      • -------- Deal damage --------
      • Unit Group - Pick every unit in (Units in (Region centered at Point_Dummy_Axe[Array_Variable_Axe] with size (300.00, 300.00))) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((((Picked unit) is A structure) Equal to False) and (((Picked unit) is dead) Equal to False)) and (((Picked unit) belongs to an enemy of (Owner of Caster_Axe[Array_Variable_Axe])) Equal to True)
            • Then - Actions
              • Set Point_Picked_Unit_Axe[Array_Variable_Axe] = (Position of (Picked unit))
              • Unit - Cause Caster_Axe[Array_Variable_Axe] to damage (Picked unit), dealing (25.00 x (Real((Level of Flaming Axes for Caster_Axe[Array_Variable_Axe])))) damage of attack type Spells and damage type Fire
              • Special Effect - Create a special effect at Point_Picked_Unit_Axe[Array_Variable_Axe] using Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl
              • Set Special_Effect_Axe2[Array_Variable_Axe] = (Last created special effect)
              • Special Effect - Destroy Special_Effect_Axe2[Array_Variable_Axe]
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Region centered at Point_Picked_Unit_Axe[Array_Variable_Axe] with size (150.00, 150.00)) contains Dummy_Axe[Array_Variable_Axe]) Equal to True
            • Then - Actions
              • Unit - Kill Dummy_Axe[Array_Variable_Axe]
              • Custom script: call RemoveLocation(udg_Point_Picked_Unit_Axe[udg_Array_Variable_Axe])
              • Custom script: call RemoveLocation(udg_Point_Caster_Axe[udg_Array_Variable_Axe])
              • Custom script: call RemoveLocation(udg_Point_Dummy_Axe[udg_Array_Variable_Axe])
              • Trigger - Turn off Special Effects <gen>
              • Trigger - Turn off (This trigger)
            • Else - Actions
      • Set Distance_Points_Axe[Array_Variable_Axe] = (Distance between Point_Caster_Axe[Array_Variable_Axe] and Point_Dummy_Axe[Array_Variable_Axe])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Distance_Points_Axe[Array_Variable_Axe] Greater than 1300.00
        • Then - Actions
          • Unit Group - Pick every unit in (Units in (Region centered at Point_Dummy_Axe[Array_Variable_Axe] with size (200.00, 200.00))) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((((Picked unit) is A structure) Equal to False) and ((Dummy_Axe[Array_Variable_Axe] is dead) Equal to False)) and (((Picked unit) belongs to an enemy of (Owner of Caster_Axe[Array_Variable_Axe])) Equal to True)
                • Then - Actions
                  • Set Point_Picked_Unit_Axe[Array_Variable_Axe] = (Position of (Picked unit))
                  • Unit - Cause Caster_Axe[Array_Variable_Axe] to damage (Picked unit), dealing 75.00 damage of attack type Spells and damage type Fire
                • Else - Actions
          • Unit - Kill Dummy_Axe[Array_Variable_Axe]
          • Custom script: call RemoveLocation(udg_Point_Dummy_Axe[udg_Array_Variable_Axe])
          • Trigger - Turn off Special Effects <gen>
          • Trigger - Turn off Loop <gen>
          • Wait 0.30 seconds
          • Unit - Kill Dummy_Axe2[Array_Variable_Axe]
          • Custom script: call RemoveLocation(udg_Point_Picked_Unit_Axe[udg_Array_Variable_Axe])
          • Custom script: call RemoveLocation(udg_Point_Caster_Axe[udg_Array_Variable_Axe])
          • Custom script: call RemoveLocation(udg_Point_Dummy_Axe2[udg_Array_Variable_Axe])
          • Trigger - Turn off Loop2 <gen>
        • Else - Actions


  • Loop2
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • Set Point_Dummy_Axe2[Array_Variable_Axe] = (Position of Dummy_Axe2[Array_Variable_Axe])
      • -------- Moving the dummy --------
      • Set Temp_Point2[Array_Variable_Axe] = (Point_Dummy_Axe2[Array_Variable_Axe] offset by 30.00 towards Angle_Between_Points_Axe[Array_Variable_Axe] degrees)
      • Unit - Move Dummy_Axe2[Array_Variable_Axe] instantly to Temp_Point2[Array_Variable_Axe]
      • Custom script: call RemoveLocation(udg_Temp_Point2[udg_Array_Variable_Axe])
      • Destructible - Pick every destructible in (Region centered at Point_Dummy_Axe2[Array_Variable_Axe] with size (300.00, 300.00)) and do (Actions)
        • Loop - Actions
          • Destructible - Kill (Picked destructible)
      • -------- Deal damage --------
      • Unit Group - Pick every unit in (Units in (Region centered at Point_Dummy_Axe2[Array_Variable_Axe] with size (300.00, 300.00))) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((((Picked unit) is A structure) Equal to False) and (((Picked unit) is dead) Equal to False)) and (((Picked unit) belongs to an enemy of (Owner of Caster_Axe[Array_Variable_Axe])) Equal to True)
            • Then - Actions
              • Set Point_Picked_Unit_Axe[Array_Variable_Axe] = (Position of (Picked unit))
              • Unit - Cause Caster_Axe[Array_Variable_Axe] to damage (Picked unit), dealing (25.00 x (Real((Level of Flaming Axes for Caster_Axe[Array_Variable_Axe])))) damage of attack type Spells and damage type Fire
              • Special Effect - Create a special effect at Point_Picked_Unit_Axe[Array_Variable_Axe] using Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl
              • Set Special_Effect_Axe22[Array_Variable_Axe] = (Last created special effect)
              • Special Effect - Destroy Special_Effect_Axe22[Array_Variable_Axe]
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Region centered at Point_Picked_Unit_Axe[Array_Variable_Axe] with size (150.00, 150.00)) contains Dummy_Axe2[Array_Variable_Axe]) Equal to True
            • Then - Actions
              • Unit - Kill Dummy_Axe2[Array_Variable_Axe]
              • Custom script: call RemoveLocation(udg_Point_Picked_Unit_Axe[udg_Array_Variable_Axe])
              • Custom script: call RemoveLocation(udg_Point_Dummy_Axe2[udg_Array_Variable_Axe])
              • Trigger - Turn off (This trigger)
            • Else - Actions


  • Special Effects
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Special Effect - Create a special effect at Point_Dummy_Axe[Array_Variable_Axe] using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set Special_Effect_Axe1[Array_Variable_Axe] = (Last created special effect)
      • Special Effect - Destroy Special_Effect_Axe1[Array_Variable_Axe]
      • Special Effect - Create a special effect at Point_Dummy_Axe2[Array_Variable_Axe] using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set Special_Effect_Axe12[Array_Variable_Axe] = (Last created special effect)
      • Special Effect - Destroy Special_Effect_Axe12[Array_Variable_Axe]

 
Level 4
Joined
Sep 10, 2010
Messages
21
Hi and thanks for the comments... sry I don´t know how to post triggers xD
I know the unit groups leak really and I repair them at the moment, but the axes fly to the enemies and then the shit axes aren´t destroyed it will take til the evening ok in the evening this spell is rdy and are there other leaks then the unit groups???
 
Last edited:
Level 5
Joined
Apr 17, 2010
Messages
124
Leaks. You use waits, which leak.

Your special effects happen ten times a second, which will most likely cause lag.

Also, in the loop2 trigger that moves the axes, its set on every .02 seconds. Thats 50 times a second, which will also cause lag.

And the axes repeatedly cause damage, which is probably intended, but will do major damage for lowest levels.

50 times a second times the damage is done.

In other words, 50 times, at level three, will do 75 damage.

If I'm not a bit rusty in math, 50 x 75 is 3750. 3750 from a spell that probably is only meant to do 300 or so. Ouch.

To fix this, add the unit it hits to a unitgroup. When it damages, give the unit spell immunity for .50 seconds or even add the unit to a unitgroup. When it damages, Pick all units matching condition "Not in the unit-group" or something like that.

Edit:
So my rating,

Eye Candy(Appeal) : 5/5
Efficiency : 1/5
MUI : 5/5

So in other words:
5 + 1 + 5 = 11
5 + 5 + 5 = 15
11/15 / 3 = 3/5
~DooM
 
Last edited:
Top