Permanent Inmolation with bounty (GUI made)

elpini0

New Member
Reaction score
1
ho ho ho ho!!! :D

I DID IT!! :cool: I CREATED A DAMAGE AURA THAT GIVES BOUNTY!! Whatsmore, I added a TIMED LIGHTNING EFFECT using ONLY GUI!!:D look:

IF YOU DON'T CARE ABOUT MY OWN SUFFERING, JUMP TO THE BOTTOM OF THE POST

Spell created: Pain Aura
Objective: Create a permanent inmolation that in stead of making X damage every 1 second, makes 1 damage every (1/X) seconds.
Based on: Unholy Aura (at first i used negative life regen, but then i realized about the bounty issue)
Spell set-up:
-Set the increase of Life Regen and movement speed of the spell to zero.
-Set the affected units to YOURSELF

Now, you might be wondering why do i do this. The answer:

-At first I tried (after several failed attempts of modifying auras, triggers and buffs) applying the aura only to enemies. This way I could make a periodic event every (1/X) seconds that picks up every unit with the buff Pain Aura and deal 1 damage (trigger example)

Trigger:
  • PainAura
    • Events
      • Time - Every 0.06 seconds of game time
    • Conditions
    • Actions
      • Unit group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • If ((Picked unit) has buff Pain Aura ) Equal to True
            • Then - Actions
              • Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 1.00)
            • Else - Actions


Then I realized that GUI triggers didn't offer me the possibility of identifying who the owner of the aura is. :banghead: So after testing different combinations of triggers and breaking my ass out thinking of alternatives, I thought of simply not getting bounty. :nuts:

Then, another idea cam to my mind: :D Creating a dummy that exploded using the gobling ability. But ERROR: :banghead: I came up with the same problem... There is no condition "((Adquired ability) is Pain Aura) Equal to True" or anything like that. :(

Finally, in my way through the huge corridors of GUI menus, bars and options, i came up with this::thup:

Trigger:
  • Unit group - Pick every unit in (Units within 512.00 of (Position of PainAuraCaster)) and do (Actions)


HAHA BINGO!!:cool: But how can we know who the caster of an aura that only affects to enemies is??:confused: Answer: we can't.:thdown:

:eek:IDEA!!:eek: Why not making my own heroe as target of the aura, then picking all units in map with the aura and making an effect??

The result: My trigger :D

Trigger:
  • Pain Aura
    • Events
      • Time - Every 0.06 seconds of game time
    • Conditions
    • Actions
      • -------- First, check which units in map have the aura --------
      • Unit group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Condiciones
              • If ) ((Picked unit) has buff Pain Aura ) Igual a True
            • Then - Actions
              • -------- Then, for each caster we set him as a variable --------
              • Set PainAuraCaster = (Picked unit)
              • -------- Aftwerwards, we pick all units within desired Aura range --------
              • Unit Group - Pick every unit in (Units within 900.00 of (Position of PainAuraCaster)) and do (Actions)
                • Loop - Actions
                  • -------- And now, our Aura effect, only affecting enemies --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Condiciones
                      • If ) ((Picked unit) is alive) Igual a True
                      • If ) ((Picked unit) belongs to an enemy of (Owner of PainAuraCaster)) Igual a True
                    • Then - Acciones
                      • -------- Using this great unit action, we grant that our hero gets his bounty --------
                      • Unit - Cause PainAuraCaster to damage (Picked unit), dealing (1.00 x (Real((Level of Pain Aura for PainAuraCaster)))) damage of attack type Spells and damage type <desired type>
                    • Else - Actions
            • Else - Actions


Whatsmore, once i managed to get my spell I decided to create a coooool effect, and i thought of lightning. But wow... :banghead: Problems everywhere...

First I tried with this:

Trigger:
  • Pain Aura
    • Events
      • Time - Every 0.06 seconds of game time
    • Conditions
    • Actions
      • -------- First, check which units in map have the aura --------
      • Unit group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Condiciones
              • If ) ((Picked unit) has buff Pain Aura ) Igual a True
            • Then - Actions
              • -------- Then, for each caster we set him as a variable --------
              • Set PainAuraCaster = (Picked unit)
              • -------- Aftwerwards, we pick all units within desired Aura range --------
              • Unit Group - Pick every unit in (Units within 900.00 of (Position of PainAuraCaster)) and do (Actions)
                • Loop - Actions
                  • -------- And now, our Aura effect, only affecting enemies --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Condiciones
                      • If ) ((Picked unit) is alive) Igual a True
                      • If ) ((Picked unit) belongs to an enemy of (Owner of PainAuraCaster)) Igual a True
                    • Then - Acciones
                      • -------- Using this great unit action, we grant that our hero gets his bounty --------
                      • Unit - Cause PainAuraCaster to damage (Picked unit), dealing (1.00 x (Real((Level of Pain Aura for PainAuraCaster)))) damage of attack type Spells and damage type <desired type>
                      • Lightning - Create a Lightning Chain - Main lightning effect from source (Position of PainAuraCaster) to target (Position of (Picked unit))
                      • Wait 0.06 seconds
                      • Lightning - Destroy (Last created lightning effect)
                    • Else - Actions
            • Else - Actions


