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

Thrall: Fire & Thunder v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Thrall: Fire & Thunder v1.0


Depicted .. I do not Get just written.

Skill once!

Footman will to press ESC.

  • Bolt Ball
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to 번개구슬
    • Actions
      • Set Loc = (Position of (Triggering unit))
      • Set BoltCaster = (Triggering unit)
      • Set BoltCease = 3.00
      • Set BoltCheckUnit = 0
      • Set BoltAngle = (Facing of (Triggering unit))
      • Unit - Create 1 BoltOrb for (Owner of (Triggering unit)) at Loc facing Default building facing degrees
      • Set BoltDummy = (Last created unit)
      • Custom script: call RemoveLocation( udg_Loc )
      • Countdown Timer - Start BoltTimer as a Repeating timer that will expire in 0.05 seconds
  • Bolt Timer
    • Events
      • Time - BoltTimer expires
    • Conditions
    • Actions
      • Set BoltCease = (BoltCease - 0.05)
      • Set Loc = (Position of BoltDummy)
      • Set Group = (Units within 200.00 of Loc matching ((((Matching unit) is alive) Equal to True) and ((BoltCaster belongs to an enemy of (Owner of (Matching unit))) Equal to True)))
      • Unit Group - Pick every unit in Group and do (Actions)
        • Loop - Actions
          • Set BoltCheckUnit = 1
      • Custom script: call DestroyGroup( udg_Group )
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BoltCheckUnit Equal to 1
        • Then - Actions
          • Set BoltCease = 3.00
          • Countdown Timer - Pause BoltTimer
          • Set BoltDummyCreate = 4.00
          • Countdown Timer - Start BoltDamageTimer as a Repeating timer that will expire in 0.05 seconds
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BoltCease Less than or equal to 0.00
            • Then - Actions
              • Countdown Timer - Pause BoltTimer
              • Unit - Remove BoltDummy from the game
            • Else - Actions
              • Set Point = (Loc offset by 40.00 towards BoltAngle degrees)
              • Unit - Move BoltDummy instantly to Point
              • Custom script: call RemoveLocation( udg_Point )
      • Custom script: call RemoveLocation( udg_Loc )
  • Bolt Damage
    • Events
      • Time - BoltDamageTimer expires
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BoltCease Less than or equal to 0.00
        • Then - Actions
          • Unit - Remove BoltDummy from the game
          • Countdown Timer - Pause BoltDamageTimer
        • Else - Actions
          • Set BoltCease = (BoltCease - 0.05)
          • Set Loc = (Position of BoltDummy)
          • Set Group = (Units within 300.00 of Loc matching ((((Matching unit) is alive) Equal to True) and ((BoltCaster belongs to an enemy of (Owner of (Matching unit))) Equal to True)))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BoltDummyCreate Equal to 4.00
            • Then - Actions
              • Set BoltDummyCreate = 0.00
              • Unit - Create 1 Bolt for (Owner of BoltCaster) at Loc facing Default building facing degrees
              • Unit - Add a 0.20 second Generic expiration timer to (Last created unit)
            • Else - Actions
              • Set BoltDummyCreate = (BoltDummyCreate + 1.00)
          • Unit Group - Pick every unit in Group and do (Actions)
            • Loop - Actions
              • Unit - Cause BoltCaster to damage (Picked unit), dealing 100.00 damage of attack type Spells and damage type Normal
          • Custom script: call DestroyGroup( udg_Group )
          • Custom script: call RemoveLocation( udg_Loc )
  • Place Burn
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to 공간 발화
    • Actions
      • Set Loc = (Target point of ability being cast)
      • For each (Integer A) from 0 to 2, do (Actions)
        • Loop - Actions
          • Set Point = (Loc offset by 100.00 towards ((Real((Integer A))) x 120.00) degrees)
          • Special Effect - Create a special effect at Point using Abilities\Spells\Other\Doom\DoomDeath.mdl
          • Special Effect - Destroy (Last created special effect)
          • Custom script: call RemoveLocation( udg_Point )
      • Set Group = (Units within 300.00 of Loc matching ((((Matching unit) is alive) Equal to True) and (((Triggering unit) belongs to an enemy of (Owner of (Matching unit))) Equal to True)))
      • Unit Group - Pick every unit in Group and do (Actions)
        • Loop - Actions
          • Unit - Cause (Triggering unit) to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
      • Custom script: call DestroyGroup( udg_Group )
      • Custom script: call RemoveLocation( udg_Loc )
  • Purge
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to 감전
    • Actions
      • Set Loc = (Target point of ability being cast)
      • For each (Integer A) from 0 to 4, do (Actions)
        • Loop - Actions
          • Set Point = (Loc offset by 150.00 towards ((Real((Integer A))) x 60.00) degrees)
          • Unit - Create 1 Purge for (Owner of (Triggering unit)) at Point facing Default building facing degrees
          • Unit - Add a 0.70 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation( udg_Point )
      • Custom script: call RemoveLocation( udg_Loc )
  • Meteo Death
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to RainOfFire
    • Actions
      • Set Loc = (Position of (Triggering unit))
      • Set Group = (Units within 200.00 of Loc matching ((((Matching unit) is alive) Equal to True) and ((MeteoCaster belongs to an enemy of (Owner of (Matching unit))) Equal to True)))
      • Unit - Create 1 Doom for (Owner of (Triggering unit)) at Loc facing Default building facing degrees
      • Unit - Kill (Last created unit)
      • Unit Group - Pick every unit in Group and do (Actions)
        • Loop - Actions
          • Unit - Cause (Triggering unit) to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
      • Custom script: call DestroyGroup( udg_Group )
      • Custom script: call RemoveLocation( udg_Loc )
  • Meteo Create
    • Events
      • Time - MeteoTimer expires
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MeteoN Less than or equal to 0
        • Then - Actions
          • Countdown Timer - Pause MeteoTimer
          • Custom script: call RemoveLocation( udg_MeteoPoint)
        • Else - Actions
          • Set MeteoN = (MeteoN - 1)
          • Set Point = (MeteoPoint offset by (Random real number between 0.00 and 500.00) towards (Random real number between 0.00 and 360.00) degrees)
          • Unit - Create 1 RainOfFire for (Owner of MeteoCaster) at Point facing MeteoAngle degrees
          • Animation - Change (Last created unit)'s animation speed to 100.00% of its original speed
          • Unit - Add a 0.75 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation( udg_Point )
  • Meteo Start
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to 운석충돌
    • Actions
      • Set MeteoCaster = (Triggering unit)
      • Set MeteoN = 15
      • Set MeteoAngle = (Facing of (Triggering unit))
      • Set MeteoPoint = (Target point of ability being cast)
      • Countdown Timer - Start MeteoTimer as a Repeating timer that will expire in 0.05 seconds
