d07RiV / d07RiV/d3planner

R6 generator: animation time not taken into account

Open
#191 3 comments 0 reactions 0 assignees View on GitHub
backlog
Dominant language
JavaScript
Stars
115
Forks
40
PR merge metrics
No merged PRs in 30d

Description

In d3planner, an ability with an animation time of say 13 frames will deal the damage immediately (tick t=0.00) and then delay for 13 frames.

In the game, the animation will play for 13 frames and *then* deal damage, at the end. This means that in practice, stuff like on-hit effects with ICDs will proc inconsistently for stuff with variable animation time. (lik monk generators)

If I have a generator with breakpoints like 6 / 6 / 9, then in d3planner I get:

```
t=0.00: hit, procs stricken, ICD = ceil(0.9*6)=6
t=0.10: icd expires
t=0.10: hit, procs stricken, ICD = ceil(0.9*6)=6
t=0.20: icd expires
t=0.20: hit, procs stricken, ICD = ceil(0.9*9)=9
t=0.35: icd expires
t=0.35: hit, procs stricken, ICD = ceil(0.9*6)=6
...
```
So after 4 hits, we have 4 stricken stacks. However, this is how it works in the real game:

```
t=0.00: animation started (length=6)
t=0.10: hit lands, procs stricken, ICD=6
t=0.10: animation started (length=6)
t=0.20: icd expires
t=0.20: hit lands, procs stricken, ICD=6
t=0.20: animation started (length=9)
t=0.30: icd expires
t=0.35: hit lands, procs stricken, ICD=9
t=0.35: animation started (length=6)
t=0.45: hit lands, **stricken on cooldown**
t=0.45: animation started (length=6)
t=0.50: icd expires
t=0.55: hit lands, procs stricken, ICD=6
...
```

In the real world, 3 generator hits = 2 stricken stacks, because going from a slow hit to a fast hit (as typically happens when going from the third to the first) triggers stricken with a longer ICD than the animation of the next attack.

But in d3planner, 3 generator hits = 3 stricken stacks. It's worth noting that this issue can't simply be “worked around” except by actually simulationg the animation duration / figuring out the point in time where the hit actually lands, because for example Fists of Fury's DoT can trigger stricken the moment the ICD expires, which means that FoF stacks at the fastest rate possible.

Also, for some reason, breaking wave doesn't seem to have this behavior - I haven't looked into it, but perhaps it's because breaking wave has the actual “hit” at a more consistent part of the animation?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.