-
Notifications
You must be signed in to change notification settings - Fork 114
/
TODO
130 lines (121 loc) · 5.27 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
immediate plans
- freeze
- gaze avoidance + forced movement fail
- rotation modules in preset/plan to be ordered (incl ui)
- get rid of legacyxxx
- ex3 p2 ice bridges
- on ex1 the cleave is still telegraphed a bit too wide
- for p2 thordan cleavebuster the telegraph on the minimap is narrower than the actual hitbox
- alt style for player indicator on arena
- ishape
general:
- horizontal timeline / cooldown planner
- cdplanner should use real cds
- assignments per ui order rather than per player + class-specific assignments
- restore view-timeline to module ui
- module packs
-- dlls, loaded as usual
-- hotreload - just discard old version and load new one
-- distributed as github releases, on startup query latest version and download if different
-- rate limit gh requests to 1/hour
-- dialog to add warns about arbitrary code execution
-- update bm/rm registries on reload
- add non-entities to worldstate
- proper logging
- consistently use Color instead of uint
- refactor window system to dispose stuff properly and avoid CS1806 and `_ = new...` pattern
- diagnostic to detect readonly mutable collections
- introduce 'Game' class that would contain dalamud services and stuff like AMEx/IDScramble, instead of statics, to avoid uncontrolled access to game state (won't help with CS tho)
- better timing tracking for: statuses, gauges, cooldowns, cast times, anim lock, ...
- constrain bossmodules to zone id (e.g. for T04)
- revise module categories - consider merging fates/hunts/quests/gold saucer?/pvp? into outdoor?/casual?
- refactor pendingeffects
- better aoe targeting
-- improve forbidden classification
--- target absolutely forbidden to damage (eg tea doll, t01 blob, outdoor enemy that wasn't pulled yet)
--- target is invulnerable, hitting it is a complete waste, won't advance combo/apply buffs/etc
--- target is at 1hp, damage will be dealt but won't be logged, might be worth hitting for gauge or combo advance
--- target can be damaged but it won't contribute to fight progress or log (various pointless adds)
--- target is not a priority, but damaging it is a nice bonus (lower priority than max target)
-- use that for targeting utils in aihints
- debug utility to play action animations, spawn actors, play vfx, etc...
- encounter hints (to show before pull)
- zone modules: replay visualization
- zone modules: module info ui
- refactor ipc/dtr
- questbattles
boss modules:
- timers
- wipe should not fast forward all phases
- fail log
- boss module config presets/profiles
- jeuno
-- a11: ai hints for spikes+uppercut
-- a14: complex aoe hints (cthonic, battlements)
-- a14: dark nebula kb hints
autorotation:
- global strategy for track
- bulk override priorities?
- preset/plan editors should properly react to external changes
- actiondefinitions
-- action transforms?.. (combos, adjustment)
-- adjusted casttime/cooldown/???
- ai features
-- legacy ai rotation modules (auto stance, interrupt, taunt, etc)
-- target selection should be part of a module/preset
-- ai manager should use selected preset for combat, out of combat use forcedtarget
- action history/queue visualization
- simulation in replay analysis
- spell out shared cooldowns in actiondefinitions comments instead of group?
- delete/rework commonstate/legacy
- delete autorotationlegacy dir
- dot/regen server tick tracking
- brd
-- take traits into account (ij proccing rs, ea proccing repertoire)
- drg
-- priorities...
-- dragon sight is a true north
-- cd planning
- war
-- simulate gauge changes (message can arrive few frames after ActionEffect...)
-- low-level rotation - improve berserk delay logic
- whm:
-- resurrect (6.1 and later changes)
-- planner
-- smart-targeting for ST actions
ai:
- improve healing AI: analyze incoming dps
- movement: know time left, distance to travel => decide whether to swiftcast or slidecast or use movement rotation
world rendering:
- danger zones (modify action vfx?)
- arrows
replay encounter analysis:
- tether & debuff passing range
- pull range
misc:
- memory show/watch utility
- clip circles to arena bounds...
- draw target max-melee and boss positioning hints?..
- assignments/config sharing (webservice?)
notes on targeting:
- aoe (e.g. cone) will hit if shape intersects target's hitbox; for players it is == 0.5
- max melee range is raw range (usually 3) + source hitbox radius + target hitbox radius; for players this usually means 3.5 + target hitbox
- charge/onslaught will bring player to source hitbox radius + target hitbox radius range, or leave in place if current distance is less
getAjustedRecastTime:
- type: item => calculation, non-spell => 5000, spell => continue...
- no adjustment or cdgroup is [76-79] -> recast100ms * 100; otherwise start with that and adjust...
- trait adjustment: recastMS += 100 * trait->Value (per trait)
- if maxcharges > 1 => return recast (adjusted by additive traits)
- recastMS = adjustRecastTimeByStatusesAndStats(recastMS)
-- if non pvp:
--- weaponskill/spell:
---- spdMod = 1000 + 130 * (base - spdattr) / levelmod (min 0)
---- recastMS *= spdMod / 1000
---- recastMS *= hasteattr / 100
---- min 1500
--- if gcd and have sm flag 18: recastMS += recastMS * sum-status-param(22) / 100; min 500 (ie riddle of fire)
-- else: tbd...
- some special pvp checks -> fallback to raw base
- MCH if have rapid fire (853) status -> override to 100*param
- DNC overrides
- etc special overrides