Singer - cyritegamestudios/trust GitHub Wiki
Overview
A Singer can automatically sing songs on party members, similar to the Singer Windower add-on.
Modes
See AutoSongMode
, AutoClarionCallMode
, AutoNitroMode
, AutoPianissimoMode
How it works
A Singer will maintain a list of songs on both itself and its party members as specified in the UI under Settings → Songs when AutoSongMode
is set to Auto
or Dummy
. If you are unfamiliar with Bard, Songs, or applying dummy songs it is strongly recommended that you read up on it first. Currently, a Singer must have Bard set as its main job.
Songs
When AutoSongMode
is set to Auto
, a Singer will automatically apply the list of songs specified in the UI under Settings → Songs from top to bottom until it reaches the maximum number of songs. Dummy songs will automatically be applied first when necessary. A Singer will attempt to re-sing before the songs wear off to avoid having to re-sing dummy songs again. It will also attempt to re-sing songs that were missed or have been dispelled using Pianissimo.
Dummy Songs
A Singer will apply the list of dummy songs specified in the UI under Settings → Songs from top to bottom until it reaches the maximum number of songs. Dummy songs cannot share the same buff id as any of the real songs (e.g. if one of your real songs is Valor Minuet IV you cannot use Valor Minuet II as a dummy song).
Number of songs
The number of songs a Singer can sing will vary depending upon their gear and which job abilities are active. With both Daurdabla and Clarion Call active, it can sing a maximum number of 5 songs. If you do not have access to both of these, you should override the value of NumSongs
in the UI under Settings → Songs → Config. Note that this number is exclusive of Clarion Call, meaning the maximum value is currently 4.
Song duration
A Singer keeps track of the remaining duration of songs. However, because the server does not provide this information to the client directly, it must infer it using a configured base song duration and whether Troubadour was active when a song was sung. The default song duration is 240
. If your song duration is more or less, you should override the value of SongDuration
in the UI under Settings → Songs → Config.
Keeping track of songs
A Singer keeps track of which songs have been sung using the chat logs (e.g. "Jerry casts Valor Minuet IV. Jerry gains the effect of Minuet"
will record Jerry as having Valor Minuet IV active instead of just Minuet). However, because the server does not distinguish between different tiers of a song (e.g. Valor Minuet III and Valor Minuet IV both share the same generic buff id for Minuet), it is impossible to know with 100% certainty which songs are active. This is especially problematic when songs are frequently being dispelled. Nonetheless, a Singer will do its best to intelligently determine which songs are missing on each party member and re-apply them with Pianissimo. Note that if you zone or re-load the Trust add-on, this information will be lost. Chat filters and BattleMod may impede a Singer's ability to keep track of songs.
Pianissimo
A Singer can sing additional songs after the main songs have been sung using Pianissimo. These are specified in PartyBuffs section of the job settings for BRD. Songs specified here should always have Pianissimo listed as a job ability. If AutoPianissimoMode
is set to Merged
, the singer may re-sing some of the original songs if they get overwritten by Pianissimo songs.
Settings
Songs can be edited using the UI under Settings → Songs.
Party buffs
A list of songs to sing after the songs listed in Songs
have been sung. Should always include Pianissimo. A new song can be created with the syntax Spell.new(song_name, L{'Pianissimo'}, job_names)
.
Parameter | Values | Description | Example |
---|---|---|---|
song_name | Any song name in res/spells.lua |
Name of the song | Valor Minuet IV or Blade Madrigal |
job_names | job_util.all_jobs() , job_util.melee_jobs() , L{JobShort1, JobShort2,..., JobShortN} |
The song will only be sung on these jobs | L{'COR', 'RNG'} or job_util.all_jobs() |
Other
General song settings can be configured using the UI under Settings → Songs → Config.
Jobs
Explore the code
- https://github.com/cyritegamestudios/trust/blob/main/cylibs/trust/roles/singer.lua
- https://github.com/cyritegamestudios/trust/blob/main/cylibs/battle/song_tracker.lua
- https://github.com/cyritegamestudios/trust/blob/main/cylibs/battle/songs/song_record.lua
- https://github.com/cyritegamestudios/trust/blob/main/cylibs/util/job_util.lua