• 🏆 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!

Rain of [X] System, Version 1.1a

I haven't found a system like this here, so I wanted to create one. With this system can you create whatever Rain of Fire spell you want to. It is a very simple system and every beginner should understand how to edit it, because I've added comments and such. This system is 100% MPI and MUI and has 0% memory leaks.

Well, please comment and rate :D

- - - - - Introduction - - - - -

This system is created by The_Flood (Flood @ hiveworkshop) and allow you to design and easily modify Rain of X spells.
You may create a Rain of Fire, Rain of Water or Rain of Lightning.
With this system you can create all kind of raining abilities!
Notice that you'll not have to channel those Rain spells. Future updates may have an option if the caster should channel or not.

- - - - - How can I create my own Rain of X spell? - - - - -

Well, copy either the Test Spell 1 or Test Spell 2 trigger and read through the actions they've got.
After that you change the condition ((Ability being cast) Equal to Test 1) to the ability you'll use for this Rain of X.
If you've read through the action you can begin your editing, change your Rain of X's AoE, damage, effects,
number of shards/waves and more... You can easily read the comments above each action if you aren't sure of what this action does.
When you're done with your editing, test your spell ingame! :D

- - - - - What things do I need to import into my map? - - - - -

Lucky, there isn't alot of things, the things you need to import are:
> Triggers (F4)
- RoX Loop
- Shard Loop
- Test Spell 1 / Test Spell 2 / Your spell trigger

> Units (F6)
- Shard_Dummy

> Imports (F12)
- DUMMY.mdx (This is an invisible unit that has attachment points, the Shard_Dummy unit uses this model)

> Abilities (F6)
- Test Spell 1 / Test Spell 2 / Your spell ability

- - - - - Warnings! - - - - -

This system may enter in high loop numbers if you're using alot of shards each wave of a spell.
This will cause heavy lagg to all players, but if you set the number of shards each wave below 15 it should not be a problem.
So... Take it easy with this system, I tried to create a Rain of X spell and try how much my computer could take with casting alot of
Rain of X spells, I had 10 waves and 20 shards on this spell I edited. I had to cast the spell about 30 times before my computer started
to lagg, but the lagg will dissapear when all the wave ends. :)



> Version 1.0a
- Release.

> Version 1.1a
- Fixed a leak, sorry for that.
- Added an option, with this you can adjust the starting height of the shards.


Keywords:
Rain, of, Fire, Water, Lightning, Poison, System, Simple, GUI, Advanced, Basic, Beginner,
Contents

Rain of X System, Version 1.1a (Map)

Reviews
16:18, 29th Apr 2010 The_Reborn_Devil: The triggering looks good and this system is very useful for GUI users. Status: Approved Rating: Recommended

Moderator

M

Moderator

16:18, 29th Apr 2010
The_Reborn_Devil:

The triggering looks good and this system is very useful for GUI users.


Status: Approved
Rating: Recommended
 

Rmx

Rmx

Level 19
Joined
Aug 27, 2007
Messages
1,164
I saw the spell it is an impressive system but >>

1 : It leaks the Target point of ability being cast when you index it, you don't remove the location.

2 : Make the unit fall from more height they seem like moving on the ground, if you look at it artisticaly :p

This is it for now ^^

Edit : Forgot to rate ... 4/5 ... keep the good work and +reP **)
 
Last edited:
Level 19
Joined
Aug 16, 2007
Messages
881
I saw the spell it is an impressive system but >>

1 : It leaks the Target point of ability being cast when you index it, you don't remove the location.

2 : Make the unit fall from more height they seem like moving on the ground, if you look at it artisticaly :p

This is it for now ^^

Edit : Forgot to rate ... 4/5 ... keep the good work and +reP **)

Oh, didn't see that leak, anyway. I've uploaded a new version 1.1a and in that update the leak is removed :) I also added an option that make you able to adjust the starting height of the shards :p

Thx for the help! +rep
 
Level 19
Joined
Aug 16, 2007
Messages
881
Didn't look at it much, but.... indexing?

That will not be in compliance with new rules, but I don't mind. 5/5, as it's easy to edit. Not really efficient (GUI), but no problem.

