Phantom Roll Custom Timers - shastaxc/silver-libs GitHub Wiki

Create custom timers for Corsair rolls utilizing the Timers plugin.

image

Benefits to Custom Timers vs Default Timers

The benefits to using the custom timers are:

  1. The duration is more accurate than the default Roll timers provided by the Timers plugin. The default timers do not account for duration extension from Rostam Path C (or Lanun Knife Path C).
  2. These custom timers are more resilient to packet loss. With the default timers, if you drop the action packet that tells you your roll result, no timer is created at all. Custom timers have a simliar limitation, however, the custom timers will still get created when the next buff packet comes in (which happens frequently in parties).
  3. You can use timers to track rolls received by other players.
  4. Your timer will tell you if a roll was Lucky, Unlucky, or MAX (11).

Implementation

See the Installation page for details on first steps if you have not yet installed SilverLibs into your job lua. To implement this specific feature:

Make sure you have the Timers plugin installed. You can do this through the Windower launch menu.

If Using Mote Libs

If the specified functions already exist, just put the silibs part inside of it in the appropriate spot. Please add the following:

function job_setup()
  silibs.enable_custom_roll_timers()
end

If Using Selindrile Libs

If the specified functions already exist, just put the silibs part inside of it in the appropriate spot. Please add the following in your char_job_gear.lua file:

function user_job_setup()
  silibs.enable_custom_roll_timers()
end

Config Options

You can specify a symbol you want to show at the start of the timer name to indicate that the roll is yours. If not specified, it will default to "@". You can pass in empty string if you don't want to denote a difference between your own rolls and those of others.

If you want your personal timers to start with % instead, you can configure it like so:

  silibs.enable_custom_roll_timers('%')

Hiding the Default Timers

It is recommended to edit your Timers's settings file to filter the default timers for rolls because otherwise you will see the same info twice.

You can filter the default timers by editing the file in plugins/settings/timers.xml and replace the line that says:

<AbilityBuffFilter />

with this:

<AbilityBuffFilter>*Roll</AbilityBuffFilter>

Limitations / Known Bugs

  • If the initial roll packet is lost, the timer should still be created when the next buff packet comes in. However, it will not include the value of the roll.
  • If a double up packet is lost, there is a second packet that attempts to read the double up value and set it properly in the timer. However, it's possible for that to get lost too. In that case, you may end up with a timer that has an incorrect value for the roll potency. The expiration time should always be accurate though.
  • There are limited ways to distinguish your own rolls from those that other people have given to you. We have to track both in order to provide resiliency against lost packets. This is likely why the default Timers functionality is so susceptible to failure to create timers on dropped packets, because it focuses solely on buffs you apply on yourself while ignoring those applied by others.
  • If GearSwap is reloaded while you have roll buffs on, SilverLibs will try its best to track your rolls on the reload but some information gets wiped out:
    • The expiration time. We will set it to a generic 10 minute timer, but it will be corrected the next time a buff packet comes in.
    • The roll value
    • Whether the buff is your own or from a party member