Easier Way to do this?

Uszi

New Member
Reaction score
5
Hey all:

I'm making a "blaze" spell, one where after its cast it gives the unit a move speed boost and leaves a trail of fire on the ground which burns enemies...

I did a search for similar abilities... And I found one in JASS, which I'm not familiar with and which also did some stuff that I didn't want.

This is what I got so far. It works pretty well... But how do I make it MUI without making 12 seperate versions?

Trigger:
  • Blaze
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Ability being cast) Equal to Blaze (E)
          • (Ability being cast) Equal to Blaze (Q)
          • (Ability being cast) Equal to Blaze (R)
          • (Ability being cast) Equal to Blaze (W)
    • Actions
      • Set BlazeUnit = (Triggering unit)
      • Set BlazeCntDwn = 200
      • Trigger - Turn on Blaze II <gen>
      • Trigger - Run Blaze II <gen> (checking conditions)


Trigger:
  • Blaze II
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Unit - Create 1 Circle of Power for (Owner of BlazeUnit) at (Position of BlazeUnit) facing Default building facing degrees
      • Unit - Add a 3.50 second Generic expiration timer to (Last created unit)
      • Set BlazeCntDwn = (BlazeCntDwn - 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BlazeCntDwn Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Do nothing


I changed the circle of power to a fire model with the locust ability and immolate.
 

vypur85

Hibernate
Reaction score
803
Code:
    Events
          Unit - A unit Starts the effect of an ability
    Conditions
          (Ability being cast) Equal to Blaze
    Actions
          Wait 0.50 game-time seconds
          Unit group - Add (Triggering unit) to UNITGROUP

Code:
    Events
          Game - Every 1.00 seconds
    Conditions
    Actions
          Unit group - Pick every unit in UNITGROUP and do
              Loop - Actions
                  If then else
                       (Picked unit) has buff Berserk Equal to True
                  Then - Actions
                       -Do something you like-
                       [I]eg. Leave a dummy which Flamestrike on ground?[/I]
                       [I]eg. Leave a dummy which has Permanent Immolation?[/I]
                  Else - Actions
                       Unit group - Remove (Picked unit) from UNITGROUP

Try the above? Base the ability off Berserk, or Roar, or any ability which gives buff to self upon casting. It's MUI.
 

afisakov

You can change this now in User CP.
Reaction score
37
hopefully this should do it:
Trigger:
  • blaze
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Blaze (E)
      • (Ability being cast) Equal to Blaze (Q)
      • (Ability being cast) Equal to Blaze (R)
      • (Ability being cast) Equal to Blaze (W)
    • Actions
      • Set Blazeunit[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
      • Set Blazecountdown[(Player number of (Owner of (Triggering unit)))] = 200


Trigger:
  • blaze 2
    • Events
      • Time - Every 0.30 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Blazecountdown[(Integer A)] Greater than or equal to 1
              • Blazeunit[(Integer A)] Not equal to No unit
            • Then - Actions
              • Set Temp_Point = (Position of Blazeunit[(Integer A)])
              • Unit - Create 1 Circle of Power for (Owner of Blazeunit[(Integer A)]) at Temp_Point facing Default building facing degrees
              • Unit - Add a 3.50 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_Temp_Point)
              • Set Blazecountdown[(Integer A)] = (Blazecountdown[(Integer A)] - 1)
            • Else - Actions

Unfortunately I do not know how to turn off the second trigger here without screwing it up for the other players, however I removed the leak so it should be fine to leave it on now. I changed timer from 0.1 to 0.3 since immolation doesn't stack anyway and this should be often enough to see no appreciable difference and not slow the game for no reason.
Temp_Point is obviously a point variable, if you rename it be sure to change the text in the custom script accordingly. Blazeunit and Blazecountdown are essentially the same as u had, I just changed them to arrays of size 12.
Since you mentioned "making 12 seperate versions" I will assume your map does not allow a single player to have more then one unit with this ability, up to one per player.

Edit: wow, I took way too long to do this, 2 people beat me to the punch
 

Uszi

New Member
Reaction score
5
Since you mentioned "making 12 seperate versions" I will assume your map does not allow a single player to have more then one unit with this ability, up to one per player.

Edit: wow, I took way too long to do this, 2 people beat me to the punch

Yeah...
Each player has one unit, 12 players tops.

Thanks guys! Rep all around. I guess it seems easy now that people have told me it was easy.:eek:
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top