forked from FFXIV-CombatReborn/BossmodReborn
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
114 lines (105 loc) · 4.68 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
immediate plans
- m2s ai/plan
general:
- horizontal timeline / cooldown planner
- cdplanner should use real cds
- 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...
boss modules:
- timers
- wipe should not fast forward all phases
- fail log
- boss module config presets/profiles
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
- proper gcd time calculations?
- 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
-- aoe rotation (2/3/4+ targets, barrage usage)
-- 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