Jump to content


Photo

Can Bard songs be modified to always be on in IW2?


  • Please log in to reply
1 reply to this topic

#1 LiquidDamage

LiquidDamage
  • Member
  • 2 posts

Posted 12 June 2003 - 10:16 PM

In IWD2, Power Attack and Expertise can be activated, and never shut off unless you shut them off manually or change which version (+1 to +5) you want activated.

Bard songs have a feat associated with them called Lingering Song that allows the song to last 2 rounds after the song is deactivated, so that the bard can still contribute to fights or pick pockets, or whatever.

The problem with Lingering Song is that you have to keep turning the song on and off every 2 rounds to keep it activated, which is pretty annoying, especially if you have more than one bard in the party.

I imagine that BIS could have made bard songs work like Power Attack and Expertise if you had the Lingering Song feat, where they simply are always on. This would remove the micromanagement and also happen to cure a bug that allows one bard to stack the same song an infinite number of times with Lingering Song.

Is it possible, through modding, to make Bard songs work in the same manner as Power Attack and Expertise if the Lingering Song feat is chosen? If not, could it be done regardless of Lingering Song?

I only have minor experience modding for BG2, so I wouldn't know where to begin with IWD2.

#2 cirerrek

cirerrek
  • Member
  • 193 posts

Posted 16 June 2003 - 10:23 AM

It might be possible by editing the .spl files and where they are located/activated...Innate Spells vs. Items Usage vs. Spell Book Spells.

Scripting might be another answer.

I've got eMage set up for Bards to sing constantly unless they are directly attacked. It seems to work pretty well...doesn't add up to a lot of kills for the bard, but who cares when they are giving your party the Enhanced Bard Song Effects. Of course BG2 essentially only has one song, so scripting it properly for IWD2 will be a bit trickier. One of the base scripts that comes with the IWD2 has some scripting that shows how to use the different Bard Songs for different situations and might give you someplace to start.

For BG2:

This segment runs constantly so that you are under the effects of the bardsong at all times, unless you are manually directing the actions of the bard.  So when you run into a random encounter, you're party, if near enough, should begin the battle under the effects of the song.  

// **********************************************************************
// *           Segment Name: gs_BattleSong_Bard_AlwaysOn.baf
// **********************************************************************

// * Battle Song [Bard]
// * Requires Mod State.IDS File (STATE_NOT_VISIBLE)
IF
  ActionListEmpty()
  Class(Myself,BARD_ALL)
  !ModalState(BATTLESONG)
  !StateCheck(Myself,STATE_SILENCED)
  !StateCheck(Myself,STATE_NOT_VISIBLE)
THEN
  RESPONSE #100
    BattleSong()
    Wait(2)
END

In eMage, this segment goes right above the melee/missile attack segment and instructs the bard to sing if enough party members are nearby and no one is attacking the bard.  I've also got a variable set in it to label it as an Interruptable Action so if something better comes along...like Magic Missiling a foe, the script will probably do that in preference to singing.  

// **********************************************************************
// *           Segment Name: gs_BattleSong_Bard.baf
// **********************************************************************

// * The segment is designed to be interruptable, so that if a more important task
// * liking Breaching an enemy spell casters spell protections comes along, the bard will 
// * stop singing and attempt to handle the situation.

// * Bard - Battle Song
// * Requires Mod Stat.IDS File (WIZARD_IMPROVED_ALACRITY)
// * Requires Mod State.IDS File (STATE_NOT_VISIBLE)
IF
  OR(2)
     !GlobalTimerNotExpired("gh_SpellCastThisRound","LOCALS")              // and I am ready to cast.
     CheckStat(Myself,1,WIZARD_IMPROVED_ALACRITY)                          // or I am Aura Cleansed so no wait
  OR(2)                                                                    // Xyx's Cast&Attack/GB's self-interrupting Attack
     ActionListEmpty()                                                     // if we're doing nothing
     GlobalTimerNotExpired("gh_ActionIsInterruptable","LOCALS")            // or we're doing an interruptible action
  Class(Myself,BARD_ALL)                                                   // and I am a bard
  !ModalState(BATTLESONG)                                                  // and I am not already singing my battlesong
  !StateCheck(Myself,STATE_SILENCED)                                       // and I have not been silenced
  !StateCheck(Myself,STATE_NOT_VISIBLE)
  OR(3)
     Range(Player1,8)
     Range(Player3,8)
     Range(Player6,8)
  OR(3)
     Range(Player2,8)
     Range(Player4,8)
     Range(Player5,8)
  !AttackedBy([ANYONE],DEFAULT)                                            // if we are not under attack
THEN
  RESPONSE #100
    DisplayStringHead(Myself,50705)                                        // "Singing Battlesong"
    SetGlobalTimer("gh_SpellCastThisRound","LOCALS",6)                     // set a 6 second timer to ensure we don't reselect a spell action this round (which wastes time)
    SetGlobalTimer("gh_ActionIsInterruptable","LOCALS",1)                  // set a 1-sec timer to indicate action is interruptable
    BattleSong()                                                           // Begin singing Battlesong
    Wait(2)                                                                // Wait a bit for the Battlesong to take effect
END