Spell with multiple dummies wont work

Solu9

You can change this now in User CP.
Reaction score
216
SOLVED

Hey peps.

My spell is supposed to shoot out 4 Chain Lightnings at four random targets in the area. I have found a way to make it work but my initial try didn't and I wonder why.
The trigger only fires 1 Chain Lightning instead of 4.

Here is the trigger that does NOT work.

Trigger:
  • Electricity Blast
    • Events
    • Unit - A unit Begins casting an ability
    • Conditions
    • (Ability being cast) Equal to Electricity Blast
    • Actions
    • For each (Integer A) from 1 to 4, do (Actions)
    • Loop - Actions
    • Set Temp_Point1 = (Position of (Casting unit))
    • Set Temp_UnitGroup1 = (Random 1 units from (Units within 700.00 of Temp_Point1 matching ((((Matching unit) belongs to an enemy of (Owner of (Casting unit))) Equal to True) and (((Matching unit) is alive) Equal to True))))
    • Unit - Create 1 Electricity Blast Dummy Unit for (Owner of (Casting unit)) at Temp_Point1 facing Default building facing degrees
    • Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning (Random unit from Temp_UnitGroup1)
    • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
    • Custom script: call DestroyGroup (udg_Temp_UnitGroup1)
    • Custom script: call RemoveLocation (udg_Temp_Point1)


And here is the trigger that DO work if I make four independent triggers.

4x

Trigger:
  • Electricity Blast 1
    • Events
    • Unit - A unit Begins casting an ability
    • Conditions
    • (Ability being cast) Equal to Electricity Blast
    • Actions
    • Set Temp_Point1 = (Position of (Casting unit))
    • Set Temp_UnitGroup1 = (Random 1 units from (Units within 700.00 of Temp_Point1 matching ((((Matching unit) belongs to an enemy of (Owner of (Casting unit))) Equal to True) and (((Matching unit) is alive) Equal to True))))
    • Unit - Create 1 Electricity Blast Dummy Unit for (Owner of (Casting unit)) at Temp_Point1 facing Default building facing degrees
    • Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning (Random unit from Temp_UnitGroup1)
    • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
    • Custom script: call DestroyGroup (udg_Temp_UnitGroup1)
    • Custom script: call RemoveLocation (udg_Temp_Point1)


As I said I would like to know why the first trigger wont work.
 

xAnaMorphine

Active Member
Reaction score
43
You should change a few things there:

Make the Temp_Point1 Variable an Array and assign Integer A.
E.x.: Set Temp_Point1[IntegerA] = (Position of (Casting unit))

Same goes for the Temp_UnitGroup1.

I think that will work.
 

BloodySkullz

Active Member
Reaction score
10
Try this:

(Random 4 units from TEMP_Group)

Trigger:
  • Electricity Blast
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Electricity Blast
    • Actions
    • Set ElectricityBlast_Caster = (Triggering unit)
    • Set ElectricityBlast_CasterLoc = (Position of ElectricityBlast_Caster)
    • Set TEMP_Group = (Units within 700.00 of ElectricityBlast_CasterLoc matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and (((Matching unit) belongs to an en
    • Set ElectricityBlast_Group = (Random 4 units from TEMP_Group)
    • Unit Group - Pick every unit in ElectricityBlast_Group and do (Actions)
    • Loop - Actions
    • Unit - Create 1 Dummy for (Owner of ElectricityBlast_Caster) at ElectricityBlast_CasterLoc facing Default building facing degrees
    • Unit - Add ElectricityBlast_Dummy to (Last created unit)
    • Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning (Picked unit)
    • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
    • Custom script: call DestroyGroup(udg_EletricityBlast_Group)
    • Custom script: call DestroyGroup(udg_TEMP_Group)
    • Custom script: call RemoveLocation(udg_ElectricityBlast_CasterLoc)
 

Solu9

You can change this now in User CP.
Reaction score
216
Thanks for the answers. I still cant make it work though. Any other suggestions?
 

vypur85

Hibernate
Reaction score
803
Change all the 'Casting unit' to 'Triggering unit'.

Edit: Which is basically what the post above did. It should work. Post your current trigger.
 

Solu9

You can change this now in User CP.
Reaction score
216
Change all the 'Casting unit' to 'Triggering unit'.

Edit: Which is basically what the post above did. It should work. Post your current trigger.

Fantastic. The trigger works now. That was all that had to be done. I didn't notice BloodySkullz changed that. And to be honest I had the impression that "triggering unit" was never really used.

Here is the trigger as it looks now and works correctly.

Trigger:
  • Electricity Blast
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Electricity Blast
    • Actions
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set Temp_Point1 = (Position of (Triggering unit))
          • Set Temp_UnitGroup1 = (Units within 700.00 of Temp_Point1 matching ((((Matching unit) belongs to an enemy of (Owner of (Casting unit))) Equal to True) and (((Matching unit) is alive) Equal to True)))
          • Unit - Create 1 Electricity Blast Dummy Unit for (Owner of (Triggering unit)) at Temp_Point1 facing Default building facing degrees
          • Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning (Random unit from Temp_UnitGroup1)
          • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation (udg_Temp_Point1)
          • Custom script: call DestroyGroup (udg_Temp_UnitGroup1)


What I am left with is a "why" really. Why "triggering unit" works and "casting unit" does not.
 

vypur85

Hibernate
Reaction score
803
> Why "triggering unit" works and "casting unit" does not.

Can't confirm this but in the loop, you ordered a unit cast Chain Lightning. This causes the 'Casting unit' to be overwritten. In any case at all, 'Casting unit' is always unstable. Use 'Triggering unit' whenever possible. (Eg. Use Triggering unit instead of Attacked unit, or Triggering unit instead of Entering unit, or Triggering unit instead of Hero manipulating item, you get the idea)
 

Solu9

You can change this now in User CP.
Reaction score
216
I see. And good to know. Thanks for the answers. +rep to BloodySkullz and vypur85.
 
General chit-chat
Help Users

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top