• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • 💡 We're thrilled to announce that our upcoming texturing contest is in the works, and we're eager to hear your suggestions! Please take this opportunity to share your ideas in this theme discussion thread for the Texturing Contest #34!
  • 🏆 Hive's 7th HD Modeling Contest: Icecrown Creature is now open! The frozen wastes of Icecrown are home to some of Azeroth’s most terrifying and resilient creatures. For this contest, your challenge is to design and model a HD 3D monster that embodies the cold, undead, and sinister essence of Icecrown! 📅 Submissions close on April 13, 2025. Don't miss this opportunity to let your creativity shine! Enter now and show us your frozen masterpiece! 🔗 Click here to enter!

Illusion System v1.2

ILLUSION SYSTEM
IMPORT GUIDE :
1. Open the test map
2. Copy the Illusion System folder, dummy object editor, and Item Illusions ability
3. Paste the folder and both object data on your map
4. System is installed!
SYSTEM DESCRIPTION :
To use Illusion System, you need to provide the following data:
  • Mandatory Parameters
    • Events
    • Conditions
    • Actions
      • Set VariableSet Illusion_Unit = (Picked unit)
      • Set VariableSet Illusion_Player = Player 1 (Red)
      • Set VariableSet Illusion_DamageDealt = 1.00
      • Set VariableSet Illusion_DamageTaken = 1.00
      • Set VariableSet Illusion_Duration = 15.00
      • Set VariableSet Illusion_AppearCustomized = False
      • Trigger - Run Illusion_CreateTrigger (checking conditions)
If you set AppearCustomized into true, two additional parameters must be provided:
  • Mandatory Parameters
    • Events
    • Conditions
    • Actions
      • Set VariableSet Illusion_Unit = (Picked unit)
      • Set VariableSet Illusion_Player = Player 1 (Red)
      • Set VariableSet Illusion_DamageDealt = 1.00
      • Set VariableSet Illusion_DamageTaken = 1.00
      • Set VariableSet Illusion_Duration = 15.00
      • Set VariableSet Illusion_AppearCustomized = True
      • Set VariableSet Illusion_AppearPoint = (Position of (Triggering unit))
      • Set VariableSet Illusion_AppearFacing = (Facing of (Triggering unit))
      • Trigger - Run Illusion_CreateTrigger (checking conditions)
In addition to all these mandatory parameters, an additional "args" string parameter can be provided to be used in conjunction with the Illusion_Event. There is only one Illusion_Event and all variables that are provided in the mandatory parameter, with the addition of Illusion_IllusionUnit which contains the created illusion unit, can be accessed in that event. Here is an example from a Juxtapose spell I wrote:
  • Juxtapose Illusion Focus
    • Events
      • Game - Illusion_Event becomes Equal to 1.00
    • Conditions
      • Illusion_Args Equal to Juxtapose_Args
    • Actions
      • Set VariableSet Juxtapose_Source = Illusion_Unit
      • Set VariableSet Juxtapose_Index = (Custom value of Juxtapose_Source)
      • Set VariableSet Juxtapose_Level = (Level of Juxtapose_Ability for Juxtapose_Source)
      • Unit - Order Illusion_UnitIllusion to Attack Juxtapose_Target[Juxtapose_Index]
Here, the Illusion is ordered to attack what the unit that was copied (the original unit) is attacking.
SYSTEM INFORMATION :
This system does not work with Spell Immune units. This is an inherent limitation to the base ability.
MEDIA SHOWCASE :

CHANGELOG :
Version 1.2
- Now usable on Spell Immune units

  • Dummy units now belong to Neutral Passive
  • Only one dummy for entire system

Version 1.1.1
- Downpatched to v1.31
- Fixes a glaring bug where the dummy is not removed after casting the illusion spell

Version 1.1
I tested several ways to get a single dummy to generate illusions but it tend to behave randomly in the number of illusion successfully generated, opposed to the current method. Thus, I am sticking with the current method for now. I am considering an approach with a dummy recycler for efficiency.

I am currently doing additional testings with regards to Timed Life related triggers and it's effect on Illusion ability to allow setter and getter. If I find a breakthrough, another update for the resources will follow.


  • Changed ability targeting to allow structures as targetables
  • Modified response event to spawn a unit instead of entering map
  • Added Blademaster to verify no collision with Mirror Image for new method

Version 1.0

CREDIT :
Special Thanks to Ugabunda and Flux for making me thinking about the inner workings of Illusions.
Contents

Illusion System v1.2 (Map)

Reviews
MyPad
Placed on Awaiting Update by request
Wrda
Illusion_Event variable is only being set in IllusionDetect and not used anywhere else, looks like old stuff. Illusion_Args also follows the same fate. As Mandatory Parameters trigger is rather a template than an actual functional trigger, it should...
Well, I am back!

Before people jump the gun and questions me what's the main difference with Flux' system, I will answer that:
1. Flux' is written in vJass. Mine is in GUI.
2. Flux' supports a wider range of patches since it uses the old method of illusion detection, registering them, and then modifying the damage values via DDS (from 1.26 to 1.32+, I think). Mine is focused on 1.32+ by directly manipulating the illusion ability via new natives (should be possible in 1.31, but I didn't check)
3. Flux' requires several additional libraries. Mine does not require any additional extension.

In short, this is a very lightweight illusions system that utilizes the new natives' power. This alone should be a good differentiation for consideration.
 
