• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

DEMONIC RAGE

This bundle is marked as awaiting update. A staff member has requested changes to it before it can be approved.
The hero calls down the devil to aid him, who transforms him into an unstoppable death machine that kills anything standing its way.
This is my first spell, hope you like it :).



Special thanks to
_Guhun_
for explaining the issue to me



Chronosphere model by: PGRU-Unexpected

Triggers:
  • Demonic Rage Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Caster Unit-Type --------
      • -------- ----------------------------- --------
      • Set Demonic_CasterType = Tester
      • -------- In case of more than 1 unit-type with this ability --------
      • Set Demonic_CasterType2 = No unit-type
      • Set Demonic_CasterType3 = No unit-type
      • Set Demonic_CasterType4 = No unit-type
      • Set Demonic_CasterType5 = No unit-type
      • -------- you can easily add more types, by just editing the main trigger's conditions --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Damage dealt to enemies.__________________________ --------
      • -------- ----------------------------- --------
      • Set Demonic_Damage = 200.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Duration of the ability --------
      • -------- ----------------------------- --------
      • Set Demonic_AbilityDuration = 60.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Area of Effect(AOE).______________________ --------
      • -------- ----------------------------- --------
      • Set Demonic_Radius = 850.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Damage over time Radius(1/don't change it) and the real Damage (2)_________ --------
      • -------- ----------------------------- --------
      • Set DemonicTimeRadius = 530.00
      • -------- ----------------------------- --------
      • Set Demonic_DamageOverTime = 50.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Ending damage____________________ --------
      • -------- ----------------------------- --------
      • Set Demonic_Ending_Damage = 300.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Strength, Agility and Intelligence gained and the rate of increase per level___________ --------
      • -------- ----------------------------- --------
      • Set Demonic_Strength_Gained = 10
      • -------- ----------------------------- --------
      • Set Demonic_Agility_Gained = 10
      • -------- ----------------------------- --------
      • Set Demonic_Intelligence_Gained = 10
      • -------- ----------------------------- --------
      • Set Demonic_Agility_Rule = 10
      • -------- ----------------------------- --------
      • Set Demonic_Strength_Rule = 10
      • -------- ----------------------------- --------
      • Set Demonic_Intelligence_Rule = 10
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Speed gained______________________ --------
      • -------- ----------------------------- --------
      • Set Demonic_Speed_bonus = 300.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Main dummies timer___________________ --------
      • -------- ----------------------------- --------
      • Set Demonic_Effectdummies_timer = 63.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Lesser wind duration (damage per second)__________ --------
      • -------- ----------------------------- --------
      • Set Demonic_LesserWind_duration = 0.40
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Initial Damage levels______________________ --------
      • -------- ----------------------------- --------
      • Set Demonic_LVL_Main = 100.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Repeated damage levels (loop)______________ --------
      • -------- ----------------------------- --------
      • Set Demonic_LVL_Loop = 34.00
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- Special effects' frequency part 1 --------
      • Set Demonic_SpecialEffects = 0.12
      • -------- ----------------------------- --------
      • -------- Special effects' frequency part 2 (includes the lesser periodic damage) --------
      • Set Demonic_SpecialEffects2 = 0.33
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • Set Demonic_Damage_Type = Universal
      • Set Demonic_Attack_Type = Chaos
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- To change the time of the spell go to Demonic Rage trigger, last "Set" action. --------
      • -------- The main skill's timer (time taken for the ability to end.)Default: 63____________ --------
      • -------- You have to decrease the time in Object Editor --> Spell --------
      • -------- Rule: write the time --> Desired Time + 3 --------
      • -------- Example: If you want 20 secs, write 20 in Object Editor and 23 here. --------
      • -------- Note: Don't forget to change the duration of the Main Effects (same rule). --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
      • -------- ----------------------------- --------
  • Demonic Rage
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to DEMONIC RAGE
      • Or - Any (Conditions) are true
        • Conditions
          • (Unit-type of (Triggering unit)) Equal to Demonic_CasterType
          • (Unit-type of (Triggering unit)) Equal to Demonic_CasterType2
          • (Unit-type of (Triggering unit)) Equal to Demonic_CasterType3
          • (Unit-type of (Triggering unit)) Equal to Demonic_CasterType4
          • (Unit-type of (Triggering unit)) Equal to Demonic_CasterType5
    • Actions
      • -------- IMPORTANT SYSTEM PART START --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Demonic_timer Equal to 0
        • Then - Actions
          • Trigger - Turn on Demonic Rage Loop <gen>
        • Else - Actions
      • -------- Increase the index size --------
      • Set Demonic_timer = (Demonic_timer + 1)
      • -------- Dynamic Index --------
      • -------- Dynamic Index End --------
      • -------- Setup those arrays --------
      • Set Demonic_TempPoint[Demonic_timer] = (Position of (Triggering unit))
      • Set Demonic_Caster[Demonic_timer] = (Triggering unit)
      • Set Demonic_Total_Strength[Demonic_timer] = 0
      • Set Demonic_Total_Agility[Demonic_timer] = 0
      • Set Demonic_Total_Intelligence[Demonic_timer] = 0
      • Set LVL_Demonic[Demonic_timer] = (Level of DEMONIC RAGE for Demonic_Caster[Demonic_timer])
      • Set Demonic_SpellTime[Demonic_timer] = 60.00
      • Unit - Create 1 Dummy (big) for Neutral Passive at Demonic_TempPoint[Demonic_timer] facing Default building facing degrees
      • Unit - Add a Demonic_Effectdummies_timer second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy (crono) for Neutral Passive at Demonic_TempPoint[Demonic_timer] facing Default building facing degrees
      • Unit - Add a Demonic_Effectdummies_timer second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy (small) for Neutral Passive at Demonic_TempPoint[Demonic_timer] facing Default building facing degrees
      • Unit - Add a Demonic_Effectdummies_timer second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy2 (raising skull/howl) for Neutral Passive at Demonic_TempPoint[Demonic_timer] facing Default building facing degrees
      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
      • Unit - Set Demonic_Caster[Demonic_timer] movement speed to ((Current movement speed of Demonic_Caster[Demonic_timer]) + Demonic_Speed_bonus)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within Demonic_Radius of Demonic_TempPoint[Demonic_timer]) and do (Actions)
        • Loop - Actions
          • Set Demonic_pickedunits = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Demonic_pickedunits is Magic Immune) Equal to False
              • (Demonic_pickedunits belongs to an enemy of (Owner of Demonic_Caster[Demonic_timer])) Equal to True
            • Then - Actions
              • Unit - Cause Demonic_Caster[Demonic_timer] to damage Demonic_pickedunits, dealing (Demonic_Damage + (Demonic_LVL_Main x (Real(LVL_Demonic[Demonic_timer])))) damage of attack type Demonic_Attack_Type and damage type Demonic_Damage_Type
            • Else - Actions
  • Demonic Rage Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer Demonic_LoopIndex) from 1 to Demonic_timer, do (Actions)
        • Loop - Actions
          • Set TempInt = Demonic_LoopIndex
          • Set DemonicPoint = (Position of Demonic_Caster[Demonic_LoopIndex])
          • Set Dem_Rage_Timer3[TempInt] = (Dem_Rage_Timer3[TempInt] + 0.03)
          • Set Dem_Rage_Timer2[TempInt] = (Dem_Rage_Timer2[TempInt] + 0.03)
          • Set Dem_Rage_Timer[TempInt] = (Dem_Rage_Timer[TempInt] + 0.03)
          • -------- Condition... --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Dem_Rage_Timer3[TempInt] Equal to Demonic_SpecialEffects
            • Then - Actions
              • Set Dem_Rage_Timer3[TempInt] = 0.00
              • Set Demonic_Temp_Point = (DemonicPoint offset by (180.00, 0.00))
              • Unit - Create 1 Dummy3 for Neutral Passive at Demonic_Temp_Point facing Default building facing degrees
              • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_Demonic_Temp_Point)
              • Set Demonic_Temp_Point = (DemonicPoint offset by (0.00, 180.00))
              • Unit - Create 1 Dummy3 for Neutral Passive at Demonic_Temp_Point facing Default building facing degrees
              • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_Demonic_Temp_Point)
              • Set Demonic_Temp_Point = (DemonicPoint offset by (-180.00, 0.00))
              • Unit - Create 1 Dummy3 for Neutral Passive at Demonic_Temp_Point facing Default building facing degrees
              • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_Demonic_Temp_Point)
              • Set Demonic_Temp_Point = (DemonicPoint offset by (0.00, -180.00))
              • Unit - Create 1 Dummy3 for Neutral Passive at Demonic_Temp_Point facing Default building facing degrees
              • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_Demonic_Temp_Point)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Dem_Rage_Timer2[TempInt] Equal to Demonic_SpecialEffects2
            • Then - Actions
              • Set Dem_Rage_Timer2[TempInt] = 0.00
              • Unit - Create 1 Dummy (small) for Neutral Passive at DemonicPoint facing Default building facing degrees
              • Unit - Add a Demonic_LesserWind_duration second Generic expiration timer to (Last created unit)
              • Unit - Create 1 Dummy2 (lightning) for Neutral Passive at DemonicPoint facing Default building facing degrees
              • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
              • Unit Group - Pick every unit in (Units within DemonicTimeRadius of DemonicPoint) and do (Actions)
                • Loop - Actions
                  • Set Demonic_pickedunits = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Demonic_pickedunits is Magic Immune) Equal to False
                      • (Demonic_pickedunits is dead) Equal to False
                      • (Demonic_pickedunits belongs to an enemy of (Owner of Demonic_Caster[TempInt])) Equal to True
                    • Then - Actions
                      • Unit - Cause Demonic_Caster[TempInt] to damage Demonic_pickedunits, dealing (Demonic_DamageOverTime + (Demonic_LVL_Loop x (Real(LVL_Demonic[Demonic_LoopIndex])))) damage of attack type Demonic_Attack_Type and damage type Demonic_Damage_Type
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Demonic_pickedunits is dead) Equal to True
                        • Then - Actions
                          • Set Demonic_Temp_Point = (Position of Demonic_pickedunits)
                          • Unit - Create 1 Dummy4 for Neutral Passive at Demonic_Temp_Point facing Default building facing degrees
                          • Custom script: call RemoveLocation(udg_Demonic_Temp_Point)
                          • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
                        • Else - Actions
                    • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Dem_Rage_Timer[TempInt] Greater than or equal to 0.99
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Demonic_SpellTime[TempInt] Greater than 0.00
                • Then - Actions
                  • -------- Actions --------
                  • Unit - Create 1 Dummy (small) for Neutral Passive at DemonicPoint facing Default building facing degrees
                  • Unit - Add a Demonic_LesserWind_duration second Generic expiration timer to (Last created unit)
                  • Unit - Create 1 Dummy2 (lightning) for Neutral Passive at DemonicPoint facing Default building facing degrees
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Unit Group - Pick every unit in (Units within DemonicTimeRadius of DemonicPoint) and do (Actions)
                    • Loop - Actions
                      • Set Demonic_pickedunits = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Demonic_pickedunits is Magic Immune) Equal to False
                          • (Demonic_pickedunits is dead) Equal to False
                          • (Demonic_pickedunits belongs to an enemy of (Owner of Demonic_Caster[TempInt])) Equal to True
                        • Then - Actions
                          • Unit - Cause Demonic_Caster[TempInt] to damage Demonic_pickedunits, dealing (Demonic_DamageOverTime + (Demonic_LVL_Loop x (Real(LVL_Demonic[Demonic_LoopIndex])))) damage of attack type Demonic_Attack_Type and damage type Demonic_Damage_Type
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Demonic_pickedunits is dead) Equal to True
                            • Then - Actions
                              • Set Demonic_Temp_Point = (Position of Demonic_pickedunits)
                              • Unit - Create 1 Dummy4 for Neutral Passive at Demonic_Temp_Point facing Default building facing degrees
                              • Custom script: call RemoveLocation(udg_Demonic_Temp_Point)
                              • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
                            • Else - Actions
                        • Else - Actions
                  • Hero - Modify Agility of Demonic_Caster[TempInt]: Add (Demonic_Agility_Gained + (Demonic_Agility_Rule x LVL_Demonic[TempInt]))
                  • Set Demonic_Total_Agility[TempInt] = (Demonic_Total_Agility[TempInt] + (Demonic_Agility_Gained + (LVL_Demonic[TempInt] x Demonic_Agility_Rule)))
                  • Hero - Modify Strength of Demonic_Caster[TempInt]: Add (Demonic_Strength_Gained + (Demonic_Strength_Rule x LVL_Demonic[TempInt]))
                  • Set Demonic_Total_Strength[TempInt] = (Demonic_Total_Strength[TempInt] + (Demonic_Strength_Gained + (LVL_Demonic[TempInt] x Demonic_Strength_Rule)))
                  • Hero - Modify Intelligence of Demonic_Caster[TempInt]: Add (Demonic_Intelligence_Gained + (Demonic_Intelligence_Rule x LVL_Demonic[TempInt]))
                  • Set Demonic_Total_Intelligence[TempInt] = (Demonic_Total_Intelligence[TempInt] + (Demonic_Intelligence_Gained + (LVL_Demonic[TempInt] x Demonic_Intelligence_Rule)))
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within Demonic_Radius of Demonic_TempPoint[TempInt]) and do (Actions)
                    • Loop - Actions
                      • Set Demonic_pickedunits = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Demonic_pickedunits is Magic Immune) Equal to False
                          • (Demonic_pickedunits belongs to an enemy of (Owner of Demonic_Caster[TempInt])) Equal to True
                        • Then - Actions
                          • Unit - Cause Demonic_Caster[TempInt] to damage Demonic_pickedunits, dealing (Demonic_Damage + (Demonic_LVL_Main x (Real(LVL_Demonic[TempInt])))) damage of attack type Demonic_Attack_Type and damage type Demonic_Damage_Type
                        • Else - Actions
                  • Set Demonic_SpellTime[TempInt] = (Demonic_SpellTime[TempInt] - 0.99)
                  • Set Dem_Rage_Timer[TempInt] = 0.00
                • Else - Actions
                  • Set DemonicPoint = (Position of Demonic_Caster[TempInt])
                  • Hero - Modify Agility of Demonic_Caster[TempInt]: Subtract Demonic_Total_Agility[TempInt]
                  • Set Demonic_Total_Agility[TempInt] = 0
                  • Hero - Modify Strength of Demonic_Caster[TempInt]: Subtract Demonic_Total_Strength[TempInt]
                  • Set Demonic_Total_Strength[TempInt] = 0
                  • Hero - Modify Intelligence of Demonic_Caster[TempInt]: Subtract Demonic_Total_Intelligence[TempInt]
                  • Set Demonic_Total_Intelligence[TempInt] = 0
                  • Unit - Set Demonic_Caster[TempInt] movement speed to (Default movement speed of Demonic_Caster[TempInt])
                  • Unit - Create 1 Dummy (big) for Neutral Passive at DemonicPoint facing Default building facing degrees
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within Demonic_Radius of DemonicPoint) and do (Actions)
                    • Loop - Actions
                      • Set Demonic_pickedunits = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Demonic_pickedunits is Magic Immune) Equal to False
                          • (Demonic_pickedunits belongs to an enemy of (Owner of Demonic_Caster[Demonic_LoopIndex])) Equal to True
                        • Then - Actions
                          • Unit - Cause Demonic_Caster[Demonic_LoopIndex] to damage Demonic_pickedunits, dealing Demonic_Ending_Damage damage of attack type Demonic_Attack_Type and damage type Demonic_Damage_Type
                        • Else - Actions
                  • Custom script: call RemoveLocation(udg_Demonic_TempPoint[udg_TempInt])
                  • -------- IMPORTANT SYSTEM PART START --------
                  • Set Demonic_TempPoint[Demonic_LoopIndex] = Demonic_TempPoint[Demonic_timer]
                  • Set Demonic_Caster[Demonic_LoopIndex] = Demonic_Caster[Demonic_timer]
                  • Set Demonic_Total_Strength[Demonic_LoopIndex] = Demonic_Total_Strength[Demonic_timer]
                  • Set Demonic_Total_Agility[Demonic_LoopIndex] = Demonic_Total_Agility[Demonic_timer]
                  • Set Demonic_Total_Intelligence[Demonic_LoopIndex] = Demonic_Total_Intelligence[Demonic_timer]
                  • Set Demonic_SpellTime[Demonic_LoopIndex] = Demonic_SpellTime[Demonic_timer]
                  • Set LVL_Demonic[Demonic_LoopIndex] = LVL_Demonic[Demonic_timer]
                  • Set Dem_Rage_Timer3[Demonic_LoopIndex] = (Dem_Rage_Timer3[Demonic_timer] + 0.00)
                  • Set Dem_Rage_Timer2[Demonic_LoopIndex] = (Dem_Rage_Timer2[Demonic_timer] + 0.00)
                  • Set Dem_Rage_Timer[Demonic_LoopIndex] = (Dem_Rage_Timer[Demonic_timer] + 0.00)
                  • -------- RecycleIndex --------
                  • Set Demonic_timer = (Demonic_timer - 1)
                  • Set Demonic_LoopIndex = (Demonic_LoopIndex - 1)
                  • -------- Turn the trigger again off if the index_size is below 0... --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Demonic_timer Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
            • Else - Actions
      • Custom script: call RemoveLocation(udg_DemonicPoint)

