• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Come to hell V1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
I make this spell from my imagination and my World Editor :D



BTNSpirit_Link.jpg
The hero creates a gateway to hell hot, attracting all nearby enemy units, as they approach the door are damaged by fire, once they reach the gate of hell explodes causing great damage.

Level: 1/2/3/4.

Damage: 10/20/30/40 per second.
Explosion Damage: 200/325/450/575.
Area of Effect: 250/375/500/625.
Duration: 10 seconds.

Mana Cost
: 100/200/300/400.
Cooldown: 80 seconds.

Original HStyleV.

http://www.hiveworkshop.com/



  • Come to hell
    • Events
      • Unit - A unit Starts the effect of a skill
    • Conditions
      • (Ability Being cast) Equal to Come to hell
    • Actions
      • Set A_Index [0] = 0
      • A_Index Set [1] = 0
      • Set A_Boolean [A_Index [1]] = False
      • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
        • If: Conditions
          • A_Index [0] Equal to 0
        • Then: Actions
          • Trigger - Turn on Come to hell Loop <gen>
          • Trigger - Turn on <gen> Effects Come to hell
        • Other: Actions
      • Set A_Index [0] = (A_Index [0] + 1)
      • A_Index Set [1] = (A_Index [1] + 1)
      • Set A_Caster [A_Index [1]] = (Triggering unit)
      • Set A_Damage [A_Index [1]] = (75.00 + (125.00 x (Real ((Level of Come to hell for A_Caster [A_Index [1 ]])))))
      • Set A_Duration [A_Index [1]] = 10.00
      • Set A_Time [A_Index [1]] = 0.00
      • Set A_Velocity [A_Index [1]] = (2.00 x (Real ((Level of Come to hell for A_Caster [A_Index [1 ]]))))
      • Set A_MaxRange [A_Index [1]] = (125.00 + (125.00 x (Real ((Level of Come to hell for A_Caster [A_Index [1 ]])))))
      • Set A_MinRange [A_Index [1]] = 100.00
      • Set A_Group [A_Index [1]] = (random 0 units from (Units in (Playable map area)))
      • Set A_Region [A_Index [1]] = (Region centered at (Position of A_Caster [A_Index [1]]) with size (30.00, 30.00))
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop: Actions
          • Special Effect - Create a special effect at ((Position of A_Caster [A_Index [1]]) offset by A_MaxRange [A_Index [1]] Towards ((Real ((Integer A))) x 60.00) degrees) using Abilities \ Spells \ Orc \ WarStomp \ WarStompCaster.mdl
          • Special Effect - Destroy (Last created special effect)
      • Set A_Boolean [A_Index [1]] = True


  • Come to hell Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A_Index [2]) from 1 to A_Index [1], do (Actions)
        • Loop: Actions
          • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
            • If: Conditions
              • And - All (Conditions) Are true
                • Conditions
                  • A_Boolean [A_Index [2]] Equal to True
                  • (A_Region [A_Index [2]] contains A_Caster [A_Index [2]]) Equal to True
            • Then: Actions
              • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
                • If: Conditions
                  • A_Time [A_Index [2]] Less than A_Duration [A_Index [2]]
                • Then: Actions
                  • Set A_Time [A_Index [2]] = (A_Time [A_Index [2]] + 0.03)
                  • Unit Group - Pick Every unit in (Units Within A_MaxRange [A_Index [2]] of (Position of A_Caster [A_Index [2]])) and do (Actions)
                    • Loop: Actions
                      • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
                        • If: Conditions
                          • And - All (Conditions) Are true
                            • Conditions
                              • ((Picked unit) is A structure) Equal to False
                              • ((Picked unit) is alive) Equal to True
                              • ((Picked unit) Belongs to an enemy of (Owner of A_Caster [A_Index [2]])) Equal to True
                              • ((Picked unit) is in A_Group [A_Index [2]]) Equal to False
                        • Then: Actions
                          • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
                            • If: Conditions
                              • (Distance between (Position of A_Caster [A_Index [2]]) and (Position of (Picked unit))) Greater than A_MinRange [A_Index [2]]
                            • Then: Actions
                              • Unit - Turn collision for (Picked unit) Off
                              • Unit - Move (Picked unit) Instantly to ((Position of (Picked unit)) offset by A_Velocity [A_Index [2]] Towards (Angle from (Position of (Picked unit)) to (Position of A_Caster [A_Index [2]] )) degrees)
                            • Other: Actions
                              • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
                                • If: Conditions
                                  • ((Picked unit) is in A_Group [A_Index [2]]) Equal to False
                                • Then: Actions
                                  • Unit - Cause A_Caster [A_Index [2]] to damage (Picked unit), dealing A_Damage [A_Index [2]] Damage of attack type Spells and damage "type Normal
                                  • Special Effect - Create a special effect at (Position of (Picked unit)) using Abilities \ Spells \ Orc \ WarStomp \ WarStompCaster.mdl
                                  • Special Effect - Destroy (Last created special effect)
                                  • Special Effect - Create a special effect at (Position of (Picked unit)) using Abilities \ Spells \ Human \ Thunderclap \ ThunderClapCaster.mdl
                                  • Special Effect - Destroy (Last created special effect)
                                  • Unit Group - Add (Picked unit) to A_Group [A_Index [2]]
                                  • Unit Group - Pick Every unit in A_Group [A_Index [2]] and do (Actions)
                                    • Loop: Actions
                                      • Unit - Turn collision for (Picked unit) Power
                                • Other: Actions
                        • Other: Actions
                • Other: Actions
                  • Unit Group - Pick Every unit in A_Group [A_Index [2]] and do (Actions)
                    • Loop: Actions
                      • Unit Group - Remove (Picked unit) from A_Group [A_Index [2]]
                  • Set A_Boolean [A_Index [2]] = False
            • Other: Actions
              • Set A_Index [0] = (A_Index [0] - 1)
      • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
        • If: Conditions
          • A_Index [0] Equal to 0
        • Then: Actions
          • A_Index Set [1] = 0
          • Trigger - Turn off (This trigger)
        • Other: Actions


  • Come to hell Effects
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A_Index [2]) from 1 to A_Index [1], do (Actions)
        • Loop: Actions
          • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
            • If: Conditions
              • A_Boolean [A_Index [2]] Equal to True
            • Then: Actions
              • Special Effect - Create a special effect at (Position of A_Caster [A_Index [2]]) using Abilities \ Spells \ Human \ Flamestrike \ FlameStrike1.mdl
              • Wait 1.50 seconds
              • Special Effect - Destroy (Last created special effect)
            • Other: Actions



