Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.

DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock.
Have you won a contest and still havn't received your rank award? Then please contact the administration.

IceFrog: Used it in dota
Venom: Icon (seems that DIS one does not work)
nerovesper: Reason why spell is here (request)

Hive for hosting this spell
Blizzard for making game

Version 2.0 - Max Bash Remasterd
- Totally recoded in zinc
- Spell now has option for splash bash
- Spell does not trigger when spell damage is dealt
- Now has bounce effect, so that units do not get stuck in unpathable areas

Version 2.1 - Spell Update
- Added option for height launching
- Spell can be adjusted to have just land slide, land slide with parabolic motion or just height launch
(This update was requested byhemmedo)

// -------------------------------------------------------// Some units have default ground offset height, what is that max height// so that bash does treat this units as grounded// Default: 50.constantreal SPLASH_BASH_MAX_HEIGHT =50.;

//! i local i = 0
//! i for i=1, 3 do
//! i local si = tostring(i)
//! i makechange(current,"atar",si,"Enemy,Ground,Organic")
//! i -- makechange(current,"aran",si,"99999.")
//! i makechange(current,"Hbh1",si,tostring(13+(2*i)))
//! i makechange(current,"abuf",si,"MBed")
//! i makechange(current,"Hbh5",si,"1")
//! i makechange(current,"Hbh3",si,"0.")
//! i makechange(current,"atp1",si,"Max Bash - [|cffffcc00Level ".. si .."|r]")
//! i end
//! i makechange(current,"Hbh1","3","20.")
//! endexternalblock

*/// ^// |// Change me from */ to // and then back to */ after saving and reopening the map// ============================================================================================

If you have any future questions, suggestions or found any bug feel free to comment!

19:03, 3rd Jun 2009
hvo-busterkomo:
A decently developed knockback spell, with an effect on the acceptable level. Here's my complaints:
1. You shouldn't be using the readonly syntax. I don't see much reason to use it, as most people probably aren't...

19:03, 3rd Jun 2009
hvo-busterkomo:
A decently developed knockback spell, with an effect on the acceptable level. Here's my complaints:
1. You shouldn't be using the readonly syntax. I don't see much reason to use it, as most people probably aren't very familiar with it.
2. You should place your trigger in the globals block. It is currently not private. On that note, you shouldn't be using the default name, either.
3. You should be using functions instead of arrays for configuration (more of a personal preference).
4. Personally, I find the entire way your system is setup unnecessarily overcomplicated, with custom functions only calling a single function themselves. I suggest taking a look at Silvenon's knockback system to see how you could make easy improvements.

I dont really see why this needs to be in vJASS, but I think it would be much more simpler to just use a GUI/Trigger knockback system and use a critical strike passive.

Click to expand...

It's all about the efficiency + user-friendliness + easier to work with if you know Jass

@ Dark_Dragon:
Nice use of trigonometry However, I've got a question:
I've seen you used four BJ's in your script, couldn't those be avoidable? I mean I don't know about RMaxBJ and RMinBJ, but I've notice that SetTextTagVelocityBJ has a native SetTextTagVelocity...

Since this is from DotA, I am guessing that this is Barathrum's "Greater Bash" Skill right?
Anyways, Barathrum's greater bash is just a passive knockback with a greater distance per level and more damage. It's actually easy to make this in GUI. The only hard part about it is the distance change per level.
Just read this link: http://forums.dota-allstars.com/index.php?showtopic=220166

That's how I made mine but it's in GUI and doesn't have the distance change. (It can be solved but I'm just too lazy to do it)

Try making Leviathan's Ravage Spell in vJass. I already made one in GUI and submitted it. (But no one downloaded it )

Your warm reaction makes me feel all fuzzy inside =) Btw, I didnt say how I feel about it, I think its a nice spell

Click to expand...

thanks thats why i made it

Deuterium said:

I've seen you used four BJ's in your script, couldn't those be avoidable? I mean I don't know about RMaxBJ and RMinBJ, but I've notice that SetTextTagVelocityBJ has a native SetTextTagVelocity...

Click to expand...

