Bard

Bards are jack-of-all-trades adventurers who use music to create a wide variety of magic effects. Though they often use melee weapons, bards are primarily a magic-using class, with the ability to wear plate armor and wield many different types of weapons and instruments.

Bards can do a little bit of everything. Their songs can regenerate health and mana, increase attack speed and accuracy, momentarily charm angry enemies, help friends resist many types of damage, and even directly damage enemies. Bards are perhaps best known, however, for their ability to greatly increase the foot speed of their group.

Bards have the unique ability to create multiple effects at once. By weaving different songs together, a bard can customize effects to any situation. This makes nimble fingers and quick thinking a must for those who want to play a bard.

Bards do well both alone and in groups. With the right combination of songs, they can adapt to many different challenges. The bard is a great class for players who enjoy a wide variety of play options but are quick to adapt to a changing situation.

Using clicky items with /melody bug
There are 3 big pieces of spell casting code - 1. CastSpell - this is when your mana is checked, cast time, some target requirements are made

2. LaunchSpell - when the spell's cast time has elapsed, check range to target, mana is charged, check if you were interrupted. This is where the game will update your spellbar to not be grayed out, so you can cast a new spell.

3. HitBySpell - when a target is hit by a spell, take damage, add/remove buffs, etc (this is the largest portion of spell code)

When you begin casting a spell (or singing a song), if the spell has at least a 0.1 second cast time, the "currently pending" spell is stored on your character. If you use an item clicky with a cast time, it updates the currently pending spell ID. When it's time for the spell to launch, it looks for the pending spell ID on your character to update it. If the spell ID doesn't match (because you changed pending spell IDs before the first spell finished launching), your spellbar will not update to no longer be locked out. Depending on what happens, your spellbar will sit there waiting for the first spell to finish launching and you will be locked out. There are certain ways to get the client to reset your spellbar in this situation (usually clicking and interrupting an AA with a cast time).

The problem with bards and item clickies is that bard songs are spells, and item clickies are spells, and bards are expected to always be singing. This means we have to interrupt melody to use certain clickies, and interrupting a melody can be inefficient and a DPS loss. The clicky has to be good enough for it to be worth interrupting melody (lots of them aren't, or you have to carefully micromanage when you interrupt and restart the melody). This is why instant clickies are so important for bards. It's not merely convenient, cast times make many clickies undesirable enough to be unusable.

To fix this we would need to additionally store the currently launching item spell (for bards) so the launch of both spells can be completed. Or, we could prevent launching a new spell if another one hasn't finished (i.e. no clicking items with a > 0.1s cast time while singing).

Another interesting part of this is those 3 above spell pieces (cast, launch, hit by spell) are the main factors in zone lag. Spells that are instant cast go straight from CastSpell into LaunchSpell. This makes instant spells more performant for the zone itself (and the player). Classes who don't have many instant spells are penalized more in laggy situations.