You might also want to consider GUI Custom Illusion in your assessment.
GUI Custom Illusion requires a specific Damage Engine (DDD) that does not have compatibility support from Damage Engine or other DDS. I provided the link for cross-compatibility for Damage Engine and one can see that his DDD is not listed at the moment of this post. @Bribe might want to consider, perhaps?

I am interested in the part GUI CI mentions working with building, I will need to check that later. I also find that GUI CI uses item slots, while mine uses the ability directly.

I'll also add that Illusion System - v1.00e is another system in this matter and that one requires ListModule and is written in vJass. I also recall there's another one before Flux, but I also recall Flux' is by far the most superior in the vJass variant.

The strongest point of this system, in comparison to the rest, is the fact it has zero additional requirements. The second point is it is all written in GUI with no vJass flavor except to call the necessary order and clean up of leaks. Weakness? 1.32 only.
 
I think a single dummy caster will suffice for this system if the dummy caster's movement is "disabled" (via setting prop window to 0, or disabling the move ability directly, or rooting the unit). From what I recall, upon (the dummy) casting the illusion ability, the illusion is made immediately available before the next action. The illusion is available for use before it even enters the map!

The creation of the illusion can be intercepted with the unit summon event, though the generic version of the event has to be used instead.
Unfortunately, the base illusion spell cannot be made to work with spell immune targets. A shame, really. From the setup of the trigger itself, I think
this can be ported over to 1.31.
 
I'll be blunt I underestimated the complexity of such a system like this. I have made some minor tweaks, but numerous challenges are highly complicated for this particular system. Setting a duration at start is already available, but extending it's capability to be dynamic is apparently very complicated, not to mention that there are UI challenges for it.

Not that I've given up, but I think I'll slowly advance this resource instead of putting everything at once.
 
v1.1.1
  • Downpatched to v1.31
  • Fixes a glaring bug where the dummy is not removed after casting the illusion spell

I found that Cancel Timed Life instantly obliterates the unit if they already have a timed life. I also analyzed Flux' illusion and concluded that having a dynamic duration beyond what currently is offered is beyond current limitations. So, this is mostly a major bugfix that is long overdue that I just noticed today.
 

Wrda

Spell Reviewer
Level 28
Joined
Nov 18, 2012
Messages
2,008
SYSTEM INFORMATION :
This system does not work with Spell Immune units. This is an inherent limitation to the base ability.
There's a workaround for this, make the base ability a hero ability (boolean to true), set required level to level 6, and revert the "hero ability boolean" to false.
I tried to use one dummy by modifying your trigger and it simply refuses to work 🤨 odd.
 
Apparently, setting the movement speed to 0 fixed it for me. Although I met another issue where the dummy is unable to cast spell if the target is not visible in the map.
I think this is because the dummy owner adjust to the player who supposed to be the one with the illusion. I think I need to find a workaround on this.

There's a workaround for this, make the base ability a hero ability (boolean to true), set required level to level 6, and revert the "hero ability boolean" to false.
I tried to use one dummy by modifying your trigger and it simply refuses to work 🤨 odd.
I will look into this
 

Rheiko

Spell Reviewer
Level 26
Joined
Aug 27, 2013
Messages
4,178
I found a bug. If I order the target (Illusion_Unit) to move before the illusion system is triggered, the system will not create the illusion of the target.
This is probably due to how you immediately remove the dummy unit from the game before it finishes casting because the problem is gone when I replace
  • Unit - Remove Illusion_Dummy from the game
with
  • Unit - Add a 1.00 second Generic expiration timer to Illusion_Dummy

I think this is because the dummy owner adjust to the player who supposed to be the one with the illusion. I think I need to find a workaround on this.
I believe the illusion spell can only be casted onto targets visible to the caster. The workaround that I found is to create a visibility modifier at the target and destroy it afterwards. Just make sure the radius is enough to reveal the unit but that shouldn't be a problem since the illusion will appear and make the unit visible anyways.

With that solved, I believe this system can work with only one dummy. I have also tried Wrda's workaround regarding spell immunity and it indeed works. Make updates regarding these and this resource should be good enough to be approved.

Edit:
Since your Faux Reinforcement v1.0 uses this system, the same bug exists over there as well. Should be approvable once fixed.
 
Last edited:
I thought I'll drop an update since I can't resolve the key to transform this into one dummy. I have changed movement speed to 0 per @Rheiko suggestion but when I moved the script around, it still doesn't result as intended.

I managed to alter so the dummy unit is now under neutral passive and change the illusion to the respective player. @Wrda fix for spell immune is now ready on to be release v1.2. I want to try this one dummy to see if it is doable or not, since I am curious.

EDIT:
Welp, it worked itself out for some reason. Now, I'm updating this.
 
Last edited:

Wrda

Spell Reviewer
Level 28
Joined
Nov 18, 2012
Messages
2,008
Illusion_Event variable is only being set in IllusionDetect and not used anywhere else, looks like old stuff. Illusion_Args also follows the same fate.
As Mandatory Parameters trigger is rather a template than an actual functional trigger, it should be disabled or at least turned off.
However, everything else looks fine and works as expected!

Approved
 
Illusion_Event variable is only being set in IllusionDetect and not used anywhere else, looks like old stuff. Illusion_Args also follows the same fate.
As Mandatory Parameters trigger is rather a template than an actual functional trigger, it should be disabled or at least turned off.
However, everything else looks fine and works as expected!

Approved
I'll check the details for the examples and improve the documentation for them

@Daffa, you forgot to change the version number in the resource title. :p
Fixed
 
Top