HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Dance of the Red Moon

08-29-2006, 10:11 PM#1
UnMi
Dance of the Red Moon 1.50
Zoom (requires log in)
Description:
Surprises an enemy from behind to perform a Multi-Slash-Combo, each of them triggered by the player himself by pressing Arrow-Keys according to the displayed commands. The performing Hero will ignore any kind of Buffs and will be almost impossible to hit. The combo however will be canceled if the player presses a wrong key or is too slow to press one.

Changelog:
1.1:
- Improved Command List customizing
- Standard Allowed Command Delay set to 5.00
- Improved Codings (20% lessened)
1.2:
- Fixed critial error due to bad handle var handling
1.3:
- Fixed error for good now >>;
1.31:
- Final adjusting to the JESP
1.40:
- Removed memory leaks caused by TriggerActions
1.41:
- Fixed the cooldown bug
1.50:
- Implemented optional Random Commands
Attached Images
File type: jpgDance of the Red Moon Screenshot.jpg (57.8 KB)
Attached Files
File type: w3xDance of the Red Moon 1.50.w3x (41.4 KB)
08-29-2006, 11:07 PM#2
Taur
Dont you think thats a bit too many keys to press? Especially since war3 does delay a bit in key events.
08-30-2006, 08:40 AM#3
blu_da_noob
I can't check out how much time users have to press the keys, but I'm guessing it would suck for any kind of BNet play. It also appears to be have an effect pretty similar to Omnislash, which isn't very original.

(Can't check because I'm at school)
08-30-2006, 12:03 PM#4
Rising_Dusk
It's too bad those events lag on BNet.
It would make a neat effect to have some arrow-key input based spells in a map.
08-30-2006, 12:04 PM#5
UnMi
Well, the so called "Allowed Command Delay" is free changeable in the Trigger.
I set it to 2.50 seconds, and it is playable on Bnet once you got used to it.
The point of so many keys is that each Slash actually increases the damage of the next hit, and the last two slashes are kinda special too >>;.
08-30-2006, 12:20 PM#6
Rising_Dusk
Yeah, in my testing it took me >50 tried to get the last one to work.
My real problem with the spell is the caster has to stare at the next key in line, completely missing any eye candy you put into the spell as well as the motions of neary enemy heros.

Makes it rather impractical in terms of use in fast paced maps.
Could be really neat in SP though.

Also, the host always has perfect syncs with these sorts of triggers, but if someone slow hosts this on BNet,
you would notice the significant delay between hitting the key and getting the result.
Same thing happens with selection events.
08-30-2006, 12:28 PM#7
UnMi
Yes, that's a problem which is inevitable...unless you learned the combo by heart.
But since you do that spell, all you want would be to kill the enemy, so the surroundings is non of a matter. You can do the damage while the rest(especially the target) enjoy the eye-candy then >>.
Quote:
Could be really neat in SP though.
No...just the opposite. This spell is a Hero-Killing spell, its damage depending on the player himself. If you really want to kill, then you won't even bother about anything else anymore
Quote:
but if someone slow hosts this on BNet
I don't set slow hosts as a standard to adjust spells. A game with high delay is not enjoyable anyway.
08-30-2006, 03:57 PM#8
blu_da_noob
The host doesn't have to be slow. Not everyone is able to get a super fast connection. Latency is a factor in everything that is made to be played over the internet, if you don't account for it then it is bad design. (2.5 seconds is probably enough time even with delay though)
08-30-2006, 04:19 PM#9
UnMi
Quote:
Originally Posted by UnMi
I don't set slow hosts as a standard
Slow hosts, not latency itself.
Quote:
Originally Posted by UnMi
Well, the so called "Allowed Command Delay" is free changeable in the Trigger.
It's the time-delay for pressing the next key.
09-02-2006, 11:10 AM#10
blu_da_noob
It was quite fun to play around with, but I would still be concerned for non-singleplayer use. The code isn't the most efficient, but it seems good and doesn't appear to leak. One thing that I would definitely think about for customisation, would be to have the list of commands in a delimited string, instead of having a separate function for each. You could use comma or semicolon delimiting and loop through to store all the respective commands.

It's going to take me a little while to write up a list of specific improvements that can be made. I'll get it up later today.
09-02-2006, 01:55 PM#11
UnMi
Good idea, updating.
09-02-2006, 07:40 PM#12
blu_da_noob
Your Trig_Dance_of_the_Red_Moon_Actions function does not follow the JESP naming standard. You also do not always adhere to the standard with your attached vars.

You made your own function to clear the screen of messages which is unnecessary, as their is already a ClearTextMessages native. Usage would be:
Collapse JASS:
if GetLocalPlayer() == p then
    call ClearTextMessages()
endif

I would be inclined to use a string array for all the slash text stuff. It would be much easier (and cleaner) to manipulate. Would also make it easy to setup if you use a delimited string and also remove the need for the huge if/then/else string to set next command and colour previous one.
09-02-2006, 08:25 PM#13
UnMi
Quote:
Your Trig_Dance_of_the_Red_Moon_Actions function does not follow the JESP naming standard. You also do not always adhere to the standard with your attached vars.
Where is the point in changing "Trig_Dance_of_the_Red_Moon_Actions"?
Also, the attached vars that "do not follow the standard" are dynamicly created and destroyed, so I don't see the point in adding names there either.
Function clear changed.
String array thing was changed in 1.1 already.
09-02-2006, 08:37 PM#14
blu_da_noob
Quote:
Where is the point in changing "Trig_Dance_of_the_Red_Moon_Actions"?

The JESP standard requires that all functions are prefixed by the spell code name + "_".

Quote:
Also, the attached vars that "do not follow the standard" are dynamicly created and destroyed, so I don't see the point in adding names there either.

Once again, the JESP standard requires that all things attached to public objects via game cache must have a prefix of spell code name + "_".


Collapse JASS:
    set commands[1] = GetHandleString(caster,"DotRM Slash 1") 
    set commands[2] = GetHandleString(caster,"DotRM Slash 2")
    set commands[3] = GetHandleString(caster,"DotRM Slash 3")
.... 
    set commands[29] = GetHandleString(caster,"DotRM Slash 29") 
    set commands[30] = GetHandleString(caster,"DotRM Slash 30")

Could be changed to a loop. That is one of the reasons to use an array.
09-02-2006, 08:48 PM#15
UnMi
Quote:
Once again, the JESP standard requires that all things attached to public objects via game cache must have a prefix of spell code name + "_".
By public objects I think you mean Objects that are not dynamic. They don't have to have a prefix, since they won't be used anywhere else.
And why do they have to have a "_" anyway?
About that loop, oups, changing that.