Non-blocking attacks
Moderators: Bob the Hamster, marionline, SDHawk
- Bob the Hamster
- Lord of the Slimes
- Posts: 7658
- Joined: Tue Oct 16, 2007 2:34 pm
- Location: Hamster Republic (Ontario Enclave)
- Contact:
Non-blocking attacks
I just implemented (and forced an early <a href="http://hamsterrepublic.com/ohrrpgce/nightly/">nightly build</a> including) non-blocking attacks.
There is a new attack bitset "Delay doesn't block further actions"
So if you give an attack a delay of 10 seconds, the attacker's ready-meter will start re-filling immediately, and they may be able to use another attack before the delayed non-blocking attack happens.
Great for use with chains. For example, you could make a normal attack that boosts an ally's attack power by +50, and have it chain to a nonblocking delayed attack that returns the attack power back to normal.
I am eager to get other people testing this.
Also note that if you press F11 twice in battle you can see the current attack queue. Regular attacks are marked with "B" and nonblocking attacks are marked with "Q"
There is a new attack bitset "Delay doesn't block further actions"
So if you give an attack a delay of 10 seconds, the attacker's ready-meter will start re-filling immediately, and they may be able to use another attack before the delayed non-blocking attack happens.
Great for use with chains. For example, you could make a normal attack that boosts an ally's attack power by +50, and have it chain to a nonblocking delayed attack that returns the attack power back to normal.
I am eager to get other people testing this.
Also note that if you press F11 twice in battle you can see the current attack queue. Regular attacks are marked with "B" and nonblocking attacks are marked with "Q"
Last edited by Bob the Hamster on Thu Sep 30, 2010 10:36 pm, edited 1 time in total.
Re: Non-blocking attacks
Oh wow. That's fantastic.James Paige wrote:Great for use with chains. For example, you could make a normal attack that boosts an ally's attack power by +50, and have it chain to a nonblocking delayed attack that returns the attack power back to normal.
- Bob the Hamster
- Lord of the Slimes
- Posts: 7658
- Joined: Tue Oct 16, 2007 2:34 pm
- Location: Hamster Republic (Ontario Enclave)
- Contact:
<s>One problem that nonblocking attacks have right now:</s> (fixed)
* Pause on battle menus is OFF
* Hero does attack Foo with a 5 second delay, nonblocking
* Hero gets another turn before Foo activates.
* Hero starts targetting attack Bar
* Delay runs out on attack Foo while hero is still targetting Bar
[Everything is okay up to this point]
* Foo chains to Foo2 which has a delay but is a regular blocking attack
* Now the hero is blocked from getting their turn, but they are currently taking their turn. What should happen?
<s>I am thinking that the hero should continue to be allowed to finish targetting their attack, but I am not certain.</s> Should all attacks chained form a nonblocking attack be forced to be noblocking too? (YES) <s>Should a blocking attack chained from a nonblocking attack suddenly cancel the hero's targetting?</s>
<s>Also: I am currently trying to track down a bug that can cause doubling of non-blocking attacks when "pause on battle menus" is OFF. No such problem occurs when pause on battle menus is ON</s> (fixed)
* Pause on battle menus is OFF
* Hero does attack Foo with a 5 second delay, nonblocking
* Hero gets another turn before Foo activates.
* Hero starts targetting attack Bar
* Delay runs out on attack Foo while hero is still targetting Bar
[Everything is okay up to this point]
* Foo chains to Foo2 which has a delay but is a regular blocking attack
* Now the hero is blocked from getting their turn, but they are currently taking their turn. What should happen?
<s>I am thinking that the hero should continue to be allowed to finish targetting their attack, but I am not certain.</s> Should all attacks chained form a nonblocking attack be forced to be noblocking too? (YES) <s>Should a blocking attack chained from a nonblocking attack suddenly cancel the hero's targetting?</s>
<s>Also: I am currently trying to track down a bug that can cause doubling of non-blocking attacks when "pause on battle menus" is OFF. No such problem occurs when pause on battle menus is ON</s> (fixed)
Last edited by Bob the Hamster on Fri Oct 01, 2010 2:55 am, edited 1 time in total.
- Spoonweaver
- Liquid Metal King Slime
- Posts: 6462
- Joined: Mon Dec 08, 2008 7:07 am
- Contact:
- JSH357
- Liquid Metal Slime
- Posts: 1341
- Joined: Mon Oct 15, 2007 7:38 pm
- Location: Columbia, SC
- Contact:
Third'd
And thank you sooo much for this feature. It's a brilliant idea.
And thank you sooo much for this feature. It's a brilliant idea.
My website, the home of Motrya:
http://www.jshgaming.com
http://www.jshgaming.com
- Feenicks
- Metal Slime
- Posts: 696
- Joined: Tue Aug 10, 2010 9:23 pm
- Location: ON THE AIR IN THE AIR
- Contact:
This is awesome. Now I can put in the temporary buffs/debuffs I had been thinking about putting into my RPG, along with a few other things that would benefit from delayed attacks not stopping the attack bar from going up.
I'd have to be the fourth to agree with Mogri on this issue. It would be less aggravating that way I would like to think.
I'd have to be the fourth to agree with Mogri on this issue. It would be less aggravating that way I would like to think.
- Newbie Newtype
- Reigning Smash Champion
- Posts: 1873
- Joined: Mon Oct 15, 2007 9:44 pm
- Bob the Hamster
- Lord of the Slimes
- Posts: 7658
- Joined: Tue Oct 16, 2007 2:34 pm
- Location: Hamster Republic (Ontario Enclave)
- Contact:
Okay I am glad I asked on this one :) I <s>will be</s> forcing any attack chained from a nonblocking attack to be nonblocking also. (done)
<s>I am working on some bug fixes. Right now queued attacks don't retarget correctly if the target dies. I have that one almost sorted out.</s> (fixed)
<s>Another problem I have noticed is that sometimes certain chained attacks get queued twice. I am having a hard time reproducing this one, so if anybody else sees it happening, please let me know.</s> (fixed)
<s>I am working on some bug fixes. Right now queued attacks don't retarget correctly if the target dies. I have that one almost sorted out.</s> (fixed)
<s>Another problem I have noticed is that sometimes certain chained attacks get queued twice. I am having a hard time reproducing this one, so if anybody else sees it happening, please let me know.</s> (fixed)
Last edited by Bob the Hamster on Fri Oct 01, 2010 2:53 am, edited 1 time in total.
- Bob the Hamster
- Lord of the Slimes
- Posts: 7658
- Joined: Tue Oct 16, 2007 2:34 pm
- Location: Hamster Republic (Ontario Enclave)
- Contact:
The correct behavior of an attack that suddenly finds itself without a target is to re-target automatically, giving itself a new valid target. (it just re-runs the same code that enemies use to choose targets (which is also the same code as used by attacks with the "Automatically choose target" bitset))Mogri wrote:What is the "correct" behavior?James Paige wrote:I am working on some bug fixes. Right now queued attacks don't retarget correctly if the target dies. I have that one almost sorted out.
The incorrect behavior I am working on fixing is that they simply don't notice that their only target is dead, and silently fail when the queued attack delay finishes and the attack tries to animate.
EDIT: actually, i was wrong. silent failure of a chain on a dead target is the expected behavior for a zero-delay attack with the same target class as the attack that chained to it. Picking a new target is the expected behavior on a chained attack with >= 1 delay. or that has a different target class from its parent.
Woo! That isn't very intuitive I guess... but it is the way it is.
Dang
EDITEDIT: I am forcing an early nightly build with a bunch more fixes to the attack queue. Nonblockingness is now inherited by chains, and there is a chain bitset to force nonblockingness also. I have also those bugs I mentioned a couple posts ago.
Things are now working very well in my own tests, both with "Pause on all battle menus" ON and OFF
Last edited by Bob the Hamster on Fri Oct 01, 2010 2:54 am, edited 3 times in total.
- Bob the Hamster
- Lord of the Slimes
- Posts: 7658
- Joined: Tue Oct 16, 2007 2:34 pm
- Location: Hamster Republic (Ontario Enclave)
- Contact:
Yes, I need to add an attack bitset "don't retarget if target dies" and I should probably also have a "don't retarget if target dies" bitset for chains.Mogri wrote:Can you add a "fail if target is dead" bitset, then? Your example of a buff that wears off will mess things up otherwise.
Also, there is the other side of that. What if the attacker dies?
I need to add the ability to optionally make it so a queued attack MUST complete immediately if the attacker dies. I'll probably make it happen while their dissolve animation is running :)
While looking at the chaining menu, I just re-noticed (I think I noticed this before) that if you press 'down' on the bottom of the attack chaining editor the cursor disappears. Press 'down' again to make it appear back at the top of the menu. But pressing 'up' at the top of the menu works correctly.
Anyhow, I'm a bit confused about the need for these 2 seperate bitsets. So if an attack in a chain is non-blocking, all the following attacks in the chain will be as well? If this is so, what is the purpose of the chaining bitset? And should there be a bitset to override this behavior? I can't think of a situation for it yet, but it might be that an author would like an attack to have a non-blocking delay to allow the battle-ready meter to partially fill, and then have it chain to a blocking delay that freezes the ready-meter in a given spot while the attack begins.
While this seems to be kind of weird, why limit the functionality? If a person wants non-blocking inherited by the chain, they can just use the chaining bitset, right?
Anyhow, I'm a bit confused about the need for these 2 seperate bitsets. So if an attack in a chain is non-blocking, all the following attacks in the chain will be as well? If this is so, what is the purpose of the chaining bitset? And should there be a bitset to override this behavior? I can't think of a situation for it yet, but it might be that an author would like an attack to have a non-blocking delay to allow the battle-ready meter to partially fill, and then have it chain to a blocking delay that freezes the ready-meter in a given spot while the attack begins.
While this seems to be kind of weird, why limit the functionality? If a person wants non-blocking inherited by the chain, they can just use the chaining bitset, right?
I am Srime