Contents

다른 워크래프트 III 지도 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 14:05, 17th Nov 2012 Magtheridon96: Currently, this spell is not MUI. You don't really need to use timers here, a periodic trigger that gets turned on and off will do. In order to make...

Moderator

M

Moderator

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

14:05, 17th Nov 2012
Magtheridon96: Currently, this spell is not MUI.
You don't really need to use timers here, a periodic trigger that gets turned on and off will do.
In order to make this spell MUI (Meaning that it can be cast by multiple units at the same time and work), you need to use indexing or hashtables.
Dynamic indexing is a method that's used to create an index (a number) so you can use it store the spell data inside an array and the index would be different each time you cast the spell, but the system would have to recycle the indexes so the numbers stay as low as possible. Here's a template for it: Click here.

If you don't want to use indexing to make this spell MUI, you can use hashtables. A hashtable is like an array that takes 2 indexes, but unlike the regular arrays, a hashtable's indexes can be less than 0 and up to 2.1 billion :D (An array is limited to [0 ... 8191])

This tutorial shows you how to use hashtables in case you are not familiar with them.

Efficiency tip:
- Whenever you find something like (Owner of (Triggering unit)) or (Triggering unit), if you're going to repeat it more than once inside a trigger, store it into a variable. It's more efficient to lookup a value from a variable than to call a function to get it. (Anything inside parentheses is actually a function call, unless it's arithmetic)

Finally, in terms of configuration, the spells aren't very flexible.
It would be best to have a trigger that runs on map initialization allowing the user to modify whatever spell constants he wants to modify, like damage, radius, special effects, duration, etc... (But be sure to make it support multiple levels. You can do this either by making use of arrays, or by using formulas, and letting the user configure things like DamagePerLevel, DamageBase, etc...)
 
Top