Hekili / hekili

Hekili Priority Helper for DPS and Tanks (WoW Retail)
426 stars 220 forks source link

Updated chat command handler #4163

Closed syrifgit closed 2 weeks ago

syrifgit commented 3 weeks ago

Generalized chat command handling

Goals

Fixes

Overall Design Notes

Functions

Hekili:HandleSetCommand( args )

Hekili:HandleSpecSetting( specSetting, specValue )

Hekili:DisplayChatCommandList( list )

Hekili:HandleSkeletonCommand( input )

Hekili:RunStressTest()

Hekili:HandleProfileCommand( args )

Hekili:HandleEnableDisableCommand( args )

Hekili:HandleMoveCommand( args )

Hekili:HandleRecoverCommand()

Hekili:HandlePriorityCommand( args )

Test cases

I will provide a large swath of test cases in the comments

.... ....

fixes #3962 :)

syrifgit commented 3 weeks ago

Test cases that should work

/hekili enable
/hekili disable
/hekili enable 123
/hekili disable extraArgument
/hekili enable "extra text"

/hekili stress
/hekili stress 123
/hekili stress extraArgument

/hekili skeleton

/hek prio
/hekili priority
/hekili priority priorityName
/hekili priority "complex priority name"

/hekili move
/hekili unlock
/hekili lock
/hekili move extraArgument
/hekili unlock 123
/hekili lock "extra text"

/hek set cooldowns
/hek set cooldowns on
/hek set cooldowns off
/hek set cooldowns separate
/hek set cooldowns separate on
/hek set cooldowns separate off
/hek set cooldowns override
/hek set cooldowns override on
/hek set cooldowns override off
/hek set cooldowns infusion
/hek set cooldowns infusion on
/hek set cooldowns infusion off
/hek set cds pi
/hek set cds pi on
/hek set cds pi off

/hek set pot 
/hek set pot on
/hek set pot off
/hek set potions
/hek set potions on
/hek set potions off
/hek set potions override
/hek set potions override on
/hek set potions override off

/hek set interrupts
/hek set interrupts on
/hek set interrupts off
/hek set interrupts separate
/hek set interrupts separate on
/hek set interrupts separate off
/hek set interrupts filterCasts
/hek set interrupts filterCasts on
/hek set interrupts filterCasts off

/hek set defensives
/hek set defensives on
/hek set defensives off
/hek set defensives separate
/hek set defensives separate on
/hek set defensives separate off

/hek set custom1
/hek set custom1 on
/hek set custom1 off

/hek set custom2
/hek set custom2 on
/hek set custom2 off

/hek set funnel
/hek set funnel on
/hek set funnel off

/hek set target_swap on
/hek set target_swap off
/hek set target_swap
/hek set target_swap 5
/hek set target_swap 3

/hek set swap on
/hek set swap off
/hek set swap
/hek set swap 10
/hek set swap 7

/hek set cycle on
/hek set cycle off
/hek set cycle
/hek set cycle 2
/hek set cycle 1

/hek set mode automatic
/hek set mode single
/hek set mode aoe
/hek set mode dual
/hek set mode reactive

/hekili profile
/hekili profile profileName

(replace these with examples from your own spec, this is Beast Mastery)

/hek set spec barbed_shot_grace_period 0
/hek set spec barbed_shot_grace_period 1
/hek set spec barbed_shot_grace_period 2
/hek set spec pet_healing 0
/hek set spec pet_healing 50
/hek set spec pet_healing 100
/hek set spec avoid_bw_overlap
/hek set spec avoid_bw_overlap on
/hek set spec avoid_bw_overlap off
/hek set spec mark_any
/hek set spec mark_any on
/hek set spec mark_any off
/hek set spec check_pet_range
/hek set spec check_pet_range on
/hek set spec check_pet_range off
syrifgit commented 3 weeks ago

Test cases that should fail

/hekili skeleton extraArgument
/hekili skeleton 123

/hekili priority invalidPriorityName
/hekili priority 123
/hekili priority ""

/hek set cooldowns separate z
/hek set cooldowns override boop
/hek set cooldowns infusion foo
/hek set cooldowns randomtoggle
/hek set cooldowns infusion 0

/hek set potions override z
/hek set potions randomtoggle
/hek set potions override foo

/hek set interrupts separate z
/hek set interrupts filterCasts foo
/hek set interrupts randomtoggle

/hek set defensives separate z
/hek set defensives randomtoggle
/hek set defensives separate foo

/hek set custom1 randomtoggle
/hek set custom1 foo

/hek set custom2 randomtoggle
/hek set custom2 foo

/hek set funnel randomtoggle
/hek set funnel foo

/hek set target_swap abc
/hek set target_swap -5
/hek set target_swap 0

/hek set swap toggle
/hek set swap -1
/hek set swap abcdef

/hek set cycle xyz
/hek set cycle -10

/hekili profile invalidProfileName
/hekili profile 12345
/hekili profile ""

(replace these with examples from your own spec, this is Beast Mastery)

/hek set spec barbed_shot_grace_period -1
/hek set spec barbed_shot_grace_period 3
/hek set spec barbed_shot_grace_period z
/hek set spec pet_healing -10
/hek set spec pet_healing 110
/hek set spec pet_healing z
/hek set spec avoid_bw_overlap z
/hek set spec mark_any foo
/hek set spec check_pet_range bar
/hek set spec pet_healing
/hek set spec barbed_shot_grace_period
syrifgit commented 2 weeks ago

Full reference page for macros: https://github.com/Hekili/hekili/wiki/Hekili,-Macros-and-You