Huh? New rules, I must have missed that. So, aren't you allowed to use the indexing system anymore? :eek:

Edit: Thx for the rating btw :) +rep
 
Level 9
Joined
Nov 25, 2008
Messages
194
Well I think from what the rules tell it wouldn't be allowed, but i guess it would hardly even reach 8190.

Still you can easily recycle indexes.

Now you might wanna ask:
Hey why is the "basic" System so bad?

Well let's assume you have a DoT system and use it with spells, which have like 1min duration. Now everyone spams DoT's and the system keeps on counting higher and higher, but never resets, because before all DoT's end there are new ones cast, so it might crash the 8xxx limit sometime (still not very probable but it might).

Using recycling, you would have to have 8190 instances RUNNING to reach the limit.

Recycling works like this (assuming we have 4 spells running; the numbers symbolize their index)
Code:
1 2 3 4 ---All 4 spells run, now spell 3 ends
1 2   4 ----Now spell 4 is set in the free space (so all "4" variables have to be set to "3" variables
1 2 4  ---Now spell 2 ends/ same procedure
1    4
1 4 --Now spell 4 ends no recycle
1 ---now spell 1 ends finish turn off loop and so on

EDIT: I was inspired by Dynasti's struct tutorial
 
Level 19
Joined
Feb 25, 2009
Messages
2,004
Good at all, but it is damaging both enemies and allies?
And, what if I want to make the fire test spell with a damage-per-second?
Something like, 50 initial damage (when the fire ball hits the ground)
and a 10 damage/second when it hits an enemy unit?
Try adding something like this, it should be good.
 
Level 19
Joined
Aug 16, 2007
Messages
881
Good at all, but it is damaging both enemies and allies?
And, what if I want to make the fire test spell with a damage-per-second?
Something like, 50 initial damage (when the fire ball hits the ground)
and a 10 damage/second when it hits an enemy unit?
Try adding something like this, it should be good.

You can set two options if it will damage enemies and/or enemies and allies or structures. Yes, I may add a dps option like that :D
 
Level 5
Joined
Dec 8, 2008
Messages
102
if you use indexes, you can find out the first free index place with an easy snip of code or with a little gui trigger, you can find a tutorial here in thehive or on wc3campaigns how to do that, the system itself would be uberuseful if it would be vJass
4/5
 
Level 3
Joined
Jan 7, 2010
Messages
37
Awesome stuff!

EDIT:

I found two bugs in the version 1.1a I downloaded here:

1. in the RoX Loop, where the array gets reduced, the following condition of the if-statement is causing a bug. Both arrays are checked in an "and-condition". This will cause the trigger to never stop.

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • RoX_NumberOfWaves[RoX_Index[3]] Less than or equal to 0
    • Then - Actions
      • Custom script: call RemoveLocation(udg_RoX_TargetPoint[udg_RoX_Index[3]])
      • Set RoX_Index[2] = (RoX_Index[2] - 1)
      • Set RoX_Off[RoX_Index[3]] = False
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • RoX_Index[2] Less than or equal to 0
          • RoX_Index[1] Less than or equal to 0
        • Then - Actions
          • Set RoX_Index[1] = 0
          • Trigger - Turn off RoX Loop <gen>
        • Else - Actions
    • Else - Actions
To fix this, there must be only checked for RoX_Index[2].

  • If - Conditions
    • RoX_Index[2] Less than or equal to 0



2. in the RoX Loop, before the spell gets killed, the "RoX_Off" bool is set to "False".

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • RoX_NumberOfWaves[RoX_Index[3]] Less than or equal to 0
    • Then - Actions
      • Custom script: call RemoveLocation(udg_RoX_TargetPoint[udg_RoX_Index[3]])
      • Set RoX_Index[2] = (RoX_Index[2] - 1)
      • Set RoX_Off[RoX_Index[3]] = False
    • Else - Actions
But it has to be "True".

  • Set RoX_Off[RoX_Index[3]] = True
Otherwise the "finished" or "dead" spells will continue running, causing an "override" of variables.
 
Last edited:
Top