var1ety
01-16-2004, 07:10 PM
Patches are against Shawn319's CVS from January 12th, 2004.
Line numbers might not match exactly, since I had applied the FreeBSD
patch first, but patch(1) should be able to sort things out..
Patch is at http://cobblering.kicks-ass.net/~timothy/files/bard.diff.gz
Summary of Bard fixes:
-Fixed/worked around Bard song refreshing problems.
Details:
Bard songs used to drop before refreshing. This rendered songs such as
invisibility that relied on a continuous duration useless for any amount of
time greater than 18 seconds, as when they refreshed they would drop before
coming back up, leaving you open to aggro.
The cause of this problem (bug?) is that when a buff is cast the pre-existing
buff (at least) is faded, causing you to temporarily lose the effect before
it is reapplied.
I added a workaround to Mob::SpellEffect for Bards only that says if we are
refreshing a buff only extend the timer and refresh the spell level, do not
fade it first. Note, this change is only applied to Bard songs, so other
casters shouldn't notice.
================================================== ===========================
-Fixed Bard songs not stopping when required instrument was not being
used, or when there was insufficient mana to continue singing.
Details:
Bards could begin singing a song that required an instrument, and as soon as it
was going remove their instrument, and the song would never turn off, so long
as they didn't stop it on their own.
Similarly, a Bard could start a song that required mana (such as level 43 AE DD
Denon's Desperate Dirge), and it would continue to refresh whether or not
the Bard had enough mana.
To fix this I changed it so that songs that are refreshing go through
Mob::CastedSpellFinished() instead of Mob::SpellFinished().
Mob::CastedSpellFinished() contains a sequence of statements during the
reagent check phase that will ensure a Bard has enough mana to continue singing,
and is still using the appropriate instrument, if either of these are
relevant.
Additionally, I moved stuff around so that the only Bardic reagent check is made
during Mob::CastedSpellFinished(). Other caster reagent checks were not changed.
================================================== ===========================
-Bard songs will now detect when an instrument is required and actually
check to see if you are using it.
Details:
Added a new function, Client::UsingInstrument(), which accepts as a parameter
an item number. This number is designed to come from the reagent or focusitem
fields of a spell. It returns true or false, based on whether you have an
item equipped that satisfies the spell being queried. This is utilized in
Mob::CastedSpellFinished() - see previous note.
I added a commented for loop to Client::UsingInstrument() that would cut
down drastically on search time when a bard has an instrument equipped in
his primary or secondary hand, by checking those slots first. However, I left
it commented for the devs to evaluate.
================================================== ===========================
Outstanding Bard bugs:
- When a song is interrupted using InterruptSpell the casting bar stays gray.
This seems to happen with regular casters as well, so it's not Bard specific.
- Group songs may or may not be working, I have not had time to check one
way or the other.
- Bardic instruments do not lend their modifiers to spells yet - maybe in a few
more days.
- I've encountered sporadic problems regarding PB AE detrimental songs, I
have not had time to see if these are still malfunctioning.
Line numbers might not match exactly, since I had applied the FreeBSD
patch first, but patch(1) should be able to sort things out..
Patch is at http://cobblering.kicks-ass.net/~timothy/files/bard.diff.gz
Summary of Bard fixes:
-Fixed/worked around Bard song refreshing problems.
Details:
Bard songs used to drop before refreshing. This rendered songs such as
invisibility that relied on a continuous duration useless for any amount of
time greater than 18 seconds, as when they refreshed they would drop before
coming back up, leaving you open to aggro.
The cause of this problem (bug?) is that when a buff is cast the pre-existing
buff (at least) is faded, causing you to temporarily lose the effect before
it is reapplied.
I added a workaround to Mob::SpellEffect for Bards only that says if we are
refreshing a buff only extend the timer and refresh the spell level, do not
fade it first. Note, this change is only applied to Bard songs, so other
casters shouldn't notice.
================================================== ===========================
-Fixed Bard songs not stopping when required instrument was not being
used, or when there was insufficient mana to continue singing.
Details:
Bards could begin singing a song that required an instrument, and as soon as it
was going remove their instrument, and the song would never turn off, so long
as they didn't stop it on their own.
Similarly, a Bard could start a song that required mana (such as level 43 AE DD
Denon's Desperate Dirge), and it would continue to refresh whether or not
the Bard had enough mana.
To fix this I changed it so that songs that are refreshing go through
Mob::CastedSpellFinished() instead of Mob::SpellFinished().
Mob::CastedSpellFinished() contains a sequence of statements during the
reagent check phase that will ensure a Bard has enough mana to continue singing,
and is still using the appropriate instrument, if either of these are
relevant.
Additionally, I moved stuff around so that the only Bardic reagent check is made
during Mob::CastedSpellFinished(). Other caster reagent checks were not changed.
================================================== ===========================
-Bard songs will now detect when an instrument is required and actually
check to see if you are using it.
Details:
Added a new function, Client::UsingInstrument(), which accepts as a parameter
an item number. This number is designed to come from the reagent or focusitem
fields of a spell. It returns true or false, based on whether you have an
item equipped that satisfies the spell being queried. This is utilized in
Mob::CastedSpellFinished() - see previous note.
I added a commented for loop to Client::UsingInstrument() that would cut
down drastically on search time when a bard has an instrument equipped in
his primary or secondary hand, by checking those slots first. However, I left
it commented for the devs to evaluate.
================================================== ===========================
Outstanding Bard bugs:
- When a song is interrupted using InterruptSpell the casting bar stays gray.
This seems to happen with regular casters as well, so it's not Bard specific.
- Group songs may or may not be working, I have not had time to check one
way or the other.
- Bardic instruments do not lend their modifiers to spells yet - maybe in a few
more days.
- I've encountered sporadic problems regarding PB AE detrimental songs, I
have not had time to see if these are still malfunctioning.