Keywords:
hell, come, to, nice, work, shop, aoe, area, trigger, mui, gui, effect, nice, best, greater, than, better
Contents

Come to hell (Map)

Reviews
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. 10:48, 9th May 2011 Bribe: Six location leaks per cast because of the loop: Special Effect - Create a special effect at ((Position of A_Caster[A_Index[1]]) offset by...

Moderator

M

Moderator

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

10:48, 9th May 2011
Bribe:

Six location leaks per cast because of the loop:

  • Special Effect - Create a special effect at ((Position of A_Caster[A_Index[1]]) offset by A_MaxRange[A_Index[1]] towards ((Real((Integer A))) x 60.00) degrees)
And additional location leak and also a region leak:

  • Set A_Region[A_Index[1]] = (Region centered at (Position of A_Caster[A_Index[1]]) with size (30.00 30.00))
Because you never remove the region later on.

The periodic trigger leaks plenty. You need a bj_wantDestroyGroup = true line before this:

  • Unit Group - Pick every unit in (Units within A_MaxRange[A_Index[2]] of (Position of A_Caster[A_Index[2]])) and do (Actions)
Two location leaks here:

  • (Distance between (Position of A_Caster[A_Index[2]]) and (Position of (Picked unit))) Greater than A_MinRange[A_Index[2]]
Two location leaks here:

  • Special Effect - Create a special effect at (Position of (Picked unit)) using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at (Position of (Picked unit)) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
  • Special Effect - Destroy (Last created special effect)
You don't need "And" here as all conditions are already checked before proceeding by default.

  • And - All (Conditions) are true
    • ((Picked unit) is A structure) Equal to false
    • ((Picked unit) is alive) Equal to true
    • ((Picked unit) belongs to an enemy of (Owner of A_Caster[A_Index[2]])) Equal to true
    • ((Picked unit) is in A_Group[A_Index[2]]) Equal to false
 
Level 10
Joined
Apr 25, 2009
Messages
296
  • Special Effect - Create a special effect at (Position of A_Caster [A_Index [2]]) using Abilities \ Spells \ Human \ Flamestrike \ FlameStrike1.mdl
  • Wait 1.50 seconds
  • Special Effect - Destroy (Last created special effect)
Waits :(
Either use a local, integer array, or hashtable to fix that...

You leak points... (Position of Unit) leaks...
Set them to variables, and destroy them...
  • Set POINTA = Position of Unit
  • --------------------------------------
  • Custom script: call DestroyLocation(udg_POINTA)
Unit groups leak, use
  • Custom script: set bj_wantDestroyGroup = true
That before the unit group to remove the leak...

I don't see you turning of "Come to hell effects" trigger when the spell is done, and you could merge it with the normal loop...

Make these constants a variable in map initialization, as it makes the spell more configurable... (Eg 4 + 2 x DAMAGE) -> (Variable + Variable2 x DAMAGE)
  • Set A_Damage [A_Index [1]] = (75.00 + (125.00 x (Real ((Level of Come to hell for A_Caster [A_Index [1 ]])))))
  • Set A_Duration [A_Index [1]] = 10.00
  • Set A_Time [A_Index [1]] = 0.00
  • Set A_Velocity [A_Index [1]] = (2.00 x (Real ((Level of Come to hell for A_Caster [A_Index [1 ]]))))
  • Set A_MaxRange [A_Index [1]] = (125.00 + (125.00 x (Real ((Level of Come to hell for A_Caster [A_Index [1 ]])))))
  • Set A_MinRange [A_Index [1]] = 100.00
  • Set A_Group [A_Index [1]] = (random 0 units from (Units in (Playable map area)))
  • Set A_Region [A_Index [1]] = (Region centered at (Position of A_Caster [A_Index [1]]) with size (30.00, 30.00))
Don't use
  • For each (Integer A) from 1 to 6, do (Actions)
Use:
  • For each (YOUR VARIABLE) from 1 to 6, do (Actions)
Its uses fewer function calls...

What correlation does
nice, best, greater, than, better
Have with this spell?

Also, I have no idea if you indexing system is working... try the spell on like 6 units at random times... and see if it works...

It seems to work
Effect works, SFX don't.
 
Last edited:
Level 5
Joined
Nov 17, 2010
Messages
28
Normal loop is every 0.03 seconds, and a special effect every 0.03 seconds is so much, thats generate laggy. :S

I use wait for destroy the special effect, because the effect is long, and if I don't use wait the effect don't exist! :O, sorry for my fucking english, I'm argentinian(Messi) Languaje: Spanish :S

I don't use set bj_wantDestroyGroup

I think
Pick every units in (UnitGroup)
Remove (Picked units) from (UnitGroup)

is better than script.
 
Level 10
Joined
Apr 25, 2009
Messages
296
Normal loop is every 0.03 seconds, and a special effect every 0.03 seconds is so much, thats generate laggy. :S

You... use an integer count... every (.03) seconds you increase it to one... until its greater than 33. Then you reset it to 0, and create the SFX effects... Alas, the loops are merged...

I use wait for destroy the special effect, because the effect is long, and if I don't use wait the effect don't exist! :O, sorry for my fucking english, I'm argentinian(Messi) Languaje: Spanish :S
Pretty sure it works fine without the wait, if it doesn't, use a:
-Hashtable
-Local
-Integer Array
to fix the problem... waits... will screw up unless you're using locals...

Also, your English is considerably good.


I don't use set bj_wantDestroyGroup

I think
Pick every units in (UnitGroup)
Remove (Picked units) from (UnitGroup)
is better than script.
Sure, you remove the units, but you don't remove the unit group that was created... variable set unit groups you don't have to destroy, but:
  • Unit Group - Pick every unit in (UnitGroup) and do...
That leaks.
  • Custom script: set bj_wantDestroyGroup = true
That removes the leak, if you set it before the (UnitGroup) action...

It goes in the order of worst to best:
GUI < Custom Script < Jass < vJass < Narwhals

Red = My comments.

Also, I'd suggest fixing your other spells first, or deleting them if they are deemed unfixable, before uploading more spells.

Responding = Win
Not responding = Frowny Face
 
take a look at this:
  • Set A_Index [0] = 0
  • Set A_Index [1] = 0
  • Set A_Boolean [A_Index [1]] = False
  • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
    • If: Conditions
      • A_Index [0] Equal to 0
    • Then: Actions
      • Trigger - Turn on Come to hell Loop <gen>
      • Trigger - Turn on <gen> Effects Come to hell
    • Other: Actions
you set A_Index[0] to 0, and still check if that value is zero... what the?

and from this, I could say that this isn't MUI... coz after that line you set those vars into their value + 1, so that would be 1, which is the index that you use to save the objects, and for each cast, the index used is always 1...
 
Level 10
Joined
Apr 25, 2009
Messages
296
No, the spell is not MUI... the 'pull' seems to be MUI, but the SFX effects lack being MUI.

The spell... its an AoE hook that's more of an effect then a hook.

To clarify, all you're doing is pulling units towards the caster and inflicting damage at the center, while making warstomp effects at every 45 degrees, and a flamestrike at the center, creating a 'portal'.

Its not MUI because the warstomp effects don't work when cast multiple times... everything else works...

This could be simplified, by creating a dummy unit to cast flamestrike with 0 damage, and it'll even have a birth animation....

Here's my rating...

-Below average triggering = 0
-Not MUI = 0
-Decent visuals = +1
-Decent effect = +1
-Not really unique but somewhat useful idea* = +1

Verdict: 3/5.

Fixing = Increase in rating.

*Dante's Inferno, (Most) Mythologies, and (Most) Religions use the same idea...
 
Top