ho ho ho ho!!!
I DID IT!! I CREATED A DAMAGE AURA THAT GIVES BOUNTY!! Whatsmore, I added a TIMED LIGHTNING EFFECT using ONLY GUI!! 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)
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: 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:
HAHA BINGO!! But how can we know who the caster of an aura that only affects to enemies is?? Answer: we can't.:thdown:
IDEA!! 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
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:
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)
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
I DID IT!! I CREATED A DAMAGE AURA THAT GIVES BOUNTY!! Whatsmore, I added a TIMED LIGHTNING EFFECT using ONLY GUI!! 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
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Unit group - Pick every unit in (Units in (Playable map area)) and do (Actions)
- Events
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: 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!! But how can we know who the caster of an aura that only affects to enemies is?? Answer: we can't.:thdown:
IDEA!! 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
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
- If - Condiciones
- Loop - Actions
- Else - Actions
- If - Condiciones
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Events
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
- If - Condiciones
- Loop - Actions
- Else - Actions
- If - Condiciones
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Events
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
- If - Condiciones
- Loop - Actions
- Else - Actions
- If - Condiciones
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Events
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
- If - Conditions
- Events
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