From 1f32c54f073a0253a6828375a9b1e4e1c8982ef1 Mon Sep 17 00:00:00 2001 From: Hurstilol <85832226+Hurstilol@users.noreply.github.com> Date: Sat, 1 Mar 2025 17:45:02 +0100 Subject: [PATCH 1/5] [Monk] yeet racial formatting --- engine/class_modules/apl/apl_monk.cpp | 45 +++++++++------------------ 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/engine/class_modules/apl/apl_monk.cpp b/engine/class_modules/apl/apl_monk.cpp index 11119c6121c..911aa2a92f6 100644 --- a/engine/class_modules/apl/apl_monk.cpp +++ b/engine/class_modules/apl/apl_monk.cpp @@ -477,6 +477,16 @@ void windwalker_live( player_t *p ) // Fallback def->add_action( "call_action_list,name=fallback" ); + // irrelevant racials + def->add_action( "arcane_torrent,if=chiadd_action( "bag_of_tricks,if=buff.storm_earth_and_fire.down" ); + def->add_action( "lights_judgment,if=buff.storm_earth_and_fire.down" ); + def->add_action( "haymaker,if=buff.storm_earth_and_fire.down" ); + def->add_action( "rocket_barrage,if=buff.storm_earth_and_fire.down" ); + // earthen racial not implemented yet + // def->add_action( "azerite_surge,if=buff.storm_earth_and_fire.down" ); + def->add_action( "arcane_pulse,if=buff.storm_earth_and_fire.down" ); + // Trinkets for ( const auto &item : p->items ) { @@ -509,36 +519,11 @@ void windwalker_live( player_t *p ) "storm_earth_and_fire,target_if=max:target.time_to_die,if=variable.sef_condition&!fight_style.dungeonroute|" "variable.sef_dungeonroute_condition&fight_style.dungeonroute" ); cooldowns->add_action( "touch_of_karma" ); - - // Racials - for ( const auto &racial_action : racial_actions ) - { - if ( racial_action != "arcane_torrent" ) - { - if ( racial_action == "ancestral_call" ) - cooldowns->add_action( racial_action + ",if=buff.invokers_delight.remains>15|fight_remains<20" ); - else if ( racial_action == "blood_fury" ) - cooldowns->add_action( racial_action + ",if=buff.invokers_delight.remains>15|fight_remains<20" ); - else if ( racial_action == "fireblood" ) - cooldowns->add_action( racial_action + ",if=buff.invokers_delight.remains>15|fight_remains<10" ); - else if ( racial_action == "berserking" ) - cooldowns->add_action( racial_action + ",if=buff.invokers_delight.remains>15|fight_remains<15" ); - else if ( racial_action == "bag_of_tricks" ) - def->add_action( racial_action + ",if=buff.storm_earth_and_fire.down" ); - else if ( racial_action == "lights_judgment" ) - def->add_action( racial_action + ",if=buff.storm_earth_and_fire.down" ); - else if ( racial_action == "haymaker" ) - def->add_action( racial_action + ",if=buff.storm_earth_and_fire.down" ); - else if ( racial_action == "rocket_barrage" ) - def->add_action( racial_action + ",if=buff.storm_earth_and_fire.down" ); - else if ( racial_action == "azerite_surge" ) - def->add_action( racial_action + ",if=buff.storm_earth_and_fire.down" ); - else if ( racial_action == "arcane_pulse" ) - def->add_action( racial_action + ",if=buff.storm_earth_and_fire.down" ); - else - def->add_action( racial_action ); - } - } + //CD relevant racials + cooldowns->add_action( "ancestral_call,if=buff.invokers_delight.remains>15|fight_remains<20" ); + cooldowns->add_action( "blood_fury,if=buff.invokers_delight.remains>15|fight_remains<20" ); + cooldowns->add_action( "fireblood,if=buff.invokers_delight.remains>15|fight_remains<10" ); + cooldowns->add_action( "berserking,if=buff.invokers_delight.remains>15|fight_remains<15" ); // AoE Opener aoe_opener->add_action( "slicing_winds", "aoe opener" ); From cc51d6cdc554257662b44f18118e100c016d34bc Mon Sep 17 00:00:00 2001 From: Kate Martin <51387586+renanthera@users.noreply.github.com> Date: Mon, 3 Mar 2025 00:16:25 -0700 Subject: [PATCH 2/5] [monk] Clean up formatting, remove unused variable, rearrange a little bit. Directly provide potion use logic. --- engine/class_modules/apl/apl_monk.cpp | 47 ++++++++++----------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/engine/class_modules/apl/apl_monk.cpp b/engine/class_modules/apl/apl_monk.cpp index 911aa2a92f6..714f981efbb 100644 --- a/engine/class_modules/apl/apl_monk.cpp +++ b/engine/class_modules/apl/apl_monk.cpp @@ -279,8 +279,6 @@ void mistweaver( player_t *p ) void windwalker_live( player_t *p ) { - auto monk = debug_cast( p ); - //============================================================================ // On-use Items //============================================================================ @@ -369,48 +367,37 @@ void windwalker_live( player_t *p ) return concat; }; - //============================================================================ + action_priority_list_t *pre = p->get_action_priority_list( "precombat" ); + action_priority_list_t *def = p->get_action_priority_list( "default" ); + action_priority_list_t *trinkets = p->get_action_priority_list( "trinkets" ); + action_priority_list_t *aoe_opener = p->get_action_priority_list( "aoe_opener" ); + action_priority_list_t *normal_opener = p->get_action_priority_list( "normal_opener" ); + action_priority_list_t *cooldowns = p->get_action_priority_list( "cooldowns" ); + action_priority_list_t *default_aoe = p->get_action_priority_list( "default_aoe" ); + action_priority_list_t *default_cleave = p->get_action_priority_list( "default_cleave" ); + action_priority_list_t *default_st = p->get_action_priority_list( "default_st" ); + action_priority_list_t *fallback = p->get_action_priority_list( "fallback" ); - action_priority_list_t *pre = p->get_action_priority_list( "precombat" ); - - // Snapshot stats pre->add_action( "snapshot_stats", "Snapshot raid buffed stats before combat begins and pre-potting is done." ); - - // Add Precombattrinkets pre->add_action( "use_item,name=imperfect_ascendancy_serum" ); - std::vector racial_actions = p->get_racial_actions(); - action_priority_list_t *def = p->get_action_priority_list( "default" ); - action_priority_list_t *trinkets = p->get_action_priority_list( "trinkets" ); - action_priority_list_t *aoe_opener = p->get_action_priority_list( "aoe_opener" ); - action_priority_list_t *normal_opener = p->get_action_priority_list( "normal_opener" ); - action_priority_list_t *cooldowns = p->get_action_priority_list( "cooldowns" ); - action_priority_list_t *default_aoe = p->get_action_priority_list( "default_aoe" ); - action_priority_list_t *default_cleave = p->get_action_priority_list( "default_cleave" ); - action_priority_list_t *default_st = p->get_action_priority_list( "default_st" ); - action_priority_list_t *fallback = p->get_action_priority_list( "fallback" ); - def->add_action( "auto_attack" ); def->add_action( "roll,if=movement.distance>5", "Move to target" ); def->add_action( "chi_torpedo,if=movement.distance>5" ); def->add_action( "flying_serpent_kick,if=movement.distance>5" ); def->add_action( "spear_hand_strike,if=target.debuff.casting.react" ); - // Potion - if ( p->sim->allow_potions ) - { - if ( monk->talent.windwalker.invoke_xuen_the_white_tiger->ok() ) - def->add_action( "potion,if=buff.storm_earth_and_fire.up&pet.xuen_the_white_tiger.active|fight_remains<=30", - "Potion" ); - else - def->add_action( "potion,if=buff.storm_earth_and_fire.up|fight_remains<=30", "Potion" ); - } + def->add_action( + "potion,if=talent.invoke_xuen_the_white_tiger&pet.xuen_the_white_tiger.active&buff.storm_earth_and_fire.up", + "Potion" ); + def->add_action( "potion,if=buff.storm_earth_and_fire.up" ); + def->add_action( "potion,if=fight_remains<=30" ); // Enable PI if available def->add_action( "variable,name=has_external_pi,value=cooldown.invoke_power_infusion_0.duration>0", "Enable PI if available" ); - // Define variables for CD Usage (No clue ask Kholer) + // Define variables for CD Usage def->add_action( "variable,name=sef_condition,value=target.time_to_die>6&(cooldown.rising_sun_kick.remains|active_enemies>2|!" "talent.ordered_elements)&(prev.invoke_xuen_the_white_tiger|(talent.celestial_conduit|!talent.last_emperors_" @@ -519,7 +506,7 @@ void windwalker_live( player_t *p ) "storm_earth_and_fire,target_if=max:target.time_to_die,if=variable.sef_condition&!fight_style.dungeonroute|" "variable.sef_dungeonroute_condition&fight_style.dungeonroute" ); cooldowns->add_action( "touch_of_karma" ); - //CD relevant racials + // CD relevant racials cooldowns->add_action( "ancestral_call,if=buff.invokers_delight.remains>15|fight_remains<20" ); cooldowns->add_action( "blood_fury,if=buff.invokers_delight.remains>15|fight_remains<20" ); cooldowns->add_action( "fireblood,if=buff.invokers_delight.remains>15|fight_remains<10" ); From b22c58167244199b1217f0e93ad1c4c9fd64d2e0 Mon Sep 17 00:00:00 2001 From: Kate Martin <51387586+renanthera@users.noreply.github.com> Date: Mon, 3 Mar 2025 01:15:15 -0700 Subject: [PATCH 3/5] fix potion logic --- engine/class_modules/apl/apl_monk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/apl/apl_monk.cpp b/engine/class_modules/apl/apl_monk.cpp index 714f981efbb..08638be8548 100644 --- a/engine/class_modules/apl/apl_monk.cpp +++ b/engine/class_modules/apl/apl_monk.cpp @@ -390,7 +390,7 @@ void windwalker_live( player_t *p ) def->add_action( "potion,if=talent.invoke_xuen_the_white_tiger&pet.xuen_the_white_tiger.active&buff.storm_earth_and_fire.up", "Potion" ); - def->add_action( "potion,if=buff.storm_earth_and_fire.up" ); + def->add_action( "potion,if=!talent.invoke_xuen_the_white_tiger&buff.storm_earth_and_fire.up" ); def->add_action( "potion,if=fight_remains<=30" ); // Enable PI if available From c65f94fedb7c1038e602360bf56ee256bab84838 Mon Sep 17 00:00:00 2001 From: Kate Martin <51387586+renanthera@users.noreply.github.com> Date: Mon, 3 Mar 2025 01:47:10 -0700 Subject: [PATCH 4/5] [monk] Remove DF trinket apl conditions. --- engine/class_modules/apl/apl_monk.cpp | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/engine/class_modules/apl/apl_monk.cpp b/engine/class_modules/apl/apl_monk.cpp index 08638be8548..a2e0b804bdc 100644 --- a/engine/class_modules/apl/apl_monk.cpp +++ b/engine/class_modules/apl/apl_monk.cpp @@ -288,25 +288,6 @@ void windwalker_live( player_t *p ) //------------------------------------------- const static std::unordered_map sef_trinkets{ // name_str -> APL - // DF Trinkets - { "algethar_puzzle_box", - ",if=(pet.xuen_the_white_tiger.active|!talent.invoke_xuen_the_white_tiger)&!buff.storm_earth_" - "and_fire.up|fight_remains<25" }, - { "erupting_spear_fragment", ",if=buff.storm_earth_and_fire.up" }, - { "manic_grieftorch", - ",if=!trinket.1.has_use_buff&!trinket.2.has_use_buff&!buff.storm_earth_and_fire.up&!pet.xuen_" - "the_white_tiger.active|(trinket.1.has_use_buff|trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger." - "remains>30|fight_remains<5" }, - { "beacon_to_the_beyond", - ",if=!trinket.1.has_use_buff&!trinket.2.has_use_buff&!buff.storm_earth_and_fire.up&!pet.xuen_" - "the_white_tiger.active|(trinket.1.has_use_buff|trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger." - "remains>30|fight_remains<10" }, - { "djaruun_pillar_of_the_elder_flame", - ",if=cooldown.fists_of_fury.remains<2&cooldown.invoke_xuen_the_white_tiger.remains>10|fight_remains<12" }, - { "dragonfire_bomb_dispenser", - ",if=!trinket.1.has_use_buff&!trinket.2.has_use_buff|(trinket.1.has_use_buff|trinket.2.has_use_buff)&" - "cooldown.invoke_xuen_the_white_tiger.remains>10|fight_remains<10" }, - // TWW Trinkets { "imperfect_ascendancy_serum", ",use_off_gcd=1,if=pet.xuen_the_white_tiger.active" }, { "mad_queens_mandate", ",target_if=min:time_to_die,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff|(trinket.1.has_use_buff|" From d7987cfb93ccb84d6fae39c7712e4a479ea9076f Mon Sep 17 00:00:00 2001 From: Kate Martin <51387586+renanthera@users.noreply.github.com> Date: Mon, 3 Mar 2025 02:20:59 -0700 Subject: [PATCH 5/5] [monk] Switch mandate targeting condition --- engine/class_modules/apl/apl_monk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/apl/apl_monk.cpp b/engine/class_modules/apl/apl_monk.cpp index a2e0b804bdc..bf953f652cd 100644 --- a/engine/class_modules/apl/apl_monk.cpp +++ b/engine/class_modules/apl/apl_monk.cpp @@ -290,7 +290,7 @@ void windwalker_live( player_t *p ) // name_str -> APL { "imperfect_ascendancy_serum", ",use_off_gcd=1,if=pet.xuen_the_white_tiger.active" }, { "mad_queens_mandate", - ",target_if=min:time_to_die,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff|(trinket.1.has_use_buff|" + ",target_if=min:target.health,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff|(trinket.1.has_use_buff|" "trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger.remains>30" }, { "treacherous_transmitter", ",if=!fight_style.dungeonslice&(cooldown.invoke_xuen_the_white_tiger.remains<4|talent.xuens_bond&pet.xuen_"