How to import: Copy dummies, triggers, spell and files in import section.



Hope you like it.

Update 1.1:fixed some leaks.Special Thanks to EdgeOfChaos for helping me fixing them.
Update 1.2:Fixed all leaks.Special Thanks to EdgeOfChaos for helping me fixing them.Also deleted the strength bonus.
Update 2.0:Many things changed.3 more triggers,new effect and dummy and Damage Over Time(Every 2 seconds Damage occurs) appearing in the hero location(not where the spell is casted,it is where the hero is).

2016:
Update 3.0: Well I'm back after 2 years with bigger imagination. I cant describe everything so you should try it better than reading. Added 2 effects, made everything (or most things) customizable (for people who want the effect permanent or short), the STR bonus is back and added AGI bonus (and finally without wait action), added a speed bonus (I'm not sure if it really increases the speed, tell me in comments). Changed the wind rate to 1 from half per second (but at the cost of half the damage), added an ending damage and an effect to express it (damage at the end of the ability + wind), and added a damage at the position of the main area of the ability (so it can go with the long period of the main effects.) And that's it. I hope it get approved because I've put much effort on it and I'll be sad to see all that effort goes for nothing.

Update 3.1

Update 3.2

Update 3.3 (Modifiers are bugged)

Update 3.4

Update 4.0 MUI: All the excess triggers and folders will be removed on approval. Any thing which can be noticed easily is made on purpose. This is finally MUI. There is a small problem with decreasing the number of indexes but it doesn't affect gameplay.

