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

Decoy (Revisited) v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.

coollogo_com-299657373.gif

Allow the blademaster to become invisible for 3 seconds, leaving an decoy of himself, after 3 seconds all nearby foe in the decoy will take damage by 100/150/200/250. When the Blademaster attacks a unit to break invisibility dealing 70 bonus damage.

Level 1 - 100 damage
Level 2 - 150 damage
Level 3 - 200 damage
Level 4 - 250 damage
coollogo_com-299657643.gif

v1.0 - Initial Release (Not Actually)
coollogo_com-299515404.gif

Configuration

Cast

Loop

  • Decoy Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- -------------------------- --------
      • -------- Decoy (Revisited) v1.0 --------
      • -------- by iamdl --------
      • -------- -------------------------- --------
      • -------- How to implement?? --------
      • -------- 1. Copy the Decoy Buff that can be found at Object Editor>Buffs/Effects --------
      • -------- 2. Copy the Decoy Ability that can be found at Object Editor>Abilities --------
      • -------- 3. Copy the Decoy Dummy that can be found at Object Editor>Units. --------
      • -------- 4. Copy the Decoy Folder that can be found at Trigger Editor(F4) --------
      • -------- 5. ENJOY! --------
      • -------- NOTE : You must tick the Automatically create unknown variable while pasting trigger data. That can be found at File>Preference>General. --------
      • -------- -------------------------- --------
      • -------- CONFIGURATION --------
      • -------- -------------------------- --------
      • -------- -------------------------- --------
      • -------- Setting up the ability we use --------
      • -------- While their you can set the duration of Invisibility. --------
      • -------- NOTE: the duration of invisibility must be equal to Decoy_Duration. --------
      • -------- -------------------------- --------
      • Set Decoy_Ability = Decoy
      • -------- -------------------------- --------
      • -------- Setting up the Dummy we using on our spell --------
      • -------- -------------------------- --------
      • Set Decoy_Dummy = Decoy Dummy
      • -------- -------------------------- --------
      • -------- Setting up the animation of Decoy_Dummy. --------
      • -------- NOTE: only compatible with BLADEMASTER and GROM HELLSCREAM --------
      • -------- -------------------------- --------
      • Set Decoy_Animation = spin
      • -------- -------------------------- --------
      • -------- Setting up the AoE of the spell --------
      • -------- -------------------------- --------
      • Set Decoy_AoE = 250.00
      • -------- -------------------------- --------
      • -------- Setting up the Damage of the spell --------
      • -------- -------------------------- --------
      • -------- -------------------------- --------
      • -------- Level 1 = 150 damage --------
      • -------- -------------------------- --------
      • Set Decoy_Damage[1] = 100.00
      • -------- -------------------------- --------
      • -------- Level 2 = 150 damage --------
      • -------- -------------------------- --------
      • Set Decoy_Damage[2] = 150.00
      • -------- -------------------------- --------
      • -------- Level 3 = 200 damage --------
      • -------- -------------------------- --------
      • Set Decoy_Damage[3] = 200.00
      • -------- -------------------------- --------
      • -------- Level 4 = 250 damage --------
      • -------- -------------------------- --------
      • Set Decoy_Damage[4] = 250.00
      • -------- -------------------------- --------
      • -------- Here your can edit the Attack type of the spell. --------
      • -------- -------------------------- --------
      • Set Decoy_AttackType = Spells
      • -------- -------------------------- --------
      • -------- Here your can edit the Damage type of the spell. --------
      • -------- -------------------------- --------
      • Set Decoy_DamageType = Normal
      • -------- -------------------------- --------
      • -------- Is the target is Alive?? --------
      • -------- -------------------------- --------
      • Set DecoyTargetisAlive = True
      • -------- -------------------------- --------
      • -------- Is the target is structure?? --------
      • -------- -------------------------- --------
      • Set DecoyTargetisStructure = False
      • -------- -------------------------- --------
      • -------- Setting up the duration of the dummy --------
      • -------- NOTE: the duration of invisibility must be equal to Decoy_Duration. --------
      • -------- -------------------------- --------
      • Set Decoy_Duration = 3.00
      • -------- -------------------------- --------
      • -------- Special effect we use when the dummy is die. --------
      • -------- -------------------------- --------
      • Set Decoy_DeathSFX = Objects\Spawnmodels\Other\ToonBoom\ToonBoom.mdl
      • -------- -------------------------- --------
      • -------- Special effect we use when spell deals damage. --------
      • -------- -------------------------- --------
      • Set Decoy_HitSFX = Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl
      • -------- -------------------------- --------
      • -------- END OF CONFIGURATION --------
      • -------- -------------------------- --------
      • -------- -------------------------- --------
      • -------- Importang part do not change this --------
      • -------- -------------------------- --------
      • Set Decoy_DummySpin = 0.30
      • Trigger - Add to Decoy Loop <gen> the event (Time - Every 0.03 seconds of game time)
      • -------- -------------------------- --------
      • -------- Important part do not change this --------
      • -------- -------------------------- --------
  • Decoy
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Decoy_Ability
    • Actions
      • Set DecoyIndexA = (DecoyIndexA + 1)
      • Set DecoyCaster[DecoyIndexA] = (Triggering unit)
      • Set DecoyIncrement = (Level of Decoy_Ability for DecoyCaster[DecoyIndexA])
      • Set DecoyDummyDuration[DecoyIndexA] = Decoy_Duration
      • Set DecoyAoE[DecoyIndexA] = Decoy_AoE
      • Set DecoyDummySpinTime[DecoyIndexA] = Decoy_DummySpin
      • Set DecoyDamage[DecoyIndexA] = Decoy_Damage[DecoyIncrement]
      • Set DecoyCasterLoc = (Position of DecoyCaster[DecoyIndexA])
      • Unit - Create 1 Decoy Dummy for (Owner of DecoyCaster[DecoyIndexA]) at DecoyCasterLoc facing (Facing of DecoyCaster[DecoyIndexA]) degrees
      • Set DecoyDummy[DecoyIndexA] = (Last created unit)
      • Unit - Pause DecoyDummy[DecoyIndexA]
      • Unit - Set life of DecoyDummy[DecoyIndexA] to (Percentage life of DecoyCaster[DecoyIndexA])%
      • Custom script: call RemoveLocation(udg_DecoyCasterLoc)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • DecoyIndexA Equal to 1
        • Then - Actions
          • Trigger - Turn on Decoy Loop <gen>
        • Else - Actions
  • Decoy Loop
    • Events
    • Conditions
    • Actions
      • For each (Integer DecoyIndexB) from 1 to DecoyIndexA, do (Actions)
        • Loop - Actions
          • Set DecoyDummyDuration[DecoyIndexB] = (DecoyDummyDuration[DecoyIndexB] - 0.03)
          • Set DecoyDummyLoc = (Position of DecoyDummy[DecoyIndexB])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DecoyDummyDuration[DecoyIndexB] Less than or equal to DecoyDummySpinTime[DecoyIndexB]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (DecoyDummy[DecoyIndexB] is alive) Equal to True
                • Then - Actions
                  • Animation - Play DecoyDummy[DecoyIndexB]'s Decoy_Animation animation
                • Else - Actions
                  • Set DecoyDummyDuration[DecoyIndexB] = 0.00
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DecoyDummyDuration[DecoyIndexB] Less than or equal to 0.00
                • Then - Actions
                  • Set DecoyGroup = (Units within DecoyAoE[DecoyIndexB] of DecoyDummyLoc)
                  • Unit Group - Pick every unit in DecoyGroup and do (Actions)
                    • Loop - Actions
                      • Set DecoyTarget[DecoyIndexB] = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (DecoyTarget[DecoyIndexB] is A structure) Equal to DecoyTargetisStructure
                          • (DecoyTarget[DecoyIndexB] is alive) Equal to DecoyTargetisAlive
                          • (DecoyTarget[DecoyIndexB] belongs to an enemy of (Owner of DecoyCaster[DecoyIndexB])) Equal to True
                        • Then - Actions
                          • Unit - Cause DecoyCaster[DecoyIndexB] to damage DecoyTarget[DecoyIndexB], dealing DecoyDamage[DecoyIndexB] damage of attack type Decoy_AttackType and damage type Decoy_DamageType
                          • Special Effect - Create a special effect attached to the origin of DecoyTarget[DecoyIndexB] using Decoy_HitSFX
                          • Special Effect - Destroy (Last created special effect)
                        • Else - Actions
                  • Custom script: call RemoveLocation(udg_DecoyDummyLoc)
                  • Custom script: call DestroyGroup(udg_DecoyGroup)
                  • Special Effect - Create a special effect at DecoyDummyLoc using Decoy_DeathSFX
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Remove DecoyDummy[DecoyIndexB] from the game
                  • Set DecoyCaster[DecoyIndexB] = DecoyCaster[DecoyIndexA]
                  • Set DecoyDummy[DecoyIndexB] = DecoyDummy[DecoyIndexA]
                  • Set DecoyDummyDuration[DecoyIndexB] = DecoyDummyDuration[DecoyIndexA]
                  • Set DecoyAoE[DecoyIndexB] = DecoyAoE[DecoyIndexA]
                  • Set DecoyDummySpinTime[DecoyIndexB] = DecoyDummySpinTime[DecoyIndexA]
                  • Set DecoyDamage[DecoyIndexB] = DecoyDamage[DecoyIndexA]
                  • Set DecoyTarget[DecoyIndexB] = DecoyTarget[DecoyIndexA]
                  • Set DecoyIndexB = (DecoyIndexB - 1)
                  • Set DecoyIndexA = (DecoyIndexA - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • DecoyIndexA Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
            • Else - Actions


Keywords:
Wukong, iamdl, gui, mui, blademaster, spin, decoy, illusion
Contents

Decoy (Revisited) v1.0 (Map)

Reviews
16:55, 16th Apr 2016 Tank-Commander: V1.0 - Please address the issues raised by both myself and Meatmuffin. My post Meamuffin's post
Level 11
Joined
Jul 25, 2014
Messages
490
First look - description is a bit flashy. While I get that it should be as informative and appealing as possible, but it should also be not too much. Concept is pretty simple, but it can be useful.

In your configuration there are some useless comments like having 4x3 comment lines just for the damage setup. You should keep a one set of lines (3 in your case) and put Decoy_Damage[1-4] right next to each other. It's not a big deal, but it creates an illusion that there are a lot of configurations, when there aren't.

The duration and AoE should also be multi-level available.

Add a configurable for the timer speed and use it when subtracting your duration. It's not much, but it should be done.

Store the player into an indexed variable for easier usage throughout the entire spell.

EDIT: Noticed your dummy location leaks. Put it inside the second "If" statement "Then" block.
Also you didn't do all the things IcemanBo did. I'm talking about the spin on deindex part.

Would probably give a rating between 2 and 3.
 
There's a number of issues with the ability that need to be addressed ontop of what Meatmuffin has mentioned:
- It only works for one unit type
- The decoy is an imperfect duplicate making it easily detected by selecting it and has no option of being a perfect duplicate
- The configuration is very limited, as Meatmuffin mentions more things should be able to change each level (needed to be re-iterated)
- Decoy has fixed stats (health being most notable)
- The ability is exceptionally simple from a scripting perspective, I couldn't award it a particularly high rating as a result

Other (suggestions):
- The primary part of this spell is windwalk with a bit bolted on to it which is a neat extension but not encouraged due to being object editor based, that is to say if fully scripted then people can use any dummy ability or any other extension they wanted (e.g. adding passive critical strike)
- Quilnez created the very useful GUI Custom Illusion which essentially does the same thing (scripted mirror imaging) minus the animation and damage at the end but works for any unit. I'd recommend using it as a base for the ability instead of the very flawed current method - there are other similar systems on the hive if I recall correctly

Edit: on a totally unrelated note that description is a bit painful to look at, notably using that blue (This colour is exceptionally hard to read, exacerbated by the very bright animated titles, I suggest going for something a little less 1990s-internet generally for descriptions
 
Last edited:
Top