forked from awgil/ffxiv_bossmod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
140 lines (130 loc) · 5.8 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
131
132
133
134
135
136
137
138
139
140
immediate plans
- refactor replay history feature
- remove 'ex' variants of strategies, replace with cooldown/effect functors, write a converter
- add strategy param, use for 'apply unless already active' flavours of utility strategies
- get rid of legacyxxx
- ishape
-- rasterization should automatically deal with 0.03 position imprecision (and angle imprecision?..)
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?
- 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
- autoautos: remove target-setting shenanigans in ual, instead deal with disabling autos in hook
- pathfinding can cut corners by entering aoe (los check returns safe) - is that good?..
- alt style for player indicator on arena
- MAO for pomanders holsters etc
- ManualActionQueueTweak.Push should not special case gcds?..
- review enemy prios usage - should framework do anything about any prios? like taunt at -4...
- freeze special mode implementation
- find a way to make ActionDefinition fields readonly
- better palacepal interop (download db asynchronously and load once on plugin init)
- move ai hint execution to dedicated class
- obstacle maps - download from github
ai:
- forcedmovement with large leeway and casting...
- nav decision delay
- review TODO[cast-time]
- remove old ai
- revise misdirection, remove threshold hint
- knockbacks, forced movement, pyretic/freezing, etc components should update max-cast hint
- hardcoded cdplanner targeting track should be moved to a aimodule
- utility modules / planner - how should planned casts work?
- high-level follow/assist module for multibox
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
- [dt ex3] p2 ice bridges
- [dt ex1] the cleave is still telegraphed a bit too wide
- [dsr] for p2 thordan cleavebuster the telegraph on the minimap is narrower than the actual hitbox
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/???
- 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)
-- better handle bad misalignment (see JeunoTheFirstWalk_BRD100_VeynHumanmale_2025_01_05_20_42_19.log)
- 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