Update 4.1 MUI

Update 5: Supports 3 levels, fixed speed bonus, Loop turns off successfully. I believe it can be approved now.

Update 5.1: I made an alternative for the "Demonic_index = ___ -1" and similar triggers. Not because it isn't what it should be means it's wrong. (But it could be wrong, test it.)

Update 5.2: "Unit begins casting" and "Unit starts the effect" are now optional (with different functions). Attributes gained now supports multiple levels. Some fixes.

Update 5.3: Intelligence, variable for the duration of the spell, more fixes.

Update 6: Complete MUI. I used:
[GUI] Dynamic Indexing Template
Credits to: Hanky
This is all what I can do for recycling and MUI.


Update 6.1: Fixes and cleans. 2 more effects WITHOUT lag.

Update 7: Updated the recycling triggers, changed the colors of the models and decreased the lag. Special thanks to _Guhun_

Update 7.1: The effects frequency can now be changed. Fixed location leaks. Removed Or conditions. Attack and Damage type are now configurable. Better tooltip.

Update 8.0: Fixed an issue in recycling. Event made to "starts effect". Added unit-type conditions to solve some bugs. The second part of the special effects and periodic damage timer made configurable. Fixed some leaks. Ability's duration is now configurable. Special thanks to Dr Super Good.


Keywords:

Demon, Rage, Evil, Rampage, Chaos, Death, Demonic, Deadly, Illidan.

Use this however you like, just give credits.
Contents

DEMONIC RAGE (Map)

Reviews
MyPad
As jarring as the spell might be, the issue of indexing has been resolved, at least partially. However, getting this spell to work handily with custom durations is another thing to address, since the spell considers the hard-coded duration of the base...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: For long time as NeedsFix. Rejected.

21st Sep 2014
TriggerHappy
Spells need to be completely MUI, this only supports one instance.

10:40, 12th Sep 2014
PurgeandFire: Review:
http://www.hiveworkshop.com/forums/2586444-post30.html
 
  • Unit - A unit Begins casting an ability
->
  • Unit - A unit starts the effect of an ability
There's no need for 2 triggers, it could be done with 1
Don't use TriggerSleepActions (TSA's or Waits) there are a few ways to avoid them, Artificial waits (Tutorials section) is a recommended method.
There is a total lack of configuration for this ability
Multiple memory leaks (unit group leaks, point leaks)
The spell is unit-specific (Not MUI or MPI)
Your trigger listings should be contained with Trigger Tags ("
  • ")
  • In summary: I strongly suggest looking at quite a few tutorials on Spell making
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
Ok thanks,but as i said this is my first spell.I will try to fix it.

  • Unit - A unit Begins casting an ability
->
  • Unit - A unit starts the effect of an ability
When i tried that,I found that after the ability ends it gives bonus str(don't know if it does damage or no)

so I cant.
 
Last edited by a moderator:

EdgeOfChaos

E

EdgeOfChaos

First, post your triggers in
  • tags for easy reading.
  • Now about the code:
  • All Event Responses that are used more than once should be saved to a variable, and this variable should be used.
  • [TRIGGER]Set CasterUnit = (Triggering unit)
Like that

-----------------------------------

  • Unit - Create 1 Dummy (small) for (Owner of (Triggering unit)) at (Position of (Triggering unit)) facing Default building facing degrees
These actions will dynamically create a location, and therefore will leak.

Change them to something like this:
  • Set CasterUnit = (Triggering unit)
  • Set TempPoint = (Position of CasterUnit)
  • Unit - Create 1 Dummy (small) for (Owner of CasterUnit) at TempPoint facing Default building facing degrees
  • Unit Group - Add (Last created unit) to Dummygroup
  • Unit - Create 1 Dummy (big) for (Owner of CasterUnit) at TempPoint facing Default building facing degrees
  • Unit Group - Add (Last created unit) to Dummygroup
  • Custom script: call RemoveLocation(udg_TempPoint)
-----------------------------------

The "Wait" action is not good to use because of glitches. You could use a Timer instead, or use one of the pre-existing libraries for adding stats for a time.

-----------------------------------

  • Unit Group - Pick every unit in (Units within 850.00 of (Position of (Triggering unit)) matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause (Triggering unit) to damage (Picked unit), dealing 800.00 damage of attack type Chaos and damage type Universal
This leaks a dynamically created unit-group and a location. How to fix? Like this:
  • Set CasterUnit = (Triggering unit)
  • Set TempPoint = (Position of CasterUnit)
  • Custom script: set bj_wantDestroyGroup=true
  • Unit Group - Pick every unit in (Units within 850.00 of TempPoint matching (((Matching unit) belongs to an enemy of (Owner of CasterUnit)) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause CasterUnit to damage (Picked unit), dealing 800.00 damage of attack type Chaos and damage type Universal
  • Custom script: call RemoveLocation(udg_TempPoint)
 
Demonic, all newbies use this word >.>

That comment was unnecessary and rude. Also I like demonic names and I don't think I'm a noob.

@TO
Anything you use twice or more should be stored into a variable. Example: (Owner of CasterUnit) should be stored into a variable and the player variable should be used.
 

EdgeOfChaos

E

EdgeOfChaos

Also I forgot to mention: use timed life to remove the dummies, don't use a Wait then a unit-group remove.
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
First, post your triggers in
  • tags for easy reading.
  • Now about the code:
  • All Event Responses that are used more than once should be saved to a variable, and this variable should be used.
  • [TRIGGER]Set CasterUnit = (Triggering unit)
Like that

-----------------------------------

  • Unit - Create 1 Dummy (small) for (Owner of (Triggering unit)) at (Position of (Triggering unit)) facing Default building facing degrees
These actions will dynamically create a location, and therefore will leak.

Change them to something like this:
  • Set CasterUnit = (Triggering unit)
  • Set TempPoint = (Position of CasterUnit)
  • Unit - Create 1 Dummy (small) for (Owner of CasterUnit) at TempPoint facing Default building facing degrees
  • Unit Group - Add (Last created unit) to Dummygroup
  • Unit - Create 1 Dummy (big) for (Owner of CasterUnit) at TempPoint facing Default building facing degrees
  • Unit Group - Add (Last created unit) to Dummygroup
  • Custom script: call RemoveLocation(udg_TempPoint)
-----------------------------------

The "Wait" action is not good to use because of glitches. You could use a Timer instead, or use one of the pre-existing libraries for adding stats for a time.

-----------------------------------

  • Unit Group - Pick every unit in (Units within 850.00 of (Position of (Triggering unit)) matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause (Triggering unit) to damage (Picked unit), dealing 800.00 damage of attack type Chaos and damage type Universal
This leaks a dynamically created unit-group and a location. How to fix? Like this:
  • Set CasterUnit = (Triggering unit)
  • Set TempPoint = (Position of CasterUnit)
  • Custom script: set bj_wantDestroyGroup=true
  • Unit Group - Pick every unit in (Units within 850.00 of TempPoint matching (((Matching unit) belongs to an enemy of (Owner of CasterUnit)) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause CasterUnit to damage (Picked unit), dealing 800.00 damage of attack type Chaos and damage type Universal
  • Custom script: call RemoveLocation(udg_TempPoint)

Really thanks,that will help me much to fix it.

Also I forgot to mention: use timed life to remove the dummies, don't use a Wait then a unit-group remove.

I did all what you said in the previous post in 1 trigger,but i don't know how to make timed life to remove a dummy.:vw_wtf:
 
Last edited by a moderator:

EdgeOfChaos

E

EdgeOfChaos

  • Unit - Add a 60.00 second Generic expiration timer to (Last created unit)
That
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
  • Unit - Add a 60.00 second Generic expiration timer to (Last created unit)
That

thanks,now i will update it.

Nice this is going to get a director's cut fur sure but just to be safe include the word chaos and death somewhere in there

ok good idea,I will add it to the keywords.
 
Last edited by a moderator:

EdgeOfChaos

E

EdgeOfChaos

ok good idea,I will add it to the keywords.
He was trolling.

Now for some more stuff regarding the new triggers:

-------------------------------------------------

1: It needs a configuration trigger to be allowed on the hive spells. A user should never have to manually edit your triggers if they want to do something like change damage from 800 to 750, or the strength gain from 60 to 80.

To fix this, we make a configuration trigger. Example:
  • Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- The range for damaging the units --------
      • Set DemonicRage_Radius = 850.00
      • -------- Damage dealt to enemies --------
      • Set DemonicRage_Damage = 850.00
      • -------- Strength gained by caster --------
      • Set DemonicRage_StrGain = 60
Then alter the other triggers as needed
  • Unit Group - Pick every unit in (Units within DemonicRage_Radius of TempPoint matching (((Matching unit) belongs to an enemy of (Owner of CasterUnit)) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause CasterUnit to damage (Picked unit), dealing DemonicRage_Damage damage of attack type Chaos and damage type Universal
  • Hero - Modify Strength of CasterUnit: Add DemonicRage_StrGain
  • Hero - Modify Strength of CasterUnit: Subtract DemonicRage_StrGain
-------------------------------------------

2: Join triggers

Put the damage section of the second trigger into the first section of the first trigger. It should go before the wait. This was the trigger after some minor alterations, and it worked.
  • Demonic Rage
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to DEMONIC RAGE
    • Actions
      • Set CasterUnit = (Triggering unit)
      • Set TempPoint = (Position of CasterUnit)
      • Custom script: set bj_wantDestroyGroup=true
      • Unit Group - Pick every unit in (Units within DemonicRage_Radius of TempPoint matching (((Matching unit) belongs to an enemy of (Owner of CasterUnit)) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause CasterUnit to damage (Picked unit), dealing DemonicRage_Damage damage of attack type Chaos and damage type Universal
      • Unit - Create 1 Dummy (small) for (Owner of CasterUnit) at TempPoint facing Default building facing degrees
      • Unit - Add a 62.00 second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy (big) for (Owner of CasterUnit) at TempPoint facing Default building facing degrees
      • Unit - Add a 62.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_TempPoint)
      • Hero - Modify Strength of CasterUnit: Add DemonicRage_StrGain
      • Wait 62.00 seconds
      • Hero - Modify Strength of CasterUnit: Subtract DemonicRage_StrGain
---------------------------------------------

3: Owner of CastingUnit is used more than once; it should be stored in a variable.

  • Set CastingPlayer = (Owner of CasterUnit)
-------------------------------------------

4: We need to do something about the Wait. Waits are (generally) unacceptable due to glitches regarding the Wait function

There are ways of adding temporary stats, but they require a unit indexer and a bit of triggering knowledge, including arrays and timers.

If you don't want to go this direction, you could do something really easy: create a dummy unit, and make it cast Inner Fire on you to add extra damage/armor instead of adding extra strength.

-------------------------------------------

5: Documentation. Use the "Comment" function to indicate what you are doing in the blocks of code. This adds readability to your triggers, breaking them up into chunks.

Example:

  • Demonic Rage
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to DEMONIC RAGE
    • Actions
      • -------- Demonic Rage: This spell will deal damage to all nearby units and add strength to the caster. --------
      • -------- Declare event-response variables. --------
      • Set CasterUnit = (Triggering unit)
      • Set TempPoint = (Position of CasterUnit)
      • Set CastingPlayer = (Owner of CasterUnit)
      • -------- Deal DemonicRage_Damage damage to units in DemonicRage_Radius --------
      • Custom script: set bj_wantDestroyGroup=true
      • Unit Group - Pick every unit in (Units within DemonicRage_Radius of TempPoint matching (((Matching unit) belongs to an enemy of CastingPlayer) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause CasterUnit to damage (Picked unit), dealing DemonicRage_Damage damage of attack type Chaos and damage type Universal
      • -------- Create dummy units to show the DustWave effect. --------
      • Unit - Create 1 Dummy (small) for CastingPlayer at TempPoint facing Default building facing degrees
      • Unit - Add a 62.00 second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy (big) for CastingPlayer at TempPoint facing Default building facing degrees
      • Unit - Add a 62.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_TempPoint)
 

EdgeOfChaos

E

EdgeOfChaos

I wouldn't just give him a fixed map; that doesn't teach anything about why it's changed, or teach how to change it. Actually doing efficient coding works wonders to improve skill.
 

EdgeOfChaos

E

EdgeOfChaos

He did improve it from my last post, and said he's working on it again
 

Kazeon

Hosted Project: EC
Level 34
Joined
Oct 12, 2011
Messages
3,449
I wouldn't just give him a fixed map; that doesn't teach anything about why it's changed, or teach how to change it. Actually doing efficient coding works wonders to improve skill.

Totally agreed.

Anyway, please, post the trigger properly. Paste them between this tag:
[trigger]>>paste here<<[/trigger]

I wouldn't review until you post it :grin:
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
Try learning how to do it like this, it is must more efficient and accurate. Hope this helps lead you into the right direction.

Also put your triggers in trigger tags. For example[trigger=Example]tuh da
tuh da
tuh da[/trigger]

its [trigger=]
  • don't forget to make the = in front of the ] but after [trigger as well / at the last part right before trigger] but after [[/QUOTE]
  • Sorry,but i don't want a fixed map.If you want to help me then give me a tip.
  • [quote="Dalvengyr, post: 2585411"]Totally agreed.
  • Anyway, please, post the trigger properly. Paste them between this tag:
  • [plain][trigger]>>paste here<<
[/plain]

I wouldn't review until you post it :grin:

Thanks for that [trigger]>>paste here<<[/trigger]

I have updated the map.Review it.

I deleted the strength bonus (couldn't delete the wait so i delete it + the wait)
 
Last edited by a moderator:
Your using the wrong event, use unit - starts the effect of an ability.

Fix your condition, put the ability into a variable in your config trigger then ability being cast equal to variable.

Your spell is also extremely simple and well I can only rate it 2/5 currently because it sure looks like a unfinished spell to me, like in the testmap I provided for you I suggest doing something else with those 2 dustwaves u create, maybe move them with the caster? It'd make sense then.

Don't triple post either reyo, merge your posts into one. Good job though on mostly fixing it, waits aren't bad just difficult to use.
 
Look at page 1 and you will see why I didn't do that.

Oh that's a neat bug I never saw before, metamorphis double casts. . . Didn't know however since its a morph should of figured. Buggy ability yet again from Blizzard. =)

However even with the event you use it still bugs and double casts when it ends.

So yeah I don't see why you didn't do that.
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
Oh that's a neat bug I never saw before, metamorphis double casts. . . Didn't know however since its a morph should of figured. Buggy ability yet again from Blizzard. =)

However even with the event you use it still bugs and double casts when it ends.

So yeah I don't see why you didn't do that.

No I don't think so,try it.

I am working on update for this spell,adding a dummy and damage over time.
 
Last edited by a moderator:
While this is a nice first attempt at a spell, it is too simple to be approved. It is an AoE with a cool effect, but there aren't any other dynamics to the spell. I apologize, but that is our rule.

I am working on update for this spell,adding a dummy and damage over time.

Damage over time is a good idea. That could tip it into being approvable, but in its current state, I'll move it to "Needs Fix".
 
Level 17
Joined
Jul 17, 2011
Messages
1,863
i suppose this can be used as an effect in some single player naruto map
there is however no point in uploading it here; its too simple and the only thing someone might download it for is the model. go look at a few other spells, check out some tutorials and then try again
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
i suppose this can be used as an effect in some single player naruto map
there is however no point in uploading it here; its too simple and the only thing someone might download it for is the model. go look at a few other spells, check out some tutorials and then try again

No,it isn't too simple anymore.I don't care that you still think its too simple.
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
I like the idea of your spell, i see much effort put into this, good job :)


Maybe you want to make the start effect lasts only for a few seconds. Having a perma effect on the map is not so nice.

4/5 :)

If you want to use the spell with a timed effect you can just change the timer from 62 seconds to anything you want.
 
Last edited:
It's unfortunate that after so long some of the original criticisms still hold, regardless here's a few things I picked up when scrying:
- "Unit - A unit Begins casting an ability" -> "Unit - A unit Starts the effect of an ability"
- There is only a need to have a single loop trigger in any spells, also having a time as high as 1 seconds gives a 0.99 second margin of error for the spell time out, 0.03/0.04 are suggested/recommended to give consistent spell durations, this also means that loop config is not needed, if done properly the demonic end trigger would also not be needed
- The spell is still not MUI only permitting a single caster in any given map, this doesn't match the site rules
- The spell has no level support, another required thing for all spells in the section
- You have location leaks (setting a variable to a location doesn't fix the leak if you never use RemoveLocation(loc) to clean it
- Your spell interferes with the game scorescreen, spells should avoid doing this if possible (dummies should be owned by a neutral player)
- Controlling unit speeds needs to be done with care when you're setting a speed rather than applying a modifier that can be timed out, I advise using an aura to apply it (based off slow aura) to avoid issues arising from that
- You have rather a lot of different dummy units, they could be reduced to 1 via the use of one of the various dummy models we have on the sight and attaching the effects to them (though you will need to remember to destroy the effects, the units dying would leave the effect in memory and therefore leak
- Credit the origins of the models you are using in the spell
- Your spells have no target filter aside from enemy, it can damage magic immune units for example which doesn't match ingame mechanics (will also damage corpses)
- Your variables need prefixes to prevent collisions with other spells on the sight, e.g. DR_varName or DemonRage_varName would be suggested "DamageOverTime" is rather too generic for example, they should also be consistently named (give all variables the same prefix)

for the above reasons I'm setting the resource to needs fix as a lot of these are major flaws, I suggest reading on making MUI spells in our tutorials section
As an aside when you update a substandard/too simple resource you should notify moderators so we can take action to put them back into the pending section
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
I notified a moderator and he told me the steps to revive it (which is editing it). I don't understand anything from the tutorials so I'll need steps and examples with simple words (I know nothing about programing)
1-Unit - A unit Starts the effect of an ability" causes a bug so I cant do it.
2- The spell is still not MUI only permitting a single caster in any given map, this doesn't match the site rules, what does that mean and how do i do it?
6- "Stats - race = creep" done (will update it when i make important changes).
8- if it wasn't essential thing (will make a problem in game) then I believe it will be better as this (in order to avoid bugs and it looks very complicated.)
9- I copied the models from another map, but if someone knows about the developers then write to me.
10- How do I make a condition? (give an example + how you did it ---> what button).
11- complete (will update it when i make important changes).

Tell me in details about No.2 and how I fix it (rest of the problems after this).
 
1 - describe the bug in detail that is generated from this, it's not known to cause any errors
2 - MUI means multi-unit instable essentially the ability for lots of different units (with multiple players being able to use it on multiple units at the same time) without causing errors, to do it you need to implement any from a number of methods, this includes Dyanamic indexing, Linked Lists (recommended) & Hashtables (recommended) generally the full details I can't go into within this post as it'd be too long, you can find a starting point here which links to further examples (for dynamic indexing, some automatic systems & hashtables. Linked lists can be found here, for how to do delays properly to time out abilities or effects (such as to avoid the extra triggers there's this tutorial). If you need examples of this not in tutorials (as you've stated you don't follow them) you should have a look at pretty much any GUI approved submission on the site - they all necessarily do it. though I'd recommend recent ones since they will most closely match our existing standards, it would be impossible for me to explain things more concisely than those tutorials sans personal tutelage which I don't have the time for
6 - Stats - race - creep doesn't solve the issue, the unit itself needs to be owned by a neutral player (currently it is given to the player that owns the casting unit, it is here that needs to be changed)
8 - It's not essential, but I'd still suggest reducing the number of them otherwise, the spell doesn't really need all the effects it has. Given everything else is fixed it'd be a nitpick more than anything else
9 - It's generally not our responsibility to do the legwork for you on these things regardless of how or where you obtained them from, but I believe the chronosphere model was created by "PGRU-Unexpected", as for the dust wave model I've no idea, it should also be noted that generally you should only use third-party models if you have the rights to use them (the dust wave could easily be rip from a game we shouldn't rightfully be using) and only use effects essential to your spell generally (though we make exceptions when aesthetics are dependent on it and there's no suitable in game replacement
10 - If (multiple conditions) then -> add condition -> boolean expression -> unit category -> unit type of (picked unit) is magic immune equal to false -> rest of the actions. May want to store (picked unit) in a temporary unit variable to avoid multiple referrals if you want multiple conditions (I'd generally recommend it)
 
1 - this is probably due to how metamorphosis works, really you shouldn't be using it as a base ability (it's known for causing all kinds of weird issues)

Yes the unit groups do leak, you need to set bj_WantDestroyGroup to true every time you create a unit group in that way rather than just the once
You probably also want to move the matching unit part of the unit group selection into the if statement too, and use the temporary variable (also want to exclude structures for example, same way as before)
the biggest issue atm is ofc the lack of MUI, the restructuring necessary to implement it will probably make too substantial of a change to the spell for much to be noted (the method you're using to end the spell for example, does not work in an MUI spell)

Edit: also be sure to keep version numbers up to date on both the map and the thread, it makes it easier to know people have the latest version
 

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
  • Demonic Rage
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to DEMONIC RAGE
    • Actions
      • Trigger - Turn on Demonic Loop <gen>
      • Set CasterDR = (Triggering unit)
      • Set Demonic_Caster = CasterDR
      • Set TempPoint = (Position of CasterDR)
      • Custom script: set bj_wantDestroyGroup=true
      • -------- --------------------------------------------------------- --------
      • -------- Damage and AOE (area of effect) --------
      • Set Demonic_UnitGroup = (Units within Demonic_Radius of TempPoint matching (((Matching unit) belongs to an enemy of (Owner of Demonic_Caster)) Equal to True))
      • Unit Group - Pick every unit in Demonic_UnitGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is Magic Immune) Equal to False
            • Then - Actions
              • Unit - Cause Demonic_Caster to damage (Picked unit), dealing Demonic_Damage damage of attack type Chaos and damage type Universal
            • Else - Actions
      • Custom script: bj_WantDestroyGroup=true
      • -------- --------------------------------------------------------- --------
      • -------- Those first 8 actions is for the effect (Dummies) --------
      • Unit - Create 1 Dummy (small) for Neutral Passive at TempPoint facing Default building facing degrees
      • Unit - Add a Demonic_Effectdummies_timer second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy (big) for Neutral Passive at TempPoint facing Default building facing degrees
      • Unit - Add a Demonic_Effectdummies_timer second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy (crono) for Neutral Passive at TempPoint facing Default building facing degrees
      • Unit - Add a Demonic_Effectdummies_timer second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Dummy2 (raising skull/howl) for Neutral Passive at TempPoint facing Default building facing degrees
      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
      • -------- Demonic Rage Str gained --------
      • Hero - Modify Strength of Demonic_Caster: Add Demonic_Strength_Gained
      • Hero - Modify Agility of Demonic_Caster: Add Demonic_Agility_Gained
      • Trigger - Turn on Demonic Loop Config <gen>
      • Trigger - Turn on Demonic Loop <gen>
      • Trigger - Turn on Demonic End <gen>
  • [trigger/]
  • The unit group good as this? or I should revert?
 
Top