HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

emjlr3's Spell Map 1

08-18-2006, 03:21 AM#1
emjlr3
a few spells made for a contest Daelin hosted at the helper

all the neat imports removed, but still worthy of an uplaod IMO

Sword Blast:

Lash out, slicing your sword forward, sending nearby enemies in a cone from your facing sailing backwards for a duration, and dealing damage.

Elemental Helix:

Summons 2 mighty orbs, 1 of fire, and 1 of ice, which are sent careening towards the target in a helix, dealing damage to all they encounter.

Blaze:

Sends three flaming waves a fire outward, each with a mind of it's own. If a unit enters the path, that wave explodes on the unit, dealing initial damage and damage/sec to enemies in a AOE. Upon contact, the flames split into 2 smaller versions, dealing half damage and going half the distance at half the speed.

Sonic Boom:

Sends forth a wave at speeds in excess of that of sound, causing enemies in its path to be silenced and lose mana.


Enjoy !!!
Attached Images
File type: jpgblaze.JPG (135.3 KB)
File type: jpgsonic boom.JPG (115.3 KB)
File type: jpgele helix.JPG (91.2 KB)
File type: jpgsword blast.JPG (87.7 KB)
Attached Files
File type: w3xemjlr3's spell map1.w3x (102.8 KB)
08-18-2006, 07:21 AM#2
vile
You forgot to attach the actual spell map ;)
08-18-2006, 12:44 PM#3
emjlr3
oopps, lol, guess I will have to do that when I get home...blarg
08-22-2006, 02:16 AM#4
emjlr3
hrmmm..not a single comment...where you at Pipe?
08-22-2006, 03:24 PM#5
blu_da_noob
Looking through 4 spells-worth of code for bugs/leaks/etc takes quite a long time. I am busy working through it.
08-22-2006, 04:00 PM#6
emjlr3
kk ^^
08-22-2006, 04:05 PM#7
blu_da_noob
Please remove random unnecessary stuff from the map (animation index test trigger etc). You also have your whole set of functions which you use in the map header for no apparent reason (one of the spells uses a function from them, but one of the other spells has a separate copy of the same thing instead; please be consistent and only include what is actually needed). Some basic implementation instructions (what to copy, where), while not required, would not go amiss.

Note: functions can be constant even if they take a parameter, so please change all the ones that take the ability level as a parameter to constant.

General:
Some fixing of not nulling timers would be a good idea. You do it very inconsistently.
You use SetUnitPosition instead of SetUnitX/Y. Reason?

Blaze:
It would be nice to have constant functions to set the number of times a missile can split and how many it splits into etc.
Starting a separate timer for each individual split 'flame' is unecessary. Making one timer and and attaching a group with all of them would be more efficient.
You should store the cos and sin of an angle on the unit/timer and use that instead of storing the angle and using the trig functions each time the timer expires.
Your method of making the flames move randomly seems weird. You move them in a set direction (angle never changes) and then just add a random number on to that. Is that intentional?
Your movement function should end itself if all the flames are dead, instead of running until the distance is reached.

Elemental Helix:
Once again you have a constant angle which you use Cos/Sin for multiple times. Store them.

Sonic Boom:
Has an unused SonBPreload function.
Sonic Boom works in a shockwave-like line (constant width), not like Carrion Swarm (increasing width). The effect is a bit misleading.
Don't use bj_LastCreatedUnit for storage. Only ever use temporary bj globals (such as those in the GroupPickRandomUnit function etc).
Once again you have a constant angle which you use Cos/Sin for multiple times. Store them.

Sword Blast:
You use an unusual method to find the units in a 'cone' and it isn't very accurate. Why not use a proper quadrilateral check?
You create two new timers for each unit being knocked back. Create one and attach a group with all the knocked-back units. You also don't need to have a separate timer for total duration. Attach the duration to each unit and reduce it each time the unit is moved. Remove the unit from the group when duration <= 0.
In SwoB_Slide_Child you clear an attached table on destruction, but store a value in that table afterwards.
08-22-2006, 04:19 PM#8
emjlr3
god i suck
08-22-2006, 04:35 PM#9
blu_da_noob
Because?
08-22-2006, 04:45 PM#10
emjlr3
http://www.wc3campaigns.net/showpost...32&postcount=7

^^
08-22-2006, 07:22 PM#11
blu_da_noob
You are not required to fix all of those for approval. Many are tips for more efficient general coding, but fixing up some of the easier stuff (such as caching sin/cos values) would definitely help here.

I'm also interested in the reason as to why you don't use SetUnitX/Y.
08-22-2006, 07:45 PM#12
emjlr3
is there really a difference, its just easier for me, and 1 less line of code, to use SetUnitPosition, then SetUnitX/Y

is there something I am missing here?
08-22-2006, 07:47 PM#13
blu_da_noob
SetUnitX/Y is faster (it ignores pathing checks etc). Just have to be careful of going outside of the map area (causes a crash).
08-23-2006, 07:30 PM#14
blu_da_noob
So are you updating this at all? At the very least you should fix the handl-hostage leaks and remove the excess functions.
08-23-2006, 07:54 PM#15
emjlr3
i have not gotten around to it yet, sry, patience young padawon