When I tested this, guess what happened:

Lightnings didn't get removed. This is because while waiting 0.06 seconds, Last created lightning changes for more that 1 target.

Final trigger:

IF YOU DON'T CARE ABOUT MY OWN SUFFERING, START READING HERE

(At the Initialization trigger, do (Create Hashtable) -> (Set hastTable= (Last created Hashtable))
(Starting value of LightningNumber = 0)

Trigger:
  • Pain Aura
    • Events
      • Time - Every 0.06 seconds of game time
    • Conditions
    • Actions
      • -------- First, check which units in map have the aura --------
      • Unit group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Condiciones
              • If ) ((Picked unit) has buff Pain Aura ) Igual a True
            • Then - Actions
              • -------- Then, for each caster we set him as a variable --------
              • Set PainAuraCaster = (Picked unit)
              • -------- Aftwerwards, we pick all units within desired Aura range --------
              • Unit Group - Pick every unit in (Units within 900.00 of (Position of PainAuraCaster)) and do (Actions)
                • Loop - Actions
                  • -------- And now, our Aura effect, only affecting enemies --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Condiciones
                      • If ) ((Picked unit) is alive) Igual a True
                      • If ) ((Picked unit) belongs to an enemy of (Owner of PainAuraCaster)) Igual a True
                    • Then - Acciones
                      • -------- Using this great unit action, we grant that our hero gets his bounty --------
                      • Unit - Cause PainAuraCaster to damage (Picked unit), dealing (1.00 x (Real((Level of Pain Aura for PainAuraCaster)))) damage of attack type Spells and damage type <desired type>
                      • Lightning - Create a Lightning Chain - Main lightning effect from source (Position of PainAuraCaster) to target (Position of (Picked unit))
                      • Hashtable - Save Handle Of(Last created lightning effect) as 0 of LightningNumber in hashTable
                      • Set LightningNumber = (LightningNumber + 1)
                    • Else - Actions
            • Else - Actions



Trigger:
  • LightningLoop
    • Events
      • Time - Every 0.06 seconds of game time
    • Conditions
      • LightningNumber Greater than 0 //As it is a periodic event, starting with a substraction, it is needed to set this condition
    • Actions
      • Set LightningNumber = (LightningNumber - 1)
      • Lightning - Destroy (Load 0 of LightningNumber in hashTable)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LightningNumber Greater than 0
        • Then - Actions
          • Trigger - Run (This trigger) (checking conditions)
        • Else - Actions


How does this trigger work? Its quite simple:

Every 0.06 seconds happens this:
-1) For X units within range, you create X lightnings
-2) In order, you set a space in the hashTable containing each lightning ID

EXAMPLE OF HASHTABLE

..............................|...First lightning......|. Second lightning ..| ... | N lightning
AS(down) \\ OF(right) |..... created .........|...... created .........| ... | created
...............0..............| LightningNumber=0| LightningNumber=1 | ... | LightningNumber=N-1

This way, we now have N values in the positions 0 to N-1 of our hashTable.
-3) Our final result of LightningNumber was N, and we want to destroy the last lightning which has index N-1 in our hashTable. Thats why we make the inverse operation
-4) We loop the trigger to run N times, and finally set LightningNumber = 0.

DONE!! The result is very nice, and it doesn't require any JASS knowledge: only TIME and EFFORT.

I hope this information was interesting and useful for some people :cool:
 

Tru_Power22

You can change this now in User CP.
Reaction score
144
Cool story bro.

Why not post it in the tutorials and resources as a spell. It would be more useful to some people.
 

elpini0

New Member
Reaction score
1
Actually, I'm working on this spell. This morning I added to the spell the followign effect:

-1) Deal x damage to every nearby enemy.
-2) Sum up all the damage done
-3) pick up all nearby allies (excluding casting hero)
-4) divide all the damage done by the number of nearby allies (excluding casting hero)
-5) heal every nearby ally by (10%xLevel of Pain Aura)

For this I did the same operation as in the first post, but i changed some variables =D

If anyone is interested in this spell, I'll make a detailed tutorial when I definitely develop the spell.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      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