Edge case strike order discussion.

All things Desktop Dungeons

Re: Bug reports (Spoilers ahoy!)

Postby choongmyoung on Thu Jun 28, 2018 7:59 am

srid wrote:Perhaps I am missing other edge cases, but what got me confused, (and probably what got AvovA17 confused too, correct me if I'm wrong) is that the "Burn Stack + Curse" corner case is the only side-effect for First Strike that I know of besides the main one. And since this corner case doesn't happen that often, it can be quite easy to forget that there could be any, aside from the main one.


Lifesteal at 150% full health.
choongmyoung
 
Posts: 215
Joined: Sun Aug 23, 2015 1:53 pm

Re: Bug reports (Spoilers ahoy!)

Postby srid on Thu Jun 28, 2018 8:54 am

srid wrote:Lifesteal at 150% full health.


Indeed. Well spotted, thank you.
We made an expansion and it is awesome. Really, you should check it out, especially if you're looking for some extra challenge.

Download over at ddmod.weebly.com!
User avatar
srid
 
Posts: 139
Joined: Sun Jan 07, 2018 8:46 pm

Re: Bug reports (Spoilers ahoy!)

Postby AvovA17 on Thu Jun 28, 2018 11:03 am

srid wrote:I would expect that a regular attack (i.e. enemy hits first) against an enemy with Weakening Strike would unfold like this:
- The enemy hits the player and weakens him.
- The player hits the enemy with -1 base damage.

And yet, this is not what happens since weakening only applies at the end of the fight.


Your example seems like a genuine bug. My situation with burning was me not thinking clearly.

Assume you have no curses at the start.

If you strike second:

1) You click attack on a cursing enemy.
2) The cursing enemy hits you first, and you get one curse from that (assuming no dodges for simplicity).
3) Your attack is applied to the cursing monster.
4) Since you attacked somebody, the burning stack pops, and that monster dies.
5) You lose one level of curse, so you are back to 0 curses.

If you strike first:

1) You click attack on a cursing enemy.
2) Your attack is applied to the cursing monster.
3) Since you attacked somebody, the burning stack pops, and that monster dies.
4) The cursing enemy hits you, and you get one curse (assuming no dodges for simplicity).
5) You gained one level of curse.


So there is some logic in how curses work. Weakening is broken though.
AvovA17
 
Posts: 213
Joined: Tue Dec 26, 2017 5:38 pm

Re: Edge case strike order discussion.

Postby dislekcia on Fri Jun 29, 2018 1:14 am

The call was made with weakening to only apply it after damage resolution because players were getting angry that their damage wasn't what was being reported. We'd predict that they wouldn't kill an enemy due to the added weakening, but it wasn't obvious why this was happening. We contemplated putting a "weak" notifier on the "safe/death" UI element, but that didn't work well either because which would take precedence?

Game design is usually about player expectations and outcomes. The fact that this perceived issue has taken over 5 years for anyone to feel is unintuitive is good enough for me ;)
User avatar
dislekcia
 
Posts: 2292
Joined: Fri Mar 25, 2011 5:58 pm
Location: Cape Town, South Africa

Re: Edge case strike order discussion.

Postby choongmyoung on Fri Jun 29, 2018 4:06 am

What really happens if you try doublekill (burning knockback)? Does burning pop first then knockback applies? In that case the practical belief of 'knockback cannot kill' seems wrong as when the enemy dies, it is not burining.
choongmyoung
 
Posts: 215
Joined: Sun Aug 23, 2015 1:53 pm

Re: Edge case strike order discussion.

Postby srid on Fri Jun 29, 2018 6:10 am

choongmyoung wrote:What really happens if you try doublekill (burning knockback)? Does burning pop first then knockback applies? In that case the practical belief of 'knockback cannot kill' seems wrong as when the enemy dies, it is not burining.


Could you explain in more details which sequence of actions you are refering to?

I am pretty sure that "Secondary knockback cannot kill" (knock back on the second monster), so if he dies it must be
the burning stacks.
We made an expansion and it is awesome. Really, you should check it out, especially if you're looking for some extra challenge.

Download over at ddmod.weebly.com!
User avatar
srid
 
Posts: 139
Joined: Sun Jan 07, 2018 8:46 pm

Re: Edge case strike order discussion.

Postby choongmyoung on Fri Jun 29, 2018 6:21 am

srid wrote:
choongmyoung wrote:What really happens if you try doublekill (burning knockback)? Does burning pop first then knockback applies? In that case the practical belief of 'knockback cannot kill' seems wrong as when the enemy dies, it is not burining.


Could you explain in more details which sequence of actions you are refering to?