ohh yeah xD RMin and RMax are actually short functions which just return which of this numbers are bigger or smaller. so the reason why i used them is coz i dont know what will user setup in script above (example in current script START_SPEED > END_SPEED so it is something like defaults and i dont need that RMinBJ. however if user makes END_SPEED > START_SPEED (well duno xD maybe someone will) and if he does i dont want my spell to bug so thats why i used that if then else with Min, Max BJ-s

ofc i used them coz i know how coded they are, and they do not leak. well they will waste few nanoseconds like any other function or method call

About texttag well i just wanted to simple use that bj_lastCretedTextTag. and ofc none of this functions are single lined (thats why i used them).

note as well that all of this BJ-s Inside are supposed to be inlined by JH

well reason why i used it is coz i hate to use something i dont know (why does it like like it dose)! what do i mean? well that function TextTagSpeed2Velocity() is a BJ and it does some calculations i really have no idea why they look like that. its just that i am pissed when i dont know something expecially from math, physics which this 100% is :S

anyway dont worry its just a two BJ-s called once per spell getting triggerd

Deuterium said:

Works as it should and the knockback is nice and smooth.

Good job DD!

Click to expand...

thanks i am glade you like it!

Deaod said:

I could have done this with 8 libraries in less than 75 lines. Interested?
You do know the point of libraries is to actually USE them, dont you?

Edit: I suppose using a Critical Strike based ability may acutally reduce the number of used libraries by 5 (while still providing nearly the exact same behaviour).

Click to expand...

ohh y i know! well its just that during the time when i was lerining programming i always hadded to do everything myself since it was hard to find someone who could have teach me everything i wanted to know :S

and well when i am codining in c++ the only includes i use are the one which register natives for my use... well when it comes to school and examples we all ofc use printf(const char*, ...) well its quite a long functions since it has to read all that %d, %f, %lf, %c and a lot more... so i would really not code it myself + ofc we use #include <iostream> which u know has full of stuff which is not just registering natives... cout, cin, are the most i use xD

so i know its better not to write my own library coz it has longer code but is as well efficient as much as it could be.

all in all ty for ur comment but i just like to code all the code myself since it my spell :S

btw i have a question for u!
did you try to uncomment that line which changes RandomSeed? if so then u will see quite good randomize for short amount of time and then it will start to generate only 96 and 69... omg some kinde of blizzard bug or better to say bad algorithm i guess... heh that blizz

once again! everyone ty for all your feedback and greets!
~Dark Dragon

Actually, it wasn't IceFrogs idea. Someone other postet the hero in Hero Suggestions Thread and it got accepted. Back to topic, this spell is nice and good coded. I give it a 4/5 because this seems to be useful but its not that new.

Actually, it wasn't IceFrogs idea. Someone other postet the hero in Hero Suggestions Thread and it got accepted. Back to topic, this spell is nice and good coded. I give it a 4/5 because this seems to be useful but its not that new.

Click to expand...

:S i did not know that! well IceFrog sure takes some spells as well, well thats fine too xD

ofc its 4/5 spell which has not my idea in it does not worth 5/5 coz its not fully my work

and ofc it was requested thats just another reason that idea does not belong to me

Good c++ compilers delete code not used. And Vex's Optimizer does that as well.

This being your spell doesnt justify anything. You can still use other peoples resources, since those are useful for many kinds of applications while your reinvented wheel being a knockback system maybe has a few features less that others will miss.

Point is, stop reinventing the wheel over and over again. It's already been done. And while other peoples code may not be as efficient as it could be, why not optimize it yourself in your own map and let others optimize it themselves? Its better to use standard libraries than to reinvent a wheel a thousand times over and over again. It saves you development time, it avoids all kinds of bugs that are likely to occur in your code simply because they had more time to find and fix all those rare bugs. It helps developing standards for certain things, like Table or TimerUtils are now.

Did you try and uncheck "Use fixed random seed" in one of the option panels of the world editor?

Point is, stop reinventing the wheel over and over again. It's already been done.

Click to expand...

Why depend on others when you're able of doing the whole job easily yourself?
If DarkDragon can easily do the whole spell without using libraries and have it as efficient as possible... then there's no reason for using them

Dark_Dragon said:

:S i did not know that! well IceFrog sure takes some spells as well, well thats fine too xD

Click to expand...

Yup he sure does. He's always mentioning in his blog how he appreciates people sending him emails containing ideas

Good c++ compilers delete code not used. And Vex's Optimizer does that as well.

Click to expand...

Deaod said:

This being your spell doesnt justify anything. You can still use other peoples resources, since those are useful for many kinds of applications while your reinvented wheel being a knockback system maybe has a few features less that others will miss.

Click to expand...

a well i did not mean that i have no right to use other people resources! hmm i just dont know how to explain what my problem was :S well its just that i never used anyones code coz i hadded to learn myself from the start to the end... and if i where using other people work, well simple to say i would know less then i know now.

ofc i understand that there resources are made for me/anyone else to use them so i just need to give credits.

:O i did not know that vexs optimizer does that! so if i make too much or better to say multiple private H2I funcs vexs optimizer removes them and use only a main one?

well thats cool

Deaod said:

Point is, stop reinventing the wheel over and over again. It's already been done. And while other peoples code may not be as efficient as it could be, why not optimize it yourself in your own map and let others optimize it themselves? Its better to use standard libraries than to reinvent a wheel a thousand times over and over again. It saves you development time, it avoids all kinds of bugs that are likely to occur in your code simply because they had more time to find and fix all those rare bugs. It helps developing standards for certain things, like Table or TimerUtils are now.

Click to expand...

o well i get your point and well its true that i could even optimize it as i want + it would save me time and make it more stable coz once i made an library i can always use it instead of rewriting same code hundret times. i know you are correct about this so ill see what i can do, maybe at leat write my own librarys which ill use whole the time insted of writing same thing again and again. ofc its not just the extra time i need to write all that but as well taking space in RAM for extra functions... well even if we today have about 2 GB RAM i have 1.5 GB :S anyway i still will take ur suggestion and will see what i can do

Deaod said:

Did you try and uncheck "Use fixed random seed" in one of the option panels of the world editor?

Click to expand...

wot i never even knew about this! so i just went to check it now and y it is not enabled so it is supposed to work... but it does not, it crashes at least for me :S

however ty for telling me abot this, did not know it exists!

Deuterium said:

Why depend on others when you're able of doing the whole job easily yourself?
If DarkDragon can easily do the whole spell without using libraries and have it as efficient as possible... then there's no reason for using them

Click to expand...

well that depends on who is writing the code and how well is it done...
example struct.allocate() is a well coded method with fast algorithm as well as destroy method. since many people who are now programming in vjass dont even know about making some fast algorithms there is this standart. so you dont need to know everything complex by urself but you can use others people script which is faster then that autors code...

the same goes for librarys Deaod spoke of! there are quite well coded standards already but well they are made to work with most of stuff you need. however even that sometimes is not enough so you still need to code some stuff urself... the good thing is that it saves ur time, decreases lines of code and simple does not require you to register new functions again. so this is quite good but speed might be only a little slower for example:

blizzards one works for any inputed numbers but my works only for positive ones. and thats enough for me in this spell so i made it faster which matches my spell.

the same goes for other people librarys they must make all there stuff work in any situation, which makes it a bit slower... but still all other things like time and rewriting bla bla is as well important... so its the reason i dont know which one to choose xD

Deuterium said:

Yup he sure does. He's always mentioning in his blog how he appreciates people sending him emails containing ideas

Click to expand...

well i never talked to him or posted anything in forums...
the only thing i did for dota is reported bug with razors ultimate not changing damage per level until he dies or gets stunned...

ofc i posted in that suggestion like Multi Kill rather then just playing tripple kill even if u kill more then 3 but he never gave replay nor anything else... since he saw in that map that i was a GUI noob... triggers full of leaks non-MUI stuff... so he just took my bug report and nothing else... well thats fine with me xD

Deuterium, read the rest of my post. I could reinvent the wheel a thousand times over and over again. I could make each spell of mine include a group and timer recycling system. But after a few times of implementing all that crap you get tired of it. So you just reuse code you wrote before, this allows you to use that time you previously needed to implement the recycling to code new, creative things.

Dark_Dragon, seems like i didnt express myself correctly. The optimizer does not delete functions that are referenced later in the map script, it only deletes completely unused functions that are never called or executed. It also wont merge multiple instances of the H2I function.

WC3 typically uses ~90 MB of RAM. WC3 will be completely unusable long before you get anywhere near 1.5 GB of used RAM.

I've seen say these things more then once, so thought you'd like to know that what ur saying is wrong literaly...
The past tense of have is had not hadded.
It's reply and not replay...
replay is when you re-watch a movie or re-listen to a song - basically playing something again: re-play

Dark_Dragon said:

the only thing i did for dota is reported bug with razors ultimate not changing damage per level until he dies or gets stunned...

Click to expand...

This bug must have been before i even knew warcraft existed... and i cant imagine any situation in which you could possibly have noticed that bug

Dark_Dragon, seems like i didnt express myself correctly. The optimizer does not delete functions that are referenced later in the map script, it only deletes completely unused functions that are never called or executed. It also wont merge multiple instances of the H2I function.

Click to expand...

ahh soo... sry i got confused for a sec yy u explained it well its just me who got it wrong. well optimizer removes only funcs which are never called xD

Deaod said:

WC3 typically uses ~90 MB of RAM. WC3 will be completely unusable long before you get anywhere near 1.5 GB of used RAM.

Click to expand...

o yeah well i actually did not even think about using 1.5 GB! i only thought that well for each function it has to use some small amount of RAM but i dont think i would break the limits

Anyway thanks for explaining things +rep!

Deuterium said:

I've seen say these things more then once, so thought you'd like to know that what ur saying is wrong literaly...
The past tense of have is had not hadded.
It's reply and not replay...
replay is when you re-watch a movie or re-listen to a song - basically playing something again: re-play

Click to expand...

ahh thanks for telling me about this mistakes, ill make sure not to write that bad

Deuterium said:

This bug must have been before i even knew warcraft existed... and i cant imagine any situation in which you could possibly have noticed that bug

Click to expand...

ahh you are right that was an hard bug to find and it existed from beginning...
well i cant remember correctly but i know that i found it out when i was making my own ability from passive immolation. then it did not work when i level up, but when i died it was again fine :S so i checked it in dota and saw that this bugs there as well xD