-
Notifications
You must be signed in to change notification settings - Fork 1
/
trinketapl.txt
106 lines (98 loc) · 6.89 KB
/
trinketapl.txt
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
# True if effects that are desirable to sync a trinket buff with are ready.
actions.trinkets=/variable,name=sync_ready,value=cooldown.trueshot.ready
# True if effecs that are desirable to sync a trinket buff with are active.
actions.trinkets+=/variable,name=sync_active,value=buff.trueshot.up
# Time until the effects that are desirable to sync a trinket buff with will be ready.
actions.trinkets+=/variable,name=sync_remains,value=cooldown.trueshot.remains
consider a trinket use effect stronger if it:
is against no use effect
or has a buff use effect and
is against a no buff use effect
or is not mirror_of_fractured_tomorrows and
is against mirror_of_fractured_tomorrows
or has a longer cooldown
or has a longer cast
or has equal cooldown and cast
or has no buff use effect and
is against no use effect
or is against a dmg use effect and
has a longer cooldown
or has a longer cast
or has equal cooldown and cast
actions.precombat+=/variable,name=trinket_1_stronger,value=
!trinket.2.has_cooldown|
trinket.1.has_use_buff&(
!trinket.2.has_use_buff
|!trinket.1.is.mirror_of_fractured_tomorrows&(
trinket.2.is.mirror_of_fractured_tomorrows
|trinket.2.cooldown.duration<trinket.1.cooldown.duration
|trinket.2.cast_time<trinket.1.cast_time
|trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))
|!trinket.1.has_use_buff&(
!trinket.2.has_use_buff&(
trinket.2.cooldown.duration<trinket.1.cooldown.duration
|trinket.2.cast_time<trinket.1.cast_time
|trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))
# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.
actions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown|trinket.1.has_use_buff&(!trinket.2.has_use_buff|!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows|trinket.2.cooldown.duration<trinket.1.cooldown.duration|trinket.2.cast_time<trinket.1.cast_time|trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))|!trinket.1.has_use_buff&(!trinket.2.has_use_buff&(trinket.2.cooldown.duration<trinket.1.cooldown.duration|trinket.2.cast_time<trinket.1.cast_time|trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))
actions.precombat+=/variable,name=trinket_2_stronger,value=!variable.trinket_1_stronger
use this trinket if it:
has a buff use effect and
we are ready to sync and
this trinket is stronger
or the other trinket is not ready
or we are not ready to sync and
this trinket is stronger and
the next sync is over 1/3 this total cooldown and we can get another use in the fight
or the other trinket would lose a use
or the other trinket is stronger and
the other trinket is not ready and
the other trinket will be ready for the next sync
and the next sync is over 20 seconds away
or the other trinket will not be ready for the next sync and
the next sync is over 1/3 this trinket total cooldown
or this trinket would lose a use if held for the next sync
or the other trinket is ready and
the next sync is over 20 seconds away and
the next sync is less than 1/3 the other trinket total cooldown
or has no buff effect and won't waste sync time with a cast and
is against no buff use effect and
this trinket is stronger
or the other trinket is not ready
or is against a buff use effect and
the next sync is over 20 seconds away
or the other trinket cooldown is over 20 seconds
or the fight will end before 25 seconds and
this is the strongest trinket
or the other trinket is not ready
actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=
trinket.1.has_use_buff&
(variable.sync_ready&(
variable.trinket_1_stronger
|trinket.2.cooldown.remains)
|!variable.sync_ready&(
variable.trinket_1_stronger&(
variable.sync_remains>trinket.1.cooldown.duration%3&fight_remains>trinket.1.cooldown.duration+20
|trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains)
|variable.trinket_2_stronger&(
trinket.2.cooldown.remains&(
trinket.2.cooldown.remains-5<variable.sync_remains&
variable.sync_remains>=20
|trinket.2.cooldown.remains-5>=variable.sync_remains&(
variable.sync_remains>trinket.1.cooldown.duration%3
|trinket.1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.1.cooldown.duration>fight_remains)))
|trinket.2.cooldown.ready
&variable.sync_remains>20&
variable.sync_remains<trinket.2.cooldown.duration%3)))
|!trinket.1.has_use_buff&(trinket.1.cast_time=0|!variable.sync_active)&(
!trinket.2.has_use_buff&(
variable.trinket_1_stronger
|trinket.2.cooldown.remains)
|trinket.2.has_use_buff&(
variable.sync_remains>20
|trinket.2.cooldown.remains>20))
|fight_remains<25&(
variable.trinket_1_stronger
|trinket.2.cooldown.remains)
# Uses buff effect trinkets with cooldowns and is willing to delay usage up to 1/3 the trinket cooldown if it won't lose a usage in the fight. Fills in downtime with weaker buff effects if they won't also be saved for later cooldowns (happens if it won't delay over 1/3 the trinket cooldown and a stronger trinket won't be up in time) or damage effects if they won't inferfere with any buff effect usage. Intended to be slot-agnostic so that any order of the same trinket pair should result in the same usage.
actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=trinket.1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger|trinket.2.cooldown.remains)|!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.1.cooldown.duration%3&fight_remains>trinket.1.cooldown.duration+20|trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains)|variable.trinket_2_stronger&(trinket.2.cooldown.remains&(trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20|trinket.2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.1.cooldown.duration%3|trinket.1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.1.cooldown.duration>fight_remains)))|trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.2.cooldown.duration%3)))|!trinket.1.has_use_buff&(trinket.1.cast_time=0|!variable.sync_active)&(!trinket.2.has_use_buff&(variable.trinket_1_stronger|trinket.2.cooldown.remains)|trinket.2.has_use_buff&(variable.sync_remains>20|trinket.2.cooldown.remains>20))|fight_remains<25&(variable.trinket_1_stronger|trinket.2.cooldown.remains)