I am pretty sure that "Secondary knockback cannot kill" (knock back on the second monster), so if he dies it must be
the burning stacks.


Double Bosskill:
https://youtu.be/sN0W_Gj-6SA?t=537
(Note that killing the second monster before the levelup is not possible with burning stack pop alone)
choongmyoung
 
Posts: 215
Joined: Sun Aug 23, 2015 1:53 pm

Re: Edge case strike order discussion.

Postby srid on Fri Jun 29, 2018 11:42 am

choongmyoung wrote:Double Bosskill:
https://youtu.be/sN0W_Gj-6SA?t=537


I see, that's what I was thinking of.

The game works with an event queue, and various handlers so apply effects depending on the context.
If you ever played Magic the Gathering, it is a little similar to the Stack, except that here it's a queue and not a stack.

So, if I'm not mistaken, from what I can understand in the code:

1. After The Indomitable attacked, the player adds a melee attack event to the queue.
2. The melee attack event damages The Indomitable's and removes its DP.
3. The melee attack event adds a Knockback event to the queue on Indomitable.
4. The melee attack event pops the burning stack and adds a "Spell Damage on Count BlahBlah" event to the queue (behind the Knockback event) .
5. The Knockback event kills The Indomitable and reduces Count BlahBlah's health to 1 without killing him.
6. The Spell Damage event kills Count BlahBlah.

It could be interesting to reproduce with two enemies at different level to check which one dies by checking the bonus XP you get.
We made an expansion and it is awesome. Really, you should check it out, especially if you're looking for some extra challenge.

Download over at ddmod.weebly.com!
User avatar
srid
 
Posts: 139
Joined: Sun Jan 07, 2018 8:46 pm

Re: Edge case strike order discussion.

Postby choongmyoung on Fri Jun 29, 2018 12:17 pm

But doesn't that mean in the striking order knockback comes first than the burning stack pop? So the burning stack's not popping *right after* the player attack?
From the long talk about curses I thought the burning stack pop happens right after the player attack.

srid wrote:but it also has a few other corner cases like this one, where the burning pop happens right after your attack, and before the enemy could apply cursed on you.


Or the knockback applies directly after the player's attack? (opposed to the wiki)

By the way, in the video, the Indomitable was slowed so the player character was striking first.

Also, please note that the burning pop alone can't do the double bosskill; without the knockback the pop-killed monster dies after the levelup. So there must be some interaction with knockback and burning.
choongmyoung
 
Posts: 215
Joined: Sun Aug 23, 2015 1:53 pm

Re: Edge case strike order discussion.

Postby srid on Sat Jun 30, 2018 7:29 am

@choongmyoung that's a very good point. And the answer is... well... complicated.

Are you really sure that when you do a burning pop without knockback the pop-killed monster really dies after the levelup?
If you have it recorded on video, could you please send me the link?
Because I just tried it and that's not what I observed: both bosses died before the level up. And also, it didn't add up with what I could understand from the code.

Don't worry, I'll be able to give you a detailed explanation of everything once this point is sorted out.

---------------------------------------------------------------------------------------------------------------------------------------------------------

Also, while I was looking in the code, I did find a bug (a real one, this time) in the Burning Stack + Curse interaction.
If you prep the Avatar's Codex, then every enemy retaliates your fireball.
But the fireball happens first, kinda like first strike (so if you kill the enemy with your fireball, he doesn't retaliate).

Except that this time, if you prep a burning stack on an enemy, and fireball a cursing enemy without killing him, you'll get:
- Fireball the cursing enemy
- Enemy retaliates and applies curse
- Burning stack pops, killing the burning enemy, and remove curse

No curse in the end.

Whereas when you do a melee attack with first strike you get:
- Deal damage to the cursing enemy
- Burning stack pops, killing the burning enemy (no curse to remove)
- Enemy retaliates and applies curse

1 curse in the end.

@dislekcia: the difference comes from the fact that in the EnemyDamageHandler,
the PlayerDealMeleeDamageEvent will lead to a retaliation via
Code: Select all
EventManager.AddEventAtEndOfQueue(new EnemyAttemptMeleeDamageEvent(...))

but the PlayerDealSpellDamageEvent will lead to a retaliation via
Code: Select all
EventManager.AddEvent(new EnemyAttemptMeleeDamageEvent(...))
We made an expansion and it is awesome. Really, you should check it out, especially if you're looking for some extra challenge.

Download over at ddmod.weebly.com!
User avatar
srid
 
Posts: 139
Joined: Sun Jan 07, 2018 8:46 pm

PreviousNext

Return to Desktop Dungeons

Who is online

Users browsing this forum: Bing [Bot] and 7 guests

cron