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

Illusion System v1.1

This bundle is marked as pending. It has not been reviewed by a staff member yet.
ILLUSION SYSTEM
IMPORT GUIDE :
1. Open the test map
2. Copy the Illusion System folder
3. Paste the folder 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.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.1.1 (Map)

Reviews
MyPad
Placed on Awaiting Update by request
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.
 
Top